@bravobit/bb-foundation 0.26.2 → 0.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  2. package/esm2020/auth/lib/auth.module.mjs +4 -4
  3. package/esm2020/auth/lib/auth.service.mjs +3 -3
  4. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  5. package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
  6. package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
  7. package/esm2020/collections/lib/collections.module.mjs +4 -4
  8. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  9. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  10. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  11. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +3 -3
  12. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +3 -3
  13. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
  14. package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
  15. package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
  16. package/esm2020/controls/lib/control-error/control-error.module.mjs +4 -4
  17. package/esm2020/controls/lib/controls.module.mjs +4 -4
  18. package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +3 -3
  19. package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
  20. package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +3 -3
  21. package/esm2020/controls/lib/form-control/form-control.module.mjs +4 -4
  22. package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +3 -3
  23. package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +3 -3
  24. package/esm2020/controls/lib/radio/radio.module.mjs +4 -4
  25. package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +3 -3
  26. package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +3 -3
  27. package/esm2020/controls/lib/toggle/toggle.module.mjs +4 -4
  28. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  29. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  30. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  31. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  32. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  33. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
  34. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  35. package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
  36. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  37. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  38. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  39. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  40. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  41. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  42. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  43. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  44. package/esm2020/dialog/lib/dialog.module.mjs +4 -4
  45. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  46. package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
  47. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  48. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
  49. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
  50. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  51. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  52. package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
  53. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  54. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
  55. package/esm2020/elements/lib/elements.module.mjs +4 -4
  56. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
  57. package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
  58. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  59. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  60. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  61. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
  62. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  63. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  64. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  65. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  66. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  67. package/esm2020/http/lib/http.module.mjs +4 -4
  68. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  69. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  70. package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
  71. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  72. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  73. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  74. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  75. package/esm2020/lib/core/services/network.service.mjs +3 -3
  76. package/esm2020/lib/core/services/patch.service.mjs +3 -3
  77. package/esm2020/localize/lib/localize.module.mjs +4 -4
  78. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  79. package/esm2020/localize/lib/localize.service.mjs +3 -3
  80. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  81. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  82. package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
  83. package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
  84. package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
  85. package/esm2020/masking/lib/masking.module.mjs +4 -4
  86. package/esm2020/masking/lib/masking.service.mjs +3 -3
  87. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  88. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  89. package/esm2020/notifications/lib/notifications.module.mjs +4 -4
  90. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  91. package/esm2020/permissions/lib/directives/permission.directive.mjs +3 -3
  92. package/esm2020/permissions/lib/guards/permission.guard.mjs +3 -3
  93. package/esm2020/permissions/lib/permissions.module.mjs +4 -4
  94. package/esm2020/permissions/lib/permissions.service.mjs +3 -3
  95. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  96. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  97. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  98. package/esm2020/storage/lib/storage.service.mjs +3 -3
  99. package/esm2020/table/lib/components/table/table.component.mjs +9 -9
  100. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  101. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  102. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  103. package/esm2020/table/lib/data/generic.data.mjs +13 -3
  104. package/esm2020/table/lib/table.module.mjs +4 -4
  105. package/esm2020/theming/lib/theming.directive.mjs +3 -3
  106. package/esm2020/theming/lib/theming.module.mjs +4 -4
  107. package/esm2020/tooltip/lib/tooltip-container/tooltip-container.component.mjs +3 -3
  108. package/esm2020/tooltip/lib/tooltip.directive.mjs +3 -3
  109. package/esm2020/tooltip/lib/tooltip.module.mjs +4 -4
  110. package/esm2020/utils/lib/directives/autosize.directive.mjs +3 -3
  111. package/esm2020/utils/lib/directives/focus-trap.directive.mjs +3 -3
  112. package/esm2020/utils/lib/directives/focus.directive.mjs +3 -3
  113. package/esm2020/utils/lib/directives/template.directive.mjs +3 -3
  114. package/esm2020/utils/lib/utils.module.mjs +4 -4
  115. package/fesm2015/bravobit-bb-foundation-auth.mjs +19 -19
  116. package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
  117. package/fesm2015/bravobit-bb-foundation-controls.mjs +57 -57
  118. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
  119. package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
  120. package/fesm2015/bravobit-bb-foundation-elements.mjs +76 -76
  121. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  122. package/fesm2015/bravobit-bb-foundation-localize.mjs +16 -16
  123. package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
  124. package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
  125. package/fesm2015/bravobit-bb-foundation-permissions.mjs +13 -13
  126. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
  127. package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
  128. package/fesm2015/bravobit-bb-foundation-table.mjs +34 -24
  129. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
  130. package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
  131. package/fesm2015/bravobit-bb-foundation-tooltip.mjs +10 -10
  132. package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
  133. package/fesm2015/bravobit-bb-foundation.mjs +21 -21
  134. package/fesm2020/bravobit-bb-foundation-auth.mjs +19 -19
  135. package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
  136. package/fesm2020/bravobit-bb-foundation-controls.mjs +57 -57
  137. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
  138. package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
  139. package/fesm2020/bravobit-bb-foundation-elements.mjs +76 -76
  140. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  141. package/fesm2020/bravobit-bb-foundation-localize.mjs +16 -16
  142. package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
  143. package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
  144. package/fesm2020/bravobit-bb-foundation-permissions.mjs +13 -13
  145. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
  146. package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
  147. package/fesm2020/bravobit-bb-foundation-table.mjs +34 -24
  148. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
  149. package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
  150. package/fesm2020/bravobit-bb-foundation-tooltip.mjs +10 -10
  151. package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
  152. package/fesm2020/bravobit-bb-foundation.mjs +21 -21
  153. package/package.json +1 -1
  154. package/table/lib/data/generic.data.d.ts +2 -0
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, of, combineLatest } from 'rxjs';
2
- import { filter, switchMap, map, share, tap, catchError, debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
2
+ import { filter, switchMap, map, tap, share, catchError, debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
3
3
  import * as i0 from '@angular/core';
4
4
  import { forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Directive, TemplateRef, ContentChildren, ContentChild, Optional, Host, Attribute, HostListener, NgModule } from '@angular/core';
5
5
  import * as i2 from '@angular/forms';
@@ -48,6 +48,7 @@ class GenericDataSource extends DataSource {
48
48
  // Data.
49
49
  this._items$ = new BehaviorSubject([]);
50
50
  this._fn = data => data;
51
+ this._rawFn = null;
51
52
  this.formatResponse = (data) => {
52
53
  return {
53
54
  pageSize: data?.['page_size'],
@@ -94,6 +95,10 @@ class GenericDataSource extends DataSource {
94
95
  this._fn = fn;
95
96
  return this;
96
97
  }
98
+ raw(fn) {
99
+ this._rawFn = fn;
100
+ return this;
101
+ }
97
102
  handle(request) {
98
103
  const extraParams$ = this._items$.pipe(switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)), map(items => items.reduce((previous, current) => ({ ...previous, ...(current ?? {}) }), {})));
99
104
  return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(switchMap(([params, endpoint, extraParams]) => {
@@ -103,7 +108,12 @@ class GenericDataSource extends DataSource {
103
108
  const combinedParams = { ...formattedParams, ...extraParams };
104
109
  return this._httpClient.get(endpoint, {
105
110
  params: combinedParams
106
- }).pipe(map(data => this.formatResponse(data)), map(result => ({
111
+ }).pipe(tap(data => {
112
+ if (!this._rawFn) {
113
+ return;
114
+ }
115
+ this._rawFn(data);
116
+ }), map(data => this.formatResponse(data)), map(result => ({
107
117
  ...result,
108
118
  data: this._fn(result?.data ?? [])
109
119
  })));
@@ -217,11 +227,11 @@ class BbTablePager extends BbTablePagerMixinBase {
217
227
  .map(page => ({ page, active: pageNumber === page }));
218
228
  }
219
229
  }
220
- BbTablePager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTablePager, deps: null, target: i0.ɵɵFactoryTarget.Component });
221
- BbTablePager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: BbTablePager, selector: "bb-table-pager", inputs: { disabled: "disabled", amountOfButtons: "amountOfButtons", showArrowButtons: "showArrowButtons", pageNumber: "pageNumber", totalPages: "totalPages" }, host: { properties: { "class.disabled": "disabled" }, classAttribute: "bb-table-pager" }, providers: [
230
+ BbTablePager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTablePager, deps: null, target: i0.ɵɵFactoryTarget.Component });
231
+ BbTablePager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BbTablePager, selector: "bb-table-pager", inputs: { disabled: "disabled", amountOfButtons: "amountOfButtons", showArrowButtons: "showArrowButtons", pageNumber: "pageNumber", totalPages: "totalPages" }, host: { properties: { "class.disabled": "disabled" }, classAttribute: "bb-table-pager" }, providers: [
222
232
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true }
223
233
  ], usesInheritance: true, ngImport: i0, template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n", styles: [".bb-table-pager{flex:1;display:flex;align-items:center;justify-content:flex-end}.bb-table-pager.disabled{opacity:.5;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-pager-list{display:flex}.bb-pager-list-item{margin-left:8px}.bb-pager-list-button{padding:0;color:#3d464d;line-height:1;min-width:32px;font-size:16px;-webkit-appearance:none;appearance:none;font-weight:500;min-height:32px;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;display:inline-flex;justify-content:center;border:1px solid #b6bbc1;transition-duration:.2s;background-color:transparent;transition-timing-function:cubic-bezier(0,0,.2,1);transition-property:color,border-color,opacity,background-color;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a}.bb-pager-list-button:hover,.bb-pager-list-button:focus{background-color:#0000000a}.bb-pager-list-button.active,.bb-pager-list-button.active:hover{color:#2196f3;cursor:default;border-color:#2196f3;background-color:transparent}.bb-pager-list-button:disabled{opacity:.35;cursor:default;pointer-events:none}\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: "component", type: i3.BbIcon, selector: "bb-icon", inputs: ["alt", "size", "src", "ariaHidden"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTablePager, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTablePager, decorators: [{
225
235
  type: Component,
226
236
  args: [{ selector: 'bb-table-pager', changeDetection: ChangeDetectionStrategy.OnPush, host: {
227
237
  'class': 'bb-table-pager',
@@ -241,9 +251,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
241
251
 
242
252
  class BbTableColumnDef {
243
253
  }
244
- BbTableColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
245
- BbTableColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: BbTableColumnDef, selector: "[bbTableColumnDef]", ngImport: i0 });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableColumnDef, decorators: [{
254
+ BbTableColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
255
+ BbTableColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: BbTableColumnDef, selector: "[bbTableColumnDef]", ngImport: i0 });
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableColumnDef, decorators: [{
247
257
  type: Directive,
248
258
  args: [{
249
259
  selector: '[bbTableColumnDef]'
@@ -251,9 +261,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
251
261
  }] });
252
262
  class BbTableRowDef {
253
263
  }
254
- BbTableRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
255
- BbTableRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: BbTableRowDef, selector: "[bbTableRowDef]", ngImport: i0 });
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableRowDef, decorators: [{
264
+ BbTableRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
265
+ BbTableRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: BbTableRowDef, selector: "[bbTableRowDef]", ngImport: i0 });
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableRowDef, decorators: [{
257
267
  type: Directive,
258
268
  args: [{
259
269
  selector: '[bbTableRowDef]'
@@ -392,9 +402,9 @@ class BbTable {
392
402
  return this.form.valueChanges.pipe(startWith(this.form.value));
393
403
  }
394
404
  }
395
- BbTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
396
- BbTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: BbTable, selector: "bb-table", inputs: { identifier: "identifier", dataSource: "dataSource", queryFields: "queryFields", sortingStrategy: "sortingStrategy", header: "header", footer: "footer", sizes: "sizes" }, host: { classAttribute: "bb-table" }, queries: [{ propertyName: "tableRowTemplate", first: true, predicate: BbTableRowDef, descendants: true, read: TemplateRef }, { propertyName: "tableColumnTemplates", predicate: BbTableColumnDef, read: TemplateRef }], ngImport: i0, template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 6px 6px -6px #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;padding:20px 20px 10px;background-color:#fff;justify-content:flex-end;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #d8d8d8}.bb-table-top-actions>*{margin-left:0;margin-bottom:10px}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:60px;display:flex;padding:0 20px;overflow-x:auto;align-items:center;background-color:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{padding:20px;display:flex;color:#3d464d;font-size:14px;line-height:1.2;font-weight:400;min-height:140px;text-align:center;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:12px}.bb-table-template-content-code{opacity:.5;margin-top:5px;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;height:4px;display:block;overflow:hidden;position:absolute;background-color:#2f408b4d;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:#2f408b}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:4px;background-color:transparent;transition:background-color .25s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:10px;margin-bottom:10px}}\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: "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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.BbInput, selector: "input[bbInput], textarea[bbInput]", inputs: ["readonly"] }, { kind: "directive", type: i3.BbSelect, selector: "select[bbInput]", inputs: ["disabled", "required"] }, { kind: "directive", type: i3.BbSuffix, selector: "[bbSuffix]" }, { kind: "component", type: i3.BbIcon, selector: "bb-icon", inputs: ["alt", "size", "src", "ariaHidden"] }, { kind: "component", type: i3.BbFormControl, selector: "bb-form-control", inputs: ["grouped", "hideErrors", "label", "hint"] }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["disabled", "amountOfButtons", "showArrowButtons", "pageNumber", "totalPages"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTable, decorators: [{
405
+ BbTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
406
+ BbTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BbTable, selector: "bb-table", inputs: { identifier: "identifier", dataSource: "dataSource", queryFields: "queryFields", sortingStrategy: "sortingStrategy", header: "header", footer: "footer", sizes: "sizes" }, host: { classAttribute: "bb-table" }, queries: [{ propertyName: "tableRowTemplate", first: true, predicate: BbTableRowDef, descendants: true, read: TemplateRef }, { propertyName: "tableColumnTemplates", predicate: BbTableColumnDef, read: TemplateRef }], ngImport: i0, template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 6px 6px -6px #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;padding:20px 20px 10px;background-color:#fff;justify-content:flex-end;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #d8d8d8}.bb-table-top-actions>*{margin-left:0;margin-bottom:10px}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:60px;display:flex;padding:0 20px;overflow-x:auto;align-items:center;background-color:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{padding:20px;display:flex;color:#3d464d;font-size:14px;line-height:1.2;font-weight:400;min-height:140px;text-align:center;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:12px}.bb-table-template-content-code{opacity:.5;margin-top:5px;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;height:4px;display:block;overflow:hidden;position:absolute;background-color:#2f408b4d;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:#2f408b}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:4px;background-color:transparent;transition:background-color .25s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:10px;margin-bottom:10px}}\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: "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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.BbInput, selector: "input[bbInput], textarea[bbInput]", inputs: ["readonly"] }, { kind: "directive", type: i3.BbSelect, selector: "select[bbInput]", inputs: ["disabled", "required"] }, { kind: "directive", type: i3.BbSuffix, selector: "[bbSuffix]" }, { kind: "component", type: i3.BbIcon, selector: "bb-icon", inputs: ["alt", "size", "src", "ariaHidden"] }, { kind: "component", type: i3.BbFormControl, selector: "bb-form-control", inputs: ["grouped", "hideErrors", "label", "hint"] }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["disabled", "amountOfButtons", "showArrowButtons", "pageNumber", "totalPages"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTable, decorators: [{
398
408
  type: Component,
399
409
  args: [{ selector: 'bb-table', host: { 'class': 'bb-table' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 6px 6px -6px #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;padding:20px 20px 10px;background-color:#fff;justify-content:flex-end;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #d8d8d8}.bb-table-top-actions>*{margin-left:0;margin-bottom:10px}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:60px;display:flex;padding:0 20px;overflow-x:auto;align-items:center;background-color:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{padding:20px;display:flex;color:#3d464d;font-size:14px;line-height:1.2;font-weight:400;min-height:140px;text-align:center;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:12px}.bb-table-template-content-code{opacity:.5;margin-top:5px;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;height:4px;display:block;overflow:hidden;position:absolute;background-color:#2f408b4d;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:#2f408b}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:4px;background-color:transparent;transition:background-color .25s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:10px;margin-bottom:10px}}\n"] }]
400
410
  }], propDecorators: { tableColumnTemplates: [{
@@ -421,9 +431,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
421
431
 
422
432
  class BbTableCell {
423
433
  }
424
- BbTableCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
425
- BbTableCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: BbTableCell, selector: "bb-table-cell", host: { classAttribute: "bb-table-cell" }, ngImport: i0, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;font-size:14px;text-align:left;line-height:1.2;font-weight:400;padding:12px 20px;display:table-cell;word-wrap:break-word;vertical-align:middle;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-cell:not(:last-child){border-right:1px solid #d8d8d8}.bb-table-cell.fit{width:1%;white-space:nowrap}.bb-table-cell.left{text-align:left}.bb-table-cell.center{text-align:center}.bb-table-cell.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableCell, decorators: [{
434
+ BbTableCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
435
+ BbTableCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BbTableCell, selector: "bb-table-cell", host: { classAttribute: "bb-table-cell" }, ngImport: i0, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;font-size:14px;text-align:left;line-height:1.2;font-weight:400;padding:12px 20px;display:table-cell;word-wrap:break-word;vertical-align:middle;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-cell:not(:last-child){border-right:1px solid #d8d8d8}.bb-table-cell.fit{width:1%;white-space:nowrap}.bb-table-cell.left{text-align:left}.bb-table-cell.center{text-align:center}.bb-table-cell.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableCell, decorators: [{
427
437
  type: Component,
428
438
  args: [{ selector: 'bb-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'bb-table-cell' }, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;font-size:14px;text-align:left;line-height:1.2;font-weight:400;padding:12px 20px;display:table-cell;word-wrap:break-word;vertical-align:middle;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-cell:not(:last-child){border-right:1px solid #d8d8d8}.bb-table-cell.fit{width:1%;white-space:nowrap}.bb-table-cell.left{text-align:left}.bb-table-cell.center{text-align:center}.bb-table-cell.right{text-align:right}\n"] }]
429
439
  }] });
@@ -528,9 +538,9 @@ class BbTableHeaderCell extends BbTableHeaderCellMixinBase {
528
538
  this._table?.sortControl?.patchValue(newValue);
529
539
  }
530
540
  }
531
- BbTableHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableHeaderCell, deps: [{ token: BbTable, host: true, optional: true }, { token: 'name', attribute: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
532
- BbTableHeaderCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: BbTableHeaderCell, selector: "bb-table-header-cell", inputs: { disabled: "disabled", sort: "sort" }, host: { listeners: { "click": "onClick()" }, properties: { "class.disabled": "isDisabled" }, classAttribute: "bb-table-header-cell" }, usesInheritance: true, ngImport: i0, template: "<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n", styles: [".bb-table-header-cell{height:50px;color:#212529;cursor:pointer;font-size:16px;font-weight:500;-webkit-user-select:none;user-select:none;padding:10px 20px;position:relative;display:table-cell;vertical-align:middle;border-bottom:1px solid #d8d8d8}.bb-table-header-cell:active>.bb-table-header-cell-toggle{background-color:#00000014}.bb-table-header-cell:not(.disabled){padding-right:52px}.bb-table-header-cell.fit{width:1%;white-space:nowrap}.bb-table-header-cell.left{text-align:left}.bb-table-header-cell.center{text-align:center}.bb-table-header-cell.right{text-align:right}.bb-table-header-cell.disabled{cursor:default;pointer-events:none}.bb-table-header-cell-toggle{top:50%;right:14px;width:22px;border:none;height:22px;margin-left:auto;position:absolute;border-radius:4px;transform:translateY(-50%);background-position:center;background-repeat:no-repeat;background-color:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1);background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.desc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"black\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.asc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"black\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}\n"], dependencies: [{ 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 });
533
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbTableHeaderCell, decorators: [{
541
+ BbTableHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableHeaderCell, deps: [{ token: BbTable, host: true, optional: true }, { token: 'name', attribute: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
542
+ BbTableHeaderCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BbTableHeaderCell, selector: "bb-table-header-cell", inputs: { disabled: "disabled", sort: "sort" }, host: { listeners: { "click": "onClick()" }, properties: { "class.disabled": "isDisabled" }, classAttribute: "bb-table-header-cell" }, usesInheritance: true, ngImport: i0, template: "<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n", styles: [".bb-table-header-cell{height:50px;color:#212529;cursor:pointer;font-size:16px;font-weight:500;-webkit-user-select:none;user-select:none;padding:10px 20px;position:relative;display:table-cell;vertical-align:middle;border-bottom:1px solid #d8d8d8}.bb-table-header-cell:active>.bb-table-header-cell-toggle{background-color:#00000014}.bb-table-header-cell:not(.disabled){padding-right:52px}.bb-table-header-cell.fit{width:1%;white-space:nowrap}.bb-table-header-cell.left{text-align:left}.bb-table-header-cell.center{text-align:center}.bb-table-header-cell.right{text-align:right}.bb-table-header-cell.disabled{cursor:default;pointer-events:none}.bb-table-header-cell-toggle{top:50%;right:14px;width:22px;border:none;height:22px;margin-left:auto;position:absolute;border-radius:4px;transform:translateY(-50%);background-position:center;background-repeat:no-repeat;background-color:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1);background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.desc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"black\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.asc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"black\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}\n"], dependencies: [{ 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 });
543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbTableHeaderCell, decorators: [{
534
544
  type: Component,
535
545
  args: [{ selector: 'bb-table-header-cell', changeDetection: ChangeDetectionStrategy.OnPush, host: {
536
546
  'class': 'bb-table-header-cell',
@@ -562,8 +572,8 @@ const DECLARATIONS_EXPORTS = [
562
572
  ];
563
573
  class TableModule {
564
574
  }
565
- TableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
566
- TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: TableModule, declarations: [BbTable,
575
+ TableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
576
+ TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: TableModule, declarations: [BbTable,
567
577
  BbTableColumnDef,
568
578
  BbTableRowDef,
569
579
  BbTableHeaderCell,
@@ -574,8 +584,8 @@ TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
574
584
  BbTableHeaderCell,
575
585
  BbTableCell,
576
586
  BbTablePager] });
577
- TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableModule, imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule] });
578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableModule, decorators: [{
587
+ TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableModule, imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule] });
588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableModule, decorators: [{
579
589
  type: NgModule,
580
590
  args: [{
581
591
  imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\nclass BbTablePagerBase {\n}\n\nconst BbTablePagerMixinBase: CanDisableConstructor\n & typeof BbTablePagerBase\n = mixinDisabled(BbTablePagerBase);\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ]\n})\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n trackByIndex = (_, item) => item.page;\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\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)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Directive({\n selector: '[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Optimizations.\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\n trackByValue = (_, item) => item;\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Host,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\nclass BbTableHeaderCellBase {\n}\n\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n super();\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nconst DECLARATIONS_EXPORTS = [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4.BbTablePager"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n private _rawFn: ((data: unknown) => void) | null = null;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n raw(fn: (data: unknown) => void) {\n this._rawFn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n tap(data => {\n if (!this._rawFn) {\n return;\n }\n this._rawFn(data);\n }),\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\nclass BbTablePagerBase {\n}\n\nconst BbTablePagerMixinBase: CanDisableConstructor\n & typeof BbTablePagerBase\n = mixinDisabled(BbTablePagerBase);\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ]\n})\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n trackByIndex = (_, item) => item.page;\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\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)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Directive({\n selector: '[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Optimizations.\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\n trackByValue = (_, item) => item;\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Host,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\nclass BbTableHeaderCellBase {\n}\n\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n super();\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nconst DECLARATIONS_EXPORTS = [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4.BbTablePager"],"mappings":"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"}
@@ -25,9 +25,9 @@ class BbiTheming {
25
25
  }
26
26
  }
27
27
  }
28
- BbiTheming.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbiTheming, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
- BbiTheming.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: BbiTheming, selector: "[bbiTheming]", inputs: { theme: ["bbiTheming", "theme"] }, ngImport: i0 });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbiTheming, decorators: [{
28
+ BbiTheming.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbiTheming, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
+ BbiTheming.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: BbiTheming, selector: "[bbiTheming]", inputs: { theme: ["bbiTheming", "theme"] }, ngImport: i0 });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbiTheming, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: '[bbiTheming]'
@@ -362,10 +362,10 @@ class Theme {
362
362
 
363
363
  class ThemingModule {
364
364
  }
365
- ThemingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ThemingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
366
- ThemingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: ThemingModule, declarations: [BbiTheming], exports: [BbiTheming] });
367
- ThemingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ThemingModule });
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ThemingModule, decorators: [{
365
+ ThemingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ThemingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
366
+ ThemingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: ThemingModule, declarations: [BbiTheming], exports: [BbiTheming] });
367
+ ThemingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ThemingModule });
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ThemingModule, decorators: [{
369
369
  type: NgModule,
370
370
  args: [{
371
371
  declarations: [BbiTheming],