@bravobit/bb-foundation 0.59.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -228,12 +228,12 @@ class BbTablePager {
228
228
  .filter(page => page > 0 && page <= totalPages)
229
229
  .map(page => ({ page, active: pageNumber === page }));
230
230
  }
231
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTablePager, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: BbTablePager, isStandalone: true, selector: "bb-table-pager", inputs: { amountOfButtons: "amountOfButtons", showArrowButtons: "showArrowButtons", disabled: ["disabled", "disabled", booleanAttribute], pageNumber: "pageNumber", totalPages: "totalPages" }, host: { properties: { "class.disabled": "disabled" }, classAttribute: "bb-table-pager" }, providers: [
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTablePager, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: BbTablePager, isStandalone: true, selector: "bb-table-pager", inputs: { amountOfButtons: "amountOfButtons", showArrowButtons: "showArrowButtons", disabled: ["disabled", "disabled", booleanAttribute], pageNumber: "pageNumber", totalPages: "totalPages" }, host: { properties: { "class.disabled": "disabled" }, classAttribute: "bb-table-pager" }, providers: [
233
233
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true }
234
234
  ], ngImport: i0, template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li 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]=\"arrowPreviousIconName\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [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 }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li 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]=\"arrowNextIconName\"></bb-icon>\n </button>\n </li>\n }\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:.5rem}.bb-pager-list-button{padding:0;color:#3d464d;line-height:1;min-width:2rem;font-size:1rem;appearance:none;font-weight:500;min-height:2rem;-webkit-user-select:none;user-select:none;align-items:center;display:inline-flex;border-radius:.25rem;justify-content:center;border:1px solid #b6bbc1;transition-duration:.2s;background-color:transparent;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a;transition-property:color,border-color,opacity,background-color}.bb-pager-list-button:hover,.bb-pager-list-button:focus{background-color:#0000000a}.bb-pager-list-button.active,.bb-pager-list-button.active:hover{cursor:default;background-color:transparent;color:var(--bb-collections-pager-color);border-color:var(--bb-collections-pager-outline-color)}.bb-pager-list-button:disabled{opacity:.35;cursor:default;pointer-events:none}\n"], dependencies: [{ kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
235
235
  }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTablePager, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTablePager, decorators: [{
237
237
  type: Component,
238
238
  args: [{ selector: 'bb-table-pager', changeDetection: ChangeDetectionStrategy.OnPush, host: {
239
239
  'class': 'bb-table-pager',
@@ -255,20 +255,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImpor
255
255
  }] } });
256
256
 
257
257
  class BbTableColumnDef {
258
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
259
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbTableColumnDef, isStandalone: true, selector: "ng-template[bbTableColumnDef]", ngImport: i0 });
258
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
259
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BbTableColumnDef, isStandalone: true, selector: "ng-template[bbTableColumnDef]", ngImport: i0 });
260
260
  }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableColumnDef, decorators: [{
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableColumnDef, decorators: [{
262
262
  type: Directive,
263
263
  args: [{
264
264
  selector: 'ng-template[bbTableColumnDef]'
265
265
  }]
266
266
  }] });
