@bravobit/bb-foundation 0.22.2 → 0.23.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/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +3 -2
- package/controls/lib/checkbox/checkbox.module.d.ts +2 -1
- package/controls/lib/form-control/form-control/form-control.component.d.ts +5 -5
- package/controls/lib/form-control/form-control.module.d.ts +2 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +4 -2
- package/dialog/lib/dialog.interfaces.d.ts +7 -0
- package/dialog/lib/dialog.service.d.ts +5 -9
- package/elements/lib/date-picker/date-picker.component.d.ts +4 -2
- package/elements/lib/elements.module.d.ts +25 -28
- package/elements/lib/pipes/relative-time.pipe.d.ts +5 -5
- package/elements/public_api.d.ts +0 -4
- package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
- package/esm2020/auth/lib/auth.module.mjs +4 -4
- package/esm2020/auth/lib/auth.service.mjs +3 -3
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
- package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
- package/esm2020/auth/lib/guards/permission.guard.mjs +3 -3
- package/esm2020/auth/lib/permissions/permissions.service.mjs +3 -3
- package/esm2020/collections/lib/collections.module.mjs +4 -4
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +5 -5
- package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +7 -6
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +7 -6
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
- package/esm2020/controls/lib/control-error/control-error.module.mjs +4 -4
- package/esm2020/controls/lib/controls.module.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +6 -5
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +3 -3
- package/esm2020/controls/lib/form-control/form-control.module.mjs +8 -7
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +15 -12
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +5 -5
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2020/dialog/lib/dialog.interfaces.mjs +1 -1
- package/esm2020/dialog/lib/dialog.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog.service.mjs +15 -27
- package/esm2020/elements/lib/avatar/avatar.component.mjs +7 -7
- package/esm2020/elements/lib/button/button.component.mjs +6 -6
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +20 -15
- package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
- package/esm2020/elements/lib/elements.module.mjs +21 -25
- 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 +3 -3
- package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +15 -13
- package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2020/elements/public_api.mjs +1 -5
- package/esm2020/http/lib/classes/http.config.mjs +2 -3
- package/esm2020/http/lib/http.module.mjs +4 -4
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +6 -6
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
- package/esm2020/lib/core/services/exif.service.mjs +3 -3
- package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
- package/esm2020/lib/core/services/languages.service.mjs +3 -3
- package/esm2020/lib/core/services/network.service.mjs +3 -3
- package/esm2020/lib/core/services/patch.service.mjs +3 -3
- package/esm2020/localize/lib/dictionary/dictionary.class.mjs +92 -0
- package/esm2020/localize/lib/dictionary/dictionary.context.mjs +26 -0
- package/esm2020/localize/lib/dictionary/dictionary.data.mjs +6 -0
- package/esm2020/localize/lib/functions/lowercase.function.mjs +2 -2
- package/esm2020/localize/lib/functions/uppercase.function.mjs +2 -2
- package/esm2020/localize/lib/handlers/missing.handler.mjs +2 -2
- package/esm2020/localize/lib/interfaces/config.interfaces.mjs +1 -1
- package/esm2020/localize/lib/interfaces/options.interfaces.mjs +1 -1
- package/esm2020/localize/lib/interfaces/transforms.interfaces.mjs +3 -0
- package/esm2020/localize/lib/localize.module.mjs +19 -13
- package/esm2020/localize/lib/localize.pipe.mjs +7 -8
- package/esm2020/localize/lib/localize.service.mjs +86 -130
- package/esm2020/localize/lib/transforms/abstract.transform.mjs +30 -0
- package/esm2020/localize/lib/transforms/interpolate.transform.mjs +54 -0
- package/esm2020/localize/lib/transforms/reference.transform.mjs +25 -0
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +6 -6
- package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2020/localize/public_api.mjs +8 -2
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/masking.module.mjs +4 -4
- package/esm2020/masking/lib/masking.service.mjs +3 -3
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
- package/esm2020/notifications/lib/notifications.module.mjs +4 -4
- package/esm2020/notifications/lib/notifications.service.mjs +22 -26
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2020/storage/lib/storage.service.mjs +7 -7
- package/esm2020/table/lib/components/table/table.component.mjs +9 -9
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
- package/esm2020/table/lib/table.module.mjs +4 -4
- package/esm2020/theming/lib/theming.directive.mjs +3 -3
- package/esm2020/theming/lib/theming.module.mjs +4 -4
- package/esm2020/utils/bravobit-bb-foundation-utils.mjs +5 -0
- package/esm2020/utils/lib/directives/autosize.directive.mjs +72 -0
- package/esm2020/utils/lib/directives/focus-trap.directive.mjs +77 -0
- package/esm2020/utils/lib/directives/focus.directive.mjs +37 -0
- package/esm2020/utils/lib/directives/template.directive.mjs +28 -0
- package/esm2020/utils/lib/utils.module.mjs +35 -0
- package/esm2020/utils/public_api.mjs +6 -0
- package/fesm2015/bravobit-bb-foundation-auth.mjs +28 -28
- package/fesm2015/bravobit-bb-foundation-collections.mjs +23 -23
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +47 -45
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +54 -81
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +126 -324
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +14 -14
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +360 -215
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +31 -52
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-storage.mjs +6 -6
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-utils.mjs +246 -0
- package/fesm2015/bravobit-bb-foundation-utils.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation.mjs +21 -21
- package/fesm2020/bravobit-bb-foundation-auth.mjs +28 -28
- package/fesm2020/bravobit-bb-foundation-collections.mjs +23 -23
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +47 -45
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +53 -79
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +124 -322
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +14 -14
- package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-localize.mjs +342 -208
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +31 -52
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-storage.mjs +6 -6
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2020/bravobit-bb-foundation-utils.mjs +244 -0
- package/fesm2020/bravobit-bb-foundation-utils.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation.mjs +21 -21
- package/localize/lib/dictionary/dictionary.class.d.ts +28 -0
- package/localize/lib/dictionary/dictionary.context.d.ts +7 -0
- package/localize/lib/dictionary/dictionary.data.d.ts +7 -0
- package/localize/lib/interfaces/config.interfaces.d.ts +4 -6
- package/localize/lib/interfaces/options.interfaces.d.ts +1 -0
- package/localize/lib/interfaces/transforms.interfaces.d.ts +3 -0
- package/localize/lib/localize.module.d.ts +4 -4
- package/localize/lib/localize.pipe.d.ts +1 -1
- package/localize/lib/localize.service.d.ts +25 -21
- package/localize/lib/transforms/abstract.transform.d.ts +13 -0
- package/localize/lib/transforms/interpolate.transform.d.ts +14 -0
- package/localize/lib/transforms/reference.transform.d.ts +10 -0
- package/localize/public_api.d.ts +7 -1
- package/notifications/lib/notifications.service.d.ts +6 -7
- package/package.json +12 -4
- package/utils/index.d.ts +5 -0
- package/{elements → utils}/lib/directives/autosize.directive.d.ts +0 -0
- package/{elements → utils}/lib/directives/focus-trap.directive.d.ts +0 -0
- package/{elements → utils}/lib/directives/focus.directive.d.ts +0 -0
- package/{elements → utils}/lib/directives/template.directive.d.ts +1 -0
- package/utils/lib/utils.module.d.ts +10 -0
- package/utils/public_api.d.ts +5 -0
- package/dialog/lib/dialog.injector.d.ts +0 -8
- package/esm2020/dialog/lib/dialog.injector.mjs +0 -18
- package/esm2020/elements/lib/directives/autosize.directive.mjs +0 -72
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +0 -77
- package/esm2020/elements/lib/directives/focus.directive.mjs +0 -37
- package/esm2020/elements/lib/directives/template.directive.mjs +0 -28
- package/esm2020/localize/lib/localize.dictionary.mjs +0 -26
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +0 -28
- package/esm2020/notifications/lib/notifications.injector.mjs +0 -18
- package/localize/lib/localize.dictionary.d.ts +0 -7
- package/localize/lib/views/localize-template-or-string.directive.d.ts +0 -10
- package/notifications/lib/notifications.injector.d.ts +0 -8
|
@@ -85,9 +85,9 @@ class FileLoader {
|
|
|
85
85
|
return this.blobToFile(blobFile, name);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
89
|
-
FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
88
|
+
FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FileLoader, providedIn: 'root' });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FileLoader, decorators: [{
|
|
91
91
|
type: Injectable,
|
|
92
92
|
args: [{
|
|
93
93
|
providedIn: 'root'
|
|
@@ -248,9 +248,9 @@ class Exif {
|
|
|
248
248
|
});
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
252
|
-
Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
251
|
+
Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Exif, deps: [{ token: i1.Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
252
|
+
Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Exif, providedIn: 'root' });
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Exif, decorators: [{
|
|
254
254
|
type: Injectable,
|
|
255
255
|
args: [{
|
|
256
256
|
providedIn: 'root'
|
|
@@ -372,9 +372,9 @@ class ImageConverter {
|
|
|
372
372
|
});
|
|
373
373
|
}
|
|
374
374
|
}
|
|
375
|
-
ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
376
|
-
ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
375
|
+
ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ImageConverter, deps: [{ token: Exif }, { token: i1.Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
376
|
+
ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ImageConverter, providedIn: 'root' });
|
|
377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ImageConverter, decorators: [{
|
|
378
378
|
type: Injectable,
|
|
379
379
|
args: [{
|
|
380
380
|
providedIn: 'root'
|
|
@@ -440,9 +440,9 @@ class Languages {
|
|
|
440
440
|
.sort((a, b) => b.quality - a.quality);
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
444
|
-
Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
445
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
443
|
+
Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Languages, deps: [{ token: ACCEPT_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
444
|
+
Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Languages, providedIn: 'root' });
|
|
445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Languages, decorators: [{
|
|
446
446
|
type: Injectable,
|
|
447
447
|
args: [{
|
|
448
448
|
providedIn: 'root'
|
|
@@ -500,9 +500,9 @@ class Network {
|
|
|
500
500
|
this._online$ = merge(now$, online$, offline$).pipe(map(value => value), distinctUntilChanged(), shareReplay(1));
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
|
-
Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
504
|
-
Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
505
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
503
|
+
Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Network, deps: [{ token: i1.Platform }, { token: WINDOW, optional: true }, { token: NAVIGATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
504
|
+
Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Network, providedIn: 'root' });
|
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Network, decorators: [{
|
|
506
506
|
type: Injectable,
|
|
507
507
|
args: [{
|
|
508
508
|
providedIn: 'root'
|
|
@@ -560,9 +560,9 @@ class Patch {
|
|
|
560
560
|
this._subscription.add(subscription);
|
|
561
561
|
}
|
|
562
562
|
}
|
|
563
|
-
Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
564
|
-
Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
565
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
563
|
+
Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Patch, deps: [{ token: i1.Platform }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
564
|
+
Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Patch, providedIn: 'root' });
|
|
565
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Patch, decorators: [{
|
|
566
566
|
type: Injectable,
|
|
567
567
|
args: [{
|
|
568
568
|
providedIn: 'root'
|
|
@@ -595,9 +595,9 @@ class Clipboard {
|
|
|
595
595
|
return new ClipboardCopy(text, this._document);
|
|
596
596
|
}
|
|
597
597
|
}
|
|
598
|
-
Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
599
|
-
Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
600
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
598
|
+
Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
599
|
+
Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Clipboard, providedIn: 'root' });
|
|
600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Clipboard, decorators: [{
|
|
601
601
|
type: Injectable,
|
|
602
602
|
args: [{
|
|
603
603
|
providedIn: 'root'
|
|
@@ -525,9 +525,9 @@ class Auth {
|
|
|
525
525
|
.join('/');
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
|
-
Auth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
529
|
-
Auth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
528
|
+
Auth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Auth, deps: [{ token: i1.Storage }, { token: i0.Injector }, { token: i2.Platform }, { token: i3.HttpClient }, { token: AuthConfig, optional: true }, { token: i5.TransferState, optional: true }, { token: i6.HttpConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
529
|
+
Auth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Auth });
|
|
530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Auth, decorators: [{
|
|
531
531
|
type: Injectable
|
|
532
532
|
}], ctorParameters: function () { return [{ type: i1.Storage }, { type: i0.Injector }, { type: i2.Platform }, { type: i3.HttpClient }, { type: AuthConfig, decorators: [{
|
|
533
533
|
type: Optional
|
|
@@ -562,9 +562,9 @@ class BbAuthenticated extends AbstractAuthDirective {
|
|
|
562
562
|
this._subscription?.unsubscribe();
|
|
563
563
|
}
|
|
564
564
|
}
|
|
565
|
-
BbAuthenticated.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
566
|
-
BbAuthenticated.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
567
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
565
|
+
BbAuthenticated.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAuthenticated, deps: [{ token: Auth }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
566
|
+
BbAuthenticated.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbAuthenticated, selector: "[bbAuthenticated]", inputs: { bbAuthenticatedElse: "bbAuthenticatedElse" }, usesInheritance: true, ngImport: i0 });
|
|
567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAuthenticated, decorators: [{
|
|
568
568
|
type: Directive,
|
|
569
569
|
args: [{
|
|
570
570
|
selector: '[bbAuthenticated]'
|
|
@@ -623,9 +623,9 @@ class Permissions {
|
|
|
623
623
|
: [value];
|
|
624
624
|
}
|
|
625
625
|
}
|
|
626
|
-
Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
627
|
-
Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
628
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
626
|
+
Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Permissions, deps: [{ token: Auth }, { token: AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
627
|
+
Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Permissions });
|
|
628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Permissions, decorators: [{
|
|
629
629
|
type: Injectable
|
|
630
630
|
}], ctorParameters: function () { return [{ type: Auth }, { type: AuthConfig, decorators: [{
|
|
631
631
|
type: Optional
|
|
@@ -668,9 +668,9 @@ class BbPermission extends AbstractAuthDirective {
|
|
|
668
668
|
this._subscription?.unsubscribe();
|
|
669
669
|
}
|
|
670
670
|
}
|
|
671
|
-
BbPermission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
672
|
-
BbPermission.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
673
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
671
|
+
BbPermission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbPermission, deps: [{ token: Permissions }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
672
|
+
BbPermission.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbPermission, selector: "[bbPermission]", inputs: { bbPermission: "bbPermission", bbPermissionElse: "bbPermissionElse", bbPermissionMode: "bbPermissionMode" }, usesInheritance: true, ngImport: i0 });
|
|
673
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbPermission, decorators: [{
|
|
674
674
|
type: Directive,
|
|
675
675
|
args: [{
|
|
676
676
|
selector: '[bbPermission]'
|
|
@@ -741,9 +741,9 @@ class BbAnonymousGuard {
|
|
|
741
741
|
return this.canActivate(childRoute, state);
|
|
742
742
|
}
|
|
743
743
|
}
|
|
744
|
-
BbAnonymousGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
745
|
-
BbAnonymousGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
746
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
744
|
+
BbAnonymousGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAnonymousGuard, deps: [{ token: Auth }, { token: i2$1.Router }, { token: AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
745
|
+
BbAnonymousGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAnonymousGuard, providedIn: 'root' });
|
|
746
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAnonymousGuard, decorators: [{
|
|
747
747
|
type: Injectable,
|
|
748
748
|
args: [{
|
|
749
749
|
providedIn: 'root'
|
|
@@ -780,9 +780,9 @@ class BbAuthenticatedGuard {
|
|
|
780
780
|
return this.canActivate(childRoute, state);
|
|
781
781
|
}
|
|
782
782
|
}
|
|
783
|
-
BbAuthenticatedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
784
|
-
BbAuthenticatedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
785
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
783
|
+
BbAuthenticatedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAuthenticatedGuard, deps: [{ token: Auth }, { token: i2$1.Router }, { token: AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
784
|
+
BbAuthenticatedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAuthenticatedGuard, providedIn: 'root' });
|
|
785
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbAuthenticatedGuard, decorators: [{
|
|
786
786
|
type: Injectable,
|
|
787
787
|
args: [{
|
|
788
788
|
providedIn: 'root'
|
|
@@ -826,9 +826,9 @@ class BbPermissionGuard {
|
|
|
826
826
|
return this._permissions.has(data?.value, data?.options);
|
|
827
827
|
}
|
|
828
828
|
}
|
|
829
|
-
BbPermissionGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
830
|
-
BbPermissionGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
831
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
829
|
+
BbPermissionGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbPermissionGuard, deps: [{ token: i2$1.Router }, { token: Permissions }, { token: AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
830
|
+
BbPermissionGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbPermissionGuard, providedIn: 'root' });
|
|
831
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbPermissionGuard, decorators: [{
|
|
832
832
|
type: Injectable,
|
|
833
833
|
args: [{
|
|
834
834
|
providedIn: 'root'
|
|
@@ -910,9 +910,9 @@ class AuthInterceptor {
|
|
|
910
910
|
return of(null);
|
|
911
911
|
}
|
|
912
912
|
}
|
|
913
|
-
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
914
|
-
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
915
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
913
|
+
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthInterceptor, deps: [{ token: Auth }, { token: AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
914
|
+
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthInterceptor });
|
|
915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
916
916
|
type: Injectable
|
|
917
917
|
}], ctorParameters: function () { return [{ type: Auth }, { type: AuthConfig, decorators: [{
|
|
918
918
|
type: Optional
|
|
@@ -936,12 +936,12 @@ class AuthModule {
|
|
|
936
936
|
};
|
|
937
937
|
}
|
|
938
938
|
}
|
|
939
|
-
AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
940
|
-
AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
939
|
+
AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
940
|
+
AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: AuthModule, declarations: [BbAuthenticated,
|
|
941
941
|
BbPermission], imports: [HttpClientModule], exports: [BbAuthenticated,
|
|
942
942
|
BbPermission] });
|
|
943
|
-
AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
943
|
+
AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthModule, imports: [HttpClientModule] });
|
|
944
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AuthModule, decorators: [{
|
|
945
945
|
type: NgModule,
|
|
946
946
|
args: [{
|
|
947
947
|
imports: [HttpClientModule],
|
|
@@ -123,9 +123,9 @@ class LocalCollectionProvider extends CollectionProvider {
|
|
|
123
123
|
|
|
124
124
|
class BbCollectionsData {
|
|
125
125
|
}
|
|
126
|
-
BbCollectionsData.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
127
|
-
BbCollectionsData.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
126
|
+
BbCollectionsData.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsData, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
127
|
+
BbCollectionsData.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsData, selector: "[bbCollectionsData]", ngImport: i0 });
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsData, decorators: [{
|
|
129
129
|
type: Directive,
|
|
130
130
|
args: [{
|
|
131
131
|
selector: '[bbCollectionsData]'
|
|
@@ -133,9 +133,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
133
133
|
}] });
|
|
134
134
|
class BbCollectionsEmpty {
|
|
135
135
|
}
|
|
136
|
-
BbCollectionsEmpty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
137
|
-
BbCollectionsEmpty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
136
|
+
BbCollectionsEmpty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
137
|
+
BbCollectionsEmpty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsEmpty, selector: "[bbCollectionsEmpty]", ngImport: i0 });
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsEmpty, decorators: [{
|
|
139
139
|
type: Directive,
|
|
140
140
|
args: [{
|
|
141
141
|
selector: '[bbCollectionsEmpty]'
|
|
@@ -143,9 +143,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
143
143
|
}] });
|
|
144
144
|
class BbCollectionsError {
|
|
145
145
|
}
|
|
146
|
-
BbCollectionsError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
147
|
-
BbCollectionsError.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
146
|
+
BbCollectionsError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
147
|
+
BbCollectionsError.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsError, selector: "[bbCollectionsError]", ngImport: i0 });
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsError, decorators: [{
|
|
149
149
|
type: Directive,
|
|
150
150
|
args: [{
|
|
151
151
|
selector: '[bbCollectionsError]'
|
|
@@ -153,9 +153,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
|
|
|
153
153
|
}] });
|
|
154
154
|
class BbCollectionsInitial {
|
|
155
155
|
}
|
|
156
|
-
BbCollectionsInitial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
157
|
-
BbCollectionsInitial.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
156
|
+
BbCollectionsInitial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsInitial, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
|
+
BbCollectionsInitial.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsInitial, selector: "[bbCollectionsInitial]", ngImport: i0 });
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsInitial, decorators: [{
|
|
159
159
|
type: Directive,
|
|
160
160
|
args: [{
|
|
161
161
|
selector: '[bbCollectionsInitial]'
|
|
@@ -168,11 +168,11 @@ class BbCollectionsViewer {
|
|
|
168
168
|
this.collection = null;
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
|
-
BbCollectionsViewer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
172
|
-
BbCollectionsViewer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
171
|
+
BbCollectionsViewer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsViewer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
+
BbCollectionsViewer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsViewer, selector: "[bb-collections-viewer]", inputs: { collection: "collection" }, host: { classAttribute: "bb-collections-viewer" }, queries: [{ propertyName: "dataTemplate", first: true, predicate: BbCollectionsData, descendants: true, read: TemplateRef }, { propertyName: "emptyTemplate", first: true, predicate: BbCollectionsEmpty, descendants: true, read: TemplateRef }, { propertyName: "errorTemplate", first: true, predicate: BbCollectionsError, descendants: true, read: TemplateRef }, { propertyName: "initialTemplate", first: true, predicate: BbCollectionsInitial, descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsViewer, decorators: [{
|
|
174
174
|
type: Component,
|
|
175
|
-
args: [{ selector: '[bb-collections-viewer]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-viewer' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container
|
|
175
|
+
args: [{ selector: '[bb-collections-viewer]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-viewer' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"] }]
|
|
176
176
|
}], propDecorators: { dataTemplate: [{
|
|
177
177
|
type: ContentChild,
|
|
178
178
|
args: [BbCollectionsData, { read: TemplateRef, static: false }]
|
|
@@ -296,9 +296,9 @@ class BbCollectionsPager {
|
|
|
296
296
|
.map(page => ({ page, active: pageNumber === page }));
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
BbCollectionsPager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
300
|
-
BbCollectionsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
299
|
+
BbCollectionsPager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsPager, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
300
|
+
BbCollectionsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BbCollectionsPager, selector: "bb-collections-pager", inputs: { label: "label", collection: "collection" }, host: { classAttribute: "bb-collections-pager" }, ngImport: i0, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BbCollectionsPager, decorators: [{
|
|
302
302
|
type: Component,
|
|
303
303
|
args: [{ selector: 'bb-collections-pager', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-pager' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"] }]
|
|
304
304
|
}], propDecorators: { label: [{
|
|
@@ -405,8 +405,8 @@ class Collection {
|
|
|
405
405
|
|
|
406
406
|
class CollectionsModule {
|
|
407
407
|
}
|
|
408
|
-
CollectionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
409
|
-
CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
408
|
+
CollectionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CollectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
409
|
+
CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: CollectionsModule, declarations: [
|
|
410
410
|
// Components.
|
|
411
411
|
BbCollectionsViewer,
|
|
412
412
|
BbCollectionsPager,
|
|
@@ -423,8 +423,8 @@ CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
423
423
|
BbCollectionsEmpty,
|
|
424
424
|
BbCollectionsError,
|
|
425
425
|
BbCollectionsInitial] });
|
|
426
|
-
CollectionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
427
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
426
|
+
CollectionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CollectionsModule, imports: [CommonModule] });
|
|
427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CollectionsModule, decorators: [{
|
|
428
428
|
type: NgModule,
|
|
429
429
|
args: [{
|
|
430
430
|
imports: [CommonModule],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/components/collections.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n abstract transform(request: CollectionRequest): Observable<CollectionData<T>>;\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {HttpClient} from '@angular/common/http';\nimport {map, switchMap} from 'rxjs/operators';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {\n params: {...params, ...extraParams, ...extraObjectParams}\n });\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {CollectionRequest} from '../interfaces/collection.interface';\nimport {CollectionProvider} from './collection.provider';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n constructor(private readonly _items: T[] | Observable<T[]>) {\n super();\n }\n\n transform(request: CollectionRequest) {\n const items$ = Array.isArray(this._items)\n ? of(this._items)\n : this._items;\n\n return items$.pipe(\n map(items => this.formatArrayToCollectionData(items))\n );\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbCollectionsData]'\n})\nexport class BbCollectionsData<T> {\n}\n\n@Directive({\n selector: '[bbCollectionsEmpty]'\n})\nexport class BbCollectionsEmpty {\n}\n\n@Directive({\n selector: '[bbCollectionsError]'\n})\nexport class BbCollectionsError {\n}\n\n@Directive({\n selector: '[bbCollectionsInitial]'\n})\nexport class BbCollectionsInitial {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from '../collections.directive';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error}\"></ng-container>\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {Collection} from '../../collection';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly maxAmountOfButtons: number = 5;\n\n // Inputs.\n @Input()\n set label(value: string) {\n this._label = value;\n this.cache$.next(this.cache$.getValue());\n }\n\n @Input()\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n // Data.\n data$: Observable<{\n totalPages: number,\n pageNumber: number,\n pages: { page: number, active: boolean }[],\n allowNext: boolean\n allowPrevious: boolean,\n label: string\n }>;\n cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n\n // State and subscriptions.\n private _label: string | null = null;\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n\n ngOnInit() {\n this.data$ = this.cache$.pipe(\n map(cache => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const fromStart = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const fromEnd = Math.max(0, Math.min((fromStart - 1) + pageSize, totalEntries));\n\n const pages = this.filterActivePages(pageNumber, totalPages);\n\n const allowNext = pageNumber < totalPages;\n const allowPrevious = pageNumber > 1;\n\n return {\n totalPages,\n pages,\n pageNumber,\n allowNext,\n allowPrevious,\n label: this.calculateLabel(fromStart, fromEnd, totalEntries)\n };\n })\n );\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private observeCollectionChanges() {\n if (!this._collection) {\n return;\n }\n\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n const pageNumber = this._collection?.pageNumberControl?.value;\n const pageSize = this._collection?.pageSizeControl?.value;\n\n this.cache$.next({pageNumber, pageSize});\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this.cache$.next(data);\n }\n });\n }\n\n private calculateLabel(start: number, end: number, total: number) {\n const startPoint = '[start]';\n const endPoint = '[end]';\n const totalPoint = '[total]';\n const label = this._label ?? `Showing ${startPoint} to ${endPoint} of ${totalPoint} results`;\n\n return label\n .replace(startPoint, `<strong>${start}</strong>`)\n .replace(endPoint, `<strong>${end}</strong>`)\n .replace(totalPoint, `<strong>${total}</strong>`);\n }\n\n private calculatePages(pageNumber: number, totalPages: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, this.maxAmountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber, totalPages)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n","import {catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n private _requestCache: CollectionRequest | null = null;\n\n constructor(private readonly _provider: CollectionProvider<T>,\n private readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n map(request => this.validateRequest(request)),\n switchMap(request => {\n return this._provider.transform(request).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n }))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => ({\n ...combined,\n response,\n state: this.getState(combined)\n }))\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private validateRequest(request: CollectionRequest) {\n // We should reset the page number whenever we change the query or the page size.\n if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {\n this.pageNumberControl?.setValue(1, {emitEvent: false});\n request.pageNumber = this.pageNumberControl?.value;\n }\n\n this._requestCache = {...request};\n\n return request;\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n this.loading$.next(false);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return this.queryControl.valueChanges.pipe(\n debounceTime<string>(400),\n distinctUntilChanged<string>(),\n startWith(this.queryControl?.value as string | null)\n );\n }\n\n}\n\n","import {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from './components/collections.directive';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ],\n exports: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ]\n})\nexport class CollectionsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/components/collections.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n abstract transform(request: CollectionRequest): Observable<CollectionData<T>>;\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {HttpClient} from '@angular/common/http';\nimport {map, switchMap} from 'rxjs/operators';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {\n params: {...params, ...extraParams, ...extraObjectParams}\n });\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {CollectionRequest} from '../interfaces/collection.interface';\nimport {CollectionProvider} from './collection.provider';\nimport {Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n constructor(private readonly _items: T[] | Observable<T[]>) {\n super();\n }\n\n transform(request: CollectionRequest) {\n const items$ = Array.isArray(this._items)\n ? of(this._items)\n : this._items;\n\n return items$.pipe(\n map(items => this.formatArrayToCollectionData(items))\n );\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbCollectionsData]'\n})\nexport class BbCollectionsData<T> {\n}\n\n@Directive({\n selector: '[bbCollectionsEmpty]'\n})\nexport class BbCollectionsEmpty {\n}\n\n@Directive({\n selector: '[bbCollectionsError]'\n})\nexport class BbCollectionsError {\n}\n\n@Directive({\n selector: '[bbCollectionsInitial]'\n})\nexport class BbCollectionsInitial {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from '../collections.directive';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {Collection} from '../../collection';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly maxAmountOfButtons: number = 5;\n\n // Inputs.\n @Input()\n set label(value: string) {\n this._label = value;\n this.cache$.next(this.cache$.getValue());\n }\n\n @Input()\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n // Data.\n data$: Observable<{\n totalPages: number,\n pageNumber: number,\n pages: { page: number, active: boolean }[],\n allowNext: boolean\n allowPrevious: boolean,\n label: string\n }>;\n cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n\n // State and subscriptions.\n private _label: string | null = null;\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n\n ngOnInit() {\n this.data$ = this.cache$.pipe(\n map(cache => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const fromStart = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const fromEnd = Math.max(0, Math.min((fromStart - 1) + pageSize, totalEntries));\n\n const pages = this.filterActivePages(pageNumber, totalPages);\n\n const allowNext = pageNumber < totalPages;\n const allowPrevious = pageNumber > 1;\n\n return {\n totalPages,\n pages,\n pageNumber,\n allowNext,\n allowPrevious,\n label: this.calculateLabel(fromStart, fromEnd, totalEntries)\n };\n })\n );\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private observeCollectionChanges() {\n if (!this._collection) {\n return;\n }\n\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n const pageNumber = this._collection?.pageNumberControl?.value;\n const pageSize = this._collection?.pageSizeControl?.value;\n\n this.cache$.next({pageNumber, pageSize});\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this.cache$.next(data);\n }\n });\n }\n\n private calculateLabel(start: number, end: number, total: number) {\n const startPoint = '[start]';\n const endPoint = '[end]';\n const totalPoint = '[total]';\n const label = this._label ?? `Showing ${startPoint} to ${endPoint} of ${totalPoint} results`;\n\n return label\n .replace(startPoint, `<strong>${start}</strong>`)\n .replace(endPoint, `<strong>${end}</strong>`)\n .replace(totalPoint, `<strong>${total}</strong>`);\n }\n\n private calculatePages(pageNumber: number, totalPages: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, this.maxAmountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber, totalPages)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n","import {catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n private _requestCache: CollectionRequest | null = null;\n\n constructor(private readonly _provider: CollectionProvider<T>,\n private readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n map(request => this.validateRequest(request)),\n switchMap(request => {\n return this._provider.transform(request).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n }))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => ({\n ...combined,\n response,\n state: this.getState(combined)\n }))\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private validateRequest(request: CollectionRequest) {\n // We should reset the page number whenever we change the query or the page size.\n if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {\n this.pageNumberControl?.setValue(1, {emitEvent: false});\n request.pageNumber = this.pageNumberControl?.value;\n }\n\n this._requestCache = {...request};\n\n return request;\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n this.loading$.next(false);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return this.queryControl.valueChanges.pipe(\n debounceTime<string>(400),\n distinctUntilChanged<string>(),\n startWith(this.queryControl?.value as string | null)\n );\n }\n\n}\n\n","import {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from './components/collections.directive';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ],\n exports: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ]\n})\nexport class CollectionsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|