@open-rlb/ng-bootstrap 2.4.10 → 2.4.12

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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, booleanAttribute, Input, Host, Self, Optional, Directive, Injectable, EventEmitter, ContentChild, Output, ContentChildren, ViewChild, numberAttribute, Pipe, ChangeDetectionStrategy, DOCUMENT, Inject, HostBinding, ViewContainerRef, InjectionToken, ElementRef, HostListener, ViewChildren, NgModule } from '@angular/core';
3
3
  import { Collapse, Carousel, Dropdown, Modal, Toast, Offcanvas, ScrollSpy, Tooltip, Popover } from 'bootstrap';
4
- import * as i1 from '@angular/common';
4
+ import * as i3 from '@angular/common';
5
5
  import { formatDate, CommonModule } from '@angular/common';
6
6
  import * as i2 from '@angular/router';
7
7
  import { RouterModule } from '@angular/router';
@@ -11,7 +11,7 @@ import * as i2$2 from '@angular/forms';
11
11
  import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
12
12
  import { DateTz } from '@open-rlb/date-tz';
13
13
  import { DateTz as DateTz$1 } from '@open-rlb/date-tz/date-tz';
14
- import * as i2$3 from '@angular/cdk/drag-drop';
14
+ import * as i1 from '@angular/cdk/drag-drop';
15
15
  import { CdkDrag, CdkDropListGroup, CdkDropList, CdkDragPlaceholder, CdkDragPreview } from '@angular/cdk/drag-drop';
16
16
  import * as i5 from '@ngx-translate/core';
17
17
  import { TranslateModule } from '@ngx-translate/core';
@@ -548,37 +548,39 @@ class AlertComponent {
548
548
  this.viewContainerRef.element.nativeElement.remove();
549
549
  }
550
550
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
551
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AlertComponent, isStandalone: false, selector: "rlb-alert", inputs: { color: "color", dismissible: ["dismissible", "dismissible", booleanAttribute], cssClass: ["class", "cssClass"] }, outputs: { dismissed: "dismissed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: ` <ng-template #template>
552
- <div class="alert alert-{{ color }} {{ cssClass }}" role="alert">
553
- <ng-content></ng-content>
554
- <button
555
- *ngIf="dismissible"
556
- type="button"
557
- class="btn-close"
558
- data-bs-dismiss="alert"
559
- aria-label="Close"
560
- (click)="dismissed.emit()"
561
- ></button>
562
- </div>
563
- </ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
551
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlertComponent, isStandalone: false, selector: "rlb-alert", inputs: { color: "color", dismissible: ["dismissible", "dismissible", booleanAttribute], cssClass: ["class", "cssClass"] }, outputs: { dismissed: "dismissed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: ` <ng-template #template>
552
+ <div class="alert alert-{{ color }} {{ cssClass }}" role="alert">
553
+ <ng-content></ng-content>
554
+ @if (dismissible) {
555
+ <button
556
+ type="button"
557
+ class="btn-close"
558
+ data-bs-dismiss="alert"
559
+ aria-label="Close"
560
+ (click)="dismissed.emit()"
561
+ ></button>
562
+ }
563
+ </div>
564
+ </ng-template>`, isInline: true }); }
564
565
  }
565
566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertComponent, decorators: [{
566
567
  type: Component,
567
568
  args: [{
568
569
  selector: 'rlb-alert',
569
570
  template: ` <ng-template #template>
570
- <div class="alert alert-{{ color }} {{ cssClass }}" role="alert">
571
- <ng-content></ng-content>
572
- <button
573
- *ngIf="dismissible"
574
- type="button"
575
- class="btn-close"
576
- data-bs-dismiss="alert"
577
- aria-label="Close"
578
- (click)="dismissed.emit()"
579
- ></button>
580
- </div>
581
- </ng-template>`,
571
+ <div class="alert alert-{{ color }} {{ cssClass }}" role="alert">
572
+ <ng-content></ng-content>
573
+ @if (dismissible) {
574
+ <button
575
+ type="button"
576
+ class="btn-close"
577
+ data-bs-dismiss="alert"
578
+ aria-label="Close"
579
+ (click)="dismissed.emit()"
580
+ ></button>
581
+ }
582
+ </div>
583
+ </ng-template>`,
582
584
  standalone: false
583
585
  }]