267
267
  class BbTableRowDef {
268
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
269
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbTableRowDef, isStandalone: true, selector: "ng-template[bbTableRowDef]", ngImport: i0 });
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
269
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BbTableRowDef, isStandalone: true, selector: "ng-template[bbTableRowDef]", ngImport: i0 });
270
270
  }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableRowDef, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableRowDef, decorators: [{
272
272
  type: Directive,
273
273
  args: [{
274
274
  selector: 'ng-template[bbTableRowDef]'
@@ -418,10 +418,10 @@ class BbTable {
418
418
  getFormChanges() {
419
419
  return merge(this.form.valueChanges, defer(() => of(this.form?.value)));
420
420
  }
421
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
422
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: BbTable, isStandalone: true, 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@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell,th[bb-table-header-cell]\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\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 }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\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 @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\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 @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n 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\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\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 @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #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:.25rem;border-top-right-radius:.25rem}.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;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.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:.25rem;background-color:transparent;transition:background-color .2s 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:.75rem;margin-bottom:.75rem}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BbFormControl, selector: "bb-form-control", inputs: ["label", "hint", "grouped", "hideErrors"] }, { kind: "directive", type: BbInput, selector: "input[bbInput],textarea[bbInput],select[bbInput]", inputs: ["required"] }, { kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["amountOfButtons", "showArrowButtons", "disabled", "pageNumber", "totalPages"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
421
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
422
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: BbTable, isStandalone: true, 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@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell,th[bb-table-header-cell]\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\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 }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\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 @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\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 @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n 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\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\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 @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #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:.25rem;border-top-right-radius:.25rem}.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;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.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:.25rem;background-color:transparent;transition:background-color .2s 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:.75rem;margin-bottom:.75rem}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BbFormControl, selector: "bb-form-control", inputs: ["label", "hint", "grouped", "hideErrors"] }, { kind: "directive", type: BbInput, selector: "input[bbInput],textarea[bbInput],select[bbInput]", inputs: ["required"] }, { kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["amountOfButtons", "showArrowButtons", "disabled", "pageNumber", "totalPages"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
423
423
  }
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTable, decorators: [{
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTable, decorators: [{
425
425
  type: Component,
426
426
  args: [{ selector: 'bb-table', host: { 'class': 'bb-table' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbTablePager, BbLocalize], 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@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell,th[bb-table-header-cell]\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\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 }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\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 @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\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 @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n 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\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\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 @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #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:.25rem;border-top-right-radius:.25rem}.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;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.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:.25rem;background-color:transparent;transition:background-color .2s 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:.75rem;margin-bottom:.75rem}}\n"] }]
427
427
  }], propDecorators: { tableColumnTemplates: [{
@@ -447,10 +447,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImpor
447
447
  }] } });
448
448
 
449
449
  class BbTableCell {
450
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
451
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.5", type: BbTableCell, isStandalone: true, selector: "bb-table-cell, td[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;text-align:left;line-height:1.2;font-weight:400;display:table-cell;font-size:.875rem;word-wrap:break-word;vertical-align:middle;padding:.75rem 1.5rem;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 });
450
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
451
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: BbTableCell, isStandalone: true, selector: "bb-table-cell, td[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;text-align:left;line-height:1.2;font-weight:400;display:table-cell;font-size:.875rem;word-wrap:break-word;vertical-align:middle;padding:.75rem 1.5rem;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 });
452
452
  }
453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableCell, decorators: [{
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableCell, decorators: [{
454
454
  type: Component,
455
455
  args: [{ selector: 'bb-table-cell, td[bb-table-cell]', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'bb-table-cell' }, encapsulation: ViewEncapsulation.None, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;text-align:left;line-height:1.2;font-weight:400;display:table-cell;font-size:.875rem;word-wrap:break-word;vertical-align:middle;padding:.75rem 1.5rem;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"] }]
456
456
  }] });
@@ -556,10 +556,10 @@ class BbTableHeaderCell {
556
556
  logWarning = (message) => {
557
557
  console && console.warn && console.warn(message);
558
558
  };
559
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableHeaderCell, deps: [{ token: BbTable, host: true, optional: true }, { token: 'name', attribute: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
560
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: BbTableHeaderCell, isStandalone: true, selector: "bb-table-header-cell,th[bb-table-header-cell]", inputs: { disabled: ["disabled", "disabled", booleanAttribute], sort: "sort" }, host: { listeners: { "click": "onClick()" }, properties: { "class.disabled": "isDisabled" }, classAttribute: "bb-table-header-cell" }, ngImport: i0, template: "<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n", styles: [".bb-table-header-cell{height:3rem;color:#212529;cursor:pointer;font-size:1rem;text-align:left;font-weight:500;-webkit-user-select:none;user-select:none;position:relative;display:table-cell;vertical-align:middle;padding:.75rem 1.5rem;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:3.25rem}.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:1rem;border:none;width:1.5rem;height:1.5rem;margin-left:auto;position:absolute;border-radius:.25rem;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: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
559
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableHeaderCell, deps: [{ token: BbTable, host: true, optional: true }, { token: 'name', attribute: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
560
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: BbTableHeaderCell, isStandalone: true, selector: "bb-table-header-cell,th[bb-table-header-cell]", inputs: { disabled: ["disabled", "disabled", booleanAttribute], sort: "sort" }, host: { listeners: { "click": "onClick()" }, properties: { "class.disabled": "isDisabled" }, classAttribute: "bb-table-header-cell" }, ngImport: i0, template: "<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n", styles: [".bb-table-header-cell{height:3rem;color:#212529;cursor:pointer;font-size:1rem;text-align:left;font-weight:500;-webkit-user-select:none;user-select:none;position:relative;display:table-cell;vertical-align:middle;padding:.75rem 1.5rem;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:3.25rem}.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:1rem;border:none;width:1.5rem;height:1.5rem;margin-left:auto;position:absolute;border-radius:.25rem;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: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
561
561
  }
562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTableHeaderCell, decorators: [{
562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTableHeaderCell, decorators: [{
563
563
  type: Component,
564
564
  args: [{ selector: 'bb-table-header-cell,th[bb-table-header-cell]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
565
565
  'class': 'bb-table-header-cell',
@@ -585,8 +585,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImpor
585
585
  }] } });
586
586
 
587
587
  class TableModule {
588
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
589
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.5", ngImport: i0, type: TableModule, imports: [BbTable,
588
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
589
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: TableModule, imports: [BbTable,
590
590
  BbTableColumnDef,
591
591
  BbTableRowDef,
592
592
  BbTableHeaderCell,
@@ -597,10 +597,10 @@ class TableModule {
597
597
  BbTableHeaderCell,
598
598
  BbTableCell,
599
599
  BbTablePager] });
600
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TableModule, imports: [BbTable,
600
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableModule, imports: [BbTable,
601
601
  BbTablePager] });
602
602
  }
603
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TableModule, decorators: [{
603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableModule, decorators: [{
604
604
  type: NgModule,
605
605
  args: [{
606
606
  imports: [
@@ -15,10 +15,10 @@ class TooltipContainerComponent {
15
15
  .filter(item => !!item)
16
16
  .join(' ');
17
17
  }
18
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.5", type: TooltipContainerComponent, isStandalone: true, selector: "bb-tooltip-container", host: { properties: { "class": "this.classBinding" }, classAttribute: "bb-tooltip-container" }, ngImport: i0, template: "<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;max-width:25rem;line-height:1.5;-webkit-user-select:none;user-select:none;position:relative;font-size:.875rem;pointer-events:none;border-radius:.5rem;padding:.5rem .75rem;background-color:#111}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid}.bb-tooltip-container>small{display:block;font-size:.75rem;margin-top:.25rem;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:.5rem .5rem 0 .5rem;border-color:#111111 transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 .5rem .5rem .5rem;border-color:transparent transparent #111111 transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:.5rem 0 .5rem .5rem;border-color:transparent transparent transparent #111111}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:.5rem .5rem .5rem 0;border-color:transparent #111111 transparent transparent}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: TooltipContainerComponent, isStandalone: true, selector: "bb-tooltip-container", host: { properties: { "class": "this.classBinding" }, classAttribute: "bb-tooltip-container" }, ngImport: i0, template: "<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;max-width:25rem;line-height:1.5;-webkit-user-select:none;user-select:none;position:relative;font-size:.875rem;pointer-events:none;border-radius:.5rem;padding:.5rem .75rem;background-color:#111}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid}.bb-tooltip-container>small{display:block;font-size:.75rem;margin-top:.25rem;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:.5rem .5rem 0 .5rem;border-color:#111111 transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 .5rem .5rem .5rem;border-color:transparent transparent #111111 transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:.5rem 0 .5rem .5rem;border-color:transparent transparent transparent #111111}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:.5rem .5rem .5rem 0;border-color:transparent #111111 transparent transparent}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipContainerComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipContainerComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'bb-tooltip-container', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-tooltip-container' }, imports: [BbTemplate], template: "<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;max-width:25rem;line-height:1.5;-webkit-user-select:none;user-select:none;position:relative;font-size:.875rem;pointer-events:none;border-radius:.5rem;padding:.5rem .75rem;background-color:#111}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid}.bb-tooltip-container>small{display:block;font-size:.75rem;margin-top:.25rem;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:.5rem .5rem 0 .5rem;border-color:#111111 transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 .5rem .5rem .5rem;border-color:transparent transparent #111111 transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:.5rem 0 .5rem .5rem;border-color:transparent transparent transparent #111111}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:.5rem .5rem .5rem 0;border-color:transparent #111111 transparent transparent}\n"] }]
24
24
  }], propDecorators: { classBinding: [{
@@ -116,10 +116,10 @@ class TooltipDirective {
116
116
  }
117
117
  ];
118
118
  }
119
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
120
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.5", type: TooltipDirective, isStandalone: true, selector: "[bbTooltip]", inputs: { bbTooltip: "bbTooltip", bbTooltipClass: "bbTooltipClass", bbTooltipOrigin: "bbTooltipOrigin", bbTooltipPositions: "bbTooltipPositions", bbTooltipDisabled: ["bbTooltipDisabled", "bbTooltipDisabled", booleanAttribute] }, host: { listeners: { "mouseenter": "showTooltip()", "focus": "showTooltip()", "mouseleave": "hideTooltip()", "blur": "hideTooltip()" } }, ngImport: i0 });
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
120
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.1.4", type: TooltipDirective, isStandalone: true, selector: "[bbTooltip]", inputs: { bbTooltip: "bbTooltip", bbTooltipClass: "bbTooltipClass", bbTooltipOrigin: "bbTooltipOrigin", bbTooltipPositions: "bbTooltipPositions", bbTooltipDisabled: ["bbTooltipDisabled", "bbTooltipDisabled", booleanAttribute] }, host: { listeners: { "mouseenter": "showTooltip()", "focus": "showTooltip()", "mouseleave": "hideTooltip()", "blur": "hideTooltip()" } }, ngImport: i0 });
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipDirective, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipDirective, decorators: [{
123
123
  type: Directive,
124
124
  args: [{
125
125
  selector: '[bbTooltip]'
@@ -150,11 +150,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImpor
150
150
  }] } });
151
151
 
152
152
  class TooltipModule {
153
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
154
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.5", ngImport: i0, type: TooltipModule, imports: [TooltipDirective], exports: [TooltipDirective] });
155
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipModule });
153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
154
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: TooltipModule, imports: [TooltipDirective], exports: [TooltipDirective] });
155
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipModule });
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: TooltipModule, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TooltipModule, decorators: [{
158
158
  type: NgModule,
159
159
  args: [{
160
160
  imports: [TooltipDirective],
@@ -18,10 +18,10 @@ class BbTemplate {
18
18
  }
19
19
  // Required so that the template type checker can infer the type of the coerced inputs.
20
20
  static ngAcceptInputType_bbTemplate;
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
22
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbTemplate, isStandalone: true, selector: "[bbTemplate]", inputs: { bbTemplate: "bbTemplate" }, ngImport: i0 });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
22
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BbTemplate, isStandalone: true, selector: "[bbTemplate]", inputs: { bbTemplate: "bbTemplate" }, ngImport: i0 });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbTemplate, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbTemplate, decorators: [{
25
25
  type: Directive,
26
26
  args: [{
27
27
  selector: '[bbTemplate]'
@@ -74,10 +74,10 @@ class BbAutosize {
74
74
  }
75
75
  return setTimeout(() => this.updateStyles(), 0);
76
76
  }
77
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbAutosize, deps: [], target: i0.ɵɵFactoryTarget.Directive });
78
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.0.5", type: BbAutosize, isStandalone: true, selector: "textarea[bbAutosize]", inputs: { minHeight: "minHeight", maxHeight: "maxHeight", rows: ["rows", "rows", numberAttribute] }, host: { listeners: { "window:resize": "onWindowResize()", "input": "onInputReceived()" }, properties: { "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "rows": "this.rows" } }, ngImport: i0 });
77
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbAutosize, deps: [], target: i0.ɵɵFactoryTarget.Directive });
78
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.1.4", type: BbAutosize, isStandalone: true, selector: "textarea[bbAutosize]", inputs: { minHeight: "minHeight", maxHeight: "maxHeight", rows: ["rows", "rows", numberAttribute] }, host: { listeners: { "window:resize": "onWindowResize()", "input": "onInputReceived()" }, properties: { "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "rows": "this.rows" } }, ngImport: i0 });
79
79
  }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbAutosize, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbAutosize, decorators: [{
81
81
  type: Directive,
82
82
  args: [{
83
83
  selector: 'textarea[bbAutosize]'
@@ -141,10 +141,10 @@ class BbFocus {
141
141
  // Execute the focus method in a timeout.
142
142
  setTimeout(() => this.nativeElement.focus(), 0);
143
143
  }
144
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbFocus, deps: [], target: i0.ɵɵFactoryTarget.Directive });
145
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbFocus, isStandalone: true, selector: "[bbFocus]", inputs: { bbFocusMode: "bbFocusMode" }, ngImport: i0 });
144
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbFocus, deps: [], target: i0.ɵɵFactoryTarget.Directive });
145
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BbFocus, isStandalone: true, selector: "[bbFocus]", inputs: { bbFocusMode: "bbFocusMode" }, ngImport: i0 });
146
146
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbFocus, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbFocus, decorators: [{
148
148
  type: Directive,
149
149
  args: [{
150
150
  selector: '[bbFocus]'
@@ -213,10 +213,10 @@ class BbFocusTrap {
213
213
  isTabEvent = (event) => {
214
214
  return event?.key === 'Tab' || event?.keyCode === 9;
215
215
  };
216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
217
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: BbFocusTrap, isStandalone: true, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
216
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
217
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BbFocusTrap, isStandalone: true, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
218
218
  }
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: BbFocusTrap, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BbFocusTrap, decorators: [{
220
220
  type: Directive,
221
221
  args: [{
222
222
  selector: '[bbFocusTrap]'
@@ -227,17 +227,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImpor
227
227
  }] } });
228
228
 
229
229
  class UtilsModule {
230
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: UtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
231
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.5", ngImport: i0, type: UtilsModule, imports: [BbTemplate,
230
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
231
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: UtilsModule, imports: [BbTemplate,
232
232
  BbAutosize,
233
233
  BbFocus,
234
234
  BbFocusTrap], exports: [BbTemplate,
235
235
  BbAutosize,
236
236
  BbFocus,
237
237
  BbFocusTrap] });
238
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: UtilsModule });
238
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UtilsModule });
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: UtilsModule, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UtilsModule, decorators: [{
241
241
  type: NgModule,
242
242
  args: [{
243
243
  imports: [
@@ -1,9 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, InjectionToken, DOCUMENT, RendererFactory2, PLATFORM_ID, REQUEST, makeEnvironmentProviders } from '@angular/core';
2
+ import { Injectable, inject, InjectionToken, DOCUMENT, RendererFactory2, PLATFORM_ID, REQUEST, makeEnvironmentProviders, signal, linkedSignal, HostAttributeToken } from '@angular/core';
3
3
  import { Platform } from '@angular/cdk/platform';
4
4
  import { isPlatformBrowser, formatDate } from '@angular/common';
5
5
  import { map, distinctUntilChanged, shareReplay, debounceTime, startWith } from 'rxjs/operators';
6
6
  import { of, fromEvent, Observable, merge, Subscription, isObservable, BehaviorSubject } from 'rxjs';
7
+ import { ActivatedRoute, Router } from '@angular/router';
8
+ import { toSignal } from '@angular/core/rxjs-interop';
7
9
 
8
10
  class FileLoader {
9
11
  fromDataUrl(value, name = 'file') {
@@ -78,10 +80,10 @@ class FileLoader {
78
80
  anyBlob.name = fileName;
79
81
  return anyBlob;
80
82
  };
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: FileLoader, providedIn: 'root' });
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
84
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FileLoader, providedIn: 'root' });
83
85
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: FileLoader, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FileLoader, decorators: [{
85
87
  type: Injectable,
86
88
  args: [{
87
89
  providedIn: 'root'
@@ -236,10 +238,10 @@ class Exif {
236
238
  }
237
239
  return -1;
238
240
  };
239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Exif, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Exif, providedIn: 'root' });
241
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Exif, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
242
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Exif, providedIn: 'root' });
241
243
  }
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Exif, decorators: [{
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Exif, decorators: [{
243
245
  type: Injectable,
244
246
  args: [{
245
247
  providedIn: 'root'
@@ -353,10 +355,10 @@ class ImageConverter {
353
355
  }
354
356
  return { xOffset, yOffset, width, height };
355
357
  };
356
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: ImageConverter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
357
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: ImageConverter, providedIn: 'root' });
358
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageConverter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
359
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageConverter, providedIn: 'root' });
358
360
  }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: ImageConverter, decorators: [{
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ImageConverter, decorators: [{
360
362
  type: Injectable,
361
363
  args: [{
362
364
  providedIn: 'root'
@@ -437,10 +439,10 @@ class Files {
437
439
  anchor.click();
438
440
  }
439
441
  }
440
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Files, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
441
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Files, providedIn: 'root' });
442
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Files, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
443
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Files, providedIn: 'root' });
442
444
  }
443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Files, decorators: [{
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Files, decorators: [{
444
446
  type: Injectable,
445
447
  args: [{
446
448
  providedIn: 'root'
@@ -511,10 +513,10 @@ class Languages {
511
513
  .filter(item => !!item)
512
514
  .sort((a, b) => b.quality - a.quality);
513
515
  }
514
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Languages, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
515
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Languages, providedIn: 'root' });
516
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Languages, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
517
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Languages, providedIn: 'root' });
516
518
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Languages, decorators: [{
519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Languages, decorators: [{
518
520
  type: Injectable,
519
521
  args: [{
520
522
  providedIn: 'root'
@@ -550,10 +552,10 @@ class Network {
550
552
  // a user is online/offline.
551
553
  this._online$ = merge(now$, online$, offline$).pipe(distinctUntilChanged(), shareReplay({ refCount: true, bufferSize: 1 }));
552
554
  }
553
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
554
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Network, providedIn: 'root' });
555
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Network, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
556
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Network, providedIn: 'root' });
555
557
  }
556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Network, decorators: [{
558
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Network, decorators: [{
557
559
  type: Injectable,
558
560
  args: [{
559
561
  providedIn: 'root'
@@ -596,10 +598,10 @@ class Patch {
596
598
  // Save the subscription so we can destroy it later.
597
599
  this._subscription.add(subscription);
598
600
  }
599
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Patch, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
600
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Patch, providedIn: 'root' });
601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Patch, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
602
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Patch, providedIn: 'root' });
601
603
  }
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: Patch, decorators: [{
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: Patch, decorators: [{
603
605
  type: Injectable,
604
606
  args: [{
605
607
  providedIn: 'root'
@@ -1009,6 +1011,49 @@ function provideRouteCache(token, value) {
1009
1011
  ]);
1010
1012
  }
1011
1013
 
1014
+ function injectRouteParam(key, format = (value => value)) {
1015
+ const route = inject(ActivatedRoute);
1016
+ const initialValue = format(route.snapshot.paramMap.get(key));
1017
+ return toSignal(route.paramMap.pipe(map(paramMap => format(paramMap.get(key))), distinctUntilChanged()), { initialValue });
1018
+ }
1019
+ function injectRouteParamId(key) {
1020
+ return injectRouteParam(key, rawValue => {
1021
+ if (rawValue === null || rawValue === undefined) {
1022
+ return null;
1023
+ }
1024
+ if (!/^\d+$/.test(rawValue)) {
1025
+ return null;
1026
+ }
1027
+ const numberValue = Number(rawValue);
1028
+ return Number.isSafeInteger(numberValue) && numberValue > 0
1029
+ ? numberValue
1030
+ : null;
1031
+ });
1032
+ }
1033
+ function injectRouteQueryParam(key, format = (value => value)) {
1034
+ const route = inject(ActivatedRoute);
1035
+ const initialValue = format(route.snapshot.queryParamMap.get(key));
1036
+ return toSignal(route.queryParamMap.pipe(map(queryParamMap => format(queryParamMap.get(key))), distinctUntilChanged()), { initialValue });
1037
+ }
1038
+ function injectRouterInfo(key) {
1039
+ const router = inject(Router);
1040
+ const info = router?.currentNavigation()?.extras?.info;
1041
+ return signal(info?.[key] ?? null).asReadonly();
1042
+ }
1043
+ function injectLinkedRouteData(key) {
1044
+ const route = inject(ActivatedRoute);
1045
+ const initialValue = route.snapshot.data?.[key] ?? null;
1046
+ const source = toSignal(route.data.pipe(map(data => data?.[key] ?? null), distinctUntilChanged()), { initialValue });
1047
+ return linkedSignal({ source, computation: value => value });
1048
+ }
1049
+ function injectAttribute(key, defaultValue = null) {
1050
+ const attribute = inject(new HostAttributeToken(key), { optional: true }) ?? null;
1051
+ if (attribute === null || attribute === undefined) {
1052
+ return signal(defaultValue).asReadonly();
1053
+ }
1054
+ return signal(attribute).asReadonly();
1055
+ }
1056
+
1012
1057
  /*
1013
1058
  * Public API Surface of bb-foundation
1014
1059
  */
@@ -1017,5 +1062,5 @@ function provideRouteCache(token, value) {
1017
1062
  * Generated bundle index. Do not edit.
1018
1063
  */
1019
1064
 
1020
- export { ACCEPT_LANGUAGE, BbRegex, BbValidator, COOKIE, Exif, FileLoader, Files, GLOBAL_FOCUS_MODE, ImageConverter, LOCATION, Languages, NAVIGATOR, Network, Patch, RouteCache, WINDOW, arrayToMap, clamp, createDate, formatFileSize, generatePassword, hexToHsl, hexToHsv, hexToRgb, hslToHex, hslToHsv, hsvToHex, hsvToHsl, hsvToRgb, isDate, isFileLike, isValidDate, isValidFileSize, isValidFileType, observableAttribute, parseDate, provideGlobalFocusMode, provideRouteCache, rgbToHex, rgbToHsv };
1065
+ export { ACCEPT_LANGUAGE, BbRegex, BbValidator, COOKIE, Exif, FileLoader, Files, GLOBAL_FOCUS_MODE, ImageConverter, LOCATION, Languages, NAVIGATOR, Network, Patch, RouteCache, WINDOW, arrayToMap, clamp, createDate, formatFileSize, generatePassword, hexToHsl, hexToHsv, hexToRgb, hslToHex, hslToHsv, hsvToHex, hsvToHsl, hsvToRgb, injectAttribute, injectLinkedRouteData, injectRouteParam, injectRouteParamId, injectRouteQueryParam, injectRouterInfo, isDate, isFileLike, isValidDate, isValidFileSize, isValidFileType, observableAttribute, parseDate, provideGlobalFocusMode, provideRouteCache, rgbToHex, rgbToHsv };
1021
1066
  //# sourceMappingURL=bravobit-bb-foundation.mjs.map