584
586
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { color: [{
@@ -622,13 +624,15 @@ class BadgeComponent {
622
624
  this.viewContainerRef.element.nativeElement.remove();
623
625
  }
624
626
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BadgeComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
625
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: BadgeComponent, isStandalone: false, selector: "span[rlb-badge], img[rlb-badge]", inputs: { pill: ["pill", "pill", booleanAttribute], color: "color", hiddenText: ["hidden-text", "hiddenText"], border: ["border", "border", booleanAttribute], cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
627
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: BadgeComponent, isStandalone: false, selector: "span[rlb-badge], img[rlb-badge]", inputs: { pill: ["pill", "pill", booleanAttribute], color: "color", hiddenText: ["hidden-text", "hiddenText"], border: ["border", "border", booleanAttribute], cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
626
628
  <ng-template #template>
627
629
  <span [class]="style">
628
630
  <ng-content></ng-content>
629
- <span *ngIf="hiddenText" class="visually-hidden">{{ hiddenText }}</span>
631
+ @if (hiddenText) {
632
+ <span class="visually-hidden">{{ hiddenText }}</span>
633
+ }
630
634
  </span>
631
- </ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
635
+ </ng-template>`, isInline: true }); }
632
636
  }
633
637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BadgeComponent, decorators: [{
634
638
  type: Component,
@@ -638,7 +642,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
638
642
  <ng-template #template>
639
643
  <span [class]="style">
640
644
  <ng-content></ng-content>
641
- <span *ngIf="hiddenText" class="visually-hidden">{{ hiddenText }}</span>
645
+ @if (hiddenText) {
646
+ <span class="visually-hidden">{{ hiddenText }}</span>
647
+ }
642
648
  </span>
643
649
  </ng-template>`,
644
650
  standalone: false
@@ -811,19 +817,23 @@ class BreadcrumbComponent {
811
817
  this.cssClasses = '';
812
818
  }
813
819
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
814
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: BreadcrumbComponent, isStandalone: false, selector: "rlb-breadcrumb", inputs: { divider: "divider", items: "items", cssClasses: "cssClasses" }, ngImport: i0, template: ` <nav
820
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: BreadcrumbComponent, isStandalone: false, selector: "rlb-breadcrumb", inputs: { divider: "divider", items: "items", cssClasses: "cssClasses" }, ngImport: i0, template: ` <nav
815
821
  aria-label="breadcrumb"
816
822
  style="--bs-breadcrumb-divider: '{{ divider }}';"
817
823
  >
818
- <ol class="breadcrumb" [ngClass]="cssClasses">
819
- <ng-container *ngFor="let item of items; last as last">
824
+ <ol class="breadcrumb" [ngClass]="cssClasses">
825
+ @for (item of items; track item.link; let last = $last) {
820
826
  <li class="breadcrumb-item" [ngClass]="{ active: !last }">
821
- <a *ngIf="!last" [routerLink]="item.link">{{ item.label }}</a>
822
- <span *ngIf="last">{{ item.label }}</span>
827
+ @if (!last) {
828
+ <a [routerLink]="item.link">{{ item.label }}</a>
829
+ }
830
+ @if (last) {
831
+ <span>{{ item.label }}</span>
832
+ }
823
833
  </li>
824
- </ng-container>
834
+ }
825
835
  </ol>
826
- </nav>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
836
+ </nav>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
827
837
  }
828
838
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BreadcrumbComponent, decorators: [{
829
839
  type: Component,
@@ -833,16 +843,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
833
843
  aria-label="breadcrumb"
834
844
  style="--bs-breadcrumb-divider: '{{ divider }}';"
835
845
  >
836
- <ol class="breadcrumb" [ngClass]="cssClasses">
837
- <ng-container *ngFor="let item of items; last as last">
846
+ <ol class="breadcrumb" [ngClass]="cssClasses">
847
+ @for (item of items; track item.link; let last = $last) {
838
848
  <li class="breadcrumb-item" [ngClass]="{ active: !last }">
839
- <a *ngIf="!last" [routerLink]="item.link">{{ item.label }}</a>
840
- <span *ngIf="last">{{ item.label }}</span>
849
+ @if (!last) {
850
+ <a [routerLink]="item.link">{{ item.label }}</a>
851
+ }
852
+ @if (last) {
853
+ <span>{{ item.label }}</span>
854
+ }
841
855
  </li>
842
- </ng-container>
856
+ }
843
857
  </ol>
844
858
  </nav>`,
845
- standalone: false
859
+ standalone: false,
846
860
  }]
847
861
  }], propDecorators: { divider: [{
848
862
  type: Input,
@@ -1256,10 +1270,10 @@ class CarouselComponent {
1256
1270
  return undefined;
1257
1271
  }
1258
1272
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ElementRef }, { token: UniqueIdService }], target: i0.ɵɵFactoryTarget.Component }); }
1259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: CarouselComponent, isStandalone: false, selector: "rlb-carousel", inputs: { id: "id", hideIndicators: ["hide-indicators", "hideIndicators", booleanAttribute], hideControls: ["hide-controls", "hideControls", booleanAttribute], crossFade: ["cross-fade", "crossFade", booleanAttribute], autoplay: "autoplay", interval: "interval", pauseProp: ["pause", "pauseProp"], wrap: ["wrap", "wrap", booleanAttribute], noTouch: ["no-touch", "noTouch", booleanAttribute], keyboard: ["keyboard", "keyboard", booleanAttribute], currentSlide: ["current-slide", "currentSlide", numberAttribute] }, outputs: { slid: "slid", slide: "slide", currentSlideChange: "current-slideChange", slideCountChange: "slide-count" }, host: { properties: { "class.carousel-fade": "crossFade", "id": "id", "attr.data-bs-ride": "autoplay === \"auto\" ? \"carousel\" : autoplay === \"manual\" ? \"true\": undefined", "attr.data-bs-touch": "noTouch ? undefined : true", "attr.data-bs-interval": "interval", "attr.data-bs-keyboard": "!keyboard ? \"false\" : undefined", "attr.data-bs-wrap": "!wrap ? \"false\" : undefined", "attr.data-bs-pause": "pause === false ? \"false\" : undefined" }, classAttribute: "carousel slide" }, queries: [{ propertyName: "items", predicate: CarouselSlideComponent }], ngImport: i0, template: `
1260
- <ng-container *ngIf="!hideIndicators">
1273
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CarouselComponent, isStandalone: false, selector: "rlb-carousel", inputs: { id: "id", hideIndicators: ["hide-indicators", "hideIndicators", booleanAttribute], hideControls: ["hide-controls", "hideControls", booleanAttribute], crossFade: ["cross-fade", "crossFade", booleanAttribute], autoplay: "autoplay", interval: "interval", pauseProp: ["pause", "pauseProp"], wrap: ["wrap", "wrap", booleanAttribute], noTouch: ["no-touch", "noTouch", booleanAttribute], keyboard: ["keyboard", "keyboard", booleanAttribute], currentSlide: ["current-slide", "currentSlide", numberAttribute] }, outputs: { slid: "slid", slide: "slide", currentSlideChange: "current-slideChange", slideCountChange: "slide-count" }, host: { properties: { "class.carousel-fade": "crossFade", "id": "id", "attr.data-bs-ride": "autoplay === \"auto\" ? \"carousel\" : autoplay === \"manual\" ? \"true\": undefined", "attr.data-bs-touch": "noTouch ? undefined : true", "attr.data-bs-interval": "interval", "attr.data-bs-keyboard": "!keyboard ? \"false\" : undefined", "attr.data-bs-wrap": "!wrap ? \"false\" : undefined", "attr.data-bs-pause": "pauseProp === false ? \"false\" : undefined" }, classAttribute: "carousel slide" }, queries: [{ propertyName: "items", predicate: CarouselSlideComponent }], ngImport: i0, template: `
1274
+ @if (!hideIndicators) {
1261
1275
  <div class="carousel-indicators">
1262
- <ng-container *ngFor="let item of items; let i = index">
1276
+ @for (item of items; track item; let i = $index) {
1263
1277
  <button
1264
1278
  type="button"
1265
1279
  [class.active]="item.active"
@@ -1267,42 +1281,44 @@ class CarouselComponent {
1267
1281
  [attr.data-bs-slide-to]="i"
1268
1282
  [attr.aria-label]="'Slide ' + (i + 1)"
1269
1283
  ></button>
1270
- </ng-container>
1284
+ }
1271
1285
  </div>
1272
- </ng-container>
1273
- <div class="carousel-inner">
1274
- <ng-content select="rlb-carousel-slide" />
1275
- </div>
1276
- <button
1277
- *ngIf="!hideControls"
1278
- class="carousel-control-prev"
1279
- type="button"
1280
- [attr.data-bs-target]="'#' + id"
1281
- data-bs-slide="prev"
1282
- >
1283
- <span class="carousel-control-prev-icon" aria-hidden="true"></span>
1284
- <span class="visually-hidden">Previous</span>
1285
- </button>
1286
- <button
1287
- *ngIf="!hideControls"
1288
- class="carousel-control-next"
1289
- type="button"
1290
- [attr.data-bs-target]="'#' + id"
1291
- data-bs-slide="next"
1292
- >
1293
- <span class="carousel-control-next-icon" aria-hidden="true"></span>
1294
- <span class="visually-hidden">Next</span>
1295
- </button>
1296
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1286
+ }
1287
+ <div class="carousel-inner">
1288
+ <ng-content select="rlb-carousel-slide" />
1289
+ </div>
1290
+ @if (!hideControls) {
1291
+ <button
1292
+ class="carousel-control-prev"
1293
+ type="button"
1294
+ [attr.data-bs-target]="'#' + id"
1295
+ data-bs-slide="prev"
1296
+ >
1297
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
1298
+ <span class="visually-hidden">Previous</span>
1299
+ </button>
1300
+ }
1301
+ @if (!hideControls) {
1302
+ <button
1303
+ class="carousel-control-next"
1304
+ type="button"
1305
+ [attr.data-bs-target]="'#' + id"
1306
+ data-bs-slide="next"
1307
+ >
1308
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
1309
+ <span class="visually-hidden">Next</span>
1310
+ </button>
1311
+ }
1312
+ `, isInline: true }); }
1297
1313
  }
1298
1314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CarouselComponent, decorators: [{
1299
1315
  type: Component,
1300
1316
  args: [{
1301
1317
  selector: 'rlb-carousel',
1302
1318
  template: `
1303
- <ng-container *ngIf="!hideIndicators">
1319
+ @if (!hideIndicators) {
1304
1320
  <div class="carousel-indicators">
1305
- <ng-container *ngFor="let item of items; let i = index">
1321
+ @for (item of items; track item; let i = $index) {
1306
1322
  <button
1307
1323
  type="button"
1308
1324
  [class.active]="item.active"
@@ -1310,33 +1326,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1310
1326
  [attr.data-bs-slide-to]="i"
1311
1327
  [attr.aria-label]="'Slide ' + (i + 1)"
1312
1328
  ></button>
1313
- </ng-container>
1329
+ }
1314
1330
  </div>
1315
- </ng-container>
1316
- <div class="carousel-inner">
1317
- <ng-content select="rlb-carousel-slide" />
1318
- </div>
1319
- <button
1320
- *ngIf="!hideControls"
1321
- class="carousel-control-prev"
1322
- type="button"
1323
- [attr.data-bs-target]="'#' + id"
1324
- data-bs-slide="prev"
1325
- >
1326
- <span class="carousel-control-prev-icon" aria-hidden="true"></span>
1327
- <span class="visually-hidden">Previous</span>
1328
- </button>
1329
- <button
1330
- *ngIf="!hideControls"
1331
- class="carousel-control-next"
1332
- type="button"
1333
- [attr.data-bs-target]="'#' + id"
1334
- data-bs-slide="next"
1335
- >
1336
- <span class="carousel-control-next-icon" aria-hidden="true"></span>
1337
- <span class="visually-hidden">Next</span>
1338
- </button>
1339
- `,
1331
+ }
1332
+ <div class="carousel-inner">
1333
+ <ng-content select="rlb-carousel-slide" />
1334
+ </div>
1335
+ @if (!hideControls) {
1336
+ <button
1337
+ class="carousel-control-prev"
1338
+ type="button"
1339
+ [attr.data-bs-target]="'#' + id"
1340
+ data-bs-slide="prev"
1341
+ >
1342
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
1343
+ <span class="visually-hidden">Previous</span>
1344
+ </button>
1345
+ }
1346
+ @if (!hideControls) {
1347
+ <button
1348
+ class="carousel-control-next"
1349
+ type="button"
1350
+ [attr.data-bs-target]="'#' + id"
1351
+ data-bs-slide="next"
1352
+ >
1353
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
1354
+ <span class="visually-hidden">Next</span>
1355
+ </button>
1356
+ }
1357
+ `,
1340
1358
  host: {
1341
1359
  class: 'carousel slide',
1342
1360
  '[class.carousel-fade]': 'crossFade',
@@ -1346,7 +1364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1346
1364
  '[attr.data-bs-interval]': 'interval',
1347
1365
  '[attr.data-bs-keyboard]': '!keyboard ? "false" : undefined',
1348
1366
  '[attr.data-bs-wrap]': '!wrap ? "false" : undefined',
1349
- '[attr.data-bs-pause]': 'pause === false ? "false" : undefined',
1367
+ '[attr.data-bs-pause]': 'pauseProp === false ? "false" : undefined',
1350
1368
  },
1351
1369
  standalone: false
1352
1370
  }]
@@ -1465,15 +1483,23 @@ class DropdownContainerComponent {
1465
1483
  }
1466
1484
  }
1467
1485
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownContainerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1468
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DropdownContainerComponent, isStandalone: false, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: { placement: "placement", placementSm: ["placement-sm", "placementSm"], placementMd: ["placement-md", "placementMd"], placementLg: ["placement-lg", "placementLg"], placementXl: ["placement-xl", "placementXl"], placementXxl: ["placement-xxl", "placementXxl"] }, host: { properties: { "class.dropdown-menu-end": "placement === \"right\"", "class.dropdown-menu-start": "placement === \"left\"", "class.dropdown-menu-sm-end": "placementSm === \"right\"", "class.dropdown-menu-sm-start": "placementSm === \"left\"", "class.dropdown-menu-md-end": "placementMd === \"right\"", "class.dropdown-menu-md-start": "placementMd === \"left\"", "class.dropdown-menu-lg-end": "placementLg === \"right\"", "class.dropdown-menu-lg-start": "placementLg === \"left\"", "class.dropdown-menu-xl-end": "placementXl === \"right\"", "class.dropdown-menu-xl-start": "placementXl === \"left\"", "class.dropdown-menu-xxl-end": "placementXxl === \"right\"", "class.dropdown-menu-xxl-start": "placementXxl === \"left\"", "style.border": "isList ? null : \"none\"", "style.padding": "isList ? null : \"0px\"" }, classAttribute: "dropdown-menu" }, ngImport: i0, template: ` <ng-content *ngIf="isList" select="li[rlb-dropdown-item]" />
1469
- <ng-content *ngIf="!isList" />`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1486
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DropdownContainerComponent, isStandalone: false, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: { placement: "placement", placementSm: ["placement-sm", "placementSm"], placementMd: ["placement-md", "placementMd"], placementLg: ["placement-lg", "placementLg"], placementXl: ["placement-xl", "placementXl"], placementXxl: ["placement-xxl", "placementXxl"] }, host: { properties: { "class.dropdown-menu-end": "placement === \"right\"", "class.dropdown-menu-start": "placement === \"left\"", "class.dropdown-menu-sm-end": "placementSm === \"right\"", "class.dropdown-menu-sm-start": "placementSm === \"left\"", "class.dropdown-menu-md-end": "placementMd === \"right\"", "class.dropdown-menu-md-start": "placementMd === \"left\"", "class.dropdown-menu-lg-end": "placementLg === \"right\"", "class.dropdown-menu-lg-start": "placementLg === \"left\"", "class.dropdown-menu-xl-end": "placementXl === \"right\"", "class.dropdown-menu-xl-start": "placementXl === \"left\"", "class.dropdown-menu-xxl-end": "placementXxl === \"right\"", "class.dropdown-menu-xxl-start": "placementXxl === \"left\"", "style.border": "isList ? null : \"none\"", "style.padding": "isList ? null : \"0px\"" }, classAttribute: "dropdown-menu" }, ngImport: i0, template: ` @if (isList) {
1487
+ <ng-content select="li[rlb-dropdown-item]" />
1488
+ }
1489
+ @if (!isList) {
1490
+ <ng-content />
1491
+ }`, isInline: true }); }
1470
1492
  }
1471
1493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownContainerComponent, decorators: [{
1472
1494
  type: Component,
1473
1495
  args: [{
1474
1496
  selector: 'ul[rlb-dropdown-menu], rlb-dropdown-container',
1475
- template: ` <ng-content *ngIf="isList" select="li[rlb-dropdown-item]" />
1476
- <ng-content *ngIf="!isList" />`,
1497
+ template: ` @if (isList) {
1498
+ <ng-content select="li[rlb-dropdown-item]" />
1499
+ }
1500
+ @if (!isList) {
1501
+ <ng-content />
1502
+ }`,
1477
1503
  host: {
1478
1504
  class: 'dropdown-menu',
1479
1505
  '[class.dropdown-menu-end]': 'placement === "right"',
@@ -1518,75 +1544,87 @@ class DropdownMenuItemComponent {
1518
1544
  this.link = '';
1519
1545
  }
1520
1546
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1521
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: DropdownMenuItemComponent, isStandalone: false, selector: "li[rlb-dropdown-item]", inputs: { active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], header: ["header", "header", booleanAttribute], divider: ["divider", "divider", booleanAttribute], link: "link", textWrap: ["text-wrap", "textWrap", booleanAttribute] }, ngImport: i0, template: `
1522
- <span
1523
- *ngIf="!link && !divider && !header"
1524
- class="dropdown-item "
1525
- role="button"
1526
- [class.active]="active"
1527
- [class.disabled]="disabled"
1528
- [class.text-wrap]="textWrap"
1529
- [class.text-break]="textWrap"
1530
- [attr.aria-current]="active"
1531
- [attr.aria-disabled]="disabled"
1532
- >
1533
- <ng-container *ngTemplateOutlet="content"></ng-container>
1534
- </span>
1535
- <a
1536
- *ngIf="link"
1537
- class="dropdown-item "
1538
- [routerLink]="link"
1539
- [class.active]="active"
1540
- [class.disabled]="disabled"
1541
- [class.text-wrap]="textWrap"
1542
- [class.text-break]="textWrap"
1543
- [attr.aria-current]="active"
1544
- [attr.aria-disabled]="disabled"
1545
- >
1546
- <ng-container *ngTemplateOutlet="content"></ng-container>
1547
- </a>
1548
- <h6 *ngIf="header" class="dropdown-header">
1549
- <ng-container *ngTemplateOutlet="content"></ng-container>
1550
- </h6>
1551
- <hr *ngIf="divider" class="dropdown-divider" />
1552
- <ng-template #content><ng-content /></ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
1547
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DropdownMenuItemComponent, isStandalone: false, selector: "li[rlb-dropdown-item]", inputs: { active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], header: ["header", "header", booleanAttribute], divider: ["divider", "divider", booleanAttribute], link: "link", textWrap: ["text-wrap", "textWrap", booleanAttribute] }, ngImport: i0, template: `
1548
+ @if (!link && !divider && !header) {
1549
+ <span
1550
+ class="dropdown-item "
1551
+ role="button"
1552
+ [class.active]="active"
1553
+ [class.disabled]="disabled"
1554
+ [class.text-wrap]="textWrap"
1555
+ [class.text-break]="textWrap"
1556
+ [attr.aria-current]="active"
1557
+ [attr.aria-disabled]="disabled"
1558
+ >
1559
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1560
+ </span>
1561
+ }
1562
+ @if (link) {
1563
+ <a
1564
+ class="dropdown-item "
1565
+ [routerLink]="link"
1566
+ [class.active]="active"
1567
+ [class.disabled]="disabled"
1568
+ [class.text-wrap]="textWrap"
1569
+ [class.text-break]="textWrap"
1570
+ [attr.aria-current]="active"
1571
+ [attr.aria-disabled]="disabled"
1572
+ >
1573
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1574
+ </a>
1575
+ }
1576
+ @if (header) {
1577
+ <h6 class="dropdown-header">
1578
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1579
+ </h6>
1580
+ }
1581
+ @if (divider) {
1582
+ <hr class="dropdown-divider" />
1583
+ }
1584
+ <ng-template #content><ng-content /></ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
1553
1585
  }
1554
1586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownMenuItemComponent, decorators: [{
1555
1587
  type: Component,
1556
1588
  args: [{
1557
1589
  selector: 'li[rlb-dropdown-item]',
1558
1590
  template: `
1559
- <span
1560
- *ngIf="!link && !divider && !header"
1561
- class="dropdown-item "
1562
- role="button"
1563
- [class.active]="active"
1564
- [class.disabled]="disabled"
1565
- [class.text-wrap]="textWrap"
1566
- [class.text-break]="textWrap"
1567
- [attr.aria-current]="active"
1568
- [attr.aria-disabled]="disabled"
1569
- >
1570
- <ng-container *ngTemplateOutlet="content"></ng-container>
1571
- </span>
1572
- <a
1573
- *ngIf="link"
1574
- class="dropdown-item "
1575
- [routerLink]="link"
1576
- [class.active]="active"
1577
- [class.disabled]="disabled"
1578
- [class.text-wrap]="textWrap"
1579
- [class.text-break]="textWrap"
1580
- [attr.aria-current]="active"
1581
- [attr.aria-disabled]="disabled"
1582
- >
1583
- <ng-container *ngTemplateOutlet="content"></ng-container>
1584
- </a>
1585
- <h6 *ngIf="header" class="dropdown-header">
1586
- <ng-container *ngTemplateOutlet="content"></ng-container>
1587
- </h6>
1588
- <hr *ngIf="divider" class="dropdown-divider" />
1589
- <ng-template #content><ng-content /></ng-template>`,
1591
+ @if (!link && !divider && !header) {
1592
+ <span
1593
+ class="dropdown-item "
1594
+ role="button"
1595
+ [class.active]="active"
1596
+ [class.disabled]="disabled"
1597
+ [class.text-wrap]="textWrap"
1598
+ [class.text-break]="textWrap"
1599
+ [attr.aria-current]="active"
1600
+ [attr.aria-disabled]="disabled"
1601
+ >
1602
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1603
+ </span>
1604
+ }
1605
+ @if (link) {
1606
+ <a
1607
+ class="dropdown-item "
1608
+ [routerLink]="link"
1609
+ [class.active]="active"
1610
+ [class.disabled]="disabled"
1611
+ [class.text-wrap]="textWrap"
1612
+ [class.text-break]="textWrap"
1613
+ [attr.aria-current]="active"
1614
+ [attr.aria-disabled]="disabled"
1615
+ >
1616
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1617
+ </a>
1618
+ }
1619
+ @if (header) {
1620
+ <h6 class="dropdown-header">
1621
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1622
+ </h6>
1623
+ }
1624
+ @if (divider) {
1625
+ <hr class="dropdown-divider" />
1626
+ }
1627
+ <ng-template #content><ng-content /></ng-template>`,
1590
1628
  standalone: false
1591
1629
  }]
1592
1630
  }], propDecorators: { active: [{
@@ -1745,7 +1783,7 @@ class ProgressComponent {
1745
1783
  return ((this.value - this.min) / (this.max - this.min)) * 100;
1746
1784
  }
1747
1785
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1748
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: ProgressComponent, isStandalone: false, selector: "rlb-progress", inputs: { max: ["max", "max", numberAttribute], min: ["min", "min", numberAttribute], value: ["value", "value", numberAttribute], height: ["height", "height", numberAttribute], animated: ["animated", "animated", booleanAttribute], striped: ["striped", "striped", booleanAttribute], infinite: ["infinite", "infinite", booleanAttribute], ariaLabel: ["aria-label", "ariaLabel"], showValue: ["showValue", "showValue", booleanAttribute], color: "color", textColor: ["text-color", "textColor"] }, host: { attributes: { "attr.role": "progressbar", "aria-valuemin": "0" }, properties: { "attr.aria-valuenow": "getPercentValue()", "attr.aria-valuemax": "max", "attr.aria-valuemin": "min", "attr.aria-label": "ariaLabel", "style.height.px": "height" }, classAttribute: "progress" }, ngImport: i0, template: `
1786
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProgressComponent, isStandalone: false, selector: "rlb-progress", inputs: { max: ["max", "max", numberAttribute], min: ["min", "min", numberAttribute], value: ["value", "value", numberAttribute], height: ["height", "height", numberAttribute], animated: ["animated", "animated", booleanAttribute], striped: ["striped", "striped", booleanAttribute], infinite: ["infinite", "infinite", booleanAttribute], ariaLabel: ["aria-label", "ariaLabel"], showValue: ["showValue", "showValue", booleanAttribute], color: "color", textColor: ["text-color", "textColor"] }, host: { attributes: { "attr.role": "progressbar", "aria-valuemin": "0" }, properties: { "attr.aria-valuenow": "getPercentValue()", "attr.aria-valuemax": "max", "attr.aria-valuemin": "min", "attr.aria-label": "ariaLabel", "style.height.px": "height" }, classAttribute: "progress" }, ngImport: i0, template: `
1749
1787
  <div
1750
1788
  class="progress-bar {{ color && !infinite? 'bg-' + color : '' }} {{ textColor? 'text-' + textColor : '' }}"
1751
1789
  [class.progress-bar-animated]="animated"
@@ -1753,14 +1791,17 @@ class ProgressComponent {
1753
1791
  [class.infinite-progress]="infinite"
1754
1792
  [style.background-color]="infinite? 'unset' : null"
1755
1793
  [style.width.%]="infinite? max :getPercentValue()">
1756
- <div *ngIf="infinite" class="inner bg-{{color}}"></div>
1757
- <span *ngIf="showValue; else e">
1758
- {{ getPercentValue() }}
1759
- </span>
1760
- <ng-template #e>
1794
+ @if (infinite) {
1795
+ <div class="inner bg-{{color}}"></div>
1796
+ }
1797
+ @if (showValue) {
1798
+ <span>
1799
+ {{ getPercentValue() }}
1800
+ </span>
1801
+ } @else {
1761
1802
  <ng-content></ng-content>
1762
- </ng-template>
1763
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1803
+ }
1804
+ </div>`, isInline: true }); }
1764
1805
  }
1765
1806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProgressComponent, decorators: [{
1766
1807
  type: Component,
@@ -1774,13 +1815,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1774
1815
  [class.infinite-progress]="infinite"
1775
1816
  [style.background-color]="infinite? 'unset' : null"
1776
1817
  [style.width.%]="infinite? max :getPercentValue()">
1777
- <div *ngIf="infinite" class="inner bg-{{color}}"></div>
1778
- <span *ngIf="showValue; else e">
1779
- {{ getPercentValue() }}
1780
- </span>
1781
- <ng-template #e>
1818
+ @if (infinite) {
1819
+ <div class="inner bg-{{color}}"></div>
1820
+ }
1821
+ @if (showValue) {
1822
+ <span>
1823
+ {{ getPercentValue() }}
1824
+ </span>
1825
+ } @else {
1782
1826
  <ng-content></ng-content>
1783
- </ng-template>
1827
+ }
1784
1828
  </div>`,
1785
1829
  host: {
1786
1830
  class: 'progress',
@@ -2498,22 +2542,23 @@ class AvatarComponent {
2498
2542
  this.viewContainerRef.element.nativeElement.remove();
2499
2543
  }
2500
2544
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AvatarComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
2501
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AvatarComponent, isStandalone: false, selector: "rlb-avatar", inputs: { size: ["size", "size", numberAttribute], shape: "shape", src: "src", cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
2545
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AvatarComponent, isStandalone: false, selector: "rlb-avatar", inputs: { size: ["size", "size", numberAttribute], shape: "shape", src: "src", cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
2502
2546
  <ng-template #template>
2503
- <img
2504
- *ngIf="src"
2505
- [src]="src"
2506
- alt="Avatar"
2507
- [class]="cssClass"
2508
- [style.vertical-align]="'middle'"
2509
- [style.width.px]="size"
2510
- [style.width.px]="size"
2511
- [style.height.px]="size"
2512
- [style.border]="'2px solid #cbcbcb'"
2513
- [style.border-radius]="_borderRadius"
2514
- />
2547
+ @if (src) {
2548
+ <img
2549
+ [src]="src"
2550
+ alt="Avatar"
2551
+ [class]="cssClass"
2552
+ [style.vertical-align]="'middle'"
2553
+ [style.width.px]="size"
2554
+ [style.width.px]="size"
2555
+ [style.height.px]="size"
2556
+ [style.border]="'2px solid #cbcbcb'"
2557
+ [style.border-radius]="_borderRadius"
2558
+ />
2559
+ }
2515
2560
  </ng-template>
2516
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2561
+ `, isInline: true }); }
2517
2562
  }
2518
2563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AvatarComponent, decorators: [{
2519
2564
  type: Component,
@@ -2521,20 +2566,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2521
2566
  selector: 'rlb-avatar',
2522
2567
  template: `
2523
2568
  <ng-template #template>
2524
- <img
2525
- *ngIf="src"
2526
- [src]="src"
2527
- alt="Avatar"
2528
- [class]="cssClass"
2529
- [style.vertical-align]="'middle'"
2530
- [style.width.px]="size"
2531
- [style.width.px]="size"
2532
- [style.height.px]="size"
2533
- [style.border]="'2px solid #cbcbcb'"
2534
- [style.border-radius]="_borderRadius"
2535
- />
2569
+ @if (src) {
2570
+ <img
2571
+ [src]="src"
2572
+ alt="Avatar"
2573
+ [class]="cssClass"
2574
+ [style.vertical-align]="'middle'"
2575
+ [style.width.px]="size"
2576
+ [style.width.px]="size"
2577
+ [style.height.px]="size"
2578
+ [style.border]="'2px solid #cbcbcb'"
2579
+ [style.border-radius]="_borderRadius"
2580
+ />
2581
+ }
2536
2582
  </ng-template>
2537
- `,
2583
+ `,
2538
2584
  standalone: false
2539
2585
  }]
2540
2586
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { size: [{
@@ -2591,7 +2637,7 @@ class RlbFabComponent {
2591
2637
  }
2592
2638
  }
2593
2639
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbFabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2594
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: RlbFabComponent, isStandalone: false, selector: "rlb-fab", inputs: { color: "color", size: "size", disabled: ["disabled", "disabled", booleanAttribute], outline: ["outline", "outline", booleanAttribute], position: "position" }, ngImport: i0, template: "<button\n rlb-button\n [color]=\"color\"\n [disabled]=\"disabled\"\n [outline]=\"outline\"\n class=\"fab-button d-flex align-items-center justify-content-center\"\n [ngClass]=\"[sizeClass, positionClass]\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [".fab-button{border-radius:50%;box-shadow:0 4px 12px #00000040;z-index:1050;transition:transform .2s ease,box-shadow .2s ease;padding:0}.fab-button:hover{transform:scale(1.08);box-shadow:0 6px 18px #00000059}.fab-button:active{transform:scale(.95)}:host{width:fit-content;display:block}.fab-xs{width:32px;height:32px;font-size:1rem}.fab-sm{width:44px;height:44px;font-size:1.2rem}.fab-md{width:56px;height:56px;font-size:1.4rem}.fab-lg{width:68px;height:68px;font-size:1.7rem}.fab-bottom-right{bottom:24px;right:24px}.fab-bottom-left{bottom:24px;left:24px}.fab-top-right{top:24px;right:24px}.fab-top-left{top:24px;left:24px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }] }); }
2640
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: RlbFabComponent, isStandalone: false, selector: "rlb-fab", inputs: { color: "color", size: "size", disabled: ["disabled", "disabled", booleanAttribute], outline: ["outline", "outline", booleanAttribute], position: "position" }, ngImport: i0, template: "<button\n rlb-button\n [color]=\"color\"\n [disabled]=\"disabled\"\n [outline]=\"outline\"\n class=\"fab-button d-flex align-items-center justify-content-center\"\n [ngClass]=\"[sizeClass, positionClass]\"\n>\n <ng-content></ng-content>\n</button>\n", styles: [".fab-button{border-radius:50%;box-shadow:0 4px 12px #00000040;z-index:1050;transition:transform .2s ease,box-shadow .2s ease;padding:0}.fab-button:hover{transform:scale(1.08);box-shadow:0 6px 18px #00000059}.fab-button:active{transform:scale(.95)}:host{width:fit-content;display:block}.fab-xs{width:32px;height:32px;font-size:1rem}.fab-sm{width:44px;height:44px;font-size:1.2rem}.fab-md{width:56px;height:56px;font-size:1.4rem}.fab-lg{width:68px;height:68px;font-size:1.7rem}.fab-bottom-right{bottom:24px;right:24px}.fab-bottom-left{bottom:24px;left:24px}.fab-top-right{top:24px;right:24px}.fab-top-left{top:24px;left:24px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }] }); }
2595
2641
  }
2596
2642
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbFabComponent, decorators: [{
2597
2643
  type: Component,
@@ -2971,7 +3017,7 @@ class CalendarHeaderComponent {
2971
3017
  }
2972
3018
  }
2973
3019
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2974
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarHeaderComponent, isStandalone: false, selector: "rlb-calendar-header", inputs: { view: "view", currentDate: "currentDate" }, outputs: { dateChange: "dateChange", viewChange: "viewChange" }, ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t<div class=\"d-flex gap-1\">\n\t\t<button rlb-button outline (click)=\"prev()\">\n\t\t\t<i class=\"bi bi-chevron-left\"></i>\n\t\t</button>\n\t\t<button rlb-button outline (click)=\"today()\">Today</button>\n\t\t<button rlb-button outline (click)=\"next()\">\n\t\t\t<i class=\"bi-chevron-right\"></i>\n\t\t</button>\n\t</div>\n\n <h5 class=\"mb-0\">{{ currentDate | dtz:'DD MM yyyy' | monthFormatter }} {{ currentDate.timezone }}</h5>\n\n\t<rlb-dropdown>\n\t\t<button rlb-button outline rlb-dropdown>{{ view | titlecase }}</button>\n\t\t<ul rlb-dropdown-menu [placement]=\"'right'\">\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('day')\" >Day</li>\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('week')\">Week</li>\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('month')\">Month</li>\n\t\t</ul>\n\t</rlb-dropdown>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: DropdownComponent, selector: "rlb-dropdown", inputs: ["direction"] }, { kind: "component", type: DropdownContainerComponent, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: ["placement", "placement-sm", "placement-md", "placement-lg", "placement-xl", "placement-xxl"] }, { kind: "component", type: DropdownMenuItemComponent, selector: "li[rlb-dropdown-item]", inputs: ["active", "disabled", "header", "divider", "link", "text-wrap"] }, { kind: "directive", type: DropdownDirective, selector: "a[rlb-dropdown], button[rlb-dropdown], span[rlb-badge][rlb-dropdown]", inputs: ["offset", "auto-close"], outputs: ["status-changed"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: MonthFormatterPipe, name: "monthFormatter" }] }); }
3020
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarHeaderComponent, isStandalone: false, selector: "rlb-calendar-header", inputs: { view: "view", currentDate: "currentDate" }, outputs: { dateChange: "dateChange", viewChange: "viewChange" }, ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center mb-3\">\n\t<div class=\"d-flex gap-1\">\n\t\t<button rlb-button outline (click)=\"prev()\">\n\t\t\t<i class=\"bi bi-chevron-left\"></i>\n\t\t</button>\n\t\t<button rlb-button outline (click)=\"today()\">Today</button>\n\t\t<button rlb-button outline (click)=\"next()\">\n\t\t\t<i class=\"bi-chevron-right\"></i>\n\t\t</button>\n\t</div>\n\n <h5 class=\"mb-0\">{{ currentDate | dtz:'DD MM yyyy' | monthFormatter }} {{ currentDate.timezone }}</h5>\n\n\t<rlb-dropdown>\n\t\t<button rlb-button outline rlb-dropdown>{{ view | titlecase }}</button>\n\t\t<ul rlb-dropdown-menu [placement]=\"'right'\">\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('day')\" >Day</li>\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('week')\">Week</li>\n\t\t\t<li rlb-dropdown-item (click)=\"viewChange.emit('month')\">Month</li>\n\t\t</ul>\n\t</rlb-dropdown>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: DropdownComponent, selector: "rlb-dropdown", inputs: ["direction"] }, { kind: "component", type: DropdownContainerComponent, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: ["placement", "placement-sm", "placement-md", "placement-lg", "placement-xl", "placement-xxl"] }, { kind: "component", type: DropdownMenuItemComponent, selector: "li[rlb-dropdown-item]", inputs: ["active", "disabled", "header", "divider", "link", "text-wrap"] }, { kind: "directive", type: DropdownDirective, selector: "a[rlb-dropdown], button[rlb-dropdown], span[rlb-badge][rlb-dropdown]", inputs: ["offset", "auto-close"], outputs: ["status-changed"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: MonthFormatterPipe, name: "monthFormatter" }] }); }
2975
3021
  }
2976
3022
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
2977
3023
  type: Component,
@@ -3034,11 +3080,11 @@ class CalendarEventComponent {
3034
3080
  }
3035
3081
  }
3036
3082
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarEventComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3037
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarEventComponent, isStandalone: false, selector: "rlb-calendar-event", inputs: { event: "event", view: "view" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick" }, ngImport: i0, template: "<div [ngClass]=\"classes\"\n (click)=\"onClick($event)\">\n\n <ng-container *ngIf=\"!event.isOverflowIndicator\">\n <strong>{{ event.title }}</strong>\n <div class=\"small opacity-75\">\n {{ event.start | dtz:'HH:mm' }} - {{ event.end | dtz:'HH:mm' }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"event.isOverflowIndicator\">\n +{{ event.overlapCount }} more\n </ng-container>\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden;border-radius:var(--bs-border-radius-sm);padding:0 1px;box-sizing:border-box;transition:box-shadow .2s}:host:hover{z-index:50;box-shadow:0 .5rem 1rem #00000026!important}.calendar-event{height:100%;width:100%;padding:2px 4px;font-size:.75rem;line-height:1.2;border-radius:var(--bs-border-radius-sm);cursor:pointer}.calendar-event.overflow-indicator{display:flex;align-items:center;justify-content:center;font-weight:600;border-style:dashed!important}.calendar-event.mode-week{height:100%;padding:2px 4px;font-size:.75rem;line-height:1.2}.calendar-event.mode-month{height:20px!important;padding:0 4px;line-height:20px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.mode-month.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.calendar-event.mode-month.rounded-top-0{border-top-right-radius:0;border-top-left-radius:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }] }); }
3083
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarEventComponent, isStandalone: false, selector: "rlb-calendar-event", inputs: { event: "event", view: "view" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick" }, ngImport: i0, template: "<div [ngClass]=\"classes\"\n (click)=\"onClick($event)\">\n\n @if (!event.isOverflowIndicator) {\n <strong>{{ event.title }}</strong>\n <div class=\"small opacity-75\">\n {{ event.start | dtz:'HH:mm' }} - {{ event.end | dtz:'HH:mm' }}\n </div>\n }\n\n @if (event.isOverflowIndicator) {\n +{{ event.overlapCount }} more\n }\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden;border-radius:var(--bs-border-radius-sm);padding:0 1px;box-sizing:border-box;transition:box-shadow .2s}:host:hover{z-index:50;box-shadow:0 .5rem 1rem #00000026!important}.calendar-event{height:100%;width:100%;padding:2px 4px;font-size:.75rem;line-height:1.2;border-radius:var(--bs-border-radius-sm);cursor:pointer}.calendar-event.overflow-indicator{display:flex;align-items:center;justify-content:center;font-weight:600;border-style:dashed!important}.calendar-event.mode-week{height:100%;padding:2px 4px;font-size:.75rem;line-height:1.2}.calendar-event.mode-month{height:20px!important;padding:0 4px;line-height:20px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.mode-month.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.calendar-event.mode-month.rounded-top-0{border-top-right-radius:0;border-top-left-radius:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }] }); }
3038
3084
  }
3039
3085
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarEventComponent, decorators: [{
3040
3086
  type: Component,
3041
- args: [{ selector: 'rlb-calendar-event', standalone: false, template: "<div [ngClass]=\"classes\"\n (click)=\"onClick($event)\">\n\n <ng-container *ngIf=\"!event.isOverflowIndicator\">\n <strong>{{ event.title }}</strong>\n <div class=\"small opacity-75\">\n {{ event.start | dtz:'HH:mm' }} - {{ event.end | dtz:'HH:mm' }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"event.isOverflowIndicator\">\n +{{ event.overlapCount }} more\n </ng-container>\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden;border-radius:var(--bs-border-radius-sm);padding:0 1px;box-sizing:border-box;transition:box-shadow .2s}:host:hover{z-index:50;box-shadow:0 .5rem 1rem #00000026!important}.calendar-event{height:100%;width:100%;padding:2px 4px;font-size:.75rem;line-height:1.2;border-radius:var(--bs-border-radius-sm);cursor:pointer}.calendar-event.overflow-indicator{display:flex;align-items:center;justify-content:center;font-weight:600;border-style:dashed!important}.calendar-event.mode-week{height:100%;padding:2px 4px;font-size:.75rem;line-height:1.2}.calendar-event.mode-month{height:20px!important;padding:0 4px;line-height:20px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.mode-month.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.calendar-event.mode-month.rounded-top-0{border-top-right-radius:0;border-top-left-radius:0}\n"] }]
3087
+ args: [{ selector: 'rlb-calendar-event', standalone: false, template: "<div [ngClass]=\"classes\"\n (click)=\"onClick($event)\">\n\n @if (!event.isOverflowIndicator) {\n <strong>{{ event.title }}</strong>\n <div class=\"small opacity-75\">\n {{ event.start | dtz:'HH:mm' }} - {{ event.end | dtz:'HH:mm' }}\n </div>\n }\n\n @if (event.isOverflowIndicator) {\n +{{ event.overlapCount }} more\n }\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden;border-radius:var(--bs-border-radius-sm);padding:0 1px;box-sizing:border-box;transition:box-shadow .2s}:host:hover{z-index:50;box-shadow:0 .5rem 1rem #00000026!important}.calendar-event{height:100%;width:100%;padding:2px 4px;font-size:.75rem;line-height:1.2;border-radius:var(--bs-border-radius-sm);cursor:pointer}.calendar-event.overflow-indicator{display:flex;align-items:center;justify-content:center;font-weight:600;border-style:dashed!important}.calendar-event.mode-week{height:100%;padding:2px 4px;font-size:.75rem;line-height:1.2}.calendar-event.mode-month{height:20px!important;padding:0 4px;line-height:20px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.mode-month.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.calendar-event.mode-month.rounded-top-0{border-top-right-radius:0;border-top-left-radius:0}\n"] }]
3042
3088
  }], propDecorators: { event: [{
3043
3089
  type: Input,
3044
3090
  args: [{ required: true }]
@@ -3391,11 +3437,11 @@ class CalendarWeekGridComponent {
3391
3437
  });
3392
3438
  }
3393
3439
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarWeekGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3394
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarWeekGridComponent, isStandalone: false, selector: "rlb-calendar-week-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "headerRowRef", first: true, predicate: ["headerRow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-wrapper d-flex flex-column\">\n\n <!-- HEADER WRAPPER -->\n <div #headerRow class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\"\n [style.padding-right.px]=\"scrollbarWidth\">\n\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n\n <div class=\"days-header d-flex flex-grow-1\">\n <div *ngFor=\"let day of days\" class=\"day-cell text-center p-2 border-end\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary\">{{ day | dayOfWeek: 'short' }}</div>\n <div class=\"h5 m-0\">{{ day | dtz:'DD' }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n (scroll)=\"onBodyScroll($event)\" [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n <div *ngFor=\"let time of timeSlots; let i = index\"\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n <span *ngIf=\"i !== 0\" style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n </div>\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n <div *ngFor=\"let time of timeSlots\" class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div *ngFor=\"let day of days\" class=\"day-column position-relative border-end h-100\" cdkDropList\n [cdkDropListSortingDisabled]=\"true\" [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\"\n (click)=\"eventClick.emit()\">\n\n <rlb-calendar-event *ngFor=\"let event of getEventsForDay(day); trackBy: trackByEventId\" [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n [cdkDragDisabled]=\"event.isOverflowIndicator\" class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n\n <div *ngIf=\"isToday(day)\" class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102;box-shadow:0 4px 6px -4px #0000001a}.header-row{width:fit-content;min-width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px;overflow:hidden}.day-cell:last-child{border-right:none!important}.calendar-body{scroll-behavior:auto}.body-row{width:fit-content;min-width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.day-column{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px}.day-column:last-child{border-right:none!important}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\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: i2$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarWeekGridComponent, isStandalone: false, selector: "rlb-calendar-week-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "headerRowRef", first: true, predicate: ["headerRow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-wrapper d-flex flex-column\">\n\n <!-- HEADER WRAPPER -->\n <div #headerRow class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\"\n [style.padding-right.px]=\"scrollbarWidth\">\n\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n\n <div class=\"days-header d-flex flex-grow-1\">\n @for (day of days; track day) {\n <div class=\"day-cell text-center p-2 border-end\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary\">{{ day | dayOfWeek: 'short' }}</div>\n <div class=\"h5 m-0\">{{ day | dtz:'DD' }}</div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n (scroll)=\"onBodyScroll($event)\" [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n @for (time of timeSlots; track time; let i = $index) {\n <div\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n @if (i !== 0) {\n <span style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n @for (time of timeSlots; track time) {\n <div class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n }\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n @for (day of days; track day) {\n <div class=\"day-column position-relative border-end h-100\" cdkDropList\n [cdkDropListSortingDisabled]=\"true\" [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\"\n (click)=\"eventClick.emit()\">\n @for (event of getEventsForDay(day); track trackByEventId($index, event)) {\n <rlb-calendar-event [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n [cdkDragDisabled]=\"event.isOverflowIndicator\" class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n }\n @if (isToday(day)) {\n <div class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102;box-shadow:0 4px 6px -4px #0000001a}.header-row{width:fit-content;min-width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px;overflow:hidden}.day-cell:last-child{border-right:none!important}.calendar-body{scroll-behavior:auto}.body-row{width:fit-content;min-width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.day-column{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px}.day-column:last-child{border-right:none!important}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3395
3441
  }
3396
3442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarWeekGridComponent, decorators: [{
3397
3443
  type: Component,
3398
- args: [{ selector: 'rlb-calendar-week-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"calendar-wrapper d-flex flex-column\">\n\n <!-- HEADER WRAPPER -->\n <div #headerRow class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\"\n [style.padding-right.px]=\"scrollbarWidth\">\n\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n\n <div class=\"days-header d-flex flex-grow-1\">\n <div *ngFor=\"let day of days\" class=\"day-cell text-center p-2 border-end\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary\">{{ day | dayOfWeek: 'short' }}</div>\n <div class=\"h5 m-0\">{{ day | dtz:'DD' }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n (scroll)=\"onBodyScroll($event)\" [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n <div *ngFor=\"let time of timeSlots; let i = index\"\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n <span *ngIf=\"i !== 0\" style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n </div>\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n <div *ngFor=\"let time of timeSlots\" class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div *ngFor=\"let day of days\" class=\"day-column position-relative border-end h-100\" cdkDropList\n [cdkDropListSortingDisabled]=\"true\" [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\"\n (click)=\"eventClick.emit()\">\n\n <rlb-calendar-event *ngFor=\"let event of getEventsForDay(day); trackBy: trackByEventId\" [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n [cdkDragDisabled]=\"event.isOverflowIndicator\" class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n\n <div *ngIf=\"isToday(day)\" class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102;box-shadow:0 4px 6px -4px #0000001a}.header-row{width:fit-content;min-width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px;overflow:hidden}.day-cell:last-child{border-right:none!important}.calendar-body{scroll-behavior:auto}.body-row{width:fit-content;min-width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.day-column{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px}.day-column:last-child{border-right:none!important}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"] }]
3444
+ args: [{ selector: 'rlb-calendar-week-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"calendar-wrapper d-flex flex-column\">\n\n <!-- HEADER WRAPPER -->\n <div #headerRow class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\"\n [style.padding-right.px]=\"scrollbarWidth\">\n\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n\n <div class=\"days-header d-flex flex-grow-1\">\n @for (day of days; track day) {\n <div class=\"day-cell text-center p-2 border-end\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary\">{{ day | dayOfWeek: 'short' }}</div>\n <div class=\"h5 m-0\">{{ day | dtz:'DD' }}</div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n (scroll)=\"onBodyScroll($event)\" [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n @for (time of timeSlots; track time; let i = $index) {\n <div\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n @if (i !== 0) {\n <span style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n @for (time of timeSlots; track time) {\n <div class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n }\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n @for (day of days; track day) {\n <div class=\"day-column position-relative border-end h-100\" cdkDropList\n [cdkDropListSortingDisabled]=\"true\" [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\"\n (click)=\"eventClick.emit()\">\n @for (event of getEventsForDay(day); track trackByEventId($index, event)) {\n <rlb-calendar-event [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n [cdkDragDisabled]=\"event.isOverflowIndicator\" class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n }\n @if (isToday(day)) {\n <div class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102;box-shadow:0 4px 6px -4px #0000001a}.header-row{width:fit-content;min-width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px;overflow:hidden}.day-cell:last-child{border-right:none!important}.calendar-body{scroll-behavior:auto}.body-row{width:fit-content;min-width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.day-column{border-color:var(--bs-border-color)!important;flex:1 1 0px;width:0;min-width:120px}.day-column:last-child{border-right:none!important}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"] }]
3399
3445
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { view: [{
3400
3446
  type: Input
3401
3447
  }], currentDate: [{
@@ -3659,11 +3705,11 @@ class CalendarDayGridComponent {
3659
3705
  });
3660
3706
  }
3661
3707
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarDayGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3662
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarDayGridComponent, isStandalone: false, selector: "rlb-calendar-day-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-wrapper d-flex flex-column\" *ngIf=\"day\">\n\n <!-- HEADER WRAPPER -->\n <!-- For day view, we just show the date at top? Or maybe just keep it simple with body since main header has date -->\n <!-- Mimicking structure of Week View but single column -->\n <div class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\">\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n <div class=\"day-cell p-2 flex-grow-1\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary h-100 d-flex align-items-center justify-content-center\">{{ day | dayOfWeek: 'long' }}</div>\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n <div *ngFor=\"let time of timeSlots; let i = index\"\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n <span *ngIf=\"i !== 0\" style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n </div>\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n <div *ngFor=\"let time of timeSlots\" class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div class=\"day-column position-relative h-100 w-100\" cdkDropList [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n\n <rlb-calendar-event *ngFor=\"let event of processedEvents; trackBy: trackByEventId\" [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n\n <div *ngIf=\"isToday(day)\" class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102}.header-row{width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important}.calendar-body{scroll-behavior:auto}.body-row{width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\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: i2$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3708
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarDayGridComponent, isStandalone: false, selector: "rlb-calendar-day-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (day) {\n <div class=\"calendar-wrapper d-flex flex-column\">\n <!-- HEADER WRAPPER -->\n <!-- For day view, we just show the date at top? Or maybe just keep it simple with body since main header has date -->\n <!-- Mimicking structure of Week View but single column -->\n <div class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\">\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n <div class=\"day-cell p-2 flex-grow-1\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary h-100 d-flex align-items-center justify-content-center\">{{ day | dayOfWeek: 'long' }}</div>\n </div>\n </div>\n </div>\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\">\n <div class=\"body-row d-flex position-relative\">\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n @for (time of timeSlots; track time; let i = $index) {\n <div\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n @if (i !== 0) {\n <span style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n }\n </div>\n }\n </div>\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n @for (time of timeSlots; track time) {\n <div class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n }\n </div>\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div class=\"day-column position-relative h-100 w-100\" cdkDropList [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n @for (event of processedEvents; track trackByEventId($index, event)) {\n <rlb-calendar-event [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n }\n @if (isToday(day)) {\n <div class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102}.header-row{width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important}.calendar-body{scroll-behavior:auto}.body-row{width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3663
3709
  }
3664
3710
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarDayGridComponent, decorators: [{
3665
3711
  type: Component,
3666
- args: [{ selector: 'rlb-calendar-day-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"calendar-wrapper d-flex flex-column\" *ngIf=\"day\">\n\n <!-- HEADER WRAPPER -->\n <!-- For day view, we just show the date at top? Or maybe just keep it simple with body since main header has date -->\n <!-- Mimicking structure of Week View but single column -->\n <div class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\">\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n <div class=\"day-cell p-2 flex-grow-1\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary h-100 d-flex align-items-center justify-content-center\">{{ day | dayOfWeek: 'long' }}</div>\n </div>\n </div>\n </div>\n\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\">\n\n <div class=\"body-row d-flex position-relative\">\n\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n <div *ngFor=\"let time of timeSlots; let i = index\"\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n <span *ngIf=\"i !== 0\" style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n </div>\n </div>\n\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n <div *ngFor=\"let time of timeSlots\" class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n </div>\n\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div class=\"day-column position-relative h-100 w-100\" cdkDropList [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n\n <rlb-calendar-event *ngFor=\"let event of processedEvents; trackBy: trackByEventId\" [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n\n <div *ngIf=\"isToday(day)\" class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102}.header-row{width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important}.calendar-body{scroll-behavior:auto}.body-row{width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"] }]
3712
+ args: [{ selector: 'rlb-calendar-day-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (day) {\n <div class=\"calendar-wrapper d-flex flex-column\">\n <!-- HEADER WRAPPER -->\n <!-- For day view, we just show the date at top? Or maybe just keep it simple with body since main header has date -->\n <!-- Mimicking structure of Week View but single column -->\n <div class=\"header-container overflow-hidden flex-shrink-0 border-bottom bg-body-tertiary\">\n <div class=\"header-row d-flex\" [style.min-height.rem]=\"layout.minHeaderHeight\">\n <div class=\"time-gutter border-end flex-shrink-0\"></div>\n <div class=\"day-cell p-2 flex-grow-1\" [class.text-primary]=\"isToday(day)\"\n [class.fw-bold]=\"isToday(day)\" [class.bg-primary]=\"isToday(day)\">\n <div class=\"small text-uppercase text-body-secondary h-100 d-flex align-items-center justify-content-center\">{{ day | dayOfWeek: 'long' }}</div>\n </div>\n </div>\n </div>\n <!-- BODY WRAPPER -->\n <div #scrollBody class=\"calendar-body flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\">\n <div class=\"body-row d-flex position-relative\">\n <!-- SIDEBAR (Sticky Left) -->\n <div class=\"time-sidebar sticky-start flex-shrink-0 border-end\">\n @for (time of timeSlots; track time; let i = $index) {\n <div\n class=\"time-slot-label small text-body-secondary d-flex align-items-start justify-content-center\"\n [style.height.px]=\"layout.rowHeight\">\n @if (i !== 0) {\n <span style=\"transform: translateY(-50%)\">\n {{ time }}\n </span>\n }\n </div>\n }\n </div>\n <!-- GRID AND EVENTS -->\n <div class=\"grid-layer flex-grow-1 position-relative\">\n <!-- LAYER 1: Grid -->\n <div class=\"background-grid position-absolute w-100 h-100 top-0 start-0 z-0\">\n @for (time of timeSlots; track time) {\n <div class=\"grid-row border-bottom\" [style.height.px]=\"layout.rowHeight\">\n </div>\n }\n </div>\n <!-- Layer 2: Events -->\n <div class=\"events-container d-flex h-100 w-100 position-relative z-1\" cdkDropListGroup>\n <div class=\"day-column position-relative h-100 w-100\" cdkDropList [cdkDropListSortingDisabled]=\"true\"\n [cdkDropListData]=\"day\" (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n @for (event of processedEvents; track trackByEventId($index, event)) {\n <rlb-calendar-event [view]=\"view\"\n [event]=\"event\" [style.top.px]=\"calculateEventTop(event)\" [style.height.px]=\"calculateEventHeight(event)\"\n [style.left.%]=\"event.left\" [style.width.%]=\"event.width\" (eventClick)=\"eventClick.emit($event)\"\n (eventContainerClick)=\"eventContainerClick.emit($event)\" cdkDrag [cdkDragData]=\"event\"\n class=\"position-absolute\">\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n </rlb-calendar-event>\n }\n @if (isToday(day)) {\n <div class=\"now-line\" [style.top.px]=\"getNowTop()\">\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{display:block;height:100%}.calendar-wrapper{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;height:100%}.header-container{background-color:var(--bs-body-bg);z-index:102}.header-row{width:100%}.time-gutter{width:60px;border-color:var(--bs-border-color)!important}.day-cell{border-color:var(--bs-border-color)!important}.calendar-body{scroll-behavior:auto}.body-row{width:100%}.sticky-start{position:sticky;left:0;z-index:50;background-color:var(--bs-body-bg)}.time-sidebar{width:60px;border-color:var(--bs-border-color)!important}.grid-row{border-color:var(--bs-border-color)!important;box-sizing:border-box}.grid-row:after{content:\"\";position:absolute;width:100%;border-bottom:1px dotted currentColor;opacity:.15;top:50%;left:0;pointer-events:none}.now-line{position:absolute;left:0;right:0;height:2px;background-color:var(--bs-danger);z-index:10;pointer-events:none}.now-line:before{content:\"\";position:absolute;left:-5px;top:-4px;width:10px;height:10px;background-color:var(--bs-danger);border-radius:50%}.z-0{z-index:0}.z-1{z-index:1}\n"] }]
3667
3713
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { view: [{
3668
3714
  type: Input
3669
3715
  }], currentDate: [{
@@ -3925,11 +3971,11 @@ class CalendarMonthGridComponent {
3925
3971
  this.eventChange.emit(updatedEvent);
3926
3972
  }
3927
3973
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarMonthGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarMonthGridComponent, isStandalone: false, selector: "rlb-calendar-month-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "headerRowRef", first: true, predicate: ["headerRow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"d-flex flex-column w-100 bg-body user-select-none month-view-root\">\n <!-- 1. Header Row (Fixed) -->\n <div #headerRow class=\"d-flex flex-shrink-0 border-bottom bg-body-tertiary overflow-hidden\"\n [style.min-height.rem]=\"layout.minHeaderHeight\" [style.padding-right.px]=\"scrollbarWidth\">\n <div *ngFor=\"let day of weekDaysHeader\"\n class=\"flex-fill text-center py-2 border-end fw-bold text-secondary text-uppercase w-0 my-auto h6\">\n {{ day | dayOfWeek:'short' }}\n </div>\n </div>\n\n <!-- SCROLL CONTAINER -->\n <div #scrollBody class=\"calendar-scroller flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\"\n (scroll)=\"onBodyScroll($event)\">\n\n <!-- 2. Grid Body (Scrollable) -->\n <div class=\"d-flex flex-column flex-grow-1 border-start min-height-0\">\n\n <div class=\"d-flex flex-column\" cdkDropListGroup>\n <div *ngFor=\"let week of weeks;\" class=\"d-flex border-bottom min-h-row\" style=\"flex: 1 0 auto;\"\n [style.min-height.px]=\"layout.rowHeight\">\n\n\n <div *ngFor=\"let slot of week;\" class=\"flex-fill border-end p-1 d-flex flex-column position-relative\"\n style=\"width: 0\" [class.bg-light]=\"!isCurrentMonth(slot.date)\" cdkDropList [cdkDropListData]=\"slot.date\"\n (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n <!-- Date Number -->\n <div class=\"d-flex justify-content-center mb-1\">\n <span class=\"day-number d-flex align-items-center justify-content-center\"\n [class.today]=\"isToday(slot.date)\">\n {{ slot.date | dtz:'DD' }}\n </span>\n </div>\n\n <!-- Events Stack -->\n <div class=\"d-flex flex-column gap-1 w-100\">\n <ng-container *ngFor=\"let event of slot.events; trackBy: trackByEvent\">\n\n <!-- Spacer -->\n <div *ngIf=\"event.isSpacer\" class=\"event-spacer\"></div>\n\n <!-- Event -->\n <rlb-calendar-event *ngIf=\"!event.isSpacer\" [event]=\"event\" class=\"w-100\" cdkDrag [cdkDragData]=\"event\"\n (eventClick)=\"eventClick.emit($event)\" [view]=\"view\">\n <!-- Drag Preview (Optional but nice) -->\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n <ng-template cdkDragPreview matchSize class=\"rlb-calendar-drag-preview\">\n <rlb-calendar-event [event]=\"event\" [view]=\"view\" style=\"box-sizing: border-box;\">\n </rlb-calendar-event>\n </ng-template>\n </rlb-calendar-event>\n\n </ng-container>\n </div>\n\n <!-- Overflow (+N more) -->\n <div *ngIf=\"slot.hasOverflow\"\n class=\"mt-1 small text-secondary text-center cursor-pointer p-1 rounded hover-bg\"\n (click)=\"$event.stopPropagation(); eventContainerClick.emit(slot.overflowEvents)\">\n +{{ slot.overflowCount }} more\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.min-height-0{min-height:0!important}.border-end:last-child{border-right:0!important}.day-number{width:24px;height:24px;border-radius:50%;font-size:.85rem;font-weight:500;transition:background-color .2s}.day-number.today{background-color:var(--bs-primary);color:#fff}.event-spacer{height:20px;width:100%;pointer-events:none}.hover-bg:hover{background-color:var(--bs-secondary-bg-subtle)}.cursor-pointer{cursor:pointer}.cdk-drag-preview{box-shadow:0 .5rem 1rem #0000004d;border-radius:var(--bs-border-radius-sm)}\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: i2$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i2$3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3974
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarMonthGridComponent, isStandalone: false, selector: "rlb-calendar-month-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, viewQueries: [{ propertyName: "scrollBodyRef", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "headerRowRef", first: true, predicate: ["headerRow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"d-flex flex-column w-100 bg-body user-select-none month-view-root\">\n <!-- 1. Header Row (Fixed) -->\n <div #headerRow class=\"d-flex flex-shrink-0 border-bottom bg-body-tertiary overflow-hidden\"\n [style.min-height.rem]=\"layout.minHeaderHeight\" [style.padding-right.px]=\"scrollbarWidth\">\n @for (day of weekDaysHeader; track day) {\n <div\n class=\"flex-fill text-center py-2 border-end fw-bold text-secondary text-uppercase w-0 my-auto h6\">\n {{ day | dayOfWeek:'short' }}\n </div>\n }\n </div>\n\n <!-- SCROLL CONTAINER -->\n <div #scrollBody class=\"calendar-scroller flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\"\n (scroll)=\"onBodyScroll($event)\">\n\n <!-- 2. Grid Body (Scrollable) -->\n <div class=\"d-flex flex-column flex-grow-1 border-start min-height-0\">\n\n <div class=\"d-flex flex-column\" cdkDropListGroup>\n @for (week of weeks; track week) {\n <div class=\"d-flex border-bottom min-h-row\" style=\"flex: 1 0 auto;\"\n [style.min-height.px]=\"layout.rowHeight\">\n @for (slot of week; track slot) {\n <div class=\"flex-fill border-end p-1 d-flex flex-column position-relative\"\n style=\"width: 0\" [class.bg-light]=\"!isCurrentMonth(slot.date)\" cdkDropList [cdkDropListData]=\"slot.date\"\n (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n <!-- Date Number -->\n <div class=\"d-flex justify-content-center mb-1\">\n <span class=\"day-number d-flex align-items-center justify-content-center\"\n [class.today]=\"isToday(slot.date)\">\n {{ slot.date | dtz:'DD' }}\n </span>\n </div>\n <!-- Events Stack -->\n <div class=\"d-flex flex-column gap-1 w-100\">\n @for (event of slot.events; track trackByEvent($index, event)) {\n <!-- Spacer -->\n @if (event.isSpacer) {\n <div class=\"event-spacer\"></div>\n }\n <!-- Event -->\n @if (!event.isSpacer) {\n <rlb-calendar-event [event]=\"event\" class=\"w-100\" cdkDrag [cdkDragData]=\"event\"\n (eventClick)=\"eventClick.emit($event)\" [view]=\"view\">\n <!-- Drag Preview (Optional but nice) -->\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n <ng-template cdkDragPreview matchSize class=\"rlb-calendar-drag-preview\">\n <rlb-calendar-event [event]=\"event\" [view]=\"view\" style=\"box-sizing: border-box;\">\n </rlb-calendar-event>\n </ng-template>\n </rlb-calendar-event>\n }\n }\n </div>\n <!-- Overflow (+N more) -->\n @if (slot.hasOverflow) {\n <div\n class=\"mt-1 small text-secondary text-center cursor-pointer p-1 rounded hover-bg\"\n (click)=\"$event.stopPropagation(); eventContainerClick.emit(slot.overflowEvents)\">\n +{{ slot.overflowCount }} more\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.min-height-0{min-height:0!important}.border-end:last-child{border-right:0!important}.day-number{width:24px;height:24px;border-radius:50%;font-size:.85rem;font-weight:500;transition:background-color .2s}.day-number.today{background-color:var(--bs-primary);color:#fff}.event-spacer{height:20px;width:100%;pointer-events:none}.hover-bg:hover{background-color:var(--bs-secondary-bg-subtle)}.cursor-pointer{cursor:pointer}.cdk-drag-preview{box-shadow:0 .5rem 1rem #0000004d;border-radius:var(--bs-border-radius-sm)}\n"], dependencies: [{ kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i1.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: CalendarEventComponent, selector: "rlb-calendar-event", inputs: ["event", "view"], outputs: ["eventClick", "eventContainerClick"] }, { kind: "pipe", type: DateTzPipe, name: "dtz" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3929
3975
  }
3930
3976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarMonthGridComponent, decorators: [{
3931
3977
  type: Component,
3932
- args: [{ selector: 'rlb-calendar-month-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex flex-column w-100 bg-body user-select-none month-view-root\">\n <!-- 1. Header Row (Fixed) -->\n <div #headerRow class=\"d-flex flex-shrink-0 border-bottom bg-body-tertiary overflow-hidden\"\n [style.min-height.rem]=\"layout.minHeaderHeight\" [style.padding-right.px]=\"scrollbarWidth\">\n <div *ngFor=\"let day of weekDaysHeader\"\n class=\"flex-fill text-center py-2 border-end fw-bold text-secondary text-uppercase w-0 my-auto h6\">\n {{ day | dayOfWeek:'short' }}\n </div>\n </div>\n\n <!-- SCROLL CONTAINER -->\n <div #scrollBody class=\"calendar-scroller flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\"\n (scroll)=\"onBodyScroll($event)\">\n\n <!-- 2. Grid Body (Scrollable) -->\n <div class=\"d-flex flex-column flex-grow-1 border-start min-height-0\">\n\n <div class=\"d-flex flex-column\" cdkDropListGroup>\n <div *ngFor=\"let week of weeks;\" class=\"d-flex border-bottom min-h-row\" style=\"flex: 1 0 auto;\"\n [style.min-height.px]=\"layout.rowHeight\">\n\n\n <div *ngFor=\"let slot of week;\" class=\"flex-fill border-end p-1 d-flex flex-column position-relative\"\n style=\"width: 0\" [class.bg-light]=\"!isCurrentMonth(slot.date)\" cdkDropList [cdkDropListData]=\"slot.date\"\n (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n <!-- Date Number -->\n <div class=\"d-flex justify-content-center mb-1\">\n <span class=\"day-number d-flex align-items-center justify-content-center\"\n [class.today]=\"isToday(slot.date)\">\n {{ slot.date | dtz:'DD' }}\n </span>\n </div>\n\n <!-- Events Stack -->\n <div class=\"d-flex flex-column gap-1 w-100\">\n <ng-container *ngFor=\"let event of slot.events; trackBy: trackByEvent\">\n\n <!-- Spacer -->\n <div *ngIf=\"event.isSpacer\" class=\"event-spacer\"></div>\n\n <!-- Event -->\n <rlb-calendar-event *ngIf=\"!event.isSpacer\" [event]=\"event\" class=\"w-100\" cdkDrag [cdkDragData]=\"event\"\n (eventClick)=\"eventClick.emit($event)\" [view]=\"view\">\n <!-- Drag Preview (Optional but nice) -->\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n <ng-template cdkDragPreview matchSize class=\"rlb-calendar-drag-preview\">\n <rlb-calendar-event [event]=\"event\" [view]=\"view\" style=\"box-sizing: border-box;\">\n </rlb-calendar-event>\n </ng-template>\n </rlb-calendar-event>\n\n </ng-container>\n </div>\n\n <!-- Overflow (+N more) -->\n <div *ngIf=\"slot.hasOverflow\"\n class=\"mt-1 small text-secondary text-center cursor-pointer p-1 rounded hover-bg\"\n (click)=\"$event.stopPropagation(); eventContainerClick.emit(slot.overflowEvents)\">\n +{{ slot.overflowCount }} more\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.min-height-0{min-height:0!important}.border-end:last-child{border-right:0!important}.day-number{width:24px;height:24px;border-radius:50%;font-size:.85rem;font-weight:500;transition:background-color .2s}.day-number.today{background-color:var(--bs-primary);color:#fff}.event-spacer{height:20px;width:100%;pointer-events:none}.hover-bg:hover{background-color:var(--bs-secondary-bg-subtle)}.cursor-pointer{cursor:pointer}.cdk-drag-preview{box-shadow:0 .5rem 1rem #0000004d;border-radius:var(--bs-border-radius-sm)}\n"] }]
3978
+ args: [{ selector: 'rlb-calendar-month-grid', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex flex-column w-100 bg-body user-select-none month-view-root\">\n <!-- 1. Header Row (Fixed) -->\n <div #headerRow class=\"d-flex flex-shrink-0 border-bottom bg-body-tertiary overflow-hidden\"\n [style.min-height.rem]=\"layout.minHeaderHeight\" [style.padding-right.px]=\"scrollbarWidth\">\n @for (day of weekDaysHeader; track day) {\n <div\n class=\"flex-fill text-center py-2 border-end fw-bold text-secondary text-uppercase w-0 my-auto h6\">\n {{ day | dayOfWeek:'short' }}\n </div>\n }\n </div>\n\n <!-- SCROLL CONTAINER -->\n <div #scrollBody class=\"calendar-scroller flex-grow-1 overflow-auto bg-body position-relative\"\n [style.max-height.rem]=\"layout.maxBodyHeight\"\n (scroll)=\"onBodyScroll($event)\">\n\n <!-- 2. Grid Body (Scrollable) -->\n <div class=\"d-flex flex-column flex-grow-1 border-start min-height-0\">\n\n <div class=\"d-flex flex-column\" cdkDropListGroup>\n @for (week of weeks; track week) {\n <div class=\"d-flex border-bottom min-h-row\" style=\"flex: 1 0 auto;\"\n [style.min-height.px]=\"layout.rowHeight\">\n @for (slot of week; track slot) {\n <div class=\"flex-fill border-end p-1 d-flex flex-column position-relative\"\n style=\"width: 0\" [class.bg-light]=\"!isCurrentMonth(slot.date)\" cdkDropList [cdkDropListData]=\"slot.date\"\n (cdkDropListDropped)=\"onEventDrop($event)\" (click)=\"eventClick.emit()\">\n <!-- Date Number -->\n <div class=\"d-flex justify-content-center mb-1\">\n <span class=\"day-number d-flex align-items-center justify-content-center\"\n [class.today]=\"isToday(slot.date)\">\n {{ slot.date | dtz:'DD' }}\n </span>\n </div>\n <!-- Events Stack -->\n <div class=\"d-flex flex-column gap-1 w-100\">\n @for (event of slot.events; track trackByEvent($index, event)) {\n <!-- Spacer -->\n @if (event.isSpacer) {\n <div class=\"event-spacer\"></div>\n }\n <!-- Event -->\n @if (!event.isSpacer) {\n <rlb-calendar-event [event]=\"event\" class=\"w-100\" cdkDrag [cdkDragData]=\"event\"\n (eventClick)=\"eventClick.emit($event)\" [view]=\"view\">\n <!-- Drag Preview (Optional but nice) -->\n <div *cdkDragPlaceholder style=\"opacity: 0\"></div>\n <ng-template cdkDragPreview matchSize class=\"rlb-calendar-drag-preview\">\n <rlb-calendar-event [event]=\"event\" [view]=\"view\" style=\"box-sizing: border-box;\">\n </rlb-calendar-event>\n </ng-template>\n </rlb-calendar-event>\n }\n }\n </div>\n <!-- Overflow (+N more) -->\n @if (slot.hasOverflow) {\n <div\n class=\"mt-1 small text-secondary text-center cursor-pointer p-1 rounded hover-bg\"\n (click)=\"$event.stopPropagation(); eventContainerClick.emit(slot.overflowEvents)\">\n +{{ slot.overflowCount }} more\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host{display:block;height:100%}.min-height-0{min-height:0!important}.border-end:last-child{border-right:0!important}.day-number{width:24px;height:24px;border-radius:50%;font-size:.85rem;font-weight:500;transition:background-color .2s}.day-number.today{background-color:var(--bs-primary);color:#fff}.event-spacer{height:20px;width:100%;pointer-events:none}.hover-bg:hover{background-color:var(--bs-secondary-bg-subtle)}.cursor-pointer{cursor:pointer}.cdk-drag-preview{box-shadow:0 .5rem 1rem #0000004d;border-radius:var(--bs-border-radius-sm)}\n"] }]
3933
3979
  }], ctorParameters: () => [], propDecorators: { view: [{
3934
3980
  type: Input
3935
3981
  }], currentDate: [{
@@ -3964,11 +4010,11 @@ class CalendarGrid {
3964
4010
  ngOnDestroy() {
3965
4011
  }
3966
4012
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3967
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarGrid, isStandalone: false, selector: "rlb-calendar-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'week'\">\n <rlb-calendar-week-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n <rlb-calendar-month-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'day'\">\n <rlb-calendar-day-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n not implemented yet\n </ng-container>\n</ng-container>", styles: [""], dependencies: [{ 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: "component", type: CalendarWeekGridComponent, selector: "rlb-calendar-week-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }, { kind: "component", type: CalendarDayGridComponent, selector: "rlb-calendar-day-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }, { kind: "component", type: CalendarMonthGridComponent, selector: "rlb-calendar-month-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }] }); }
4013
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarGrid, isStandalone: false, selector: "rlb-calendar-grid", inputs: { view: "view", currentDate: "currentDate", events: "events", layout: "layout" }, outputs: { eventClick: "eventClick", eventContainerClick: "eventContainerClick", eventChange: "eventChange" }, usesOnChanges: true, ngImport: i0, template: "\n@switch (view) {\n @case ('week') {\n <rlb-calendar-week-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @case ('month') {\n <rlb-calendar-month-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @case ('day') {\n <rlb-calendar-day-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @default {\n not implemented yet\n }\n }\n", styles: [""], dependencies: [{ kind: "component", type: CalendarWeekGridComponent, selector: "rlb-calendar-week-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }, { kind: "component", type: CalendarDayGridComponent, selector: "rlb-calendar-day-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }, { kind: "component", type: CalendarMonthGridComponent, selector: "rlb-calendar-month-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }] }); }
3968
4014
  }
3969
4015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarGrid, decorators: [{
3970
4016
  type: Component,
3971
- args: [{ selector: 'rlb-calendar-grid', standalone: false, template: "<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'week'\">\n <rlb-calendar-week-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n <rlb-calendar-month-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'day'\">\n <rlb-calendar-day-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n not implemented yet\n </ng-container>\n</ng-container>" }]
4017
+ args: [{ selector: 'rlb-calendar-grid', standalone: false, template: "\n@switch (view) {\n @case ('week') {\n <rlb-calendar-week-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @case ('month') {\n <rlb-calendar-month-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @case ('day') {\n <rlb-calendar-day-grid [view]=\"view\" [currentDate]=\"currentDate\" [events]=\"events\" [layout]=\"layout\"\n (eventClick)=\"eventClick.emit($event)\" (eventContainerClick)=\"eventContainerClick.emit($event)\"\n (eventChange)=\"eventChange.emit($event)\" />\n }\n @default {\n not implemented yet\n }\n }\n" }]
3972
4018
  }], ctorParameters: () => [], propDecorators: { view: [{
3973
4019
  type: Input
3974
4020
  }], currentDate: [{
@@ -4264,11 +4310,11 @@ class CalendarComponent {
4264
4310
  }).pipe(take(1));
4265
4311
  }
4266
4312
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarComponent, deps: [{ token: ModalService }, { token: UniqueIdService }, { token: ToastService }], target: i0.ɵɵFactoryTarget.Component }); }
4267
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: CalendarComponent, isStandalone: false, selector: "rlb-calendar", inputs: { view: "view", events: "events", currentDate: ["current-date", "currentDate", (d) => new DateTz(d)], loading: ["loading", "loading", booleanAttribute], showToolbar: ["show-toolbar", "showToolbar", booleanAttribute], layout: "layout" }, outputs: { dateChange: "date-change", viewChange: "view-change", eventClick: "event-click" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"rlb-calendar\">\n\t<div class=\"my-3 d-flex align-items-center justify-content-between\">\n <button class=\"ms-auto\" rlb-button outline (click)=\"generateTestEvents()\">Generate events</button>\n\t</div>\n\t<rlb-calendar-header\n\t\t*ngIf=\"showToolbar\"\n\t\t[view]=\"view\"\n\t\t[currentDate]=\"currentDate\"\n\t\t(viewChange)=\"setView($event)\"\n\t\t(dateChange)=\"setDate($event)\">\n\t</rlb-calendar-header>\n\n\t<rlb-calendar-grid\n\t\t[events]=\"events\"\n\t\t[view]=\"view\"\n\t\t[currentDate]=\"currentDate\"\n [layout]=\"mergedLayout\"\n (eventClick)=\"onEventClick($event)\"\n (eventContainerClick)=\"onEventContainerClick($event)\"\n (eventChange)=\"onEventChange($event)\"\n >\n\t</rlb-calendar-grid>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: CalendarHeaderComponent, selector: "rlb-calendar-header", inputs: ["view", "currentDate"], outputs: ["dateChange", "viewChange"] }, { kind: "component", type: CalendarGrid, selector: "rlb-calendar-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }] }); }
4313
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarComponent, isStandalone: false, selector: "rlb-calendar", inputs: { view: "view", events: "events", currentDate: ["current-date", "currentDate", (d) => new DateTz(d)], loading: ["loading", "loading", booleanAttribute], showToolbar: ["show-toolbar", "showToolbar", booleanAttribute], layout: "layout" }, outputs: { dateChange: "date-change", viewChange: "view-change", eventClick: "event-click" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"rlb-calendar\">\n <div class=\"my-3 d-flex align-items-center justify-content-between\">\n <button class=\"ms-auto\" rlb-button outline (click)=\"generateTestEvents()\">Generate events</button>\n </div>\n @if (showToolbar) {\n <rlb-calendar-header\n [view]=\"view\"\n [currentDate]=\"currentDate\"\n (viewChange)=\"setView($event)\"\n (dateChange)=\"setDate($event)\">\n </rlb-calendar-header>\n }\n\n <rlb-calendar-grid\n [events]=\"events\"\n [view]=\"view\"\n [currentDate]=\"currentDate\"\n [layout]=\"mergedLayout\"\n (eventClick)=\"onEventClick($event)\"\n (eventContainerClick)=\"onEventContainerClick($event)\"\n (eventChange)=\"onEventChange($event)\"\n >\n </rlb-calendar-grid>\n\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: CalendarHeaderComponent, selector: "rlb-calendar-header", inputs: ["view", "currentDate"], outputs: ["dateChange", "viewChange"] }, { kind: "component", type: CalendarGrid, selector: "rlb-calendar-grid", inputs: ["view", "currentDate", "events", "layout"], outputs: ["eventClick", "eventContainerClick", "eventChange"] }] }); }
4268
4314
  }
4269
4315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarComponent, decorators: [{
4270
4316
  type: Component,
4271
- args: [{ selector: "rlb-calendar", standalone: false, template: "<div class=\"rlb-calendar\">\n\t<div class=\"my-3 d-flex align-items-center justify-content-between\">\n <button class=\"ms-auto\" rlb-button outline (click)=\"generateTestEvents()\">Generate events</button>\n\t</div>\n\t<rlb-calendar-header\n\t\t*ngIf=\"showToolbar\"\n\t\t[view]=\"view\"\n\t\t[currentDate]=\"currentDate\"\n\t\t(viewChange)=\"setView($event)\"\n\t\t(dateChange)=\"setDate($event)\">\n\t</rlb-calendar-header>\n\n\t<rlb-calendar-grid\n\t\t[events]=\"events\"\n\t\t[view]=\"view\"\n\t\t[currentDate]=\"currentDate\"\n [layout]=\"mergedLayout\"\n (eventClick)=\"onEventClick($event)\"\n (eventContainerClick)=\"onEventContainerClick($event)\"\n (eventChange)=\"onEventChange($event)\"\n >\n\t</rlb-calendar-grid>\n\n</div>\n" }]
4317
+ args: [{ selector: "rlb-calendar", standalone: false, template: "<div class=\"rlb-calendar\">\n <div class=\"my-3 d-flex align-items-center justify-content-between\">\n <button class=\"ms-auto\" rlb-button outline (click)=\"generateTestEvents()\">Generate events</button>\n </div>\n @if (showToolbar) {\n <rlb-calendar-header\n [view]=\"view\"\n [currentDate]=\"currentDate\"\n (viewChange)=\"setView($event)\"\n (dateChange)=\"setDate($event)\">\n </rlb-calendar-header>\n }\n\n <rlb-calendar-grid\n [events]=\"events\"\n [view]=\"view\"\n [currentDate]=\"currentDate\"\n [layout]=\"mergedLayout\"\n (eventClick)=\"onEventClick($event)\"\n (eventContainerClick)=\"onEventContainerClick($event)\"\n (eventChange)=\"onEventChange($event)\"\n >\n </rlb-calendar-grid>\n\n</div>\n" }]
4272
4318
  }], ctorParameters: () => [{ type: ModalService }, { type: UniqueIdService }, { type: ToastService }], propDecorators: { view: [{
4273
4319
  type: Input,
4274
4320
  args: [{ alias: 'view' }]
@@ -4340,45 +4386,59 @@ class ChatItemComponent {
4340
4386
  this.reply.emit(this.replayId);
4341
4387
  }
4342
4388
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4343
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ChatItemComponent, isStandalone: false, selector: "rlb-chat-item", inputs: { id: "id", avatar: "avatar", text: "text", dateTime: ["date-time", "dateTime"], replayText: ["replay-text", "replayText"], replaySubject: ["replay-subject", "replaySubject"], replayId: ["replay-id", "replayId"], position: "position", reaction: "reaction", canReply: ["can-reply", "canReply"] }, outputs: { reply: "reply", reactionClick: "reaction-click", reactionSelector: "reaction-selector" }, host: { properties: { "class.ms-auto": "position === \"right\"" } }, ngImport: i0, template: `
4389
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ChatItemComponent, isStandalone: false, selector: "rlb-chat-item", inputs: { id: "id", avatar: "avatar", text: "text", dateTime: ["date-time", "dateTime"], replayText: ["replay-text", "replayText"], replaySubject: ["replay-subject", "replaySubject"], replayId: ["replay-id", "replayId"], position: "position", reaction: "reaction", canReply: ["can-reply", "canReply"] }, outputs: { reply: "reply", reactionClick: "reaction-click", reactionSelector: "reaction-selector" }, host: { properties: { "class.ms-auto": "position === \"right\"" } }, ngImport: i0, template: `
4344
4390
  <div [id]="id" class="chat-bubble-item" [class.left]="position==='left'" [class.right]="position==='right'">
4345
- <button *ngIf="canReply && position === 'right'" class="reply-button" (click)="replyClick($event)">
4346
- <i class="bi bi-reply-fill"></i>
4347
- </button>
4348
- <div class="avatar small" *ngIf="position === 'left'">
4349
- <img [src]="avatar" alt="avatar">
4350
- </div>
4351
- <div class="text">
4352
- <div class="replied-message" *ngIf="replayText">
4353
- <span class="name">{{replaySubject}}</span>
4354
- <p>{{replayText}}</p>
4391
+ @if (canReply && position === 'right') {
4392
+ <button class="reply-button" (click)="replyClick($event)">
4393
+ <i class="bi bi-reply-fill"></i>
4394
+ </button>
4395
+ }
4396
+ @if (position === 'left') {
4397
+ <div class="avatar small">
4398
+ <img [src]="avatar" alt="avatar">
4355
4399
  </div>
4400
+ }
4401
+ <div class="text">
4402
+ @if (replayText) {
4403
+ <div class="replied-message">
4404
+ <span class="name">{{replaySubject}}</span>
4405
+ <p>{{replayText}}</p>
4406
+ </div>
4407
+ }
4356
4408
  <div>
4357
4409
  <ng-content/>
4358
4410
  </div>
4359
4411
  <i class="bi bi-check-all float-end"></i>
4360
4412
  <span class="time float-end">{{ dateTime | date:'dd/MM HH:mm:ss' }}</span>
4361
4413
  <rlb-dropdown direction="up" class="reaction">
4362
- <a rlb-button rlb-dropdown *ngIf="!reaction"
4414
+ @if (!reaction) {
4415
+ <a rlb-button rlb-dropdown
4363
4416
  autoClose="manual" class="reaction add p-1"
4364
4417
  [class.right]="position==='right'" [class.left]="position==='left'"
4365
4418
  (status-changed)="this.reactionSelector.emit($event)">
4366
- <i class="bi bi-plus m-0 p-0"></i>
4367
- </a>
4419
+ <i class="bi bi-plus m-0 p-0"></i>
4420
+ </a>
4421
+ }
4368
4422
  <rlb-dropdown-container>
4369
4423
  <ng-content select="[reaction-picker]" />
4370
4424
  </rlb-dropdown-container>
4371
4425
  </rlb-dropdown>
4372
- <span class="reaction" *ngIf="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
4426
+ @if (reaction) {
4427
+ <span class="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
4428
+ }
4373
4429
  </div>
4374
- <div class="avatar small" *ngIf="position === 'right'">
4375
- <img [src]="avatar" alt="avatar">
4376
- </div>
4377
- <button *ngIf="canReply && position === 'left'" class="reply-button" (click)="replyClick($event)">
4378
- <i class="bi bi-reply-fill"></i>
4379
- </button>
4430
+ @if (position === 'right') {
4431
+ <div class="avatar small">
4432
+ <img [src]="avatar" alt="avatar">
4433
+ </div>
4434
+ }
4435
+ @if (canReply && position === 'left') {
4436
+ <button class="reply-button" (click)="replyClick($event)">
4437
+ <i class="bi bi-reply-fill"></i>
4438
+ </button>
4439
+ }
4380
4440
  </div>
4381
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: DropdownComponent, selector: "rlb-dropdown", inputs: ["direction"] }, { kind: "component", type: DropdownContainerComponent, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: ["placement", "placement-sm", "placement-md", "placement-lg", "placement-xl", "placement-xxl"] }, { kind: "directive", type: DropdownDirective, selector: "a[rlb-dropdown], button[rlb-dropdown], span[rlb-badge][rlb-dropdown]", inputs: ["offset", "auto-close"], outputs: ["status-changed"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
4441
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: DropdownComponent, selector: "rlb-dropdown", inputs: ["direction"] }, { kind: "component", type: DropdownContainerComponent, selector: "ul[rlb-dropdown-menu], rlb-dropdown-container", inputs: ["placement", "placement-sm", "placement-md", "placement-lg", "placement-xl", "placement-xxl"] }, { kind: "directive", type: DropdownDirective, selector: "a[rlb-dropdown], button[rlb-dropdown], span[rlb-badge][rlb-dropdown]", inputs: ["offset", "auto-close"], outputs: ["status-changed"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
4382
4442
  }
4383
4443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChatItemComponent, decorators: [{
4384
4444
  type: Component,
@@ -4386,41 +4446,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4386
4446
  selector: 'rlb-chat-item',
4387
4447
  template: `
4388
4448
  <div [id]="id" class="chat-bubble-item" [class.left]="position==='left'" [class.right]="position==='right'">
4389
- <button *ngIf="canReply && position === 'right'" class="reply-button" (click)="replyClick($event)">
4390
- <i class="bi bi-reply-fill"></i>
4391
- </button>
4392
- <div class="avatar small" *ngIf="position === 'left'">
4393
- <img [src]="avatar" alt="avatar">
4394
- </div>
4395
- <div class="text">
4396
- <div class="replied-message" *ngIf="replayText">
4397
- <span class="name">{{replaySubject}}</span>
4398
- <p>{{replayText}}</p>
4449
+ @if (canReply && position === 'right') {
4450
+ <button class="reply-button" (click)="replyClick($event)">
4451
+ <i class="bi bi-reply-fill"></i>
4452
+ </button>
4453
+ }
4454
+ @if (position === 'left') {
4455
+ <div class="avatar small">
4456
+ <img [src]="avatar" alt="avatar">
4399
4457
  </div>
4458
+ }
4459
+ <div class="text">
4460
+ @if (replayText) {
4461
+ <div class="replied-message">
4462
+ <span class="name">{{replaySubject}}</span>
4463
+ <p>{{replayText}}</p>
4464
+ </div>
4465
+ }
4400
4466
  <div>
4401
4467
  <ng-content/>
4402
4468
  </div>
4403
4469
  <i class="bi bi-check-all float-end"></i>
4404
4470
  <span class="time float-end">{{ dateTime | date:'dd/MM HH:mm:ss' }}</span>
4405
4471
  <rlb-dropdown direction="up" class="reaction">
4406
- <a rlb-button rlb-dropdown *ngIf="!reaction"
4472
+ @if (!reaction) {
4473
+ <a rlb-button rlb-dropdown
4407
4474
  autoClose="manual" class="reaction add p-1"
4408
4475
  [class.right]="position==='right'" [class.left]="position==='left'"
4409
4476
  (status-changed)="this.reactionSelector.emit($event)">
4410
- <i class="bi bi-plus m-0 p-0"></i>
4411
- </a>
4477
+ <i class="bi bi-plus m-0 p-0"></i>
4478
+ </a>
4479
+ }
4412
4480
  <rlb-dropdown-container>
4413
4481
  <ng-content select="[reaction-picker]" />
4414
4482
  </rlb-dropdown-container>
4415
4483
  </rlb-dropdown>
4416
- <span class="reaction" *ngIf="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
4484
+ @if (reaction) {
4485
+ <span class="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
4486
+ }
4417
4487
  </div>
4418
- <div class="avatar small" *ngIf="position === 'right'">
4419
- <img [src]="avatar" alt="avatar">
4420
- </div>
4421
- <button *ngIf="canReply && position === 'left'" class="reply-button" (click)="replyClick($event)">
4422
- <i class="bi bi-reply-fill"></i>
4423
- </button>
4488
+ @if (position === 'right') {
4489
+ <div class="avatar small">
4490
+ <img [src]="avatar" alt="avatar">
4491
+ </div>
4492
+ }
4493
+ @if (canReply && position === 'left') {
4494
+ <button class="reply-button" (click)="replyClick($event)">
4495
+ <i class="bi bi-reply-fill"></i>
4496
+ </button>
4497
+ }
4424
4498
  </div>
4425
4499
  `,
4426
4500
  host: { '[class.ms-auto]': 'position === "right"' },
@@ -4486,7 +4560,7 @@ class ListItemImageComponent {
4486
4560
  <span *ngIf="!counterEmpty"rlb-badge [pill]="counterPill" [color]="counterColor" [border]="counterBorder">{{ counter }}</span>
4487
4561
  </div>
4488
4562
  </div>
4489
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BadgeComponent, selector: "span[rlb-badge], img[rlb-badge]", inputs: ["pill", "color", "hidden-text", "border", "class"] }, { kind: "component", type: AvatarComponent, selector: "rlb-avatar", inputs: ["size", "shape", "src", "class"] }] }); }
4563
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BadgeComponent, selector: "span[rlb-badge], img[rlb-badge]", inputs: ["pill", "color", "hidden-text", "border", "class"] }, { kind: "component", type: AvatarComponent, selector: "rlb-avatar", inputs: ["size", "shape", "src", "class"] }] }); }
4490
4564
  }
4491
4565
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ListItemImageComponent, decorators: [{
4492
4566
  type: Component,
@@ -5224,19 +5298,23 @@ class PaginationItemComponent {
5224
5298
  this.viewContainerRef.element.nativeElement.remove();
5225
5299
  }
5226
5300
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PaginationItemComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
5227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: PaginationItemComponent, isStandalone: false, selector: "rlb-pagination-item", inputs: { isIcon: ["isIcon", "isIcon", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], active: ["active", "active", booleanAttribute], cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
5301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: PaginationItemComponent, isStandalone: false, selector: "rlb-pagination-item", inputs: { isIcon: ["isIcon", "isIcon", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], active: ["active", "active", booleanAttribute], cssClass: ["class", "cssClass"] }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: `
5228
5302
  <ng-template #template>
5229
5303
  <li class="page-item {{ cssClass }}" [class.disabled]="disabled" [class.active]="active">
5230
- <a class="page-link d-block" *ngIf="isIcon; else e" [attr.disabled]="disabled">
5304
+ @if (isIcon) {
5305
+ <a class="page-link d-block" [attr.disabled]="disabled">
5306
+ <ng-container *ngTemplateOutlet="content"></ng-container>
5307
+ </a>
5308
+ } @else {
5231
5309
  <ng-container *ngTemplateOutlet="content"></ng-container>
5232
- </a>
5310
+ }
5233
5311
  <ng-template #e>
5234
5312
  <ng-container *ngTemplateOutlet="content"></ng-container>
5235
5313
  </ng-template>
5236
5314
  </li>
5237
5315
  </ng-template>
5238
5316
  <ng-template #content><ng-content /></ng-template>
5239
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
5317
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
5240
5318
  }
5241
5319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PaginationItemComponent, decorators: [{
5242
5320
  type: Component,
@@ -5245,16 +5323,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5245
5323
  template: `
5246
5324
  <ng-template #template>
5247
5325
  <li class="page-item {{ cssClass }}" [class.disabled]="disabled" [class.active]="active">
5248
- <a class="page-link d-block" *ngIf="isIcon; else e" [attr.disabled]="disabled">
5326
+ @if (isIcon) {
5327
+ <a class="page-link d-block" [attr.disabled]="disabled">
5328
+ <ng-container *ngTemplateOutlet="content"></ng-container>
5329
+ </a>
5330
+ } @else {
5249
5331
  <ng-container *ngTemplateOutlet="content"></ng-container>
5250
- </a>
5332
+ }
5251
5333
  <ng-template #e>
5252
5334
  <ng-container *ngTemplateOutlet="content"></ng-container>
5253
5335
  </ng-template>
5254
5336
  </li>
5255
5337
  </ng-template>
5256
5338
  <ng-template #content><ng-content /></ng-template>
5257
- `,
5339
+ `,
5258
5340
  standalone: false
5259
5341
  }]
5260
5342
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { template: [{
@@ -5410,7 +5492,7 @@ class RlbPlaceholderComponent {
5410
5492
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: RlbPlaceholderComponent, isStandalone: false, selector: "rlb-placeholder", inputs: { animation: "animation" }, ngImport: i0, template: `
5411
5493
  <div [ngClass]="containerClass">
5412
5494
  <ng-content/>
5413
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
5495
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
5414
5496
  }
5415
5497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderComponent, decorators: [{
5416
5498
  type: Component,
@@ -5442,18 +5524,19 @@ class RlbPlaceholderTextComponent {
5442
5524
  return Array.from({ length: this.lines }).map(() => this.width);
5443
5525
  }
5444
5526
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5445
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: RlbPlaceholderTextComponent, isStandalone: false, selector: "rlb-placeholder-text", inputs: { lines: "lines", size: "size", color: "color", animation: "animation", width: "width", height: "height", rounded: "rounded" }, ngImport: i0, template: `
5527
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: RlbPlaceholderTextComponent, isStandalone: false, selector: "rlb-placeholder-text", inputs: { lines: "lines", size: "size", color: "color", animation: "animation", width: "width", height: "height", rounded: "rounded" }, ngImport: i0, template: `
5446
5528
  <rlb-placeholder [animation]="animation">
5447
- <rlb-placeholder-line
5448
- *ngFor="let w of computedWidths"
5449
- [size]="size"
5450
- [color]="color"
5451
- [width]="w"
5452
- [rounded]="rounded"
5453
- [height]="height"
5454
- ></rlb-placeholder-line>
5529
+ @for (w of computedWidths; track w) {
5530
+ <rlb-placeholder-line
5531
+ [size]="size"
5532
+ [color]="color"
5533
+ [width]="w"
5534
+ [rounded]="rounded"
5535
+ [height]="height"
5536
+ ></rlb-placeholder-line>
5537
+ }
5455
5538
  </rlb-placeholder>
5456
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: RlbPlaceholderComponent, selector: "rlb-placeholder", inputs: ["animation"] }, { kind: "component", type: RlbPlaceholderLineComponent, selector: "rlb-placeholder-line", inputs: ["size", "color", "width", "height", "rounded"] }] }); }
5539
+ `, isInline: true, dependencies: [{ kind: "component", type: RlbPlaceholderComponent, selector: "rlb-placeholder", inputs: ["animation"] }, { kind: "component", type: RlbPlaceholderLineComponent, selector: "rlb-placeholder-line", inputs: ["size", "color", "width", "height", "rounded"] }] }); }
5457
5540
  }
5458
5541
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderTextComponent, decorators: [{
5459
5542
  type: Component,
@@ -5462,16 +5545,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5462
5545
  standalone: false,
5463
5546
  template: `
5464
5547
  <rlb-placeholder [animation]="animation">
5465
- <rlb-placeholder-line
5466
- *ngFor="let w of computedWidths"
5467
- [size]="size"
5468
- [color]="color"
5469
- [width]="w"
5470
- [rounded]="rounded"
5471
- [height]="height"
5472
- ></rlb-placeholder-line>
5548
+ @for (w of computedWidths; track w) {
5549
+ <rlb-placeholder-line
5550
+ [size]="size"
5551
+ [color]="color"
5552
+ [width]="w"
5553
+ [rounded]="rounded"
5554
+ [height]="height"
5555
+ ></rlb-placeholder-line>
5556
+ }
5473
5557
  </rlb-placeholder>
5474
- `,
5558
+ `,
5475
5559
  }]
5476
5560
  }], propDecorators: { lines: [{
5477
5561
  type: Input
@@ -5636,38 +5720,49 @@ class SidebarItemComponent {
5636
5720
  }
5637
5721
  }
5638
5722
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarItemComponent, deps: [{ token: i0.ViewContainerRef }, { token: UniqueIdService }, { token: i2.Router }, { token: SidebarService }], target: i0.ɵɵFactoryTarget.Component }); }
5639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SidebarItemComponent, isStandalone: false, selector: "rlb-sidebar-item", inputs: { title: "title", icon: "icon", label: "label", link: "link", badgeCounter: "badgeCounter" }, outputs: { click: "click" }, queries: [{ propertyName: "children", predicate: SidebarItemComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }, { propertyName: "collapseComponent", first: true, predicate: CollapseComponent, descendants: true }], ngImport: i0, template: `
5723
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SidebarItemComponent, isStandalone: false, selector: "rlb-sidebar-item", inputs: { title: "title", icon: "icon", label: "label", link: "link", badgeCounter: "badgeCounter" }, outputs: { click: "click" }, queries: [{ propertyName: "children", predicate: SidebarItemComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }, { propertyName: "collapseComponent", first: true, predicate: CollapseComponent, descendants: true }], ngImport: i0, template: `
5640
5724
  <ng-template #template>
5641
- <li *ngIf="title" (click)="onItemClick($event)" class="menu-title">{{ title }}</li>
5642
- <li *ngIf="!title" (click)="onItemClick($event)">
5643
- <a
5644
- [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter.toString() : undefined"
5645
- *ngIf="children?.length" href="javascript:void(0);"
5646
- class="is-parent has-arrow"
5647
- toggle="collapse"
5648
- [toggle-target]="'side-item' + _id"
5649
- >
5650
- <i *ngIf="icon" [class]="icon"></i>
5651
- <span>{{ label }}</span>
5652
- </a>
5653
- <rlb-collapse [id]="'side-item' + _id">
5654
- <ul class="sub-menu" aria-expanded="false">
5655
- <ng-content select="rlb-sidebar-item"></ng-content>
5656
- </ul>
5657
- </rlb-collapse>
5658
- <a
5659
- *ngIf="!children?.length"
5660
- [routerLink]="link"
5661
- [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter : undefined"
5662
- class="side-nav-link-ref"
5663
- routerLinkActive="active"
5664
- >
5665
- <i *ngIf="icon" [class]="icon"></i>
5666
- <ng-content></ng-content>
5667
- </a>
5668
- </li>
5725
+ @if (title) {
5726
+ <li (click)="onItemClick($event)" class="menu-title">{{ title }}</li>
5727
+ }
5728
+ @if (!title) {
5729
+ <li (click)="onItemClick($event)">
5730
+ @if (children?.length) {
5731
+ <a
5732
+ [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter.toString() : undefined"
5733
+ href="javascript:void(0);"
5734
+ class="is-parent has-arrow"
5735
+ toggle="collapse"
5736
+ [toggle-target]="'side-item' + _id"
5737
+ >
5738
+ @if (icon) {
5739
+ <i [class]="icon"></i>
5740
+ }
5741
+ <span>{{ label }}</span>
5742
+ </a>
5743
+ }
5744
+ <rlb-collapse [id]="'side-item' + _id">
5745
+ <ul class="sub-menu" aria-expanded="false">
5746
+ <ng-content select="rlb-sidebar-item"></ng-content>
5747
+ </ul>
5748
+ </rlb-collapse>
5749
+ @if (!children?.length) {
5750
+ <a
5751
+ [routerLink]="link"
5752
+ [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter : undefined"
5753
+ class="side-nav-link-ref"
5754
+ routerLinkActive="active"
5755
+ >
5756
+ @if (icon) {
5757
+ <i [class]="icon"></i>
5758
+ }
5759
+ <ng-content></ng-content>
5760
+ </a>
5761
+ }
5762
+ </li>
5763
+ }
5669
5764
  </ng-template>
5670
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: BadgeDirective, selector: "[badge]", inputs: ["badge", "badge-pill", "badge-border", "badge-top", "badge-start", "badge-color", "hidden-text"] }, { kind: "component", type: CollapseComponent, selector: "rlb-collapse", inputs: ["id", "orientation", "status"], outputs: ["statusChange"] }, { kind: "directive", type: ToggleDirective, selector: "\n button[toggle],\n a[toggle],\n rlb-navbar-item[toggle],\n rlb-button-toolbar[toggle]", inputs: ["toggle", "toggle-target", "collapsed", "auto-close"] }] }); }
5765
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: BadgeDirective, selector: "[badge]", inputs: ["badge", "badge-pill", "badge-border", "badge-top", "badge-start", "badge-color", "hidden-text"] }, { kind: "component", type: CollapseComponent, selector: "rlb-collapse", inputs: ["id", "orientation", "status"], outputs: ["statusChange"] }, { kind: "directive", type: ToggleDirective, selector: "\n button[toggle],\n a[toggle],\n rlb-navbar-item[toggle],\n rlb-button-toolbar[toggle]", inputs: ["toggle", "toggle-target", "collapsed", "auto-close"] }] }); }
5671
5766
  }
5672
5767
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarItemComponent, decorators: [{
5673
5768
  type: Component,
@@ -5675,36 +5770,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5675
5770
  selector: 'rlb-sidebar-item',
5676
5771
  template: `
5677
5772
  <ng-template #template>
5678
- <li *ngIf="title" (click)="onItemClick($event)" class="menu-title">{{ title }}</li>
5679
- <li *ngIf="!title" (click)="onItemClick($event)">
5680
- <a
5681
- [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter.toString() : undefined"
5682
- *ngIf="children?.length" href="javascript:void(0);"
5683
- class="is-parent has-arrow"
5684
- toggle="collapse"
5685
- [toggle-target]="'side-item' + _id"
5686
- >
5687
- <i *ngIf="icon" [class]="icon"></i>
5688
- <span>{{ label }}</span>
5689
- </a>
5690
- <rlb-collapse [id]="'side-item' + _id">
5691
- <ul class="sub-menu" aria-expanded="false">
5692
- <ng-content select="rlb-sidebar-item"></ng-content>
5693
- </ul>
5694
- </rlb-collapse>
5695
- <a
5696
- *ngIf="!children?.length"
5697
- [routerLink]="link"
5698
- [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter : undefined"
5699
- class="side-nav-link-ref"
5700
- routerLinkActive="active"
5701
- >
5702
- <i *ngIf="icon" [class]="icon"></i>
5703
- <ng-content></ng-content>
5704
- </a>
5705
- </li>
5773
+ @if (title) {
5774
+ <li (click)="onItemClick($event)" class="menu-title">{{ title }}</li>
5775
+ }
5776
+ @if (!title) {
5777
+ <li (click)="onItemClick($event)">
5778
+ @if (children?.length) {
5779
+ <a
5780
+ [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter.toString() : undefined"
5781
+ href="javascript:void(0);"
5782
+ class="is-parent has-arrow"
5783
+ toggle="collapse"
5784
+ [toggle-target]="'side-item' + _id"
5785
+ >
5786
+ @if (icon) {
5787
+ <i [class]="icon"></i>
5788
+ }
5789
+ <span>{{ label }}</span>
5790
+ </a>
5791
+ }
5792
+ <rlb-collapse [id]="'side-item' + _id">
5793
+ <ul class="sub-menu" aria-expanded="false">
5794
+ <ng-content select="rlb-sidebar-item"></ng-content>
5795
+ </ul>
5796
+ </rlb-collapse>
5797
+ @if (!children?.length) {
5798
+ <a
5799
+ [routerLink]="link"
5800
+ [badge]="badgeCounter && badgeCounter > 0 ? badgeCounter : undefined"
5801
+ class="side-nav-link-ref"
5802
+ routerLinkActive="active"
5803
+ >
5804
+ @if (icon) {
5805
+ <i [class]="icon"></i>
5806
+ }
5807
+ <ng-content></ng-content>
5808
+ </a>
5809
+ }
5810
+ </li>
5811
+ }
5706
5812
  </ng-template>
5707
- `,
5813
+ `,
5708
5814
  standalone: false
5709
5815
  }]
5710
5816
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: UniqueIdService }, { type: i2.Router }, { type: SidebarService }], propDecorators: { title: [{
@@ -6506,15 +6612,17 @@ class DataTableRowComponent {
6506
6612
  }
6507
6613
  }
6508
6614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableRowComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
6509
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DataTableRowComponent, isStandalone: false, selector: "rlb-dt-row", inputs: { cssClass: ["class", "cssClass"], cssStyle: ["style", "cssStyle"] }, outputs: { rowClick: "rowClick" }, queries: [{ propertyName: "actionsBlock", predicate: DataTableActionsComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }, { propertyName: "_projectedActions", first: true, predicate: ["projectedActions"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `
6615
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DataTableRowComponent, isStandalone: false, selector: "rlb-dt-row", inputs: { cssClass: ["class", "cssClass"], cssStyle: ["style", "cssStyle"] }, outputs: { rowClick: "rowClick" }, queries: [{ propertyName: "actionsBlock", predicate: DataTableActionsComponent }], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }, { propertyName: "_projectedActions", first: true, predicate: ["projectedActions"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: `
6510
6616
  <ng-template #template>
6511
6617
  <tr [class]="cssClass" [style]="cssStyle" (click)="rowClick.emit($event)">
6512
6618
  <ng-content select="rlb-dt-cell"></ng-content>
6513
- <rlb-dt-cell *ngIf="hasActions">
6514
- <ng-container #projectedActions></ng-container>
6515
- </rlb-dt-cell>
6619
+ @if (hasActions) {
6620
+ <rlb-dt-cell>
6621
+ <ng-container #projectedActions></ng-container>
6622
+ </rlb-dt-cell>
6623
+ }
6516
6624
  </tr>
6517
- </ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DataTableCellComponent, selector: "rlb-dt-cell", inputs: ["col-span", "class", "style"] }] }); }
6625
+ </ng-template>`, isInline: true, dependencies: [{ kind: "component", type: DataTableCellComponent, selector: "rlb-dt-cell", inputs: ["col-span", "class", "style"] }] }); }
6518
6626
  }
6519
6627
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableRowComponent, decorators: [{
6520
6628
  type: Component,
@@ -6524,9 +6632,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6524
6632
  <ng-template #template>
6525
6633
  <tr [class]="cssClass" [style]="cssStyle" (click)="rowClick.emit($event)">
6526
6634
  <ng-content select="rlb-dt-cell"></ng-content>
6527
- <rlb-dt-cell *ngIf="hasActions">
6528
- <ng-container #projectedActions></ng-container>
6529
- </rlb-dt-cell>
6635
+ @if (hasActions) {
6636
+ <rlb-dt-cell>
6637
+ <ng-container #projectedActions></ng-container>
6638
+ </rlb-dt-cell>
6639
+ }
6530
6640
  </tr>
6531
6641
  </ng-template>`,
6532
6642
  standalone: false
@@ -6681,13 +6791,15 @@ class InputValidationComponent {
6681
6791
  return `${i18nKey}: ${JSON.stringify(errorValue)}`;
6682
6792
  }
6683
6793
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputValidationComponent, deps: [{ token: RLB_TRANSLATION_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
6684
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: InputValidationComponent, isStandalone: false, selector: "rlb-input-validation", inputs: { errors: "errors" }, host: { classAttribute: "invalid-feedback" }, ngImport: i0, template: `
6685
- <ng-container *ngIf="errors">
6686
- <span *ngFor="let errorKey of getErrorKeys(errors)">
6687
- {{ getTranslatedError(errorKey, errors[errorKey]) }}
6688
- </span>
6689
- </ng-container>
6690
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
6794
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: InputValidationComponent, isStandalone: false, selector: "rlb-input-validation", inputs: { errors: "errors" }, host: { classAttribute: "invalid-feedback" }, ngImport: i0, template: `
6795
+ @if (errors) {
6796
+ @for (errorKey of getErrorKeys(errors); track errorKey) {
6797
+ <span>
6798
+ {{ getTranslatedError(errorKey, errors[errorKey]) }}
6799
+ </span>
6800
+ }
6801
+ }
6802
+ `, isInline: true }); }
6691
6803
  }
6692
6804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputValidationComponent, decorators: [{
6693
6805
  type: Component,
@@ -6695,12 +6807,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6695
6807
  selector: 'rlb-input-validation',
6696
6808
  host: { class: 'invalid-feedback' },
6697
6809
  template: `
6698
- <ng-container *ngIf="errors">
6699
- <span *ngFor="let errorKey of getErrorKeys(errors)">
6700
- {{ getTranslatedError(errorKey, errors[errorKey]) }}
6701
- </span>
6702
- </ng-container>
6703
- `,
6810
+ @if (errors) {
6811
+ @for (errorKey of getErrorKeys(errors); track errorKey) {
6812
+ <span>
6813
+ {{ getTranslatedError(errorKey, errors[errorKey]) }}
6814
+ </span>
6815
+ }
6816
+ }
6817
+ `,
6704
6818
  standalone: false
6705
6819
  }]
6706
6820
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -6770,7 +6884,7 @@ class SelectComponent extends AbstractComponent {
6770
6884
  }
6771
6885
  }
6772
6886
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectComponent, deps: [{ token: UniqueIdService }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
6773
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: SelectComponent, isStandalone: false, selector: "rlb-select", inputs: { placeholder: "placeholder", size: "size", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], display: ["display", "display", numberAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, queries: [{ propertyName: "options", predicate: OptionComponent }], viewQueries: [{ propertyName: "el", first: true, predicate: ["select"], descendants: true }, { propertyName: "_projectedDisplayOptions", first: true, predicate: ["projectedDisplayOptions"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
6887
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SelectComponent, isStandalone: false, selector: "rlb-select", inputs: { placeholder: "placeholder", size: "size", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], display: ["display", "display", numberAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, queries: [{ propertyName: "options", predicate: OptionComponent }], viewQueries: [{ propertyName: "el", first: true, predicate: ["select"], descendants: true }, { propertyName: "_projectedDisplayOptions", first: true, predicate: ["projectedDisplayOptions"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
6774
6888
  <ng-content select="[before]"></ng-content>
6775
6889
  <div class="input-group has-validation">
6776
6890
  <select
@@ -6790,13 +6904,17 @@ class SelectComponent extends AbstractComponent {
6790
6904
  'is-valid': control?.touched && control?.valid && enableValidation
6791
6905
  }"
6792
6906
  (change)="update($event.target)"
6793
- >
6794
- <option *ngIf="placeholder" selected disabled>{{ placeholder }}</option>
6907
+ >
6908
+ @if (placeholder) {
6909
+ <option selected disabled>{{ placeholder }}</option>
6910
+ }
6795
6911
  <ng-container #projectedDisplayOptions></ng-container>
6796
6912
  </select>
6797
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
6798
- </div>
6799
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }] }); }
6913
+ @if (errors && showError) {
6914
+ <rlb-input-validation [errors]="errors"/>
6915
+ }
6916
+ </div>
6917
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }] }); }
6800
6918
  }
6801
6919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectComponent, decorators: [{
6802
6920
  type: Component,
@@ -6822,12 +6940,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6822
6940
  'is-valid': control?.touched && control?.valid && enableValidation
6823
6941
  }"
6824
6942
  (change)="update($event.target)"
6825
- >
6826
- <option *ngIf="placeholder" selected disabled>{{ placeholder }}</option>
6943
+ >
6944
+ @if (placeholder) {
6945
+ <option selected disabled>{{ placeholder }}</option>
6946
+ }
6827
6947
  <ng-container #projectedDisplayOptions></ng-container>
6828
6948
  </select>
6829
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
6830
- </div>
6949
+ @if (errors && showError) {
6950
+ <rlb-input-validation [errors]="errors"/>
6951
+ }
6952
+ </div>
6831
6953
  <ng-content select="[after]"></ng-content>`,
6832
6954
  standalone: false
6833
6955
  }]
@@ -6873,6 +6995,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6873
6995
  class DataTableComponent {
6874
6996
  constructor() {
6875
6997
  this.creationStrategy = 'none';
6998
+ this.items = [];
6876
6999
  this.paginationMode = 'none';
6877
7000
  this.tableStriped = true; // default true to keep main table styling
6878
7001
  this.showActions = 'row';
@@ -7009,11 +7132,11 @@ class DataTableComponent {
7009
7132
  // c?.scrollBy({ left: ev.deltaY < 0 ? -15 : 15 });
7010
7133
  }
7011
7134
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7012
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: DataTableComponent, isStandalone: false, selector: "rlb-dt-table", inputs: { title: "title", creationStrategy: ["creation-strategy", "creationStrategy"], creationUrl: ["creation-url", "creationUrl"], items: "items", paginationMode: ["pagination-mode", "paginationMode"], loading: ["loading", "loading", booleanAttribute], tableHover: ["table-hover", "tableHover", booleanAttribute], tableStriped: ["table-striped", "tableStriped", booleanAttribute], tableStripedColumns: ["table-striped-columns", "tableStripedColumns", booleanAttribute], tableBordered: ["table-bordered", "tableBordered", booleanAttribute], tableBorderless: ["table-borderless", "tableBorderless", booleanAttribute], tableSmall: ["table-small", "tableSmall", booleanAttribute], showRefresh: ["show-refresh", "showRefresh", booleanAttribute], totalItems: ["total-items", "totalItems", numberAttribute], currentPage: ["current-page", "currentPage", numberAttribute], pageSize: ["page-size", "pageSize", numberAttribute], showActions: "showActions", loadMoreLabel: "loadMoreLabel" }, outputs: { createItem: "create-item", refreshItem: "refresh-item", loadMore: "load-more", currentPageChange: "current-pageChange", pageSizeChange: "page-sizeChange", pagination: "pagination" }, queries: [{ propertyName: "rows", predicate: DataTableRowComponent }, { propertyName: "columns", predicate: DataTableHeaderComponent }], viewQueries: [{ propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"row\" *ngIf=\"creationStrategy !== 'none' || title || showRefresh\">\n <div class=\"col\">\n <h3 *ngIf=\"title\" class=\"float-start\">{{ title }}</h3>\n <ng-container *ngIf=\"showRefresh\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"refreshItem.emit()\"\n [disabled]=\"loading\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"creationStrategy === 'page'\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" [routerLink]=\"creationUrl\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"creationStrategy === 'modal'\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"createItem.emit()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </ng-container>\n </div>\n</div>\n<div class=\"table-responsive\">\n <table [ngClass]=\"getTableClasses()\">\n\t\t<thead>\n\t\t<tr>\n\t\t\t<ng-container #projectedDisplayColumns></ng-container>\n\t\t\t<th *ngIf=\"hasActions\">\n <span class=\"float-end pe-2\">\n Actions\n </span>\n\t\t\t</th>\n\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t<ng-content *ngIf=\"!loading\" select=\"rlb-dt-row\"/>\n\t\t<rlb-dt-row *ngIf=\"!loading && items?.length === 0\" class=\"text-center\">\n\t\t\t<rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n\t\t\t\t<ng-content select=\"rlb-dt-noitems\"/>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t<rlb-dt-row *ngIf=\"loading\" class=\"text-center\">\n\t\t\t<rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n\t\t\t\t<ng-content select=\"rlb-dt-loading\"/>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t</tbody>\n\t\t<tfoot *ngIf=\"pagination && paginationMode !== 'none'\">\n\t\t<rlb-dt-row>\n\t\t\t<rlb-dt-cell [col-span]=\"hasActions ? cols+1: cols\" style=\"border: 0\">\n\t\t\t\t<button *ngIf=\"paginationMode === 'load-more'\" type=\"button\" class=\"btn btn-primary float-end btn-sm mt-2\"\n\t\t\t\t\t\t\t\t[disabled]=\"loading\" (click)=\"loadMore.emit()\">\n\t\t\t\t\t{{ loadMoreLabel }}\n\t\t\t\t</button>\n\t\t\t\t<ng-container *ngIf=\"paginationMode === 'pages'\">\n\t\t\t\t\t<nav aria-label=\"Page navigation example\">\n <ul class=\"pagination float-end pagination-sm\">\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === 1\" href=\"#\" aria-label=\"Previous\"\n (click)=\"prev($event)\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of visiblePages\">\n <li class=\"page-item\"\n [class.active]=\"currentPage === page\"\n [class.disabled]=\"page === '...'\">\n <a class=\"page-link d-block\"\n href=\"#\"\n (click)=\"selectPage($event, page)\">\n {{ page }}\n </a>\n </li>\n </ng-container>\n\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === pages\" href=\"#\" aria-label=\"Next\"\n (click)=\"next($event)\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n\t\t\t\t\t\t<ul class=\"ps-0 float-end me-3\">\n\t\t\t\t\t\t\t<rlb-select size=\"small\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"selectSize()\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"items.length === 0\">\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"10\">10</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"20\">20</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"50\">50</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"100\">100</rlb-option>\n\t\t\t\t\t\t\t</rlb-select>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t</ng-container>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t</tfoot>\n\t</table>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DataTableCellComponent, selector: "rlb-dt-cell", inputs: ["col-span", "class", "style"] }, { kind: "component", type: DataTableRowComponent, selector: "rlb-dt-row", inputs: ["class", "style"], outputs: ["rowClick"] }, { kind: "component", type: SelectComponent, selector: "rlb-select", inputs: ["placeholder", "size", "disabled", "readonly", "multiple", "display", "id", "enable-validation"] }, { kind: "component", type: OptionComponent, selector: "rlb-option", inputs: ["disabled", "value", "class"] }] }); }
7135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DataTableComponent, isStandalone: false, selector: "rlb-dt-table", inputs: { title: "title", creationStrategy: ["creation-strategy", "creationStrategy"], creationUrl: ["creation-url", "creationUrl"], items: "items", paginationMode: ["pagination-mode", "paginationMode"], loading: ["loading", "loading", booleanAttribute], tableHover: ["table-hover", "tableHover", booleanAttribute], tableStriped: ["table-striped", "tableStriped", booleanAttribute], tableStripedColumns: ["table-striped-columns", "tableStripedColumns", booleanAttribute], tableBordered: ["table-bordered", "tableBordered", booleanAttribute], tableBorderless: ["table-borderless", "tableBorderless", booleanAttribute], tableSmall: ["table-small", "tableSmall", booleanAttribute], showRefresh: ["show-refresh", "showRefresh", booleanAttribute], totalItems: ["total-items", "totalItems", numberAttribute], currentPage: ["current-page", "currentPage", numberAttribute], pageSize: ["page-size", "pageSize", numberAttribute], showActions: "showActions", loadMoreLabel: "loadMoreLabel" }, outputs: { createItem: "create-item", refreshItem: "refresh-item", loadMore: "load-more", currentPageChange: "current-pageChange", pageSizeChange: "page-sizeChange", pagination: "pagination" }, queries: [{ propertyName: "rows", predicate: DataTableRowComponent }, { propertyName: "columns", predicate: DataTableHeaderComponent }], viewQueries: [{ propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "@if (creationStrategy !== 'none' || title || showRefresh) {\n <div class=\"row\">\n <div class=\"col\">\n @if (title) {\n <h3 class=\"float-start\">{{ title }}</h3>\n }\n @if (showRefresh) {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"refreshItem.emit()\"\n [disabled]=\"loading\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n }\n @if (creationStrategy === 'page') {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" [routerLink]=\"creationUrl\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (creationStrategy === 'modal') {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"createItem.emit()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n </div>\n </div>\n}\n<div class=\"table-responsive\">\n <table [ngClass]=\"getTableClasses()\">\n <thead>\n <tr>\n <ng-container #projectedDisplayColumns></ng-container>\n @if (hasActions) {\n <th>\n <span class=\"float-end pe-2\">\n Actions\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (!loading) {\n <ng-content select=\"rlb-dt-row\"/>\n }\n @if (!loading && items.length === 0) {\n <rlb-dt-row class=\"text-center\">\n <rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n <ng-content select=\"rlb-dt-noitems\"/>\n </rlb-dt-cell>\n </rlb-dt-row>\n }\n @if (loading) {\n <rlb-dt-row class=\"text-center\">\n <rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n <ng-content select=\"rlb-dt-loading\"/>\n </rlb-dt-cell>\n </rlb-dt-row>\n }\n </tbody>\n @if (pagination && paginationMode !== 'none') {\n <tfoot>\n <rlb-dt-row>\n <rlb-dt-cell [col-span]=\"hasActions ? cols+1: cols\" style=\"border: 0\">\n @if (paginationMode === 'load-more') {\n <button type=\"button\" class=\"btn btn-primary float-end btn-sm mt-2\"\n [disabled]=\"loading\" (click)=\"loadMore.emit()\">\n {{ loadMoreLabel }}\n </button>\n }\n @if (paginationMode === 'pages') {\n <nav aria-label=\"Page navigation example\">\n <ul class=\"pagination float-end pagination-sm\">\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === 1\" href=\"#\" aria-label=\"Previous\"\n (click)=\"prev($event)\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n @for (page of visiblePages; track page) {\n <li class=\"page-item\"\n [class.active]=\"currentPage === page\"\n [class.disabled]=\"page === '...'\">\n <a class=\"page-link d-block\"\n href=\"#\"\n (click)=\"selectPage($event, page)\">\n {{ page }}\n </a>\n </li>\n }\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === pages\" href=\"#\" aria-label=\"Next\"\n (click)=\"next($event)\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n <ul class=\"ps-0 float-end me-3\">\n <rlb-select size=\"small\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"selectSize()\"\n [disabled]=\"items.length === 0\">\n <rlb-option [value]=\"10\">10</rlb-option>\n <rlb-option [value]=\"20\">20</rlb-option>\n <rlb-option [value]=\"50\">50</rlb-option>\n <rlb-option [value]=\"100\">100</rlb-option>\n </rlb-select>\n </ul>\n </nav>\n }\n </rlb-dt-cell>\n </rlb-dt-row>\n </tfoot>\n }\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DataTableCellComponent, selector: "rlb-dt-cell", inputs: ["col-span", "class", "style"] }, { kind: "component", type: DataTableRowComponent, selector: "rlb-dt-row", inputs: ["class", "style"], outputs: ["rowClick"] }, { kind: "component", type: SelectComponent, selector: "rlb-select", inputs: ["placeholder", "size", "disabled", "readonly", "multiple", "display", "id", "enable-validation"] }, { kind: "component", type: OptionComponent, selector: "rlb-option", inputs: ["disabled", "value", "class"] }] }); }
7013
7136
  }
7014
7137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableComponent, decorators: [{
7015
7138
  type: Component,
7016
- args: [{ selector: 'rlb-dt-table', standalone: false, template: "<div class=\"row\" *ngIf=\"creationStrategy !== 'none' || title || showRefresh\">\n <div class=\"col\">\n <h3 *ngIf=\"title\" class=\"float-start\">{{ title }}</h3>\n <ng-container *ngIf=\"showRefresh\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"refreshItem.emit()\"\n [disabled]=\"loading\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"creationStrategy === 'page'\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" [routerLink]=\"creationUrl\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"creationStrategy === 'modal'\">\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"createItem.emit()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </ng-container>\n </div>\n</div>\n<div class=\"table-responsive\">\n <table [ngClass]=\"getTableClasses()\">\n\t\t<thead>\n\t\t<tr>\n\t\t\t<ng-container #projectedDisplayColumns></ng-container>\n\t\t\t<th *ngIf=\"hasActions\">\n <span class=\"float-end pe-2\">\n Actions\n </span>\n\t\t\t</th>\n\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t<ng-content *ngIf=\"!loading\" select=\"rlb-dt-row\"/>\n\t\t<rlb-dt-row *ngIf=\"!loading && items?.length === 0\" class=\"text-center\">\n\t\t\t<rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n\t\t\t\t<ng-content select=\"rlb-dt-noitems\"/>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t<rlb-dt-row *ngIf=\"loading\" class=\"text-center\">\n\t\t\t<rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n\t\t\t\t<ng-content select=\"rlb-dt-loading\"/>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t</tbody>\n\t\t<tfoot *ngIf=\"pagination && paginationMode !== 'none'\">\n\t\t<rlb-dt-row>\n\t\t\t<rlb-dt-cell [col-span]=\"hasActions ? cols+1: cols\" style=\"border: 0\">\n\t\t\t\t<button *ngIf=\"paginationMode === 'load-more'\" type=\"button\" class=\"btn btn-primary float-end btn-sm mt-2\"\n\t\t\t\t\t\t\t\t[disabled]=\"loading\" (click)=\"loadMore.emit()\">\n\t\t\t\t\t{{ loadMoreLabel }}\n\t\t\t\t</button>\n\t\t\t\t<ng-container *ngIf=\"paginationMode === 'pages'\">\n\t\t\t\t\t<nav aria-label=\"Page navigation example\">\n <ul class=\"pagination float-end pagination-sm\">\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === 1\" href=\"#\" aria-label=\"Previous\"\n (click)=\"prev($event)\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n\n <ng-container *ngFor=\"let page of visiblePages\">\n <li class=\"page-item\"\n [class.active]=\"currentPage === page\"\n [class.disabled]=\"page === '...'\">\n <a class=\"page-link d-block\"\n href=\"#\"\n (click)=\"selectPage($event, page)\">\n {{ page }}\n </a>\n </li>\n </ng-container>\n\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === pages\" href=\"#\" aria-label=\"Next\"\n (click)=\"next($event)\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n\t\t\t\t\t\t<ul class=\"ps-0 float-end me-3\">\n\t\t\t\t\t\t\t<rlb-select size=\"small\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"selectSize()\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"items.length === 0\">\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"10\">10</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"20\">20</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"50\">50</rlb-option>\n\t\t\t\t\t\t\t\t<rlb-option [value]=\"100\">100</rlb-option>\n\t\t\t\t\t\t\t</rlb-select>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t</ng-container>\n\t\t\t</rlb-dt-cell>\n\t\t</rlb-dt-row>\n\t\t</tfoot>\n\t</table>\n</div>\n" }]
7139
+ args: [{ selector: 'rlb-dt-table', standalone: false, template: "@if (creationStrategy !== 'none' || title || showRefresh) {\n <div class=\"row\">\n <div class=\"col\">\n @if (title) {\n <h3 class=\"float-start\">{{ title }}</h3>\n }\n @if (showRefresh) {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"refreshItem.emit()\"\n [disabled]=\"loading\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n }\n @if (creationStrategy === 'page') {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" [routerLink]=\"creationUrl\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (creationStrategy === 'modal') {\n <button type=\"button\" class=\"btn btn-outline-primary float-end mb-2 me-3\" (click)=\"createItem.emit()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n </div>\n </div>\n}\n<div class=\"table-responsive\">\n <table [ngClass]=\"getTableClasses()\">\n <thead>\n <tr>\n <ng-container #projectedDisplayColumns></ng-container>\n @if (hasActions) {\n <th>\n <span class=\"float-end pe-2\">\n Actions\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (!loading) {\n <ng-content select=\"rlb-dt-row\"/>\n }\n @if (!loading && items.length === 0) {\n <rlb-dt-row class=\"text-center\">\n <rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n <ng-content select=\"rlb-dt-noitems\"/>\n </rlb-dt-cell>\n </rlb-dt-row>\n }\n @if (loading) {\n <rlb-dt-row class=\"text-center\">\n <rlb-dt-cell [col-span]=\"cols\" style=\"border: 0\">\n <ng-content select=\"rlb-dt-loading\"/>\n </rlb-dt-cell>\n </rlb-dt-row>\n }\n </tbody>\n @if (pagination && paginationMode !== 'none') {\n <tfoot>\n <rlb-dt-row>\n <rlb-dt-cell [col-span]=\"hasActions ? cols+1: cols\" style=\"border: 0\">\n @if (paginationMode === 'load-more') {\n <button type=\"button\" class=\"btn btn-primary float-end btn-sm mt-2\"\n [disabled]=\"loading\" (click)=\"loadMore.emit()\">\n {{ loadMoreLabel }}\n </button>\n }\n @if (paginationMode === 'pages') {\n <nav aria-label=\"Page navigation example\">\n <ul class=\"pagination float-end pagination-sm\">\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === 1\" href=\"#\" aria-label=\"Previous\"\n (click)=\"prev($event)\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n @for (page of visiblePages; track page) {\n <li class=\"page-item\"\n [class.active]=\"currentPage === page\"\n [class.disabled]=\"page === '...'\">\n <a class=\"page-link d-block\"\n href=\"#\"\n (click)=\"selectPage($event, page)\">\n {{ page }}\n </a>\n </li>\n }\n <li class=\"page-item\">\n <a class=\"page-link d-block\" [class.disabled]=\"currentPage === pages\" href=\"#\" aria-label=\"Next\"\n (click)=\"next($event)\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n <ul class=\"ps-0 float-end me-3\">\n <rlb-select size=\"small\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"selectSize()\"\n [disabled]=\"items.length === 0\">\n <rlb-option [value]=\"10\">10</rlb-option>\n <rlb-option [value]=\"20\">20</rlb-option>\n <rlb-option [value]=\"50\">50</rlb-option>\n <rlb-option [value]=\"100\">100</rlb-option>\n </rlb-select>\n </ul>\n </nav>\n }\n </rlb-dt-cell>\n </rlb-dt-row>\n </tfoot>\n }\n </table>\n</div>\n" }]
7017
7140
  }], propDecorators: { title: [{
7018
7141
  type: Input,
7019
7142
  args: [{ alias: 'title' }]
@@ -8704,7 +8827,7 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
8704
8827
  }
8705
8828
  }
8706
8829
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryDialCodeComponent, deps: [{ token: UniqueIdService }, { token: i0.Renderer2 }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
8707
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AutocompleteCountryDialCodeComponent, isStandalone: false, selector: "rlb-autocomplete-country-dial-code", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
8830
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AutocompleteCountryDialCodeComponent, isStandalone: false, selector: "rlb-autocomplete-country-dial-code", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
8708
8831
  <ng-content select="[before]"></ng-content>
8709
8832
  <div class="input-group has-validation">
8710
8833
  <input
@@ -8712,8 +8835,8 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
8712
8835
  [id]="id"
8713
8836
  class="form-control"
8714
8837
  type="text"
8715
- [attr.autocomplete]="'off'"
8716
- [attr.disabled]="disabled ? true : undefined"
8838
+ [attr.autocomplete]="'off'"
8839
+ [attr.disabled]="disabled ? true : undefined"
8717
8840
  [attr.readonly]="readonly ? true : undefined"
8718
8841
  [attr.placeholder]="placeholder"
8719
8842
  [class.form-control-lg]="size === 'large'"
@@ -8724,25 +8847,28 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
8724
8847
  'is-valid': control?.touched && control?.valid
8725
8848
  }"
8726
8849
  (input)="update($event.target)"
8727
- />
8728
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
8729
- </div>
8730
- <rlb-progress
8731
- *ngIf="loading || acLoading"
8732
- [height]="2"
8733
- [infinite]="loading || acLoading"
8734
- color="primary"
8735
- class="w-100"
8736
- />
8737
- <ng-content select="[after]"></ng-content>
8738
- <div
8739
- #autocomplete
8740
- [id]="id+'-ac'"
8741
- class="dropdown-menu overflow-y-auto w-100 position-relative"
8742
- aria-labelledby="dropdownMenu"
8743
- [style.max-height.px]="maxHeight">
8744
- </div>
8745
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
8850
+ />
8851
+ @if (errors && showError) {
8852
+ <rlb-input-validation [errors]="errors"/>
8853
+ }
8854
+ </div>
8855
+ @if (loading || acLoading) {
8856
+ <rlb-progress
8857
+ [height]="2"
8858
+ [infinite]="loading || acLoading"
8859
+ color="primary"
8860
+ class="w-100"
8861
+ />
8862
+ }
8863
+ <ng-content select="[after]"></ng-content>
8864
+ <div
8865
+ #autocomplete
8866
+ [id]="id+'-ac'"
8867
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
8868
+ aria-labelledby="dropdownMenu"
8869
+ [style.max-height.px]="maxHeight">
8870
+ </div>
8871
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
8746
8872
  }
8747
8873
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryDialCodeComponent, decorators: [{
8748
8874
  type: Component,
@@ -8756,8 +8882,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8756
8882
  [id]="id"
8757
8883
  class="form-control"
8758
8884
  type="text"
8759
- [attr.autocomplete]="'off'"
8760
- [attr.disabled]="disabled ? true : undefined"
8885
+ [attr.autocomplete]="'off'"
8886
+ [attr.disabled]="disabled ? true : undefined"
8761
8887
  [attr.readonly]="readonly ? true : undefined"
8762
8888
  [attr.placeholder]="placeholder"
8763
8889
  [class.form-control-lg]="size === 'large'"
@@ -8768,25 +8894,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8768
8894
  'is-valid': control?.touched && control?.valid
8769
8895
  }"
8770
8896
  (input)="update($event.target)"
8771
- />
8772
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
8773
- </div>
8774
- <rlb-progress
8775
- *ngIf="loading || acLoading"
8776
- [height]="2"
8777
- [infinite]="loading || acLoading"
8778
- color="primary"
8779
- class="w-100"
8780
- />
8781
- <ng-content select="[after]"></ng-content>
8782
- <div
8783
- #autocomplete
8784
- [id]="id+'-ac'"
8785
- class="dropdown-menu overflow-y-auto w-100 position-relative"
8786
- aria-labelledby="dropdownMenu"
8787
- [style.max-height.px]="maxHeight">
8788
- </div>
8789
- `,
8897
+ />
8898
+ @if (errors && showError) {
8899
+ <rlb-input-validation [errors]="errors"/>
8900
+ }
8901
+ </div>
8902
+ @if (loading || acLoading) {
8903
+ <rlb-progress
8904
+ [height]="2"
8905
+ [infinite]="loading || acLoading"
8906
+ color="primary"
8907
+ class="w-100"
8908
+ />
8909
+ }
8910
+ <ng-content select="[after]"></ng-content>
8911
+ <div
8912
+ #autocomplete
8913
+ [id]="id+'-ac'"
8914
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
8915
+ aria-labelledby="dropdownMenu"
8916
+ [style.max-height.px]="maxHeight">
8917
+ </div>
8918
+ `,
8790
8919
  standalone: false
8791
8920
  }]
8792
8921
  }], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
@@ -9044,7 +9173,7 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
9044
9173
  }
9045
9174
  }
9046
9175
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryComponent, deps: [{ token: UniqueIdService }, { token: i0.Renderer2 }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
9047
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AutocompleteCountryComponent, isStandalone: false, selector: "rlb-autocomplete-country", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
9176
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AutocompleteCountryComponent, isStandalone: false, selector: "rlb-autocomplete-country", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
9048
9177
  <ng-content select="[before]"></ng-content>
9049
9178
  <div class="input-group has-validation">
9050
9179
  <input
@@ -9052,8 +9181,8 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
9052
9181
  [id]="id"
9053
9182
  class="form-control"
9054
9183
  type="text"
9055
- [attr.autocomplete]="'off'"
9056
- [attr.disabled]="disabled ? true : undefined"
9184
+ [attr.autocomplete]="'off'"
9185
+ [attr.disabled]="disabled ? true : undefined"
9057
9186
  [attr.readonly]="readonly ? true : undefined"
9058
9187
  [attr.placeholder]="placeholder"
9059
9188
  [class.form-control-lg]="size === 'large'"
@@ -9064,25 +9193,28 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
9064
9193
  'is-valid': control?.touched && control?.valid && enableValidation
9065
9194
  }"
9066
9195
  (input)="update($event.target)"
9067
- />
9068
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
9069
- </div>
9070
- <rlb-progress
9071
- *ngIf="loading || acLoading"
9072
- [height]="2"
9073
- [infinite]="loading || acLoading"
9074
- color="primary"
9075
- class="w-100"
9076
- />
9077
- <ng-content select="[after]"></ng-content>
9078
- <div
9079
- #autocomplete
9080
- [id]="id+'-ac'"
9081
- class="dropdown-menu overflow-y-auto w-100 position-relative"
9082
- aria-labelledby="dropdownMenu"
9083
- [style.max-height.px]="maxHeight">
9084
- </div>
9085
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9196
+ />
9197
+ @if (errors && showError) {
9198
+ <rlb-input-validation [errors]="errors"/>
9199
+ }
9200
+ </div>
9201
+ @if (loading || acLoading) {
9202
+ <rlb-progress
9203
+ [height]="2"
9204
+ [infinite]="loading || acLoading"
9205
+ color="primary"
9206
+ class="w-100"
9207
+ />
9208
+ }
9209
+ <ng-content select="[after]"></ng-content>
9210
+ <div
9211
+ #autocomplete
9212
+ [id]="id+'-ac'"
9213
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
9214
+ aria-labelledby="dropdownMenu"
9215
+ [style.max-height.px]="maxHeight">
9216
+ </div>
9217
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9086
9218
  }
9087
9219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryComponent, decorators: [{
9088
9220
  type: Component,
@@ -9096,8 +9228,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9096
9228
  [id]="id"
9097
9229
  class="form-control"
9098
9230
  type="text"
9099
- [attr.autocomplete]="'off'"
9100
- [attr.disabled]="disabled ? true : undefined"
9231
+ [attr.autocomplete]="'off'"
9232
+ [attr.disabled]="disabled ? true : undefined"
9101
9233
  [attr.readonly]="readonly ? true : undefined"
9102
9234
  [attr.placeholder]="placeholder"
9103
9235
  [class.form-control-lg]="size === 'large'"
@@ -9108,25 +9240,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9108
9240
  'is-valid': control?.touched && control?.valid && enableValidation
9109
9241
  }"
9110
9242
  (input)="update($event.target)"
9111
- />
9112
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
9113
- </div>
9114
- <rlb-progress
9115
- *ngIf="loading || acLoading"
9116
- [height]="2"
9117
- [infinite]="loading || acLoading"
9118
- color="primary"
9119
- class="w-100"
9120
- />
9121
- <ng-content select="[after]"></ng-content>
9122
- <div
9123
- #autocomplete
9124
- [id]="id+'-ac'"
9125
- class="dropdown-menu overflow-y-auto w-100 position-relative"
9126
- aria-labelledby="dropdownMenu"
9127
- [style.max-height.px]="maxHeight">
9128
- </div>
9129
- `,
9243
+ />
9244
+ @if (errors && showError) {
9245
+ <rlb-input-validation [errors]="errors"/>
9246
+ }
9247
+ </div>
9248
+ @if (loading || acLoading) {
9249
+ <rlb-progress
9250
+ [height]="2"
9251
+ [infinite]="loading || acLoading"
9252
+ color="primary"
9253
+ class="w-100"
9254
+ />
9255
+ }
9256
+ <ng-content select="[after]"></ng-content>
9257
+ <div
9258
+ #autocomplete
9259
+ [id]="id+'-ac'"
9260
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
9261
+ aria-labelledby="dropdownMenu"
9262
+ [style.max-height.px]="maxHeight">
9263
+ </div>
9264
+ `,
9130
9265
  standalone: false
9131
9266
  }]
9132
9267
  }], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
@@ -9172,7 +9307,7 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
9172
9307
  return '';
9173
9308
  }
9174
9309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteTimezonesComponent, deps: [{ token: UniqueIdService }, { token: i0.Renderer2 }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
9175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AutocompleteTimezonesComponent, isStandalone: false, selector: "rlb-autocomplete-timezones", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
9310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AutocompleteTimezonesComponent, isStandalone: false, selector: "rlb-autocomplete-timezones", inputs: { enableFlagIcons: ["enable-flag-icons", "enableFlagIcons", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: `
9176
9311
  <ng-content select="[before]"></ng-content>
9177
9312
  <div class="input-group has-validation">
9178
9313
  <input
@@ -9183,8 +9318,8 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
9183
9318
  [attr.disabled]="disabled ? true : undefined"
9184
9319
  [attr.readonly]="readonly ? true : undefined"
9185
9320
  [attr.placeholder]="placeholder"
9186
- [attr.autocomplete]="'off'"
9187
- [class.form-control-lg]="size === 'large'"
9321
+ [attr.autocomplete]="'off'"
9322
+ [class.form-control-lg]="size === 'large'"
9188
9323
  [class.form-control-sm]="size === 'small'"
9189
9324
  (blur)="touch()"
9190
9325
  [ngClass]="{
@@ -9192,25 +9327,28 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
9192
9327
  'is-valid': control?.touched && control?.valid
9193
9328
  }"
9194
9329
  (input)="update($event.target)"
9195
- />
9196
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
9197
- </div>
9198
- <rlb-progress
9199
- *ngIf="loading || acLoading"
9200
- [height]="2"
9201
- [infinite]="loading || acLoading"
9202
- color="primary"
9203
- class="w-100"
9204
- />
9205
- <ng-content select="[after]"></ng-content>
9206
- <div
9207
- #autocomplete
9208
- [id]="id+'-ac'"
9209
- class="dropdown-menu overflow-y-auto w-100 position-relative"
9210
- aria-labelledby="dropdownMenu"
9211
- [style.max-height.px]="maxHeight">
9212
- </div>
9213
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9330
+ />
9331
+ @if (errors && showError) {
9332
+ <rlb-input-validation [errors]="errors"/>
9333
+ }
9334
+ </div>
9335
+ @if (loading || acLoading) {
9336
+ <rlb-progress
9337
+ [height]="2"
9338
+ [infinite]="loading || acLoading"
9339
+ color="primary"
9340
+ class="w-100"
9341
+ />
9342
+ }
9343
+ <ng-content select="[after]"></ng-content>
9344
+ <div
9345
+ #autocomplete
9346
+ [id]="id+'-ac'"
9347
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
9348
+ aria-labelledby="dropdownMenu"
9349
+ [style.max-height.px]="maxHeight">
9350
+ </div>
9351
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9214
9352
  }
9215
9353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteTimezonesComponent, decorators: [{
9216
9354
  type: Component,
@@ -9227,8 +9365,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9227
9365
  [attr.disabled]="disabled ? true : undefined"
9228
9366
  [attr.readonly]="readonly ? true : undefined"
9229
9367
  [attr.placeholder]="placeholder"
9230
- [attr.autocomplete]="'off'"
9231
- [class.form-control-lg]="size === 'large'"
9368
+ [attr.autocomplete]="'off'"
9369
+ [class.form-control-lg]="size === 'large'"
9232
9370
  [class.form-control-sm]="size === 'small'"
9233
9371
  (blur)="touch()"
9234
9372
  [ngClass]="{
@@ -9236,25 +9374,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9236
9374
  'is-valid': control?.touched && control?.valid
9237
9375
  }"
9238
9376
  (input)="update($event.target)"
9239
- />
9240
- <rlb-input-validation *ngIf="errors && showError" [errors]="errors"/>
9241
- </div>
9242
- <rlb-progress
9243
- *ngIf="loading || acLoading"
9244
- [height]="2"
9245
- [infinite]="loading || acLoading"
9246
- color="primary"
9247
- class="w-100"
9248
- />
9249
- <ng-content select="[after]"></ng-content>
9250
- <div
9251
- #autocomplete
9252
- [id]="id+'-ac'"
9253
- class="dropdown-menu overflow-y-auto w-100 position-relative"
9254
- aria-labelledby="dropdownMenu"
9255
- [style.max-height.px]="maxHeight">
9256
- </div>
9257
- `,
9377
+ />
9378
+ @if (errors && showError) {
9379
+ <rlb-input-validation [errors]="errors"/>
9380
+ }
9381
+ </div>
9382
+ @if (loading || acLoading) {
9383
+ <rlb-progress
9384
+ [height]="2"
9385
+ [infinite]="loading || acLoading"
9386
+ color="primary"
9387
+ class="w-100"
9388
+ />
9389
+ }
9390
+ <ng-content select="[after]"></ng-content>
9391
+ <div
9392
+ #autocomplete
9393
+ [id]="id+'-ac'"
9394
+ class="dropdown-menu overflow-y-auto w-100 position-relative"
9395
+ aria-labelledby="dropdownMenu"
9396
+ [style.max-height.px]="maxHeight">
9397
+ </div>
9398
+ `,
9258
9399
  standalone: false
9259
9400
  }]
9260
9401
  }], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
@@ -9429,7 +9570,7 @@ class AutocompleteComponent extends AbstractComponent {
9429
9570
  }
9430
9571
  }
9431
9572
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteComponent, deps: [{ token: UniqueIdService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
9432
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: AutocompleteComponent, isStandalone: false, selector: "rlb-autocomplete", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], loading: ["loading", "loading", booleanAttribute], maxHeight: ["max-height", "maxHeight", numberAttribute], placeholder: "placeholder", autocomplete: "autocomplete", type: "type", size: "size", charsToSearch: ["chars-to-search", "charsToSearch", numberAttribute], menuMaxWidth: ["menu-max-width", "menuMaxWidth", numberAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''], enableValidation: ["enable-validation", "enableValidation", booleanAttribute], inputAutocomplete: "inputAutocomplete" }, outputs: { selected: "selected" }, host: { listeners: { "document:pointerdown": "onDocumentPointerDown($event)", "document:keydown.escape": "onEscape($event)" }, styleAttribute: "position: relative;" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["autocomplete"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
9573
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AutocompleteComponent, isStandalone: false, selector: "rlb-autocomplete", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], loading: ["loading", "loading", booleanAttribute], maxHeight: ["max-height", "maxHeight", numberAttribute], placeholder: "placeholder", autocomplete: "autocomplete", type: "type", size: "size", charsToSearch: ["chars-to-search", "charsToSearch", numberAttribute], menuMaxWidth: ["menu-max-width", "menuMaxWidth", numberAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''], enableValidation: ["enable-validation", "enableValidation", booleanAttribute], inputAutocomplete: "inputAutocomplete" }, outputs: { selected: "selected" }, host: { listeners: { "document:pointerdown": "onDocumentPointerDown($event)", "document:keydown.escape": "onEscape($event)" }, styleAttribute: "position: relative;" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["autocomplete"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
9433
9574
  <ng-content select="[before]"></ng-content>
9434
9575
  <div class="input-group has-validation">
9435
9576
  <input
@@ -9451,26 +9592,29 @@ class AutocompleteComponent extends AbstractComponent {
9451
9592
  }"
9452
9593
  (input)="update($event.target)"
9453
9594
  (keyup.enter)="onEnter($event.target)"
9454
- />
9455
- <rlb-input-validation *ngIf="errors && showError && enableValidation" [errors]="errors"/>
9456
- </div>
9457
- <rlb-progress
9458
- *ngIf="loading || acLoading"
9459
- [height]="2"
9460
- [infinite]="loading || acLoading"
9461
- color="primary"
9462
- class="w-100"
9463
- />
9464
- <ng-content select="[after]"></ng-content>
9465
- <div
9466
- #autocomplete
9467
- [id]="id+'-ac'"
9468
- class="dropdown-menu overflow-y-auto w-100 position-absolute"
9469
- aria-labelledby="dropdownMenu"
9470
- [style.max-height.px]="maxHeight"
9471
- [style.width]="'fit-content !important'"
9595
+ />
9596
+ @if (errors && showError && enableValidation) {
9597
+ <rlb-input-validation [errors]="errors"/>
9598
+ }
9599
+ </div>
9600
+ @if (loading || acLoading) {
9601
+ <rlb-progress
9602
+ [height]="2"
9603
+ [infinite]="loading || acLoading"
9604
+ color="primary"
9605
+ class="w-100"
9606
+ />
9607
+ }
9608
+ <ng-content select="[after]"></ng-content>
9609
+ <div
9610
+ #autocomplete
9611
+ [id]="id+'-ac'"
9612
+ class="dropdown-menu overflow-y-auto w-100 position-absolute"
9613
+ aria-labelledby="dropdownMenu"
9614
+ [style.max-height.px]="maxHeight"
9615
+ [style.width]="'fit-content !important'"
9472
9616
  [style.max-width.px]="menuMaxWidth"></div>
9473
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9617
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
9474
9618
  }
9475
9619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteComponent, decorators: [{
9476
9620
  type: Component,
@@ -9498,26 +9642,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9498
9642
  }"
9499
9643
  (input)="update($event.target)"
9500
9644
  (keyup.enter)="onEnter($event.target)"
9501
- />
9502
- <rlb-input-validation *ngIf="errors && showError && enableValidation" [errors]="errors"/>
9503
- </div>
9504
- <rlb-progress
9505
- *ngIf="loading || acLoading"
9506
- [height]="2"
9507
- [infinite]="loading || acLoading"
9508
- color="primary"
9509
- class="w-100"
9510
- />
9511
- <ng-content select="[after]"></ng-content>
9512
- <div
9513
- #autocomplete
9514
- [id]="id+'-ac'"
9515
- class="dropdown-menu overflow-y-auto w-100 position-absolute"
9516
- aria-labelledby="dropdownMenu"
9517
- [style.max-height.px]="maxHeight"
9518
- [style.width]="'fit-content !important'"
9645
+ />
9646
+ @if (errors && showError && enableValidation) {
9647
+ <rlb-input-validation [errors]="errors"/>
9648
+ }
9649
+ </div>
9650
+ @if (loading || acLoading) {
9651
+ <rlb-progress
9652
+ [height]="2"
9653
+ [infinite]="loading || acLoading"
9654
+ color="primary"
9655
+ class="w-100"
9656
+ />
9657
+ }
9658
+ <ng-content select="[after]"></ng-content>
9659
+ <div
9660
+ #autocomplete
9661
+ [id]="id+'-ac'"
9662
+ class="dropdown-menu overflow-y-auto w-100 position-absolute"
9663
+ aria-labelledby="dropdownMenu"
9664
+ [style.max-height.px]="maxHeight"
9665
+ [style.width]="'fit-content !important'"
9519
9666
  [style.max-width.px]="menuMaxWidth"></div>
9520
- `,
9667
+ `,
9521
9668
  standalone: false,
9522
9669
  host: {
9523
9670
  style: 'position: relative;',
@@ -9646,7 +9793,7 @@ class CheckboxComponent extends AbstractComponent {
9646
9793
  {{ errors | json }}
9647
9794
  </div>
9648
9795
  <ng-content select="[after]"></ng-content>
9649
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
9796
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
9650
9797
  }
9651
9798
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CheckboxComponent, decorators: [{
9652
9799
  type: Component,
@@ -9734,7 +9881,7 @@ class ColorComponent extends AbstractComponent {
9734
9881
  {{ errors | json }}
9735
9882
  </div>
9736
9883
  </div>
9737
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
9884
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
9738
9885
  }
9739
9886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColorComponent, decorators: [{
9740
9887
  type: Component,
@@ -9831,7 +9978,7 @@ class DatalistComponent extends AbstractComponent {
9831
9978
  {{ errors | json }}
9832
9979
  </div>
9833
9980
  </div>
9834
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
9981
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
9835
9982
  }
9836
9983
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatalistComponent, decorators: [{
9837
9984
  type: Component,
@@ -9999,7 +10146,7 @@ class FileDndComponent {
9999
10146
  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
10000
10147
  }
10001
10148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDndComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10002
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: FileDndComponent, isStandalone: false, selector: "rlb-file-dnd", inputs: { multiple: ["multiple", "multiple", booleanAttribute], data: "data", userDefinedId: ["id", "userDefinedId", (v) => v || ''] }, outputs: { filesChange: "files" }, viewQueries: [{ propertyName: "fileDropEl", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: `
10149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FileDndComponent, isStandalone: false, selector: "rlb-file-dnd", inputs: { multiple: ["multiple", "multiple", booleanAttribute], data: "data", userDefinedId: ["id", "userDefinedId", (v) => v || ''] }, outputs: { filesChange: "files" }, viewQueries: [{ propertyName: "fileDropEl", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: `
10003
10150
  <div class="rlb-file-dnd" rlb-dnd [multiple]="multiple" (fileDropped)="onFileDropped($event)">
10004
10151
  <input type="file" #fileDropRef id="fileDropRef" [attr.multiple]="multiple?'':undefined" (change)="fileBrowseHandler($event)" />
10005
10152
  <i class="bi bi-upload"></i>
@@ -10008,18 +10155,20 @@ class FileDndComponent {
10008
10155
  <label class="btn btn-primary" for="fileDropRef">{{ data.content?.button }}</label>
10009
10156
  </div>
10010
10157
  <div class="rlb-file-dnd-list">
10011
- <div class="single-file" *ngFor="let file of files; let i = index">
10012
- <i class="bi bi-file-earmark-image" style="font-size: 36px;"></i>
10013
- <div class="info">
10014
- <span class="d-block name"> {{ file.name }} </span>
10015
- <span class="d-block size">{{ formatBytes(file.size) }}</span>
10016
- <rlb-progress [height]="3" [value]="10" animated ></rlb-progress>
10158
+ @for (file of files; track file; let i = $index) {
10159
+ <div class="single-file">
10160
+ <i class="bi bi-file-earmark-image" style="font-size: 36px;"></i>
10161
+ <div class="info">
10162
+ <span class="d-block name"> {{ file.name }} </span>
10163
+ <span class="d-block size">{{ formatBytes(file.size) }}</span>
10164
+ <rlb-progress [height]="3" [value]="10" animated ></rlb-progress>
10165
+ </div>
10166
+ <button rlb-button outline class="p-0 mb-auto border-0">
10167
+ <i class="bi bi-trash" (click)="deleteFile(file)"></i>
10168
+ </button>
10017
10169
  </div>
10018
- <button rlb-button outline class="p-0 mb-auto border-0">
10019
- <i class="bi bi-trash" (click)="deleteFile(file)"></i>
10020
- </button>
10021
- </div>
10022
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: DndDirective, selector: "[rlb-dnd]", inputs: ["multiple"], outputs: ["fileDropped"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
10170
+ }
10171
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: DndDirective, selector: "[rlb-dnd]", inputs: ["multiple"], outputs: ["fileDropped"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: ProgressComponent, selector: "rlb-progress", inputs: ["max", "min", "value", "height", "animated", "striped", "infinite", "aria-label", "showValue", "color", "text-color"] }] }); }
10023
10172
  }
10024
10173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDndComponent, decorators: [{
10025
10174
  type: Component,
@@ -10034,17 +10183,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10034
10183
  <label class="btn btn-primary" for="fileDropRef">{{ data.content?.button }}</label>
10035
10184
  </div>
10036
10185
  <div class="rlb-file-dnd-list">
10037
- <div class="single-file" *ngFor="let file of files; let i = index">
10038
- <i class="bi bi-file-earmark-image" style="font-size: 36px;"></i>
10039
- <div class="info">
10040
- <span class="d-block name"> {{ file.name }} </span>
10041
- <span class="d-block size">{{ formatBytes(file.size) }}</span>
10042
- <rlb-progress [height]="3" [value]="10" animated ></rlb-progress>
10186
+ @for (file of files; track file; let i = $index) {
10187
+ <div class="single-file">
10188
+ <i class="bi bi-file-earmark-image" style="font-size: 36px;"></i>
10189
+ <div class="info">
10190
+ <span class="d-block name"> {{ file.name }} </span>
10191
+ <span class="d-block size">{{ formatBytes(file.size) }}</span>
10192
+ <rlb-progress [height]="3" [value]="10" animated ></rlb-progress>
10193
+ </div>
10194
+ <button rlb-button outline class="p-0 mb-auto border-0">
10195
+ <i class="bi bi-trash" (click)="deleteFile(file)"></i>
10196
+ </button>
10043
10197
  </div>
10044
- <button rlb-button outline class="p-0 mb-auto border-0">
10045
- <i class="bi bi-trash" (click)="deleteFile(file)"></i>
10046
- </button>
10047
- </div>
10198
+ }
10048
10199
  </div>`,
10049
10200
  standalone: false
10050
10201
  }]
@@ -10111,7 +10262,7 @@ class FileComponent extends AbstractComponent {
10111
10262
  {{ errors | json }}
10112
10263
  </div>
10113
10264
  </div>
10114
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
10265
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
10115
10266
  }
10116
10267
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileComponent, decorators: [{
10117
10268
  type: Component,
@@ -10338,34 +10489,36 @@ class InputComponent extends AbstractComponent {
10338
10489
  return result;
10339
10490
  }
10340
10491
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputComponent, deps: [{ token: i0.ViewContainerRef }, { token: UniqueIdService }, { token: i2$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
10341
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: InputComponent, isStandalone: false, selector: "rlb-input", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], beforeText: ["before-text", "beforeText", booleanAttribute], placeholder: "placeholder", type: "type", size: "size", name: "name", max: ["max", "max", numberAttribute], min: ["min", "min", numberAttribute], step: ["step", "step", numberAttribute], dateType: ["date-type", "dateType"], timezone: "timezone", userDefinedId: ["id", "userDefinedId", (v) => v || ''], extValidation: ["extValidation", "extValidation", booleanAttribute], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
10492
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: InputComponent, isStandalone: false, selector: "rlb-input", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], beforeText: ["before-text", "beforeText", booleanAttribute], placeholder: "placeholder", type: "type", size: "size", name: "name", max: ["max", "max", numberAttribute], min: ["min", "min", numberAttribute], step: ["step", "step", numberAttribute], dateType: ["date-type", "dateType"], timezone: "timezone", userDefinedId: ["id", "userDefinedId", (v) => v || ''], extValidation: ["extValidation", "extValidation", booleanAttribute], enableValidation: ["enable-validation", "enableValidation", booleanAttribute] }, viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
10342
10493
  <ng-template #template>
10343
10494
  <ng-content select="[before]"></ng-content>
10344
- <input
10345
- #field
10346
- [id]="id"
10347
- class="form-control"
10348
- [type]="_type"
10349
- [name]="name"
10350
- [attr.max]="type === 'number' && max !== null && max !== undefined ? max : undefined"
10351
- [attr.min]="type === 'number' && min !== null && min !== undefined ? min : undefined"
10352
- [attr.step]="type === 'number' && step !== null && step !== undefined ? step : undefined"
10353
- [attr.disabled]="disabled ? true : undefined"
10354
- [attr.readonly]="readonly ? true : undefined"
10355
- [attr.placeholder]="placeholder"
10356
- [class.form-control-lg]="size === 'large'"
10357
- [class.form-control-sm]="size === 'small'"
10358
- [value]="value || ''"
10359
- (blur)="touch()"
10495
+ <input
10496
+ #field
10497
+ [id]="id"
10498
+ class="form-control"
10499
+ [type]="_type"
10500
+ [name]="name"
10501
+ [attr.max]="type === 'number' && max !== null && max !== undefined ? max : undefined"
10502
+ [attr.min]="type === 'number' && min !== null && min !== undefined ? min : undefined"
10503
+ [attr.step]="type === 'number' && step !== null && step !== undefined ? step : undefined"
10504
+ [attr.disabled]="disabled ? true : undefined"
10505
+ [attr.readonly]="readonly ? true : undefined"
10506
+ [attr.placeholder]="placeholder"
10507
+ [class.form-control-lg]="size === 'large'"
10508
+ [class.form-control-sm]="size === 'small'"
10509
+ [value]="value || ''"
10510
+ (blur)="touch()"
10360
10511
  [ngClass]="{
10361
10512
  'is-invalid': control?.touched && control?.invalid && enableValidation,
10362
10513
  'is-valid': control?.touched && control?.valid && enableValidation
10363
10514
  }"
10364
- (input)="update($event.target)"
10515
+ (input)="update($event.target)"
10365
10516
  />
10366
- <rlb-input-validation *ngIf="!extValidation && showError" [errors]="errors"/>
10367
- <ng-content select="[after]"></ng-content>
10368
- </ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }] }); }
10517
+ @if (!extValidation && showError) {
10518
+ <rlb-input-validation [errors]="errors"/>
10519
+ }
10520
+ <ng-content select="[after]"></ng-content>
10521
+ </ng-template>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputValidationComponent, selector: "rlb-input-validation", inputs: ["errors"] }] }); }
10369
10522
  }
10370
10523
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputComponent, decorators: [{
10371
10524
  type: Component,
@@ -10374,31 +10527,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10374
10527
  template: `
10375
10528
  <ng-template #template>
10376
10529
  <ng-content select="[before]"></ng-content>
10377
- <input
10378
- #field
10379
- [id]="id"
10380
- class="form-control"
10381
- [type]="_type"
10382
- [name]="name"
10383
- [attr.max]="type === 'number' && max !== null && max !== undefined ? max : undefined"
10384
- [attr.min]="type === 'number' && min !== null && min !== undefined ? min : undefined"
10385
- [attr.step]="type === 'number' && step !== null && step !== undefined ? step : undefined"
10386
- [attr.disabled]="disabled ? true : undefined"
10387
- [attr.readonly]="readonly ? true : undefined"
10388
- [attr.placeholder]="placeholder"
10389
- [class.form-control-lg]="size === 'large'"
10390
- [class.form-control-sm]="size === 'small'"
10391
- [value]="value || ''"
10392
- (blur)="touch()"
10530
+ <input
10531
+ #field
10532
+ [id]="id"
10533
+ class="form-control"
10534
+ [type]="_type"
10535
+ [name]="name"
10536
+ [attr.max]="type === 'number' && max !== null && max !== undefined ? max : undefined"
10537
+ [attr.min]="type === 'number' && min !== null && min !== undefined ? min : undefined"
10538
+ [attr.step]="type === 'number' && step !== null && step !== undefined ? step : undefined"
10539
+ [attr.disabled]="disabled ? true : undefined"
10540
+ [attr.readonly]="readonly ? true : undefined"
10541
+ [attr.placeholder]="placeholder"
10542
+ [class.form-control-lg]="size === 'large'"
10543
+ [class.form-control-sm]="size === 'small'"
10544
+ [value]="value || ''"
10545
+ (blur)="touch()"
10393
10546
  [ngClass]="{
10394
10547
  'is-invalid': control?.touched && control?.invalid && enableValidation,
10395
10548
  'is-valid': control?.touched && control?.valid && enableValidation
10396
10549
  }"
10397
- (input)="update($event.target)"
10550
+ (input)="update($event.target)"
10398
10551
  />
10399
- <rlb-input-validation *ngIf="!extValidation && showError" [errors]="errors"/>
10400
- <ng-content select="[after]"></ng-content>
10401
- </ng-template>`,
10552
+ @if (!extValidation && showError) {
10553
+ <rlb-input-validation [errors]="errors"/>
10554
+ }
10555
+ <ng-content select="[after]"></ng-content>
10556
+ </ng-template>`,
10402
10557
  standalone: false
10403
10558
  }]
10404
10559
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: UniqueIdService }, { type: i2$2.NgControl, decorators: [{
@@ -10537,10 +10692,10 @@ class RadioComponent extends AbstractComponent {
10537
10692
  }
10538
10693
  }
10539
10694
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10540
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: RadioComponent, isStandalone: false, selector: "rlb-radio", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''] }, queries: [{ propertyName: "options", predicate: OptionComponent }], viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "contents", predicate: ["content"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
10695
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: RadioComponent, isStandalone: false, selector: "rlb-radio", inputs: { disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], userDefinedId: ["id", "userDefinedId", (v) => v || ''] }, queries: [{ propertyName: "options", predicate: OptionComponent }], viewQueries: [{ propertyName: "el", first: true, predicate: ["field"], descendants: true }, { propertyName: "contents", predicate: ["content"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
10541
10696
  <div class="input-group has-validation">
10542
10697
  <ng-content select="[before]"></ng-content>
10543
- <ng-container *ngFor="let option of options; index as i">
10698
+ @for (option of options; track option; let i = $index) {
10544
10699
  <div class="form-check">
10545
10700
  <input
10546
10701
  #field
@@ -10555,15 +10710,15 @@ class RadioComponent extends AbstractComponent {
10555
10710
  (blur)="touch()"
10556
10711
  [ngClass]="{ 'is-invalid': control?.touched && control?.invalid }"
10557
10712
  (change)="update($event.target)"
10558
- />
10559
- <span #content></span>
10713
+ />
10714
+ <span #content></span>
10715
+ </div>
10716
+ }
10717
+ <ng-content select="[after]"></ng-content>
10718
+ <div class="invalid-feedback">
10719
+ {{ errors | json }}
10560
10720
  </div>
10561
- </ng-container>
10562
- <ng-content select="[after]"></ng-content>
10563
- <div class="invalid-feedback">
10564
- {{ errors | json }}
10565
- </div>
10566
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
10721
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
10567
10722
  }
10568
10723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RadioComponent, decorators: [{
10569
10724
  type: Component,
@@ -10572,7 +10727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10572
10727
  template: `
10573
10728
  <div class="input-group has-validation">
10574
10729
  <ng-content select="[before]"></ng-content>
10575
- <ng-container *ngFor="let option of options; index as i">
10730
+ @for (option of options; track option; let i = $index) {
10576
10731
  <div class="form-check">
10577
10732
  <input
10578
10733
  #field
@@ -10587,15 +10742,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10587
10742
  (blur)="touch()"
10588
10743
  [ngClass]="{ 'is-invalid': control?.touched && control?.invalid }"
10589
10744
  (change)="update($event.target)"
10590
- />
10591
- <span #content></span>
10745
+ />
10746
+ <span #content></span>
10747
+ </div>
10748
+ }
10749
+ <ng-content select="[after]"></ng-content>
10750
+ <div class="invalid-feedback">
10751
+ {{ errors | json }}
10592
10752
  </div>
10593
- </ng-container>
10594
- <ng-content select="[after]"></ng-content>
10595
- <div class="invalid-feedback">
10596
- {{ errors | json }}
10597
- </div>
10598
- </div>`,
10753
+ </div>`,
10599
10754
  standalone: false
10600
10755
  }]
10601
10756
  }], propDecorators: { disabled: [{
@@ -10662,7 +10817,7 @@ class RangeComponent extends AbstractComponent {
10662
10817
  {{ errors | json }}
10663
10818
  </div>
10664
10819
  </div>
10665
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
10820
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
10666
10821
  }
10667
10822
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RangeComponent, decorators: [{
10668
10823
  type: Component,
@@ -10774,7 +10929,7 @@ class SwitchComponent extends AbstractComponent {
10774
10929
 
10775
10930
  <ng-content select="[after]"></ng-content>
10776
10931
  </div>
10777
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
10932
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
10778
10933
  }
10779
10934
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SwitchComponent, decorators: [{
10780
10935
  type: Component,
@@ -10867,7 +11022,7 @@ class TextAreaComponent extends AbstractComponent {
10867
11022
  {{ errors | json }}
10868
11023
  </div>
10869
11024
  </div>
10870
- <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
11025
+ <ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
10871
11026
  }
10872
11027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextAreaComponent, decorators: [{
10873
11028
  type: Component,
@@ -11001,11 +11156,11 @@ class FormFieldsComponent {
11001
11156
  this.form.onSubmit({});
11002
11157
  }
11003
11158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11004
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.16", type: FormFieldsComponent, isStandalone: false, selector: "rlb-form-fields", inputs: { title: "title", subTitle: ["sub-title", "subTitle"], noSubmit: ["no-submit", "noSubmit", booleanAttribute], noCard: ["no-card", "noCard", booleanAttribute], fields: "fields" }, outputs: { submit: "submit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["ngForm"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"noCard; else card\">\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n</ng-container>\n\n<ng-template #card>\n <div class=\"card mb-3\">\n <div class=\"card-body\">\n <h5 class=\"card-title\" *ngIf=\"title\">{{ title | translate }}</h5>\n <p class=\"card-text\" *ngIf=\"subTitle\">{{ subTitle | translate }}</p>\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #form>\n <form\n *ngIf=\"filterForm\"\n [formGroup]=\"filterForm\"\n [class.was-validated]=\"ngForm.submitted\"\n class=\"needs-validation\"\n #ngForm=\"ngForm\"\n (ngSubmit)=\"onFilterSubmit()\"\n >\n <div class=\"row\">\n <div\n class=\"col\"\n [ngClass]=\"input.cols\"\n *ngFor=\"let input of _fields; trackBy: identify\"\n >\n <div class=\"mb-3\">\n <ng-container *ngIf=\"isText(input.type)\">\n <rlb-input\n [formControlName]=\"input.property\"\n [type]=\"input.type\"\n [placeholder]=\"input.name | translate\"\n >\n <ng-container *ngIf=\"input.label\" before>\n <span #after [innerHTML]=\"\">\n {{ input.label | translate }}\n </span>\n </ng-container>\n </rlb-input>\n </ng-container>\n <ng-container *ngIf=\"isSwitch(input.type)\">\n <rlb-switch\n [formControlName]=\"input.property\"\n />\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!noSubmit\">\n <div class=\"row\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary float-end\"\n [disabled]=\"!filterForm.valid\"\n >\n {{ \"common.filter\" | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: SwitchComponent, selector: "rlb-switch", inputs: ["disabled", "readonly", "size", "id"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
11159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FormFieldsComponent, isStandalone: false, selector: "rlb-form-fields", inputs: { title: "title", subTitle: ["sub-title", "subTitle"], noSubmit: ["no-submit", "noSubmit", booleanAttribute], noCard: ["no-card", "noCard", booleanAttribute], fields: "fields" }, outputs: { submit: "submit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["ngForm"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (noCard) {\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n} @else {\n <div class=\"card mb-3\">\n <div class=\"card-body\">\n @if (title) {\n <h5 class=\"card-title\">{{ title | translate }}</h5>\n }\n @if (subTitle) {\n <p class=\"card-text\">{{ subTitle | translate }}</p>\n }\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n </div>\n </div>\n}\n\n\n<ng-template #form>\n @if (filterForm) {\n <form\n [formGroup]=\"filterForm\"\n [class.was-validated]=\"ngForm.submitted\"\n class=\"needs-validation\"\n #ngForm=\"ngForm\"\n (ngSubmit)=\"onFilterSubmit()\"\n >\n <div class=\"row\">\n @for (input of _fields; track identify($index, input)) {\n <div\n class=\"col\"\n [ngClass]=\"input.cols\"\n >\n <div class=\"mb-3\">\n @if (isText(input.type)) {\n <rlb-input\n [formControlName]=\"input.property\"\n [type]=\"input.type\"\n [placeholder]=\"input.name | translate\"\n >\n @if (input.label) {\n <ng-container before>\n <span #after>\n {{ input.label | translate }}\n </span>\n </ng-container>\n }\n </rlb-input>\n }\n @if (isSwitch(input.type)) {\n <rlb-switch\n [formControlName]=\"input.property\"\n />\n }\n </div>\n </div>\n }\n </div>\n @if (!noSubmit) {\n <div class=\"row\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary float-end\"\n [disabled]=\"!filterForm.valid\"\n >\n {{ \"common.filter\" | translate }}\n </button>\n </div>\n </div>\n }\n </form>\n }\n </ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: SwitchComponent, selector: "rlb-switch", inputs: ["disabled", "readonly", "size", "id"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
11005
11160
  }
11006
11161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormFieldsComponent, decorators: [{
11007
11162
  type: Component,
11008
- args: [{ selector: 'rlb-form-fields', standalone: false, template: "<ng-container *ngIf=\"noCard; else card\">\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n</ng-container>\n\n<ng-template #card>\n <div class=\"card mb-3\">\n <div class=\"card-body\">\n <h5 class=\"card-title\" *ngIf=\"title\">{{ title | translate }}</h5>\n <p class=\"card-text\" *ngIf=\"subTitle\">{{ subTitle | translate }}</p>\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #form>\n <form\n *ngIf=\"filterForm\"\n [formGroup]=\"filterForm\"\n [class.was-validated]=\"ngForm.submitted\"\n class=\"needs-validation\"\n #ngForm=\"ngForm\"\n (ngSubmit)=\"onFilterSubmit()\"\n >\n <div class=\"row\">\n <div\n class=\"col\"\n [ngClass]=\"input.cols\"\n *ngFor=\"let input of _fields; trackBy: identify\"\n >\n <div class=\"mb-3\">\n <ng-container *ngIf=\"isText(input.type)\">\n <rlb-input\n [formControlName]=\"input.property\"\n [type]=\"input.type\"\n [placeholder]=\"input.name | translate\"\n >\n <ng-container *ngIf=\"input.label\" before>\n <span #after [innerHTML]=\"\">\n {{ input.label | translate }}\n </span>\n </ng-container>\n </rlb-input>\n </ng-container>\n <ng-container *ngIf=\"isSwitch(input.type)\">\n <rlb-switch\n [formControlName]=\"input.property\"\n />\n </ng-container>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!noSubmit\">\n <div class=\"row\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary float-end\"\n [disabled]=\"!filterForm.valid\"\n >\n {{ \"common.filter\" | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </form>\n</ng-template>\n" }]
11163
+ args: [{ selector: 'rlb-form-fields', standalone: false, template: "@if (noCard) {\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n} @else {\n <div class=\"card mb-3\">\n <div class=\"card-body\">\n @if (title) {\n <h5 class=\"card-title\">{{ title | translate }}</h5>\n }\n @if (subTitle) {\n <p class=\"card-text\">{{ subTitle | translate }}</p>\n }\n <ng-container [ngTemplateOutlet]=\"form\"></ng-container>\n </div>\n </div>\n}\n\n\n<ng-template #form>\n @if (filterForm) {\n <form\n [formGroup]=\"filterForm\"\n [class.was-validated]=\"ngForm.submitted\"\n class=\"needs-validation\"\n #ngForm=\"ngForm\"\n (ngSubmit)=\"onFilterSubmit()\"\n >\n <div class=\"row\">\n @for (input of _fields; track identify($index, input)) {\n <div\n class=\"col\"\n [ngClass]=\"input.cols\"\n >\n <div class=\"mb-3\">\n @if (isText(input.type)) {\n <rlb-input\n [formControlName]=\"input.property\"\n [type]=\"input.type\"\n [placeholder]=\"input.name | translate\"\n >\n @if (input.label) {\n <ng-container before>\n <span #after>\n {{ input.label | translate }}\n </span>\n </ng-container>\n }\n </rlb-input>\n }\n @if (isSwitch(input.type)) {\n <rlb-switch\n [formControlName]=\"input.property\"\n />\n }\n </div>\n </div>\n }\n </div>\n @if (!noSubmit) {\n <div class=\"row\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary float-end\"\n [disabled]=\"!filterForm.valid\"\n >\n {{ \"common.filter\" | translate }}\n </button>\n </div>\n </div>\n }\n </form>\n }\n </ng-template>\n" }]
11009
11164
  }], propDecorators: { title: [{
11010
11165
  type: Input,
11011
11166
  args: [{ alias: 'title' }]
@@ -11132,12 +11287,12 @@ class SearchModalComponent {
11132
11287
  <i class="bi bi-search"></i>
11133
11288
  </button>
11134
11289
  </rlb-input>
11135
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }] }); }
11290
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
11136
11291
  }
11137
11292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchModalComponent, decorators: [{
11138
11293
  type: Component,
11139
11294
  args: [{
11140
- imports: [RlbBootstrapModule, FormsModule, CommonModule],
11295
+ imports: [RlbBootstrapModule, FormsModule],
11141
11296
  standalone: true,
11142
11297
  template: ` <div class="modal-header">
11143
11298
  <h5 class="modal-title">{{ data.title }}</h5>
@@ -11190,51 +11345,59 @@ class CommonModalComponent {
11190
11345
  onEnter() { }
11191
11346
  ngOnInit() { }
11192
11347
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CommonModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CommonModalComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "btn", first: true, predicate: ["btn"], descendants: true }], hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11348
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CommonModalComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "btn", first: true, predicate: ["btn"], descendants: true }], hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11194
11349
  <div [class]="'modal-header' + headerColor">
11195
11350
  <h5 class="modal-title">{{ data.title }}</h5>
11196
11351
  <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11197
11352
  </div>
11198
11353
  <div class="modal-body">
11199
- <h6 *ngIf="data.content?.header">
11200
- {{ data.content.header }}
11201
- </h6>
11354
+ @if (data.content.header) {
11355
+ <h6>
11356
+ {{ data.content.header }}
11357
+ </h6>
11358
+ }
11202
11359
  <span>
11203
- {{ data.content.body }}
11360
+ {{ data.content.body }}
11204
11361
  </span>
11205
11362
  </div>
11206
11363
  <div class="modal-footer">
11207
- <button *ngIf="data.cancel" class="me-2" rlb-button outline data-modal-reason="cancel">
11208
- {{ data.cancel }}
11209
- </button>
11364
+ @if (data.cancel) {
11365
+ <button class="me-2" rlb-button outline data-modal-reason="cancel">
11366
+ {{ data.cancel }}
11367
+ </button>
11368
+ }
11210
11369
  <button rlb-button data-modal-reason="ok" [disabled]="!valid">
11211
11370
  {{ data.ok }}
11212
11371
  </button>
11213
11372
  </div>
11214
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
11373
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "ngmodule", type: FormsModule }] }); }
11215
11374
  }
11216
11375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CommonModalComponent, decorators: [{
11217
11376
  type: Component,
11218
11377
  args: [{
11219
11378
  standalone: true,
11220
- imports: [RlbBootstrapModule, FormsModule, CommonModule],
11379
+ imports: [RlbBootstrapModule, FormsModule],
11221
11380
  template: `
11222
11381
  <div [class]="'modal-header' + headerColor">
11223
11382
  <h5 class="modal-title">{{ data.title }}</h5>
11224
11383
  <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11225
11384
  </div>
11226
11385
  <div class="modal-body">
11227
- <h6 *ngIf="data.content?.header">
11228
- {{ data.content.header }}
11229
- </h6>
11386
+ @if (data.content.header) {
11387
+ <h6>
11388
+ {{ data.content.header }}
11389
+ </h6>
11390
+ }
11230
11391
  <span>
11231
- {{ data.content.body }}
11392
+ {{ data.content.body }}
11232
11393
  </span>
11233
11394
  </div>
11234
11395
  <div class="modal-footer">
11235
- <button *ngIf="data.cancel" class="me-2" rlb-button outline data-modal-reason="cancel">
11236
- {{ data.cancel }}
11237
- </button>
11396
+ @if (data.cancel) {
11397
+ <button class="me-2" rlb-button outline data-modal-reason="cancel">
11398
+ {{ data.cancel }}
11399
+ </button>
11400
+ }
11238
11401
  <button rlb-button data-modal-reason="ok" [disabled]="!valid">
11239
11402
  {{ data.ok }}
11240
11403
  </button>
@@ -11345,44 +11508,44 @@ class EventCreateEditComponent {
11345
11508
  return "";
11346
11509
  }
11347
11510
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EventCreateEditComponent, deps: [{ token: i2$2.FormBuilder }, { token: UniqueIdService }], target: i0.ɵɵFactoryTarget.Component }); }
11348
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: EventCreateEditComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11511
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EventCreateEditComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11349
11512
  <div [class]="'modal-header' + headerColor">
11350
- <h5 class="modal-title">{{ data.title }}</h5>
11351
- <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11513
+ <h5 class="modal-title">{{ data.title }}</h5>
11514
+ <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11515
+ </div>
11516
+ <div class="modal-body" [formGroup]="form">
11517
+ <rlb-input enable-validation formControlName="title">
11518
+ <label before>Event title</label>
11519
+ </rlb-input>
11520
+ <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
11521
+ <label before class="mt-3">Event start</label>
11522
+ </rlb-input>
11523
+ <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
11524
+ <label before class="mt-3">Event end</label>
11525
+ </rlb-input>
11526
+ <rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
11527
+ <label before class="mt-3">Event color</label>
11528
+ @for (color of colors; track color) {
11529
+ <rlb-option [value]="color">
11530
+ {{ color }}
11531
+ </rlb-option>
11532
+ }
11533
+ </rlb-select>
11352
11534
  </div>
11353
- <div class="modal-body" [formGroup]="form">
11354
- <rlb-input enable-validation formControlName="title">
11355
- <label before>Event title</label>
11356
- </rlb-input>
11357
- <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
11358
- <label before class="mt-3">Event start</label>
11359
- </rlb-input>
11360
- <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
11361
- <label before class="mt-3">Event end</label>
11362
- </rlb-input>
11363
- <rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
11364
- <label before class="mt-3">Event color</label>
11365
- <ng-container *ngFor="let color of colors">
11366
- <rlb-option [value]="color">
11367
- {{ color }}
11368
- </rlb-option>
11369
- </ng-container>
11370
- </rlb-select>
11371
- </div>
11372
11535
  <div class="modal-footer">
11373
- <button
11374
- type="button"
11375
- class="btn "
11376
- data-modal-reason="cancel"
11377
- [ngClass]="{ 'btn-secondary': !eventToEdit, 'btn-danger': eventToEdit }"
11378
- >
11379
- {{ eventToEdit ? 'Delete event' : 'Close' }}
11380
- </button>
11381
- <button type="button" [disabled]="!valid" class="btn btn-primary" data-modal-reason="ok">
11382
- Save changes
11383
- </button>
11536
+ <button
11537
+ type="button"
11538
+ class="btn "
11539
+ data-modal-reason="cancel"
11540
+ [ngClass]="{ 'btn-secondary': !eventToEdit, 'btn-danger': eventToEdit }"
11541
+ >
11542
+ {{ eventToEdit ? 'Delete event' : 'Close' }}
11543
+ </button>
11544
+ <button type="button" [disabled]="!valid" class="btn btn-primary" data-modal-reason="ok">
11545
+ Save changes
11546
+ </button>
11384
11547
  </div>
11385
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: SelectComponent, selector: "rlb-select", inputs: ["placeholder", "size", "disabled", "readonly", "multiple", "display", "id", "enable-validation"] }, { kind: "component", type: OptionComponent, selector: "rlb-option", inputs: ["disabled", "value", "class"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
11548
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: InputComponent, selector: "rlb-input", inputs: ["disabled", "readonly", "before-text", "placeholder", "type", "size", "name", "max", "min", "step", "date-type", "timezone", "id", "extValidation", "enable-validation"] }, { kind: "component", type: SelectComponent, selector: "rlb-select", inputs: ["placeholder", "size", "disabled", "readonly", "multiple", "display", "id", "enable-validation"] }, { kind: "component", type: OptionComponent, selector: "rlb-option", inputs: ["disabled", "value", "class"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
11386
11549
  }
11387
11550
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EventCreateEditComponent, decorators: [{
11388
11551
  type: Component,
@@ -11390,42 +11553,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
11390
11553
  standalone: true,
11391
11554
  template: `
11392
11555
  <div [class]="'modal-header' + headerColor">
11393
- <h5 class="modal-title">{{ data.title }}</h5>
11394
- <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11556
+ <h5 class="modal-title">{{ data.title }}</h5>
11557
+ <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11558
+ </div>
11559
+ <div class="modal-body" [formGroup]="form">
11560
+ <rlb-input enable-validation formControlName="title">
11561
+ <label before>Event title</label>
11562
+ </rlb-input>
11563
+ <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
11564
+ <label before class="mt-3">Event start</label>
11565
+ </rlb-input>
11566
+ <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
11567
+ <label before class="mt-3">Event end</label>
11568
+ </rlb-input>
11569
+ <rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
11570
+ <label before class="mt-3">Event color</label>
11571
+ @for (color of colors; track color) {
11572
+ <rlb-option [value]="color">
11573
+ {{ color }}
11574
+ </rlb-option>
11575
+ }
11576
+ </rlb-select>
11395
11577
  </div>
11396
- <div class="modal-body" [formGroup]="form">
11397
- <rlb-input enable-validation formControlName="title">
11398
- <label before>Event title</label>
11399
- </rlb-input>
11400
- <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
11401
- <label before class="mt-3">Event start</label>
11402
- </rlb-input>
11403
- <rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
11404
- <label before class="mt-3">Event end</label>
11405
- </rlb-input>
11406
- <rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
11407
- <label before class="mt-3">Event color</label>
11408
- <ng-container *ngFor="let color of colors">
11409
- <rlb-option [value]="color">
11410
- {{ color }}
11411
- </rlb-option>
11412
- </ng-container>
11413
- </rlb-select>
11414
- </div>
11415
11578
  <div class="modal-footer">
11416
- <button
11417
- type="button"
11418
- class="btn "
11419
- data-modal-reason="cancel"
11420
- [ngClass]="{ 'btn-secondary': !eventToEdit, 'btn-danger': eventToEdit }"
11421
- >
11422
- {{ eventToEdit ? 'Delete event' : 'Close' }}
11423
- </button>
11424
- <button type="button" [disabled]="!valid" class="btn btn-primary" data-modal-reason="ok">
11425
- Save changes
11426
- </button>
11579
+ <button
11580
+ type="button"
11581
+ class="btn "
11582
+ data-modal-reason="cancel"
11583
+ [ngClass]="{ 'btn-secondary': !eventToEdit, 'btn-danger': eventToEdit }"
11584
+ >
11585
+ {{ eventToEdit ? 'Delete event' : 'Close' }}
11586
+ </button>
11587
+ <button type="button" [disabled]="!valid" class="btn btn-primary" data-modal-reason="ok">
11588
+ Save changes
11589
+ </button>
11427
11590
  </div>
11428
- `,
11591
+ `,
11429
11592
  hostDirectives: [
11430
11593
  {
11431
11594
  directive: ModalDirective,
@@ -11456,56 +11619,58 @@ class CalendarOverflowEventsContainerComponent {
11456
11619
  this.result = { event, action };
11457
11620
  }
11458
11621
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarOverflowEventsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11459
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarOverflowEventsContainerComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11622
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarOverflowEventsContainerComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ModalDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11460
11623
  <div [class]="'modal-header' + headerColor">
11461
- <h5 class="modal-title">{{ data.title }}</h5>
11462
- <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11624
+ <h5 class="modal-title">{{ data.title }}</h5>
11625
+ <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11626
+ </div>
11627
+ <div class="modal-body">
11628
+ <div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
11629
+ @for (event of data.content; track event) {
11630
+ <rlb-card class="mb-0 shadow-lg rounded" [border]="event.color">
11631
+ <rlb-card-body class="d-flex align-items-center justify-content-between">
11632
+ <div>
11633
+ <span rlb-badge pill [color]="event.color">&nbsp;</span>
11634
+ <span>
11635
+ {{ event.title }}
11636
+ </span>
11637
+ </div>
11638
+ <div class="d-flex align-items-center gap-2">
11639
+ <rlb-fab
11640
+ (click)="closeDialog(event, 'edit')"
11641
+ data-modal-reason="ok"
11642
+ class="align-self-end"
11643
+ size="xs"
11644
+ outline
11645
+ >
11646
+ <i class="bi bi-pencil"></i>
11647
+ </rlb-fab>
11648
+ <rlb-fab
11649
+ (click)="closeDialog(event, 'delete')"
11650
+ data-modal-reason="ok"
11651
+ class="align-self-end"
11652
+ size="xs"
11653
+ color="danger"
11654
+ outline
11655
+ >
11656
+ <i class="bi bi-trash"></i>
11657
+ </rlb-fab>
11658
+ </div>
11659
+ </rlb-card-body>
11660
+ </rlb-card>
11661
+ }
11662
+ </div>
11463
11663
  </div>
11464
- <div class="modal-body">
11465
- <div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
11466
- <rlb-card class="mb-0 shadow-lg rounded" [border]="event.color" *ngFor="let event of data.content">
11467
- <rlb-card-body class="d-flex align-items-center justify-content-between">
11468
- <div>
11469
- <span rlb-badge pill [color]="event.color">&nbsp;</span>
11470
- <span>
11471
- {{ event.title }}
11472
- </span>
11473
- </div>
11474
- <div class="d-flex align-items-center gap-2">
11475
- <rlb-fab
11476
- (click)="closeDialog(event, 'edit')"
11477
- data-modal-reason="ok"
11478
- class="align-self-end"
11479
- size="xs"
11480
- outline
11481
- >
11482
- <i class="bi bi-pencil"></i>
11483
- </rlb-fab>
11484
- <rlb-fab
11485
- (click)="closeDialog(event, 'delete')"
11486
- data-modal-reason="ok"
11487
- class="align-self-end"
11488
- size="xs"
11489
- color="danger"
11490
- outline
11491
- >
11492
- <i class="bi bi-trash"></i>
11493
- </rlb-fab>
11494
- </div>
11495
- </rlb-card-body>
11496
- </rlb-card>
11497
- </div>
11498
- </div>
11499
11664
  <div class="modal-footer">
11500
- <button
11501
- rlb-button
11502
- color="secondary"
11503
- data-modal-reason="cancel"
11504
- >
11505
- {{ 'Close' }}
11506
- </button>
11665
+ <button
11666
+ rlb-button
11667
+ color="secondary"
11668
+ data-modal-reason="cancel"
11669
+ >
11670
+ {{ 'Close' }}
11671
+ </button>
11507
11672
  </div>
11508
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: RlbFabComponent, selector: "rlb-fab", inputs: ["color", "size", "disabled", "outline", "position"] }, { kind: "component", type: BadgeComponent, selector: "span[rlb-badge], img[rlb-badge]", inputs: ["pill", "color", "hidden-text", "border", "class"] }, { kind: "component", type: CardBodyComponent, selector: "rlb-card-body" }, { kind: "component", type: CardComponent, selector: "rlb-card", inputs: ["align", "overlay", "background", "border"] }] }); }
11673
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }, { kind: "component", type: ButtonComponent, selector: "button[rlb-button], a[rlb-button]", inputs: ["color", "size", "disabled", "outline", "isLink"] }, { kind: "component", type: RlbFabComponent, selector: "rlb-fab", inputs: ["color", "size", "disabled", "outline", "position"] }, { kind: "component", type: BadgeComponent, selector: "span[rlb-badge], img[rlb-badge]", inputs: ["pill", "color", "hidden-text", "border", "class"] }, { kind: "component", type: CardBodyComponent, selector: "rlb-card-body" }, { kind: "component", type: CardComponent, selector: "rlb-card", inputs: ["align", "overlay", "background", "border"] }] }); }
11509
11674
  }
11510
11675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarOverflowEventsContainerComponent, decorators: [{
11511
11676
  type: Component,
@@ -11513,61 +11678,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
11513
11678
  standalone: true,
11514
11679
  template: `
11515
11680
  <div [class]="'modal-header' + headerColor">
11516
- <h5 class="modal-title">{{ data.title }}</h5>
11517
- <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11681
+ <h5 class="modal-title">{{ data.title }}</h5>
11682
+ <button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
11683
+ </div>
11684
+ <div class="modal-body">
11685
+ <div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
11686
+ @for (event of data.content; track event) {
11687
+ <rlb-card class="mb-0 shadow-lg rounded" [border]="event.color">
11688
+ <rlb-card-body class="d-flex align-items-center justify-content-between">
11689
+ <div>
11690
+ <span rlb-badge pill [color]="event.color">&nbsp;</span>
11691
+ <span>
11692
+ {{ event.title }}
11693
+ </span>
11694
+ </div>
11695
+ <div class="d-flex align-items-center gap-2">
11696
+ <rlb-fab
11697
+ (click)="closeDialog(event, 'edit')"
11698
+ data-modal-reason="ok"
11699
+ class="align-self-end"
11700
+ size="xs"
11701
+ outline
11702
+ >
11703
+ <i class="bi bi-pencil"></i>
11704
+ </rlb-fab>
11705
+ <rlb-fab
11706
+ (click)="closeDialog(event, 'delete')"
11707
+ data-modal-reason="ok"
11708
+ class="align-self-end"
11709
+ size="xs"
11710
+ color="danger"
11711
+ outline
11712
+ >
11713
+ <i class="bi bi-trash"></i>
11714
+ </rlb-fab>
11715
+ </div>
11716
+ </rlb-card-body>
11717
+ </rlb-card>
11718
+ }
11719
+ </div>
11518
11720
  </div>
11519
- <div class="modal-body">
11520
- <div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
11521
- <rlb-card class="mb-0 shadow-lg rounded" [border]="event.color" *ngFor="let event of data.content">
11522
- <rlb-card-body class="d-flex align-items-center justify-content-between">
11523
- <div>
11524
- <span rlb-badge pill [color]="event.color">&nbsp;</span>
11525
- <span>
11526
- {{ event.title }}
11527
- </span>
11528
- </div>
11529
- <div class="d-flex align-items-center gap-2">
11530
- <rlb-fab
11531
- (click)="closeDialog(event, 'edit')"
11532
- data-modal-reason="ok"
11533
- class="align-self-end"
11534
- size="xs"
11535
- outline
11536
- >
11537
- <i class="bi bi-pencil"></i>
11538
- </rlb-fab>
11539
- <rlb-fab
11540
- (click)="closeDialog(event, 'delete')"
11541
- data-modal-reason="ok"
11542
- class="align-self-end"
11543
- size="xs"
11544
- color="danger"
11545
- outline
11546
- >
11547
- <i class="bi bi-trash"></i>
11548
- </rlb-fab>
11549
- </div>
11550
- </rlb-card-body>
11551
- </rlb-card>
11552
- </div>
11553
- </div>
11554
11721
  <div class="modal-footer">
11555
- <button
11556
- rlb-button
11557
- color="secondary"
11558
- data-modal-reason="cancel"
11559
- >
11560
- {{ 'Close' }}
11561
- </button>
11722
+ <button
11723
+ rlb-button
11724
+ color="secondary"
11725
+ data-modal-reason="cancel"
11726
+ >
11727
+ {{ 'Close' }}
11728
+ </button>
11562
11729
  </div>
11563
- `,
11730
+ `,
11564
11731
  hostDirectives: [
11565
11732
  {
11566
11733
  directive: ModalDirective,
11567
11734
  inputs: ['id', 'data-instance', 'data-options'],
11568
11735
  },
11569
11736
  ],
11570
- imports: [CommonModule, RlbBootstrapModule]
11737
+ imports: [RlbBootstrapModule]
11571
11738
  }]
11572
11739
  }] });
11573
11740
 
@@ -11576,14 +11743,16 @@ class CalendarToastComponent {
11576
11743
  this.valid = true;
11577
11744
  }
11578
11745
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CalendarToastComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ToastDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11746
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CalendarToastComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: ToastDirective, inputs: ["id", "id", "data-instance", "data-instance", "data-options", "data-options"] }], ngImport: i0, template: `
11580
11747
  <div class="toast-header">
11581
11748
  <strong class="me-auto">{{data.title}}</strong>
11582
- <small *ngIf="data.subtitle"> {{data.subtitle }}</small>
11749
+ @if (data.subtitle) {
11750
+ <small> {{data.subtitle }}</small>
11751
+ }
11583
11752
  <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
11584
11753
  </div>
11585
11754
  <div class="toast-body">{{data.content}}</div>
11586
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RlbBootstrapModule }] }); }
11755
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }] }); }
11587
11756
  }
11588
11757
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarToastComponent, decorators: [{
11589
11758
  type: Component,
@@ -11591,11 +11760,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
11591
11760
  template: `
11592
11761
  <div class="toast-header">
11593
11762
  <strong class="me-auto">{{data.title}}</strong>
11594
- <small *ngIf="data.subtitle"> {{data.subtitle }}</small>
11763
+ @if (data.subtitle) {
11764
+ <small> {{data.subtitle }}</small>
11765
+ }
11595
11766
  <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
11596
11767
  </div>
11597
11768
  <div class="toast-body">{{data.content}}</div>
11598
- `,
11769
+ `,
11599
11770
  hostDirectives: [
11600
11771
  {
11601
11772
  directive: ToastDirective,
@@ -11603,7 +11774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
11603
11774
  },
11604
11775
  ],
11605
11776
  standalone: true,
11606
- imports: [CommonModule, RlbBootstrapModule]
11777
+ imports: [RlbBootstrapModule]
11607
11778
  }]
11608
11779
  }] });
11609
11780