@open-rlb/ng-bootstrap 2.4.9 → 2.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/open-rlb-ng-bootstrap.mjs +1404 -884
- package/fesm2022/open-rlb-ng-bootstrap.mjs.map +1 -1
- package/index.d.ts +159 -83
- package/package.json +1 -1
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, booleanAttribute, Input, Host, Self, Optional, Directive, Injectable, EventEmitter, ContentChild, Output, ContentChildren, ViewChild, numberAttribute, Pipe, ChangeDetectionStrategy, DOCUMENT, Inject, HostBinding,
|
|
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
|
|
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';
|
|
8
|
-
import { Subject, of, take, filter, switchMap,
|
|
8
|
+
import { Subject, of, map, shareReplay, take, filter, switchMap, startWith, takeUntil, Subscription, Observable, lastValueFrom } from 'rxjs';
|
|
9
9
|
import * as i2$1 from '@angular/cdk/layout';
|
|
10
10
|
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
|
|
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: "
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
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
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
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: "
|
|
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
|
-
|
|
631
|
+
@if (hiddenText) {
|
|
632
|
+
<span class="visually-hidden">{{ hiddenText }}</span>
|
|
633
|
+
}
|
|
630
634
|
</span>
|
|
631
|
-
</ng-template>`, isInline: true
|
|
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
|
-
|
|
645
|
+
@if (hiddenText) {
|
|
646
|
+
<span class="visually-hidden">{{ hiddenText }}</span>
|
|
647
|
+
}
|
|
642
648
|
</span>
|
|
643
649
|
</ng-template>`,
|
|
644
650
|
standalone: false
|
|
@@ -811,37 +817,45 @@ 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: "
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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
|
|
821
|
+
aria-label="breadcrumb"
|
|
822
|
+
style="--bs-breadcrumb-divider: '{{ divider }}';"
|
|
823
|
+
>
|
|
824
|
+
<ol class="breadcrumb" [ngClass]="cssClasses">
|
|
825
|
+
@for (item of items; track item; let last = $last) {
|
|
826
|
+
<li class="breadcrumb-item" [ngClass]="{ active: !last }">
|
|
827
|
+
@if (!last) {
|
|
828
|
+
<a [routerLink]="item.link">{{ item.label }}</a>
|
|
829
|
+
}
|
|
830
|
+
@if (last) {
|
|
831
|
+
<span>{{ item.label }}</span>
|
|
832
|
+
}
|
|
833
|
+
</li>
|
|
834
|
+
}
|
|
835
|
+
</ol>
|
|
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,
|
|
830
840
|
args: [{
|
|
831
841
|
selector: 'rlb-breadcrumb',
|
|
832
842
|
template: ` <nav
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
843
|
+
aria-label="breadcrumb"
|
|
844
|
+
style="--bs-breadcrumb-divider: '{{ divider }}';"
|
|
845
|
+
>
|
|
846
|
+
<ol class="breadcrumb" [ngClass]="cssClasses">
|
|
847
|
+
@for (item of items; track item; let last = $last) {
|
|
848
|
+
<li class="breadcrumb-item" [ngClass]="{ active: !last }">
|
|
849
|
+
@if (!last) {
|
|
850
|
+
<a [routerLink]="item.link">{{ item.label }}</a>
|
|
851
|
+
}
|
|
852
|
+
@if (last) {
|
|
853
|
+
<span>{{ item.label }}</span>
|
|
854
|
+
}
|
|
855
|
+
</li>
|
|
856
|
+
}
|
|
857
|
+
</ol>
|
|
858
|
+
</nav>`,
|
|
845
859
|
standalone: false
|
|
846
860
|
}]
|
|
847
861
|
}], propDecorators: { divider: [{
|
|
@@ -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: "
|
|
1260
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1284
|
+
}
|
|
1271
1285
|
</div>
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
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
|
-
|
|
1319
|
+
@if (!hideIndicators) {
|
|
1304
1320
|
<div class="carousel-indicators">
|
|
1305
|
-
|
|
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
|
-
|
|
1329
|
+
}
|
|
1314
1330
|
</div>
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
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]': '
|
|
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: "
|
|
1469
|
-
|
|
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: `
|
|
1476
|
-
|
|
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: "
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
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
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
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: "
|
|
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
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
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
|
-
|
|
1763
|
-
</div>`, isInline: true
|
|
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
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
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
|
-
|
|
1827
|
+
}
|
|
1784
1828
|
</div>`,
|
|
1785
1829
|
host: {
|
|
1786
1830
|
class: 'progress',
|
|
@@ -2064,11 +2108,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2064
2108
|
args: [ComponentHostDirective, { static: true }]
|
|
2065
2109
|
}] } });
|
|
2066
2110
|
|
|
2111
|
+
class BreakpointService {
|
|
2112
|
+
constructor(breakpointObserver) {
|
|
2113
|
+
this.breakpointObserver = breakpointObserver;
|
|
2114
|
+
/**
|
|
2115
|
+
* Observable that emits true when the screen width is <= 992px.
|
|
2116
|
+
* This corresponds to the BS992 breakpoint used in the sidebar.
|
|
2117
|
+
*/
|
|
2118
|
+
this.isMobile$ = this.breakpointObserver
|
|
2119
|
+
.observe(['(max-width: 992px)'])
|
|
2120
|
+
.pipe(map((state) => state.matches), shareReplay(1));
|
|
2121
|
+
}
|
|
2122
|
+
/**
|
|
2123
|
+
* Returns the current mobile state.
|
|
2124
|
+
*/
|
|
2125
|
+
get isMobile() {
|
|
2126
|
+
return this.breakpointObserver.isMatched('(max-width: 992px)');
|
|
2127
|
+
}
|
|
2128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BreakpointService, deps: [{ token: i2$1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2129
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BreakpointService, providedIn: 'root' }); }
|
|
2130
|
+
}
|
|
2131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BreakpointService, decorators: [{
|
|
2132
|
+
type: Injectable,
|
|
2133
|
+
args: [{
|
|
2134
|
+
providedIn: 'root'
|
|
2135
|
+
}]
|
|
2136
|
+
}], ctorParameters: () => [{ type: i2$1.BreakpointObserver }] });
|
|
2137
|
+
|
|
2067
2138
|
class ModalDirective {
|
|
2068
|
-
constructor(el, renderer, innerModalService) {
|
|
2139
|
+
constructor(el, renderer, innerModalService, breakpointService) {
|
|
2069
2140
|
this.el = el;
|
|
2070
2141
|
this.renderer = renderer;
|
|
2071
2142
|
this.innerModalService = innerModalService;
|
|
2143
|
+
this.breakpointService = breakpointService;
|
|
2072
2144
|
this.triggerElement = null;
|
|
2073
2145
|
this._openChange_f = (e) => {
|
|
2074
2146
|
this.innerModalService.eventModal(e.type.replace('.bs.modal', ''), this._modalReason, this.id, this.instance?.result);
|
|
@@ -2128,6 +2200,10 @@ class ModalDirective {
|
|
|
2128
2200
|
if (this.options?.size) {
|
|
2129
2201
|
this.renderer.addClass(this.dialogElement, `modal-${this.options.size}`);
|
|
2130
2202
|
}
|
|
2203
|
+
const isFullscreenUndefined = this.options?.fullscreen === undefined;
|
|
2204
|
+
if (isFullscreenUndefined && this.breakpointService.isMobile) {
|
|
2205
|
+
this.renderer.addClass(this.dialogElement, `modal-fullscreen`);
|
|
2206
|
+
}
|
|
2131
2207
|
if (this.options?.fullscreen === true) {
|
|
2132
2208
|
this.renderer.addClass(this.dialogElement, `modal-fullscreen`);
|
|
2133
2209
|
}
|
|
@@ -2190,7 +2266,7 @@ class ModalDirective {
|
|
|
2190
2266
|
});
|
|
2191
2267
|
}
|
|
2192
2268
|
}
|
|
2193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModalDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: InnerModalService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModalDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: InnerModalService }, { token: BreakpointService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2194
2270
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: ModalDirective, isStandalone: true, selector: "[rlb-modal]", inputs: { id: "id", instance: ["data-instance", "instance"], options: ["data-options", "options"] }, ngImport: i0 }); }
|
|
2195
2271
|
}
|
|
2196
2272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModalDirective, decorators: [{
|
|
@@ -2199,7 +2275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2199
2275
|
selector: '[rlb-modal]',
|
|
2200
2276
|
standalone: true,
|
|
2201
2277
|
}]
|
|
2202
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: InnerModalService }], propDecorators: { id: [{
|
|
2278
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: InnerModalService }, { type: BreakpointService }], propDecorators: { id: [{
|
|
2203
2279
|
type: Input,
|
|
2204
2280
|
args: [{ alias: 'id' }]
|
|
2205
2281
|
}], instance: [{
|
|
@@ -2466,22 +2542,23 @@ class AvatarComponent {
|
|
|
2466
2542
|
this.viewContainerRef.element.nativeElement.remove();
|
|
2467
2543
|
}
|
|
2468
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 }); }
|
|
2469
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
2470
2546
|
<ng-template #template>
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
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
|
+
}
|
|
2483
2560
|
</ng-template>
|
|
2484
|
-
|
|
2561
|
+
`, isInline: true }); }
|
|
2485
2562
|
}
|
|
2486
2563
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
2487
2564
|
type: Component,
|
|
@@ -2489,20 +2566,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2489
2566
|
selector: 'rlb-avatar',
|
|
2490
2567
|
template: `
|
|
2491
2568
|
<ng-template #template>
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
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
|
+
}
|
|
2504
2582
|
</ng-template>
|
|
2505
|
-
|
|
2583
|
+
`,
|
|
2506
2584
|
standalone: false
|
|
2507
2585
|
}]
|
|
2508
2586
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { size: [{
|
|
@@ -2559,7 +2637,7 @@ class RlbFabComponent {
|
|
|
2559
2637
|
}
|
|
2560
2638
|
}
|
|
2561
2639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbFabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2562
|
-
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:
|
|
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"] }] }); }
|
|
2563
2641
|
}
|
|
2564
2642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbFabComponent, decorators: [{
|
|
2565
2643
|
type: Component,
|
|
@@ -2578,6 +2656,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2578
2656
|
type: Input
|
|
2579
2657
|
}] } });
|
|
2580
2658
|
|
|
2659
|
+
const DEFAULT_CALENDAR_LAYOUT = {
|
|
2660
|
+
rowHeight: 110,
|
|
2661
|
+
maxBodyHeight: 30,
|
|
2662
|
+
minHeaderHeight: 3.5
|
|
2663
|
+
};
|
|
2664
|
+
|
|
2581
2665
|
function isSameDay(a, b) {
|
|
2582
2666
|
return a.yearUTC === b.yearUTC &&
|
|
2583
2667
|
a.monthUTC === b.monthUTC &&
|
|
@@ -2895,6 +2979,10 @@ class CalendarHeaderComponent {
|
|
|
2895
2979
|
.add(1, 'month');
|
|
2896
2980
|
this.dateChange.emit(new DateTz(nextMonth));
|
|
2897
2981
|
break;
|
|
2982
|
+
case 'day':
|
|
2983
|
+
const nextDay = addDays(this.currentDate, 1);
|
|
2984
|
+
this.dateChange.emit(new DateTz(nextDay));
|
|
2985
|
+
break;
|
|
2898
2986
|
default:
|
|
2899
2987
|
break;
|
|
2900
2988
|
}
|
|
@@ -2911,6 +2999,10 @@ class CalendarHeaderComponent {
|
|
|
2911
2999
|
.add(-1, 'month');
|
|
2912
3000
|
this.dateChange.emit(new DateTz(pastMonth));
|
|
2913
3001
|
break;
|
|
3002
|
+
case 'day':
|
|
3003
|
+
const nextDay = addDays(this.currentDate, -1);
|
|
3004
|
+
this.dateChange.emit(new DateTz(nextDay));
|
|
3005
|
+
break;
|
|
2914
3006
|
default:
|
|
2915
3007
|
break;
|
|
2916
3008
|
}
|
|
@@ -2925,7 +3017,7 @@ class CalendarHeaderComponent {
|
|
|
2925
3017
|
}
|
|
2926
3018
|
}
|
|
2927
3019
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2928
|
-
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:
|
|
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" }] }); }
|
|
2929
3021
|
}
|
|
2930
3022
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
2931
3023
|
type: Component,
|
|
@@ -2988,11 +3080,11 @@ class CalendarEventComponent {
|
|
|
2988
3080
|
}
|
|
2989
3081
|
}
|
|
2990
3082
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarEventComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2991
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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" }] }); }
|
|
2992
3084
|
}
|
|
2993
3085
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarEventComponent, decorators: [{
|
|
2994
3086
|
type: Component,
|
|
2995
|
-
args: [{ selector: 'rlb-calendar-event', standalone: false, template: "<div [ngClass]=\"classes\"\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"] }]
|
|
2996
3088
|
}], propDecorators: { event: [{
|
|
2997
3089
|
type: Input,
|
|
2998
3090
|
args: [{ required: true }]
|
|
@@ -3050,10 +3142,7 @@ class CalendarWeekGridComponent {
|
|
|
3050
3142
|
this.timeSlots = [];
|
|
3051
3143
|
this.processedEvents = new Map();
|
|
3052
3144
|
this.scrollbarWidth = 0;
|
|
3053
|
-
// CONFIG CONSTANTS
|
|
3054
|
-
this.ROW_HEIGHT = 110; // px for a full hour slot
|
|
3055
|
-
this.MAX_BODY_HEIGHT = 30; // rem
|
|
3056
|
-
this.MIN_HEADER_HEIGHT = 3.5; // rem
|
|
3145
|
+
// CONFIG CONSTANTS (Replaced by Layout Input)
|
|
3057
3146
|
this.MAX_VISIBLE_COLUMNS = 4;
|
|
3058
3147
|
this.SNAP_MINUTES = 15;
|
|
3059
3148
|
// arrow function to keep "this" context
|
|
@@ -3103,7 +3192,7 @@ class CalendarWeekGridComponent {
|
|
|
3103
3192
|
const originalTopPx = this.calculateEventTop(movedEvent);
|
|
3104
3193
|
const dragDistancePx = event.distance.y;
|
|
3105
3194
|
const newTopPx = originalTopPx + dragDistancePx;
|
|
3106
|
-
const rawMinutesFromStart = (newTopPx / this.
|
|
3195
|
+
const rawMinutesFromStart = (newTopPx / this.layout.rowHeight) * 60;
|
|
3107
3196
|
const snappedMinutes = Math.round(rawMinutesFromStart / this.SNAP_MINUTES) * this.SNAP_MINUTES;
|
|
3108
3197
|
const validMinutes = Math.max(0, snappedMinutes);
|
|
3109
3198
|
const newStart = new DateTz$1(newDay)
|
|
@@ -3130,17 +3219,17 @@ class CalendarWeekGridComponent {
|
|
|
3130
3219
|
const startOfDay = new DateTz$1(event.start).set(0, 'hour').set(0, 'minute').stripSecMillis();
|
|
3131
3220
|
const diffMs = event.start.timestamp - startOfDay.timestamp;
|
|
3132
3221
|
const diffMinutes = diffMs / (1000 * 60);
|
|
3133
|
-
return (diffMinutes / 60) * this.
|
|
3222
|
+
return (diffMinutes / 60) * this.layout.rowHeight;
|
|
3134
3223
|
}
|
|
3135
3224
|
calculateEventHeight(event) {
|
|
3136
3225
|
const durationMs = event.end.timestamp - event.start.timestamp;
|
|
3137
3226
|
const durationMinutes = durationMs / (1000 * 60);
|
|
3138
|
-
return (durationMinutes / 60) * this.
|
|
3227
|
+
return (durationMinutes / 60) * this.layout.rowHeight;
|
|
3139
3228
|
}
|
|
3140
3229
|
getNowTop() {
|
|
3141
3230
|
const hours = this.now.hour;
|
|
3142
3231
|
const minutes = this.now.minute;
|
|
3143
|
-
return ((hours * 60) + minutes) / 60 * this.
|
|
3232
|
+
return ((hours * 60) + minutes) / 60 * this.layout.rowHeight;
|
|
3144
3233
|
}
|
|
3145
3234
|
isToday(date) {
|
|
3146
3235
|
return isToday(date);
|
|
@@ -3329,8 +3418,276 @@ class CalendarWeekGridComponent {
|
|
|
3329
3418
|
overflowEvents: hiddenEvents,
|
|
3330
3419
|
overlapCount: hiddenEvents.length
|
|
3331
3420
|
});
|
|
3332
|
-
}
|
|
3333
|
-
}
|
|
3421
|
+
}
|
|
3422
|
+
}
|
|
3423
|
+
return resultEvents;
|
|
3424
|
+
}
|
|
3425
|
+
sortEventsStable(events) {
|
|
3426
|
+
return [...events].sort((a, b) => {
|
|
3427
|
+
const diff = a.start.timestamp - b.start.timestamp;
|
|
3428
|
+
if (diff !== 0)
|
|
3429
|
+
return diff;
|
|
3430
|
+
const durA = a.end.timestamp - a.start.timestamp;
|
|
3431
|
+
const durB = b.end.timestamp - b.start.timestamp;
|
|
3432
|
+
if (durB !== durA)
|
|
3433
|
+
return durB - durA;
|
|
3434
|
+
const idA = a.id ? a.id.toString() : a.title;
|
|
3435
|
+
const idB = b.id ? b.id.toString() : b.title;
|
|
3436
|
+
return idA.localeCompare(idB);
|
|
3437
|
+
});
|
|
3438
|
+
}
|
|
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 }); }
|
|
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 }); }
|
|
3441
|
+
}
|
|
3442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarWeekGridComponent, decorators: [{
|
|
3443
|
+
type: Component,
|
|
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"] }]
|
|
3445
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { view: [{
|
|
3446
|
+
type: Input
|
|
3447
|
+
}], currentDate: [{
|
|
3448
|
+
type: Input
|
|
3449
|
+
}], events: [{
|
|
3450
|
+
type: Input
|
|
3451
|
+
}], layout: [{
|
|
3452
|
+
type: Input
|
|
3453
|
+
}], eventClick: [{
|
|
3454
|
+
type: Output
|
|
3455
|
+
}], eventContainerClick: [{
|
|
3456
|
+
type: Output
|
|
3457
|
+
}], eventChange: [{
|
|
3458
|
+
type: Output
|
|
3459
|
+
}], scrollBodyRef: [{
|
|
3460
|
+
type: ViewChild,
|
|
3461
|
+
args: ['scrollBody', { static: false }]
|
|
3462
|
+
}], headerRowRef: [{
|
|
3463
|
+
type: ViewChild,
|
|
3464
|
+
args: ['headerRow', { static: false }]
|
|
3465
|
+
}] } });
|
|
3466
|
+
|
|
3467
|
+
class CalendarDayGridComponent {
|
|
3468
|
+
constructor(cd) {
|
|
3469
|
+
this.cd = cd;
|
|
3470
|
+
this.events = [];
|
|
3471
|
+
this.eventClick = new EventEmitter();
|
|
3472
|
+
this.eventContainerClick = new EventEmitter();
|
|
3473
|
+
this.eventChange = new EventEmitter();
|
|
3474
|
+
this.timeSlots = [];
|
|
3475
|
+
this.processedEvents = [];
|
|
3476
|
+
// CONFIG CONSTANTS (Replaced by Layout Input)
|
|
3477
|
+
this.MAX_VISIBLE_COLUMNS = 10; // More columns allow in day view
|
|
3478
|
+
this.SNAP_MINUTES = 15;
|
|
3479
|
+
this.now = getToday();
|
|
3480
|
+
}
|
|
3481
|
+
ngOnChanges(changes) {
|
|
3482
|
+
if (changes['view'] || changes['currentDate']) {
|
|
3483
|
+
if (this.view === 'day') {
|
|
3484
|
+
this.buildDayGrid(this.currentDate);
|
|
3485
|
+
this.buildTimeSlots();
|
|
3486
|
+
}
|
|
3487
|
+
}
|
|
3488
|
+
if (changes['events']) {
|
|
3489
|
+
this.events = changes['events'].currentValue;
|
|
3490
|
+
}
|
|
3491
|
+
if (changes['events'] || changes['currentDate']) {
|
|
3492
|
+
this.processAllEvents();
|
|
3493
|
+
}
|
|
3494
|
+
}
|
|
3495
|
+
ngAfterViewInit() {
|
|
3496
|
+
this.cd.detectChanges();
|
|
3497
|
+
}
|
|
3498
|
+
ngOnDestroy() {
|
|
3499
|
+
this.stopNowTimer();
|
|
3500
|
+
}
|
|
3501
|
+
trackByEventId(index, item) {
|
|
3502
|
+
return item.id;
|
|
3503
|
+
}
|
|
3504
|
+
onEventDrop(event) {
|
|
3505
|
+
const movedEvent = event.item.data;
|
|
3506
|
+
// For day view, the container data is the single day we are viewing
|
|
3507
|
+
const newDay = this.day;
|
|
3508
|
+
const originalTopPx = this.calculateEventTop(movedEvent);
|
|
3509
|
+
const dragDistancePx = event.distance.y;
|
|
3510
|
+
const newTopPx = originalTopPx + dragDistancePx;
|
|
3511
|
+
const rawMinutesFromStart = (newTopPx / this.layout.rowHeight) * 60;
|
|
3512
|
+
const snappedMinutes = Math.round(rawMinutesFromStart / this.SNAP_MINUTES) * this.SNAP_MINUTES;
|
|
3513
|
+
const validMinutes = Math.max(0, snappedMinutes);
|
|
3514
|
+
const newStart = new DateTz$1(newDay)
|
|
3515
|
+
.set(0, 'hour')
|
|
3516
|
+
.set(0, 'minute')
|
|
3517
|
+
.add(validMinutes, 'minute')
|
|
3518
|
+
.stripSecMillis();
|
|
3519
|
+
const durationMs = movedEvent.end.timestamp - movedEvent.start.timestamp;
|
|
3520
|
+
const newEnd = new DateTz$1(newStart.timestamp + durationMs).stripSecMillis();
|
|
3521
|
+
if (newStart.timestamp !== movedEvent.start.timestamp) {
|
|
3522
|
+
const updatedEvent = {
|
|
3523
|
+
...movedEvent,
|
|
3524
|
+
start: newStart,
|
|
3525
|
+
end: newEnd,
|
|
3526
|
+
};
|
|
3527
|
+
this.eventChange.emit(updatedEvent);
|
|
3528
|
+
}
|
|
3529
|
+
}
|
|
3530
|
+
calculateEventTop(event) {
|
|
3531
|
+
const startOfDay = new DateTz$1(this.day).set(0, 'hour').set(0, 'minute').stripSecMillis();
|
|
3532
|
+
// Use event.start directly, but ensure we are calculating relative to THIS day
|
|
3533
|
+
// If event starts on previous day, we should clamp?
|
|
3534
|
+
// Logic from week grid handles "chunks", here we assume processAllEvents has given us the chunk for this day.
|
|
3535
|
+
let eventStart = event.start;
|
|
3536
|
+
if (eventStart.timestamp < startOfDay.timestamp) {
|
|
3537
|
+
eventStart = startOfDay;
|
|
3538
|
+
}
|
|
3539
|
+
const diffMs = eventStart.timestamp - startOfDay.timestamp;
|
|
3540
|
+
const diffMinutes = diffMs / (1000 * 60);
|
|
3541
|
+
return (diffMinutes / 60) * this.layout.rowHeight;
|
|
3542
|
+
}
|
|
3543
|
+
calculateEventHeight(event) {
|
|
3544
|
+
// If event continues to next day, visual end is midnight.
|
|
3545
|
+
// Logic from week grid's 'processAllEvents' handled chunking, so here specific event chunk should be correct.
|
|
3546
|
+
const durationMs = event.end.timestamp - event.start.timestamp;
|
|
3547
|
+
const durationMinutes = durationMs / (1000 * 60);
|
|
3548
|
+
return (durationMinutes / 60) * this.layout.rowHeight;
|
|
3549
|
+
}
|
|
3550
|
+
getNowTop() {
|
|
3551
|
+
const hours = this.now.hour;
|
|
3552
|
+
const minutes = this.now.minute;
|
|
3553
|
+
return ((hours * 60) + minutes) / 60 * this.layout.rowHeight;
|
|
3554
|
+
}
|
|
3555
|
+
isToday(date) {
|
|
3556
|
+
return isToday(date);
|
|
3557
|
+
}
|
|
3558
|
+
startNowTimer() {
|
|
3559
|
+
this.stopNowTimer(); // clear existing if any
|
|
3560
|
+
this.nowInterval = setInterval(() => {
|
|
3561
|
+
this.now = getToday();
|
|
3562
|
+
this.cd.detectChanges();
|
|
3563
|
+
}, 60 * 1000); // every minute
|
|
3564
|
+
}
|
|
3565
|
+
stopNowTimer() {
|
|
3566
|
+
if (this.nowInterval) {
|
|
3567
|
+
clearInterval(this.nowInterval);
|
|
3568
|
+
}
|
|
3569
|
+
}
|
|
3570
|
+
buildDayGrid(currentDate) {
|
|
3571
|
+
this.day = new DateTz$1(currentDate.timestamp, 'UTC');
|
|
3572
|
+
this.startNowTimer();
|
|
3573
|
+
}
|
|
3574
|
+
buildTimeSlots() {
|
|
3575
|
+
const slots = [];
|
|
3576
|
+
for (let h = 0; h < 24; h++) {
|
|
3577
|
+
slots.push(`${h.toString().padStart(2, '0')}:00`);
|
|
3578
|
+
}
|
|
3579
|
+
this.timeSlots = slots;
|
|
3580
|
+
}
|
|
3581
|
+
isOverlapping(eventA, eventB) {
|
|
3582
|
+
const startA = eventA.start.timestamp;
|
|
3583
|
+
const endA = eventA.end.timestamp;
|
|
3584
|
+
const startB = eventB.start.timestamp;
|
|
3585
|
+
const endB = eventB.end.timestamp;
|
|
3586
|
+
return startA < endB && startB < endA;
|
|
3587
|
+
}
|
|
3588
|
+
processAllEvents() {
|
|
3589
|
+
if (!this.day)
|
|
3590
|
+
return;
|
|
3591
|
+
// Filter events for this day
|
|
3592
|
+
const dayStart = new DateTz$1(this.day).set(0, 'hour').set(0, 'minute').stripSecMillis();
|
|
3593
|
+
const dayEnd = new DateTz$1(this.day).set(0, 'hour').set(0, 'minute').add(1, 'day').stripSecMillis();
|
|
3594
|
+
const dayEvents = [];
|
|
3595
|
+
for (const event of this.events) {
|
|
3596
|
+
// Check overlap with the day
|
|
3597
|
+
if (event.end.timestamp > dayStart.timestamp && event.start.timestamp < dayEnd.timestamp) {
|
|
3598
|
+
let visualStart = event.start;
|
|
3599
|
+
let visualEnd = event.end;
|
|
3600
|
+
let isContinuedBefore = false;
|
|
3601
|
+
let isContinuedAfter = false;
|
|
3602
|
+
if (visualStart.timestamp < dayStart.timestamp) {
|
|
3603
|
+
visualStart = dayStart;
|
|
3604
|
+
isContinuedBefore = true;
|
|
3605
|
+
}
|
|
3606
|
+
if (visualEnd.timestamp > dayEnd.timestamp) {
|
|
3607
|
+
visualEnd = dayEnd;
|
|
3608
|
+
isContinuedAfter = true;
|
|
3609
|
+
}
|
|
3610
|
+
dayEvents.push({
|
|
3611
|
+
...event,
|
|
3612
|
+
start: visualStart,
|
|
3613
|
+
end: visualEnd,
|
|
3614
|
+
isContinuedBefore,
|
|
3615
|
+
isContinuedAfter,
|
|
3616
|
+
left: 0,
|
|
3617
|
+
width: 0
|
|
3618
|
+
});
|
|
3619
|
+
}
|
|
3620
|
+
}
|
|
3621
|
+
const sortedDayEvents = this.sortEventsStable(dayEvents);
|
|
3622
|
+
const groups = this.groupEventsByConflicts(sortedDayEvents);
|
|
3623
|
+
const eventsWithLayout = [];
|
|
3624
|
+
for (const group of groups) {
|
|
3625
|
+
const groupLayouts = this.resolveConflictGroupLayout(group);
|
|
3626
|
+
eventsWithLayout.push(...groupLayouts);
|
|
3627
|
+
}
|
|
3628
|
+
this.processedEvents = eventsWithLayout;
|
|
3629
|
+
this.cd.markForCheck();
|
|
3630
|
+
}
|
|
3631
|
+
groupEventsByConflicts(dayEvents) {
|
|
3632
|
+
if (dayEvents.length === 0)
|
|
3633
|
+
return [];
|
|
3634
|
+
const groups = [];
|
|
3635
|
+
const visited = new Map();
|
|
3636
|
+
for (const event of dayEvents) {
|
|
3637
|
+
if (visited.get(event))
|
|
3638
|
+
continue;
|
|
3639
|
+
const currentGroup = [];
|
|
3640
|
+
const queue = [event];
|
|
3641
|
+
visited.set(event, true);
|
|
3642
|
+
while (queue.length > 0) {
|
|
3643
|
+
const current = queue.shift();
|
|
3644
|
+
currentGroup.push(current);
|
|
3645
|
+
for (const other of dayEvents) {
|
|
3646
|
+
if (!visited.get(other) && this.isOverlapping(current, other)) {
|
|
3647
|
+
visited.set(other, true);
|
|
3648
|
+
queue.push(other);
|
|
3649
|
+
}
|
|
3650
|
+
}
|
|
3651
|
+
}
|
|
3652
|
+
groups.push(currentGroup);
|
|
3653
|
+
}
|
|
3654
|
+
return groups;
|
|
3655
|
+
}
|
|
3656
|
+
resolveConflictGroupLayout(groupEvents) {
|
|
3657
|
+
if (!groupEvents || groupEvents.length === 0)
|
|
3658
|
+
return [];
|
|
3659
|
+
const columns = [];
|
|
3660
|
+
const columnLastEndTimes = [];
|
|
3661
|
+
for (const event of groupEvents) {
|
|
3662
|
+
let assignedCol = -1;
|
|
3663
|
+
for (let i = 0; i < columnLastEndTimes.length; i++) {
|
|
3664
|
+
if (columnLastEndTimes[i] <= event.start.timestamp) {
|
|
3665
|
+
assignedCol = i;
|
|
3666
|
+
break;
|
|
3667
|
+
}
|
|
3668
|
+
}
|
|
3669
|
+
if (assignedCol === -1) {
|
|
3670
|
+
assignedCol = columns.length;
|
|
3671
|
+
columns.push([]);
|
|
3672
|
+
columnLastEndTimes.push(0);
|
|
3673
|
+
}
|
|
3674
|
+
columns[assignedCol].push(event);
|
|
3675
|
+
columnLastEndTimes[assignedCol] = event.end.timestamp;
|
|
3676
|
+
}
|
|
3677
|
+
const totalColumns = columns.length;
|
|
3678
|
+
const resultEvents = [];
|
|
3679
|
+
// All events share the width equally
|
|
3680
|
+
// If needed we can expand visible max columns, but day view usually has space
|
|
3681
|
+
const colWidth = 100 / Math.max(1, totalColumns);
|
|
3682
|
+
columns.forEach((colEvents, colIndex) => {
|
|
3683
|
+
colEvents.forEach(event => {
|
|
3684
|
+
resultEvents.push({
|
|
3685
|
+
...event,
|
|
3686
|
+
left: colIndex * colWidth,
|
|
3687
|
+
width: colWidth
|
|
3688
|
+
});
|
|
3689
|
+
});
|
|
3690
|
+
});
|
|
3334
3691
|
return resultEvents;
|
|
3335
3692
|
}
|
|
3336
3693
|
sortEventsStable(events) {
|
|
@@ -3347,18 +3704,20 @@ class CalendarWeekGridComponent {
|
|
|
3347
3704
|
return idA.localeCompare(idB);
|
|
3348
3705
|
});
|
|
3349
3706
|
}
|
|
3350
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
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 }); }
|
|
3352
3709
|
}
|
|
3353
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type:
|
|
3710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarDayGridComponent, decorators: [{
|
|
3354
3711
|
type: Component,
|
|
3355
|
-
args: [{ selector: 'rlb-calendar-
|
|
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"] }]
|
|
3356
3713
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { view: [{
|
|
3357
3714
|
type: Input
|
|
3358
3715
|
}], currentDate: [{
|
|
3359
3716
|
type: Input
|
|
3360
3717
|
}], events: [{
|
|
3361
3718
|
type: Input
|
|
3719
|
+
}], layout: [{
|
|
3720
|
+
type: Input
|
|
3362
3721
|
}], eventClick: [{
|
|
3363
3722
|
type: Output
|
|
3364
3723
|
}], eventContainerClick: [{
|
|
@@ -3368,9 +3727,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3368
3727
|
}], scrollBodyRef: [{
|
|
3369
3728
|
type: ViewChild,
|
|
3370
3729
|
args: ['scrollBody', { static: false }]
|
|
3371
|
-
}], headerRowRef: [{
|
|
3372
|
-
type: ViewChild,
|
|
3373
|
-
args: ['headerRow', { static: false }]
|
|
3374
3730
|
}] } });
|
|
3375
3731
|
|
|
3376
3732
|
const MAX_EVENTS_PER_CELL = 3;
|
|
@@ -3384,9 +3740,6 @@ class CalendarMonthGridComponent {
|
|
|
3384
3740
|
this.scrollbarWidth = 0;
|
|
3385
3741
|
this.weeks = [];
|
|
3386
3742
|
this.weekDaysHeader = [];
|
|
3387
|
-
this.MAX_BODY_HEIGHT = 30; // rem
|
|
3388
|
-
this.MIN_ROW_HEIGHT = 110; // px for a full hour slot
|
|
3389
|
-
this.MIN_HEADER_HEIGHT = 3.5; // rem
|
|
3390
3743
|
this.onResize = () => {
|
|
3391
3744
|
this.updateScrollbarWidth();
|
|
3392
3745
|
};
|
|
@@ -3488,6 +3841,10 @@ class CalendarMonthGridComponent {
|
|
|
3488
3841
|
});
|
|
3489
3842
|
this.weeks.push(row);
|
|
3490
3843
|
}
|
|
3844
|
+
// Defer scrollbar calculation to after the view updates
|
|
3845
|
+
setTimeout(() => {
|
|
3846
|
+
this.updateScrollbarWidth();
|
|
3847
|
+
});
|
|
3491
3848
|
}
|
|
3492
3849
|
/**
|
|
3493
3850
|
* "Tetris" Algorithm:
|
|
@@ -3614,17 +3971,19 @@ class CalendarMonthGridComponent {
|
|
|
3614
3971
|
this.eventChange.emit(updatedEvent);
|
|
3615
3972
|
}
|
|
3616
3973
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarMonthGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3617
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
3618
3975
|
}
|
|
3619
3976
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarMonthGridComponent, decorators: [{
|
|
3620
3977
|
type: Component,
|
|
3621
|
-
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\"
|
|
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"] }]
|
|
3622
3979
|
}], ctorParameters: () => [], propDecorators: { view: [{
|
|
3623
3980
|
type: Input
|
|
3624
3981
|
}], currentDate: [{
|
|
3625
3982
|
type: Input
|
|
3626
3983
|
}], events: [{
|
|
3627
3984
|
type: Input
|
|
3985
|
+
}], layout: [{
|
|
3986
|
+
type: Input
|
|
3628
3987
|
}], eventClick: [{
|
|
3629
3988
|
type: Output
|
|
3630
3989
|
}], eventContainerClick: [{
|
|
@@ -3651,17 +4010,19 @@ class CalendarGrid {
|
|
|
3651
4010
|
ngOnDestroy() {
|
|
3652
4011
|
}
|
|
3653
4012
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3654
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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"] }] }); }
|
|
3655
4014
|
}
|
|
3656
4015
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarGrid, decorators: [{
|
|
3657
4016
|
type: Component,
|
|
3658
|
-
args: [{ selector: 'rlb-calendar-grid', standalone: false, template: "
|
|
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" }]
|
|
3659
4018
|
}], ctorParameters: () => [], propDecorators: { view: [{
|
|
3660
4019
|
type: Input
|
|
3661
4020
|
}], currentDate: [{
|
|
3662
4021
|
type: Input
|
|
3663
4022
|
}], events: [{
|
|
3664
4023
|
type: Input
|
|
4024
|
+
}], layout: [{
|
|
4025
|
+
type: Input
|
|
3665
4026
|
}], eventClick: [{
|
|
3666
4027
|
type: Output
|
|
3667
4028
|
}], eventContainerClick: [{
|
|
@@ -3679,6 +4040,8 @@ class CalendarComponent {
|
|
|
3679
4040
|
this.events = [];
|
|
3680
4041
|
this.loading = false;
|
|
3681
4042
|
this.showToolbar = true;
|
|
4043
|
+
this.layout = {};
|
|
4044
|
+
this.mergedLayout = DEFAULT_CALENDAR_LAYOUT;
|
|
3682
4045
|
this.dateChange = new EventEmitter();
|
|
3683
4046
|
this.viewChange = new EventEmitter();
|
|
3684
4047
|
this.eventClick = new EventEmitter();
|
|
@@ -3694,6 +4057,9 @@ class CalendarComponent {
|
|
|
3694
4057
|
if (changes['events']) {
|
|
3695
4058
|
this.events = changes['events'].currentValue;
|
|
3696
4059
|
}
|
|
4060
|
+
if (changes['layout']) {
|
|
4061
|
+
this.mergedLayout = { ...DEFAULT_CALENDAR_LAYOUT, ...this.layout };
|
|
4062
|
+
}
|
|
3697
4063
|
}
|
|
3698
4064
|
// DnD event
|
|
3699
4065
|
onEventChange(eventToEdit) {
|
|
@@ -3944,11 +4310,11 @@ class CalendarComponent {
|
|
|
3944
4310
|
}).pipe(take(1));
|
|
3945
4311
|
}
|
|
3946
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 }); }
|
|
3947
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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"] }] }); }
|
|
3948
4314
|
}
|
|
3949
4315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
3950
4316
|
type: Component,
|
|
3951
|
-
args: [{ selector: "rlb-calendar", standalone: false, template: "<div class=\"rlb-calendar\">\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" }]
|
|
3952
4318
|
}], ctorParameters: () => [{ type: ModalService }, { type: UniqueIdService }, { type: ToastService }], propDecorators: { view: [{
|
|
3953
4319
|
type: Input,
|
|
3954
4320
|
args: [{ alias: 'view' }]
|
|
@@ -3957,13 +4323,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3957
4323
|
args: [{ alias: 'events' }]
|
|
3958
4324
|
}], currentDate: [{
|
|
3959
4325
|
type: Input,
|
|
3960
|
-
args: [{ alias: 'current-date' }]
|
|
4326
|
+
args: [{ alias: 'current-date', transform: (d) => new DateTz(d) }]
|
|
3961
4327
|
}], loading: [{
|
|
3962
4328
|
type: Input,
|
|
3963
4329
|
args: [{ alias: 'loading', transform: booleanAttribute }]
|
|
3964
4330
|
}], showToolbar: [{
|
|
3965
4331
|
type: Input,
|
|
3966
4332
|
args: [{ alias: 'show-toolbar', transform: booleanAttribute }]
|
|
4333
|
+
}], layout: [{
|
|
4334
|
+
type: Input,
|
|
4335
|
+
args: [{ alias: 'layout' }]
|
|
3967
4336
|
}], dateChange: [{
|
|
3968
4337
|
type: Output,
|
|
3969
4338
|
args: ['date-change']
|
|
@@ -3980,6 +4349,7 @@ const CALENDAR_COMPONENTS = [
|
|
|
3980
4349
|
CalendarHeaderComponent,
|
|
3981
4350
|
CalendarGrid,
|
|
3982
4351
|
CalendarWeekGridComponent,
|
|
4352
|
+
CalendarDayGridComponent,
|
|
3983
4353
|
CalendarMonthGridComponent,
|
|
3984
4354
|
CalendarEventComponent
|
|
3985
4355
|
];
|
|
@@ -4016,45 +4386,59 @@ class ChatItemComponent {
|
|
|
4016
4386
|
this.reply.emit(this.replayId);
|
|
4017
4387
|
}
|
|
4018
4388
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChatItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4019
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
4020
4390
|
<div [id]="id" class="chat-bubble-item" [class.left]="position==='left'" [class.right]="position==='right'">
|
|
4021
|
-
|
|
4022
|
-
<
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
<span class="name">{{replaySubject}}</span>
|
|
4030
|
-
<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">
|
|
4031
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
|
+
}
|
|
4032
4408
|
<div>
|
|
4033
4409
|
<ng-content/>
|
|
4034
4410
|
</div>
|
|
4035
4411
|
<i class="bi bi-check-all float-end"></i>
|
|
4036
4412
|
<span class="time float-end">{{ dateTime | date:'dd/MM HH:mm:ss' }}</span>
|
|
4037
4413
|
<rlb-dropdown direction="up" class="reaction">
|
|
4038
|
-
|
|
4414
|
+
@if (!reaction) {
|
|
4415
|
+
<a rlb-button rlb-dropdown
|
|
4039
4416
|
autoClose="manual" class="reaction add p-1"
|
|
4040
4417
|
[class.right]="position==='right'" [class.left]="position==='left'"
|
|
4041
4418
|
(status-changed)="this.reactionSelector.emit($event)">
|
|
4042
|
-
|
|
4043
|
-
|
|
4419
|
+
<i class="bi bi-plus m-0 p-0"></i>
|
|
4420
|
+
</a>
|
|
4421
|
+
}
|
|
4044
4422
|
<rlb-dropdown-container>
|
|
4045
4423
|
<ng-content select="[reaction-picker]" />
|
|
4046
4424
|
</rlb-dropdown-container>
|
|
4047
4425
|
</rlb-dropdown>
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
<img [src]="avatar" alt="avatar">
|
|
4426
|
+
@if (reaction) {
|
|
4427
|
+
<span class="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
|
|
4428
|
+
}
|
|
4052
4429
|
</div>
|
|
4053
|
-
|
|
4054
|
-
<
|
|
4055
|
-
|
|
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
|
+
}
|
|
4056
4440
|
</div>
|
|
4057
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
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" }] }); }
|
|
4058
4442
|
}
|
|
4059
4443
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChatItemComponent, decorators: [{
|
|
4060
4444
|
type: Component,
|
|
@@ -4062,41 +4446,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4062
4446
|
selector: 'rlb-chat-item',
|
|
4063
4447
|
template: `
|
|
4064
4448
|
<div [id]="id" class="chat-bubble-item" [class.left]="position==='left'" [class.right]="position==='right'">
|
|
4065
|
-
|
|
4066
|
-
<
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
<span class="name">{{replaySubject}}</span>
|
|
4074
|
-
<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">
|
|
4075
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
|
+
}
|
|
4076
4466
|
<div>
|
|
4077
4467
|
<ng-content/>
|
|
4078
4468
|
</div>
|
|
4079
4469
|
<i class="bi bi-check-all float-end"></i>
|
|
4080
4470
|
<span class="time float-end">{{ dateTime | date:'dd/MM HH:mm:ss' }}</span>
|
|
4081
4471
|
<rlb-dropdown direction="up" class="reaction">
|
|
4082
|
-
|
|
4472
|
+
@if (!reaction) {
|
|
4473
|
+
<a rlb-button rlb-dropdown
|
|
4083
4474
|
autoClose="manual" class="reaction add p-1"
|
|
4084
4475
|
[class.right]="position==='right'" [class.left]="position==='left'"
|
|
4085
4476
|
(status-changed)="this.reactionSelector.emit($event)">
|
|
4086
|
-
|
|
4087
|
-
|
|
4477
|
+
<i class="bi bi-plus m-0 p-0"></i>
|
|
4478
|
+
</a>
|
|
4479
|
+
}
|
|
4088
4480
|
<rlb-dropdown-container>
|
|
4089
4481
|
<ng-content select="[reaction-picker]" />
|
|
4090
4482
|
</rlb-dropdown-container>
|
|
4091
4483
|
</rlb-dropdown>
|
|
4092
|
-
|
|
4484
|
+
@if (reaction) {
|
|
4485
|
+
<span class="reaction" [class.right]="position==='right'" [class.left]="position==='left'" (click)="reactionClick.emit('remove')">{{reaction}}</span>
|
|
4486
|
+
}
|
|
4093
4487
|
</div>
|
|
4094
|
-
|
|
4095
|
-
<
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
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
|
+
}
|
|
4100
4498
|
</div>
|
|
4101
4499
|
`,
|
|
4102
4500
|
host: { '[class.ms-auto]': 'position === "right"' },
|
|
@@ -4162,7 +4560,7 @@ class ListItemImageComponent {
|
|
|
4162
4560
|
<span *ngIf="!counterEmpty"rlb-badge [pill]="counterPill" [color]="counterColor" [border]="counterBorder">{{ counter }}</span>
|
|
4163
4561
|
</div>
|
|
4164
4562
|
</div>
|
|
4165
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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"] }] }); }
|
|
4166
4564
|
}
|
|
4167
4565
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ListItemImageComponent, decorators: [{
|
|
4168
4566
|
type: Component,
|
|
@@ -4900,19 +5298,23 @@ class PaginationItemComponent {
|
|
|
4900
5298
|
this.viewContainerRef.element.nativeElement.remove();
|
|
4901
5299
|
}
|
|
4902
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 }); }
|
|
4903
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
4904
5302
|
<ng-template #template>
|
|
4905
5303
|
<li class="page-item {{ cssClass }}" [class.disabled]="disabled" [class.active]="active">
|
|
4906
|
-
|
|
5304
|
+
@if (isIcon) {
|
|
5305
|
+
<a class="page-link d-block" [attr.disabled]="disabled">
|
|
5306
|
+
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
5307
|
+
</a>
|
|
5308
|
+
} @else {
|
|
4907
5309
|
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
4908
|
-
|
|
5310
|
+
}
|
|
4909
5311
|
<ng-template #e>
|
|
4910
5312
|
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
4911
5313
|
</ng-template>
|
|
4912
5314
|
</li>
|
|
4913
5315
|
</ng-template>
|
|
4914
5316
|
<ng-template #content><ng-content /></ng-template>
|
|
4915
|
-
|
|
5317
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
4916
5318
|
}
|
|
4917
5319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PaginationItemComponent, decorators: [{
|
|
4918
5320
|
type: Component,
|
|
@@ -4921,16 +5323,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4921
5323
|
template: `
|
|
4922
5324
|
<ng-template #template>
|
|
4923
5325
|
<li class="page-item {{ cssClass }}" [class.disabled]="disabled" [class.active]="active">
|
|
4924
|
-
|
|
5326
|
+
@if (isIcon) {
|
|
5327
|
+
<a class="page-link d-block" [attr.disabled]="disabled">
|
|
5328
|
+
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
5329
|
+
</a>
|
|
5330
|
+
} @else {
|
|
4925
5331
|
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
4926
|
-
|
|
5332
|
+
}
|
|
4927
5333
|
<ng-template #e>
|
|
4928
5334
|
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
4929
5335
|
</ng-template>
|
|
4930
5336
|
</li>
|
|
4931
5337
|
</ng-template>
|
|
4932
5338
|
<ng-template #content><ng-content /></ng-template>
|
|
4933
|
-
|
|
5339
|
+
`,
|
|
4934
5340
|
standalone: false
|
|
4935
5341
|
}]
|
|
4936
5342
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { template: [{
|
|
@@ -5086,7 +5492,7 @@ class RlbPlaceholderComponent {
|
|
|
5086
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: `
|
|
5087
5493
|
<div [ngClass]="containerClass">
|
|
5088
5494
|
<ng-content/>
|
|
5089
|
-
</div>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
5495
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
5090
5496
|
}
|
|
5091
5497
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderComponent, decorators: [{
|
|
5092
5498
|
type: Component,
|
|
@@ -5118,18 +5524,19 @@ class RlbPlaceholderTextComponent {
|
|
|
5118
5524
|
return Array.from({ length: this.lines }).map(() => this.width);
|
|
5119
5525
|
}
|
|
5120
5526
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
5122
5528
|
<rlb-placeholder [animation]="animation">
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
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
|
+
}
|
|
5131
5538
|
</rlb-placeholder>
|
|
5132
|
-
|
|
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"] }] }); }
|
|
5133
5540
|
}
|
|
5134
5541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbPlaceholderTextComponent, decorators: [{
|
|
5135
5542
|
type: Component,
|
|
@@ -5138,16 +5545,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5138
5545
|
standalone: false,
|
|
5139
5546
|
template: `
|
|
5140
5547
|
<rlb-placeholder [animation]="animation">
|
|
5141
|
-
|
|
5142
|
-
|
|
5143
|
-
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
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
|
+
}
|
|
5149
5557
|
</rlb-placeholder>
|
|
5150
|
-
|
|
5558
|
+
`,
|
|
5151
5559
|
}]
|
|
5152
5560
|
}], propDecorators: { lines: [{
|
|
5153
5561
|
type: Input
|
|
@@ -5271,11 +5679,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5271
5679
|
args: ['scroll-change']
|
|
5272
5680
|
}] } });
|
|
5273
5681
|
|
|
5682
|
+
class SidebarService {
|
|
5683
|
+
constructor() {
|
|
5684
|
+
this.itemClickedSource = new Subject();
|
|
5685
|
+
this.itemClicked$ = this.itemClickedSource.asObservable();
|
|
5686
|
+
}
|
|
5687
|
+
notifyItemClicked() {
|
|
5688
|
+
this.itemClickedSource.next();
|
|
5689
|
+
}
|
|
5690
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5691
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarService, providedIn: 'root' }); }
|
|
5692
|
+
}
|
|
5693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarService, decorators: [{
|
|
5694
|
+
type: Injectable,
|
|
5695
|
+
args: [{
|
|
5696
|
+
providedIn: 'root'
|
|
5697
|
+
}]
|
|
5698
|
+
}] });
|
|
5699
|
+
|
|
5274
5700
|
class SidebarItemComponent {
|
|
5275
|
-
constructor(viewContainerRef, uniqueIdService, router) {
|
|
5701
|
+
constructor(viewContainerRef, uniqueIdService, router, sidebarService) {
|
|
5276
5702
|
this.viewContainerRef = viewContainerRef;
|
|
5277
5703
|
this.uniqueIdService = uniqueIdService;
|
|
5278
5704
|
this.router = router;
|
|
5705
|
+
this.sidebarService = sidebarService;
|
|
5279
5706
|
this.click = new EventEmitter();
|
|
5280
5707
|
this._id = '';
|
|
5281
5708
|
}
|
|
@@ -5288,40 +5715,54 @@ class SidebarItemComponent {
|
|
|
5288
5715
|
onItemClick(event) {
|
|
5289
5716
|
event.stopPropagation();
|
|
5290
5717
|
this.click.emit(event);
|
|
5718
|
+
if (!this.title && (!this.children || this.children.length === 0)) {
|
|
5719
|
+
this.sidebarService.notifyItemClicked();
|
|
5720
|
+
}
|
|
5291
5721
|
}
|
|
5292
|
-
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 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5293
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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 }); }
|
|
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: `
|
|
5294
5724
|
<ng-template #template>
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
|
|
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
|
+
}
|
|
5323
5764
|
</ng-template>
|
|
5324
|
-
|
|
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"] }] }); }
|
|
5325
5766
|
}
|
|
5326
5767
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarItemComponent, decorators: [{
|
|
5327
5768
|
type: Component,
|
|
@@ -5329,39 +5770,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5329
5770
|
selector: 'rlb-sidebar-item',
|
|
5330
5771
|
template: `
|
|
5331
5772
|
<ng-template #template>
|
|
5332
|
-
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
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
|
+
}
|
|
5360
5812
|
</ng-template>
|
|
5361
|
-
|
|
5813
|
+
`,
|
|
5362
5814
|
standalone: false
|
|
5363
5815
|
}]
|
|
5364
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: UniqueIdService }, { type: i2.Router }], propDecorators: { title: [{
|
|
5816
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: UniqueIdService }, { type: i2.Router }, { type: SidebarService }], propDecorators: { title: [{
|
|
5365
5817
|
type: Input
|
|
5366
5818
|
}], icon: [{
|
|
5367
5819
|
type: Input
|
|
@@ -5467,15 +5919,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5467
5919
|
* Sidebar component
|
|
5468
5920
|
*/
|
|
5469
5921
|
class SidebarComponent {
|
|
5470
|
-
|
|
5471
|
-
this.
|
|
5472
|
-
|
|
5473
|
-
constructor() {
|
|
5922
|
+
constructor(sidebarService, breakpointService) {
|
|
5923
|
+
this.sidebarService = sidebarService;
|
|
5924
|
+
this.breakpointService = breakpointService;
|
|
5474
5925
|
this.isCollapsed = false;
|
|
5926
|
+
this.subscription = new Subscription();
|
|
5475
5927
|
this.rounded = false;
|
|
5476
5928
|
}
|
|
5477
5929
|
ngOnInit() {
|
|
5478
|
-
this.
|
|
5930
|
+
this.subscription.add(this.breakpointService.isMobile$.subscribe((isMobile) => {
|
|
5931
|
+
this.setCollapsed(isMobile);
|
|
5932
|
+
}));
|
|
5933
|
+
this.subscription.add(this.sidebarService.itemClicked$.subscribe(() => {
|
|
5934
|
+
if (this.breakpointService.isMobile) {
|
|
5935
|
+
this.setCollapsed(true);
|
|
5936
|
+
}
|
|
5937
|
+
}));
|
|
5938
|
+
}
|
|
5939
|
+
ngOnDestroy() {
|
|
5940
|
+
this.subscription.unsubscribe();
|
|
5479
5941
|
}
|
|
5480
5942
|
toggleSidebar() {
|
|
5481
5943
|
this.setCollapsed(!this.isCollapsed);
|
|
@@ -5487,12 +5949,8 @@ class SidebarComponent {
|
|
|
5487
5949
|
content?.classList.toggle('expanded', collapsed);
|
|
5488
5950
|
sidebar?.classList.toggle('collapsed', collapsed);
|
|
5489
5951
|
}
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
this.setCollapsed(shouldCollapse);
|
|
5493
|
-
}
|
|
5494
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5495
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SidebarComponent, isStandalone: false, selector: "rlb-sidebar", inputs: { rounded: "rounded" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "sideMenu", first: true, predicate: ["sideMenu"], descendants: true }], ngImport: i0, template: `
|
|
5952
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarComponent, deps: [{ token: SidebarService }, { token: BreakpointService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5953
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SidebarComponent, isStandalone: false, selector: "rlb-sidebar", inputs: { rounded: "rounded" }, viewQueries: [{ propertyName: "sideMenu", first: true, predicate: ["sideMenu"], descendants: true }], ngImport: i0, template: `
|
|
5496
5954
|
<div class="vertical-menu" [class.rounded-2]="rounded">
|
|
5497
5955
|
<div id="sidebar-menu" class="w-100 h-100 overflow-y-auto">
|
|
5498
5956
|
<ul class="metismenu list-unstyled" id="side-menu" #sideMenu>
|
|
@@ -5535,15 +5993,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5535
5993
|
`,
|
|
5536
5994
|
standalone: false
|
|
5537
5995
|
}]
|
|
5538
|
-
}], ctorParameters: () => [], propDecorators: { sideMenu: [{
|
|
5996
|
+
}], ctorParameters: () => [{ type: SidebarService }, { type: BreakpointService }], propDecorators: { sideMenu: [{
|
|
5539
5997
|
type: ViewChild,
|
|
5540
5998
|
args: ['sideMenu']
|
|
5541
5999
|
}], rounded: [{
|
|
5542
6000
|
type: Input,
|
|
5543
6001
|
args: [{ alias: 'rounded', required: false }]
|
|
5544
|
-
}], onResize: [{
|
|
5545
|
-
type: HostListener,
|
|
5546
|
-
args: ['window:resize', ['$event']]
|
|
5547
6002
|
}] } });
|
|
5548
6003
|
|
|
5549
6004
|
class TabContentComponent {
|
|
@@ -6157,15 +6612,17 @@ class DataTableRowComponent {
|
|
|
6157
6612
|
}
|
|
6158
6613
|
}
|
|
6159
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 }); }
|
|
6160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
6161
6616
|
<ng-template #template>
|
|
6162
6617
|
<tr [class]="cssClass" [style]="cssStyle" (click)="rowClick.emit($event)">
|
|
6163
6618
|
<ng-content select="rlb-dt-cell"></ng-content>
|
|
6164
|
-
|
|
6165
|
-
<
|
|
6166
|
-
|
|
6619
|
+
@if (hasActions) {
|
|
6620
|
+
<rlb-dt-cell>
|
|
6621
|
+
<ng-container #projectedActions></ng-container>
|
|
6622
|
+
</rlb-dt-cell>
|
|
6623
|
+
}
|
|
6167
6624
|
</tr>
|
|
6168
|
-
</ng-template>`, isInline: true, dependencies: [{ kind: "
|
|
6625
|
+
</ng-template>`, isInline: true, dependencies: [{ kind: "component", type: DataTableCellComponent, selector: "rlb-dt-cell", inputs: ["col-span", "class", "style"] }] }); }
|
|
6169
6626
|
}
|
|
6170
6627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableRowComponent, decorators: [{
|
|
6171
6628
|
type: Component,
|
|
@@ -6175,9 +6632,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6175
6632
|
<ng-template #template>
|
|
6176
6633
|
<tr [class]="cssClass" [style]="cssStyle" (click)="rowClick.emit($event)">
|
|
6177
6634
|
<ng-content select="rlb-dt-cell"></ng-content>
|
|
6178
|
-
|
|
6179
|
-
<
|
|
6180
|
-
|
|
6635
|
+
@if (hasActions) {
|
|
6636
|
+
<rlb-dt-cell>
|
|
6637
|
+
<ng-container #projectedActions></ng-container>
|
|
6638
|
+
</rlb-dt-cell>
|
|
6639
|
+
}
|
|
6181
6640
|
</tr>
|
|
6182
6641
|
</ng-template>`,
|
|
6183
6642
|
standalone: false
|
|
@@ -6332,13 +6791,15 @@ class InputValidationComponent {
|
|
|
6332
6791
|
return `${i18nKey}: ${JSON.stringify(errorValue)}`;
|
|
6333
6792
|
}
|
|
6334
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 }); }
|
|
6335
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
6336
|
-
|
|
6337
|
-
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
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 }); }
|
|
6342
6803
|
}
|
|
6343
6804
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputValidationComponent, decorators: [{
|
|
6344
6805
|
type: Component,
|
|
@@ -6346,12 +6807,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6346
6807
|
selector: 'rlb-input-validation',
|
|
6347
6808
|
host: { class: 'invalid-feedback' },
|
|
6348
6809
|
template: `
|
|
6349
|
-
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6810
|
+
@if (errors) {
|
|
6811
|
+
@for (errorKey of getErrorKeys(errors); track errorKey) {
|
|
6812
|
+
<span>
|
|
6813
|
+
{{ getTranslatedError(errorKey, errors[errorKey]) }}
|
|
6814
|
+
</span>
|
|
6815
|
+
}
|
|
6816
|
+
}
|
|
6817
|
+
`,
|
|
6355
6818
|
standalone: false
|
|
6356
6819
|
}]
|
|
6357
6820
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -6421,7 +6884,7 @@ class SelectComponent extends AbstractComponent {
|
|
|
6421
6884
|
}
|
|
6422
6885
|
}
|
|
6423
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 }); }
|
|
6424
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
6425
6888
|
<ng-content select="[before]"></ng-content>
|
|
6426
6889
|
<div class="input-group has-validation">
|
|
6427
6890
|
<select
|
|
@@ -6441,13 +6904,17 @@ class SelectComponent extends AbstractComponent {
|
|
|
6441
6904
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
6442
6905
|
}"
|
|
6443
6906
|
(change)="update($event.target)"
|
|
6444
|
-
|
|
6445
|
-
|
|
6907
|
+
>
|
|
6908
|
+
@if (placeholder) {
|
|
6909
|
+
<option selected disabled>{{ placeholder }}</option>
|
|
6910
|
+
}
|
|
6446
6911
|
<ng-container #projectedDisplayOptions></ng-container>
|
|
6447
6912
|
</select>
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
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"] }] }); }
|
|
6451
6918
|
}
|
|
6452
6919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectComponent, decorators: [{
|
|
6453
6920
|
type: Component,
|
|
@@ -6473,12 +6940,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6473
6940
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
6474
6941
|
}"
|
|
6475
6942
|
(change)="update($event.target)"
|
|
6476
|
-
|
|
6477
|
-
|
|
6943
|
+
>
|
|
6944
|
+
@if (placeholder) {
|
|
6945
|
+
<option selected disabled>{{ placeholder }}</option>
|
|
6946
|
+
}
|
|
6478
6947
|
<ng-container #projectedDisplayOptions></ng-container>
|
|
6479
6948
|
</select>
|
|
6480
|
-
|
|
6481
|
-
|
|
6949
|
+
@if (errors && showError) {
|
|
6950
|
+
<rlb-input-validation [errors]="errors"/>
|
|
6951
|
+
}
|
|
6952
|
+
</div>
|
|
6482
6953
|
<ng-content select="[after]"></ng-content>`,
|
|
6483
6954
|
standalone: false
|
|
6484
6955
|
}]
|
|
@@ -6524,6 +6995,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6524
6995
|
class DataTableComponent {
|
|
6525
6996
|
constructor() {
|
|
6526
6997
|
this.creationStrategy = 'none';
|
|
6998
|
+
this.items = [];
|
|
6527
6999
|
this.paginationMode = 'none';
|
|
6528
7000
|
this.tableStriped = true; // default true to keep main table styling
|
|
6529
7001
|
this.showActions = 'row';
|
|
@@ -6660,11 +7132,11 @@ class DataTableComponent {
|
|
|
6660
7132
|
// c?.scrollBy({ left: ev.deltaY < 0 ? -15 : 15 });
|
|
6661
7133
|
}
|
|
6662
7134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6663
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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\">«</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\">»</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"] }] }); }
|
|
6664
7136
|
}
|
|
6665
7137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
6666
7138
|
type: Component,
|
|
6667
|
-
args: [{ selector: 'rlb-dt-table', standalone: false, template: "
|
|
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\">«</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\">»</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" }]
|
|
6668
7140
|
}], propDecorators: { title: [{
|
|
6669
7141
|
type: Input,
|
|
6670
7142
|
args: [{ alias: 'title' }]
|
|
@@ -8355,7 +8827,7 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
|
|
|
8355
8827
|
}
|
|
8356
8828
|
}
|
|
8357
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 }); }
|
|
8358
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
8359
8831
|
<ng-content select="[before]"></ng-content>
|
|
8360
8832
|
<div class="input-group has-validation">
|
|
8361
8833
|
<input
|
|
@@ -8363,8 +8835,8 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
|
|
|
8363
8835
|
[id]="id"
|
|
8364
8836
|
class="form-control"
|
|
8365
8837
|
type="text"
|
|
8366
|
-
|
|
8367
|
-
|
|
8838
|
+
[attr.autocomplete]="'off'"
|
|
8839
|
+
[attr.disabled]="disabled ? true : undefined"
|
|
8368
8840
|
[attr.readonly]="readonly ? true : undefined"
|
|
8369
8841
|
[attr.placeholder]="placeholder"
|
|
8370
8842
|
[class.form-control-lg]="size === 'large'"
|
|
@@ -8375,25 +8847,28 @@ class AutocompleteCountryDialCodeComponent extends AbstractAutocompleteComponent
|
|
|
8375
8847
|
'is-valid': control?.touched && control?.valid
|
|
8376
8848
|
}"
|
|
8377
8849
|
(input)="update($event.target)"
|
|
8378
|
-
|
|
8379
|
-
|
|
8380
|
-
|
|
8381
|
-
|
|
8382
|
-
|
|
8383
|
-
|
|
8384
|
-
|
|
8385
|
-
|
|
8386
|
-
|
|
8387
|
-
|
|
8388
|
-
|
|
8389
|
-
|
|
8390
|
-
|
|
8391
|
-
[
|
|
8392
|
-
|
|
8393
|
-
|
|
8394
|
-
|
|
8395
|
-
|
|
8396
|
-
|
|
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"] }] }); }
|
|
8397
8872
|
}
|
|
8398
8873
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryDialCodeComponent, decorators: [{
|
|
8399
8874
|
type: Component,
|
|
@@ -8407,8 +8882,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8407
8882
|
[id]="id"
|
|
8408
8883
|
class="form-control"
|
|
8409
8884
|
type="text"
|
|
8410
|
-
|
|
8411
|
-
|
|
8885
|
+
[attr.autocomplete]="'off'"
|
|
8886
|
+
[attr.disabled]="disabled ? true : undefined"
|
|
8412
8887
|
[attr.readonly]="readonly ? true : undefined"
|
|
8413
8888
|
[attr.placeholder]="placeholder"
|
|
8414
8889
|
[class.form-control-lg]="size === 'large'"
|
|
@@ -8419,25 +8894,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8419
8894
|
'is-valid': control?.touched && control?.valid
|
|
8420
8895
|
}"
|
|
8421
8896
|
(input)="update($event.target)"
|
|
8422
|
-
|
|
8423
|
-
|
|
8424
|
-
|
|
8425
|
-
|
|
8426
|
-
|
|
8427
|
-
|
|
8428
|
-
|
|
8429
|
-
|
|
8430
|
-
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
[
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8439
|
-
|
|
8440
|
-
|
|
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
|
+
`,
|
|
8441
8919
|
standalone: false
|
|
8442
8920
|
}]
|
|
8443
8921
|
}], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
|
|
@@ -8695,7 +9173,7 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
|
|
|
8695
9173
|
}
|
|
8696
9174
|
}
|
|
8697
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 }); }
|
|
8698
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
8699
9177
|
<ng-content select="[before]"></ng-content>
|
|
8700
9178
|
<div class="input-group has-validation">
|
|
8701
9179
|
<input
|
|
@@ -8703,8 +9181,8 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
|
|
|
8703
9181
|
[id]="id"
|
|
8704
9182
|
class="form-control"
|
|
8705
9183
|
type="text"
|
|
8706
|
-
|
|
8707
|
-
|
|
9184
|
+
[attr.autocomplete]="'off'"
|
|
9185
|
+
[attr.disabled]="disabled ? true : undefined"
|
|
8708
9186
|
[attr.readonly]="readonly ? true : undefined"
|
|
8709
9187
|
[attr.placeholder]="placeholder"
|
|
8710
9188
|
[class.form-control-lg]="size === 'large'"
|
|
@@ -8715,25 +9193,28 @@ class AutocompleteCountryComponent extends AbstractAutocompleteComponent {
|
|
|
8715
9193
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
8716
9194
|
}"
|
|
8717
9195
|
(input)="update($event.target)"
|
|
8718
|
-
|
|
8719
|
-
|
|
8720
|
-
|
|
8721
|
-
|
|
8722
|
-
|
|
8723
|
-
|
|
8724
|
-
|
|
8725
|
-
|
|
8726
|
-
|
|
8727
|
-
|
|
8728
|
-
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
[
|
|
8732
|
-
|
|
8733
|
-
|
|
8734
|
-
|
|
8735
|
-
|
|
8736
|
-
|
|
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"] }] }); }
|
|
8737
9218
|
}
|
|
8738
9219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteCountryComponent, decorators: [{
|
|
8739
9220
|
type: Component,
|
|
@@ -8747,8 +9228,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8747
9228
|
[id]="id"
|
|
8748
9229
|
class="form-control"
|
|
8749
9230
|
type="text"
|
|
8750
|
-
|
|
8751
|
-
|
|
9231
|
+
[attr.autocomplete]="'off'"
|
|
9232
|
+
[attr.disabled]="disabled ? true : undefined"
|
|
8752
9233
|
[attr.readonly]="readonly ? true : undefined"
|
|
8753
9234
|
[attr.placeholder]="placeholder"
|
|
8754
9235
|
[class.form-control-lg]="size === 'large'"
|
|
@@ -8759,25 +9240,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8759
9240
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
8760
9241
|
}"
|
|
8761
9242
|
(input)="update($event.target)"
|
|
8762
|
-
|
|
8763
|
-
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
|
|
8767
|
-
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
[
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
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
|
+
`,
|
|
8781
9265
|
standalone: false
|
|
8782
9266
|
}]
|
|
8783
9267
|
}], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
|
|
@@ -8823,7 +9307,7 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
|
|
|
8823
9307
|
return '';
|
|
8824
9308
|
}
|
|
8825
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 }); }
|
|
8826
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
8827
9311
|
<ng-content select="[before]"></ng-content>
|
|
8828
9312
|
<div class="input-group has-validation">
|
|
8829
9313
|
<input
|
|
@@ -8834,8 +9318,8 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
|
|
|
8834
9318
|
[attr.disabled]="disabled ? true : undefined"
|
|
8835
9319
|
[attr.readonly]="readonly ? true : undefined"
|
|
8836
9320
|
[attr.placeholder]="placeholder"
|
|
8837
|
-
|
|
8838
|
-
|
|
9321
|
+
[attr.autocomplete]="'off'"
|
|
9322
|
+
[class.form-control-lg]="size === 'large'"
|
|
8839
9323
|
[class.form-control-sm]="size === 'small'"
|
|
8840
9324
|
(blur)="touch()"
|
|
8841
9325
|
[ngClass]="{
|
|
@@ -8843,25 +9327,28 @@ class AutocompleteTimezonesComponent extends AbstractAutocompleteComponent {
|
|
|
8843
9327
|
'is-valid': control?.touched && control?.valid
|
|
8844
9328
|
}"
|
|
8845
9329
|
(input)="update($event.target)"
|
|
8846
|
-
|
|
8847
|
-
|
|
8848
|
-
|
|
8849
|
-
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
[
|
|
8860
|
-
|
|
8861
|
-
|
|
8862
|
-
|
|
8863
|
-
|
|
8864
|
-
|
|
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"] }] }); }
|
|
8865
9352
|
}
|
|
8866
9353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteTimezonesComponent, decorators: [{
|
|
8867
9354
|
type: Component,
|
|
@@ -8878,8 +9365,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8878
9365
|
[attr.disabled]="disabled ? true : undefined"
|
|
8879
9366
|
[attr.readonly]="readonly ? true : undefined"
|
|
8880
9367
|
[attr.placeholder]="placeholder"
|
|
8881
|
-
|
|
8882
|
-
|
|
9368
|
+
[attr.autocomplete]="'off'"
|
|
9369
|
+
[class.form-control-lg]="size === 'large'"
|
|
8883
9370
|
[class.form-control-sm]="size === 'small'"
|
|
8884
9371
|
(blur)="touch()"
|
|
8885
9372
|
[ngClass]="{
|
|
@@ -8887,25 +9374,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8887
9374
|
'is-valid': control?.touched && control?.valid
|
|
8888
9375
|
}"
|
|
8889
9376
|
(input)="update($event.target)"
|
|
8890
|
-
|
|
8891
|
-
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8896
|
-
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8901
|
-
|
|
8902
|
-
|
|
8903
|
-
[
|
|
8904
|
-
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
|
|
8908
|
-
|
|
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
|
+
`,
|
|
8909
9399
|
standalone: false
|
|
8910
9400
|
}]
|
|
8911
9401
|
}], ctorParameters: () => [{ type: UniqueIdService }, { type: i0.Renderer2 }, { type: i2$2.NgControl, decorators: [{
|
|
@@ -9080,7 +9570,7 @@ class AutocompleteComponent extends AbstractComponent {
|
|
|
9080
9570
|
}
|
|
9081
9571
|
}
|
|
9082
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 }); }
|
|
9083
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
9084
9574
|
<ng-content select="[before]"></ng-content>
|
|
9085
9575
|
<div class="input-group has-validation">
|
|
9086
9576
|
<input
|
|
@@ -9102,26 +9592,29 @@ class AutocompleteComponent extends AbstractComponent {
|
|
|
9102
9592
|
}"
|
|
9103
9593
|
(input)="update($event.target)"
|
|
9104
9594
|
(keyup.enter)="onEnter($event.target)"
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
|
|
9114
|
-
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
[
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
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'"
|
|
9123
9616
|
[style.max-width.px]="menuMaxWidth"></div>
|
|
9124
|
-
|
|
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"] }] }); }
|
|
9125
9618
|
}
|
|
9126
9619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
9127
9620
|
type: Component,
|
|
@@ -9149,26 +9642,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
9149
9642
|
}"
|
|
9150
9643
|
(input)="update($event.target)"
|
|
9151
9644
|
(keyup.enter)="onEnter($event.target)"
|
|
9152
|
-
|
|
9153
|
-
|
|
9154
|
-
|
|
9155
|
-
|
|
9156
|
-
|
|
9157
|
-
|
|
9158
|
-
|
|
9159
|
-
|
|
9160
|
-
|
|
9161
|
-
|
|
9162
|
-
|
|
9163
|
-
|
|
9164
|
-
|
|
9165
|
-
[
|
|
9166
|
-
|
|
9167
|
-
|
|
9168
|
-
|
|
9169
|
-
|
|
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'"
|
|
9170
9666
|
[style.max-width.px]="menuMaxWidth"></div>
|
|
9171
|
-
|
|
9667
|
+
`,
|
|
9172
9668
|
standalone: false,
|
|
9173
9669
|
host: {
|
|
9174
9670
|
style: 'position: relative;',
|
|
@@ -9297,7 +9793,7 @@ class CheckboxComponent extends AbstractComponent {
|
|
|
9297
9793
|
{{ errors | json }}
|
|
9298
9794
|
</div>
|
|
9299
9795
|
<ng-content select="[after]"></ng-content>
|
|
9300
|
-
</div>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
9796
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] }); }
|
|
9301
9797
|
}
|
|
9302
9798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
9303
9799
|
type: Component,
|
|
@@ -9385,7 +9881,7 @@ class ColorComponent extends AbstractComponent {
|
|
|
9385
9881
|
{{ errors | json }}
|
|
9386
9882
|
</div>
|
|
9387
9883
|
</div>
|
|
9388
|
-
<ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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" }] }); }
|
|
9389
9885
|
}
|
|
9390
9886
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ColorComponent, decorators: [{
|
|
9391
9887
|
type: Component,
|
|
@@ -9482,7 +9978,7 @@ class DatalistComponent extends AbstractComponent {
|
|
|
9482
9978
|
{{ errors | json }}
|
|
9483
9979
|
</div>
|
|
9484
9980
|
</div>
|
|
9485
|
-
<ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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" }] }); }
|
|
9486
9982
|
}
|
|
9487
9983
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DatalistComponent, decorators: [{
|
|
9488
9984
|
type: Component,
|
|
@@ -9650,7 +10146,7 @@ class FileDndComponent {
|
|
|
9650
10146
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
9651
10147
|
}
|
|
9652
10148
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDndComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9653
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
9654
10150
|
<div class="rlb-file-dnd" rlb-dnd [multiple]="multiple" (fileDropped)="onFileDropped($event)">
|
|
9655
10151
|
<input type="file" #fileDropRef id="fileDropRef" [attr.multiple]="multiple?'':undefined" (change)="fileBrowseHandler($event)" />
|
|
9656
10152
|
<i class="bi bi-upload"></i>
|
|
@@ -9659,18 +10155,20 @@ class FileDndComponent {
|
|
|
9659
10155
|
<label class="btn btn-primary" for="fileDropRef">{{ data.content?.button }}</label>
|
|
9660
10156
|
</div>
|
|
9661
10157
|
<div class="rlb-file-dnd-list">
|
|
9662
|
-
|
|
9663
|
-
<
|
|
9664
|
-
|
|
9665
|
-
<
|
|
9666
|
-
|
|
9667
|
-
|
|
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>
|
|
9668
10169
|
</div>
|
|
9669
|
-
|
|
9670
|
-
|
|
9671
|
-
</button>
|
|
9672
|
-
</div>
|
|
9673
|
-
</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"] }] }); }
|
|
9674
10172
|
}
|
|
9675
10173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileDndComponent, decorators: [{
|
|
9676
10174
|
type: Component,
|
|
@@ -9685,17 +10183,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
9685
10183
|
<label class="btn btn-primary" for="fileDropRef">{{ data.content?.button }}</label>
|
|
9686
10184
|
</div>
|
|
9687
10185
|
<div class="rlb-file-dnd-list">
|
|
9688
|
-
|
|
9689
|
-
<
|
|
9690
|
-
|
|
9691
|
-
<
|
|
9692
|
-
|
|
9693
|
-
|
|
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>
|
|
9694
10197
|
</div>
|
|
9695
|
-
|
|
9696
|
-
<i class="bi bi-trash" (click)="deleteFile(file)"></i>
|
|
9697
|
-
</button>
|
|
9698
|
-
</div>
|
|
10198
|
+
}
|
|
9699
10199
|
</div>`,
|
|
9700
10200
|
standalone: false
|
|
9701
10201
|
}]
|
|
@@ -9762,7 +10262,7 @@ class FileComponent extends AbstractComponent {
|
|
|
9762
10262
|
{{ errors | json }}
|
|
9763
10263
|
</div>
|
|
9764
10264
|
</div>
|
|
9765
|
-
<ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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" }] }); }
|
|
9766
10266
|
}
|
|
9767
10267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileComponent, decorators: [{
|
|
9768
10268
|
type: Component,
|
|
@@ -9989,34 +10489,36 @@ class InputComponent extends AbstractComponent {
|
|
|
9989
10489
|
return result;
|
|
9990
10490
|
}
|
|
9991
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 }); }
|
|
9992
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
9993
10493
|
<ng-template #template>
|
|
9994
10494
|
<ng-content select="[before]"></ng-content>
|
|
9995
|
-
|
|
9996
|
-
|
|
9997
|
-
|
|
9998
|
-
|
|
9999
|
-
|
|
10000
|
-
|
|
10001
|
-
|
|
10002
|
-
|
|
10003
|
-
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
|
|
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()"
|
|
10011
10511
|
[ngClass]="{
|
|
10012
10512
|
'is-invalid': control?.touched && control?.invalid && enableValidation,
|
|
10013
10513
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
10014
10514
|
}"
|
|
10015
|
-
|
|
10515
|
+
(input)="update($event.target)"
|
|
10016
10516
|
/>
|
|
10017
|
-
|
|
10018
|
-
|
|
10019
|
-
|
|
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"] }] }); }
|
|
10020
10522
|
}
|
|
10021
10523
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InputComponent, decorators: [{
|
|
10022
10524
|
type: Component,
|
|
@@ -10025,31 +10527,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
10025
10527
|
template: `
|
|
10026
10528
|
<ng-template #template>
|
|
10027
10529
|
<ng-content select="[before]"></ng-content>
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10040
|
-
|
|
10041
|
-
|
|
10042
|
-
|
|
10043
|
-
|
|
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()"
|
|
10044
10546
|
[ngClass]="{
|
|
10045
10547
|
'is-invalid': control?.touched && control?.invalid && enableValidation,
|
|
10046
10548
|
'is-valid': control?.touched && control?.valid && enableValidation
|
|
10047
10549
|
}"
|
|
10048
|
-
|
|
10550
|
+
(input)="update($event.target)"
|
|
10049
10551
|
/>
|
|
10050
|
-
|
|
10051
|
-
|
|
10052
|
-
|
|
10552
|
+
@if (!extValidation && showError) {
|
|
10553
|
+
<rlb-input-validation [errors]="errors"/>
|
|
10554
|
+
}
|
|
10555
|
+
<ng-content select="[after]"></ng-content>
|
|
10556
|
+
</ng-template>`,
|
|
10053
10557
|
standalone: false
|
|
10054
10558
|
}]
|
|
10055
10559
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: UniqueIdService }, { type: i2$2.NgControl, decorators: [{
|
|
@@ -10188,10 +10692,10 @@ class RadioComponent extends AbstractComponent {
|
|
|
10188
10692
|
}
|
|
10189
10693
|
}
|
|
10190
10694
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
10191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
10192
10696
|
<div class="input-group has-validation">
|
|
10193
10697
|
<ng-content select="[before]"></ng-content>
|
|
10194
|
-
|
|
10698
|
+
@for (option of options; track option; let i = $index) {
|
|
10195
10699
|
<div class="form-check">
|
|
10196
10700
|
<input
|
|
10197
10701
|
#field
|
|
@@ -10206,15 +10710,15 @@ class RadioComponent extends AbstractComponent {
|
|
|
10206
10710
|
(blur)="touch()"
|
|
10207
10711
|
[ngClass]="{ 'is-invalid': control?.touched && control?.invalid }"
|
|
10208
10712
|
(change)="update($event.target)"
|
|
10209
|
-
|
|
10210
|
-
|
|
10713
|
+
/>
|
|
10714
|
+
<span #content></span>
|
|
10715
|
+
</div>
|
|
10716
|
+
}
|
|
10717
|
+
<ng-content select="[after]"></ng-content>
|
|
10718
|
+
<div class="invalid-feedback">
|
|
10719
|
+
{{ errors | json }}
|
|
10211
10720
|
</div>
|
|
10212
|
-
</
|
|
10213
|
-
<ng-content select="[after]"></ng-content>
|
|
10214
|
-
<div class="invalid-feedback">
|
|
10215
|
-
{{ errors | json }}
|
|
10216
|
-
</div>
|
|
10217
|
-
</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" }] }); }
|
|
10218
10722
|
}
|
|
10219
10723
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RadioComponent, decorators: [{
|
|
10220
10724
|
type: Component,
|
|
@@ -10223,7 +10727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
10223
10727
|
template: `
|
|
10224
10728
|
<div class="input-group has-validation">
|
|
10225
10729
|
<ng-content select="[before]"></ng-content>
|
|
10226
|
-
|
|
10730
|
+
@for (option of options; track option; let i = $index) {
|
|
10227
10731
|
<div class="form-check">
|
|
10228
10732
|
<input
|
|
10229
10733
|
#field
|
|
@@ -10238,15 +10742,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
10238
10742
|
(blur)="touch()"
|
|
10239
10743
|
[ngClass]="{ 'is-invalid': control?.touched && control?.invalid }"
|
|
10240
10744
|
(change)="update($event.target)"
|
|
10241
|
-
|
|
10242
|
-
|
|
10745
|
+
/>
|
|
10746
|
+
<span #content></span>
|
|
10747
|
+
</div>
|
|
10748
|
+
}
|
|
10749
|
+
<ng-content select="[after]"></ng-content>
|
|
10750
|
+
<div class="invalid-feedback">
|
|
10751
|
+
{{ errors | json }}
|
|
10243
10752
|
</div>
|
|
10244
|
-
</
|
|
10245
|
-
<ng-content select="[after]"></ng-content>
|
|
10246
|
-
<div class="invalid-feedback">
|
|
10247
|
-
{{ errors | json }}
|
|
10248
|
-
</div>
|
|
10249
|
-
</div>`,
|
|
10753
|
+
</div>`,
|
|
10250
10754
|
standalone: false
|
|
10251
10755
|
}]
|
|
10252
10756
|
}], propDecorators: { disabled: [{
|
|
@@ -10313,7 +10817,7 @@ class RangeComponent extends AbstractComponent {
|
|
|
10313
10817
|
{{ errors | json }}
|
|
10314
10818
|
</div>
|
|
10315
10819
|
</div>
|
|
10316
|
-
<ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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" }] }); }
|
|
10317
10821
|
}
|
|
10318
10822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RangeComponent, decorators: [{
|
|
10319
10823
|
type: Component,
|
|
@@ -10425,7 +10929,7 @@ class SwitchComponent extends AbstractComponent {
|
|
|
10425
10929
|
|
|
10426
10930
|
<ng-content select="[after]"></ng-content>
|
|
10427
10931
|
</div>
|
|
10428
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
10932
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
10429
10933
|
}
|
|
10430
10934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SwitchComponent, decorators: [{
|
|
10431
10935
|
type: Component,
|
|
@@ -10518,7 +11022,7 @@ class TextAreaComponent extends AbstractComponent {
|
|
|
10518
11022
|
{{ errors | json }}
|
|
10519
11023
|
</div>
|
|
10520
11024
|
</div>
|
|
10521
|
-
<ng-content select="[after]"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
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" }] }); }
|
|
10522
11026
|
}
|
|
10523
11027
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
10524
11028
|
type: Component,
|
|
@@ -10652,11 +11156,11 @@ class FormFieldsComponent {
|
|
|
10652
11156
|
this.form.onSubmit({});
|
|
10653
11157
|
}
|
|
10654
11158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10655
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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" }] }); }
|
|
10656
11160
|
}
|
|
10657
11161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormFieldsComponent, decorators: [{
|
|
10658
11162
|
type: Component,
|
|
10659
|
-
args: [{ selector: 'rlb-form-fields', standalone: false, template: "
|
|
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" }]
|
|
10660
11164
|
}], propDecorators: { title: [{
|
|
10661
11165
|
type: Input,
|
|
10662
11166
|
args: [{ alias: 'title' }]
|
|
@@ -10695,7 +11199,7 @@ const COMPONENT_BUILDER = [ComponentHostDirective];
|
|
|
10695
11199
|
|
|
10696
11200
|
class RlbBootstrapModule {
|
|
10697
11201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbBootstrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10698
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: RlbBootstrapModule, declarations: [DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableHeaderComponent, DataTableRowComponent, DataTableComponent, DataTableLoadingComponent, DataTableNoItemsComponent, AutocompleteComponent, CheckboxComponent, InputComponent, SwitchComponent, TextAreaComponent, ColorComponent, DatalistComponent, RangeComponent, SelectComponent, RadioComponent, OptionComponent, FileComponent, InputGroupComponent, HelpText, DndDirective, FileDndComponent, InputValidationComponent, AutocompleteCountryComponent, AutocompleteTimezonesComponent, AutocompleteCountryDialCodeComponent, AlertComponent, BreadcrumbComponent, AccordionComponent, AccordionItemComponent, AccordionHeaderComponent, AccordionBodyComponent, ButtonComponent, ButtonCloseComponent, ButtonGroupComponent, ButtonToolbarComponent, RlbFabComponent, BadgeDirective, BadgeComponent, CardBodyComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CardComponent, SpinnerComponent, ProgressComponent, TooltipDirective, PopoverDirective, PlaceholderDirective, CollapseComponent, DropdownComponent, DropdownContainerComponent, DropdownMenuItemComponent, DropdownDirective, NavbarBrandDirective, NavbarComponent, NavbarFormComponent, NavbarTextComponent, NavbarItemsComponent, NavbarDropdownItemComponent, NavbarItemComponent, NavbarSeparatorComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OffcanvasBodyComponent, ToggleDirective, SidebarComponent, SidebarItemComponent, NavComponent, NavItemComponent, TabsComponent, TabComponent, TabContentComponent, TabPaneComponent, PaginationItemComponent, PaginationComponent, ScrollspyDirective, CarouselComponent, CarouselCaptionComponent, CarouselSlideComponent, ListComponent, ListItemComponent, ListItemImageComponent, AvatarComponent, ChatContainerComponent, ChatItemComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ModalContainerComponent, ToastContainerComponent, CalendarComponent, CalendarHeaderComponent, CalendarGrid, CalendarWeekGridComponent, CalendarMonthGridComponent, CalendarEventComponent, ComponentHostDirective, DateTzPipe, MonthFormatterPipe, DayOfWeekPipe, FormFieldsComponent], imports: [CommonModule,
|
|
11202
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: RlbBootstrapModule, declarations: [DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableHeaderComponent, DataTableRowComponent, DataTableComponent, DataTableLoadingComponent, DataTableNoItemsComponent, AutocompleteComponent, CheckboxComponent, InputComponent, SwitchComponent, TextAreaComponent, ColorComponent, DatalistComponent, RangeComponent, SelectComponent, RadioComponent, OptionComponent, FileComponent, InputGroupComponent, HelpText, DndDirective, FileDndComponent, InputValidationComponent, AutocompleteCountryComponent, AutocompleteTimezonesComponent, AutocompleteCountryDialCodeComponent, AlertComponent, BreadcrumbComponent, AccordionComponent, AccordionItemComponent, AccordionHeaderComponent, AccordionBodyComponent, ButtonComponent, ButtonCloseComponent, ButtonGroupComponent, ButtonToolbarComponent, RlbFabComponent, BadgeDirective, BadgeComponent, CardBodyComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CardComponent, SpinnerComponent, ProgressComponent, TooltipDirective, PopoverDirective, PlaceholderDirective, CollapseComponent, DropdownComponent, DropdownContainerComponent, DropdownMenuItemComponent, DropdownDirective, NavbarBrandDirective, NavbarComponent, NavbarFormComponent, NavbarTextComponent, NavbarItemsComponent, NavbarDropdownItemComponent, NavbarItemComponent, NavbarSeparatorComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OffcanvasBodyComponent, ToggleDirective, SidebarComponent, SidebarItemComponent, NavComponent, NavItemComponent, TabsComponent, TabComponent, TabContentComponent, TabPaneComponent, PaginationItemComponent, PaginationComponent, ScrollspyDirective, CarouselComponent, CarouselCaptionComponent, CarouselSlideComponent, ListComponent, ListItemComponent, ListItemImageComponent, AvatarComponent, ChatContainerComponent, ChatItemComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ModalContainerComponent, ToastContainerComponent, CalendarComponent, CalendarHeaderComponent, CalendarGrid, CalendarWeekGridComponent, CalendarDayGridComponent, CalendarMonthGridComponent, CalendarEventComponent, ComponentHostDirective, DateTzPipe, MonthFormatterPipe, DayOfWeekPipe, FormFieldsComponent], imports: [CommonModule,
|
|
10699
11203
|
FormsModule,
|
|
10700
11204
|
ReactiveFormsModule,
|
|
10701
11205
|
TranslateModule,
|
|
@@ -10704,7 +11208,7 @@ class RlbBootstrapModule {
|
|
|
10704
11208
|
CdkDropListGroup,
|
|
10705
11209
|
CdkDropList,
|
|
10706
11210
|
CdkDragPlaceholder,
|
|
10707
|
-
CdkDragPreview], exports: [DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableHeaderComponent, DataTableRowComponent, DataTableComponent, DataTableLoadingComponent, DataTableNoItemsComponent, AutocompleteComponent, CheckboxComponent, InputComponent, SwitchComponent, TextAreaComponent, ColorComponent, DatalistComponent, RangeComponent, SelectComponent, RadioComponent, OptionComponent, FileComponent, InputGroupComponent, HelpText, DndDirective, FileDndComponent, InputValidationComponent, AutocompleteCountryComponent, AutocompleteTimezonesComponent, AutocompleteCountryDialCodeComponent, AlertComponent, BreadcrumbComponent, AccordionComponent, AccordionItemComponent, AccordionHeaderComponent, AccordionBodyComponent, ButtonComponent, ButtonCloseComponent, ButtonGroupComponent, ButtonToolbarComponent, RlbFabComponent, BadgeDirective, BadgeComponent, CardBodyComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CardComponent, SpinnerComponent, ProgressComponent, TooltipDirective, PopoverDirective, PlaceholderDirective, CollapseComponent, DropdownComponent, DropdownContainerComponent, DropdownMenuItemComponent, DropdownDirective, NavbarBrandDirective, NavbarComponent, NavbarFormComponent, NavbarTextComponent, NavbarItemsComponent, NavbarDropdownItemComponent, NavbarItemComponent, NavbarSeparatorComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OffcanvasBodyComponent, ToggleDirective, SidebarComponent, SidebarItemComponent, NavComponent, NavItemComponent, TabsComponent, TabComponent, TabContentComponent, TabPaneComponent, PaginationItemComponent, PaginationComponent, ScrollspyDirective, CarouselComponent, CarouselCaptionComponent, CarouselSlideComponent, ListComponent, ListItemComponent, ListItemImageComponent, AvatarComponent, ChatContainerComponent, ChatItemComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ModalContainerComponent, ToastContainerComponent, CalendarComponent, CalendarHeaderComponent, CalendarGrid, CalendarWeekGridComponent, CalendarMonthGridComponent, CalendarEventComponent, DateTzPipe, MonthFormatterPipe, DayOfWeekPipe, FormFieldsComponent] }); }
|
|
11211
|
+
CdkDragPreview], exports: [DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableHeaderComponent, DataTableRowComponent, DataTableComponent, DataTableLoadingComponent, DataTableNoItemsComponent, AutocompleteComponent, CheckboxComponent, InputComponent, SwitchComponent, TextAreaComponent, ColorComponent, DatalistComponent, RangeComponent, SelectComponent, RadioComponent, OptionComponent, FileComponent, InputGroupComponent, HelpText, DndDirective, FileDndComponent, InputValidationComponent, AutocompleteCountryComponent, AutocompleteTimezonesComponent, AutocompleteCountryDialCodeComponent, AlertComponent, BreadcrumbComponent, AccordionComponent, AccordionItemComponent, AccordionHeaderComponent, AccordionBodyComponent, ButtonComponent, ButtonCloseComponent, ButtonGroupComponent, ButtonToolbarComponent, RlbFabComponent, BadgeDirective, BadgeComponent, CardBodyComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CardComponent, SpinnerComponent, ProgressComponent, TooltipDirective, PopoverDirective, PlaceholderDirective, CollapseComponent, DropdownComponent, DropdownContainerComponent, DropdownMenuItemComponent, DropdownDirective, NavbarBrandDirective, NavbarComponent, NavbarFormComponent, NavbarTextComponent, NavbarItemsComponent, NavbarDropdownItemComponent, NavbarItemComponent, NavbarSeparatorComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OffcanvasBodyComponent, ToggleDirective, SidebarComponent, SidebarItemComponent, NavComponent, NavItemComponent, TabsComponent, TabComponent, TabContentComponent, TabPaneComponent, PaginationItemComponent, PaginationComponent, ScrollspyDirective, CarouselComponent, CarouselCaptionComponent, CarouselSlideComponent, ListComponent, ListItemComponent, ListItemImageComponent, AvatarComponent, ChatContainerComponent, ChatItemComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ModalContainerComponent, ToastContainerComponent, CalendarComponent, CalendarHeaderComponent, CalendarGrid, CalendarWeekGridComponent, CalendarDayGridComponent, CalendarMonthGridComponent, CalendarEventComponent, DateTzPipe, MonthFormatterPipe, DayOfWeekPipe, FormFieldsComponent] }); }
|
|
10708
11212
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RlbBootstrapModule, imports: [CommonModule,
|
|
10709
11213
|
FormsModule,
|
|
10710
11214
|
ReactiveFormsModule,
|
|
@@ -10783,12 +11287,12 @@ class SearchModalComponent {
|
|
|
10783
11287
|
<i class="bi bi-search"></i>
|
|
10784
11288
|
</button>
|
|
10785
11289
|
</rlb-input>
|
|
10786
|
-
</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"] }
|
|
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"] }] }); }
|
|
10787
11291
|
}
|
|
10788
11292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchModalComponent, decorators: [{
|
|
10789
11293
|
type: Component,
|
|
10790
11294
|
args: [{
|
|
10791
|
-
imports: [RlbBootstrapModule, FormsModule
|
|
11295
|
+
imports: [RlbBootstrapModule, FormsModule],
|
|
10792
11296
|
standalone: true,
|
|
10793
11297
|
template: ` <div class="modal-header">
|
|
10794
11298
|
<h5 class="modal-title">{{ data.title }}</h5>
|
|
@@ -10841,51 +11345,59 @@ class CommonModalComponent {
|
|
|
10841
11345
|
onEnter() { }
|
|
10842
11346
|
ngOnInit() { }
|
|
10843
11347
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CommonModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10844
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
10845
11349
|
<div [class]="'modal-header' + headerColor">
|
|
10846
11350
|
<h5 class="modal-title">{{ data.title }}</h5>
|
|
10847
11351
|
<button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
|
|
10848
11352
|
</div>
|
|
10849
11353
|
<div class="modal-body">
|
|
10850
|
-
|
|
10851
|
-
|
|
10852
|
-
|
|
11354
|
+
@if (data.content.header) {
|
|
11355
|
+
<h6>
|
|
11356
|
+
{{ data.content.header }}
|
|
11357
|
+
</h6>
|
|
11358
|
+
}
|
|
10853
11359
|
<span>
|
|
10854
|
-
|
|
11360
|
+
{{ data.content.body }}
|
|
10855
11361
|
</span>
|
|
10856
11362
|
</div>
|
|
10857
11363
|
<div class="modal-footer">
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
11364
|
+
@if (data.cancel) {
|
|
11365
|
+
<button class="me-2" rlb-button outline data-modal-reason="cancel">
|
|
11366
|
+
{{ data.cancel }}
|
|
11367
|
+
</button>
|
|
11368
|
+
}
|
|
10861
11369
|
<button rlb-button data-modal-reason="ok" [disabled]="!valid">
|
|
10862
11370
|
{{ data.ok }}
|
|
10863
11371
|
</button>
|
|
10864
11372
|
</div>
|
|
10865
|
-
`, 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 }
|
|
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 }] }); }
|
|
10866
11374
|
}
|
|
10867
11375
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CommonModalComponent, decorators: [{
|
|
10868
11376
|
type: Component,
|
|
10869
11377
|
args: [{
|
|
10870
11378
|
standalone: true,
|
|
10871
|
-
imports: [RlbBootstrapModule, FormsModule
|
|
11379
|
+
imports: [RlbBootstrapModule, FormsModule],
|
|
10872
11380
|
template: `
|
|
10873
11381
|
<div [class]="'modal-header' + headerColor">
|
|
10874
11382
|
<h5 class="modal-title">{{ data.title }}</h5>
|
|
10875
11383
|
<button type="button" class="btn-close" aria-label="Close" data-modal-reason="close"></button>
|
|
10876
11384
|
</div>
|
|
10877
11385
|
<div class="modal-body">
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
11386
|
+
@if (data.content.header) {
|
|
11387
|
+
<h6>
|
|
11388
|
+
{{ data.content.header }}
|
|
11389
|
+
</h6>
|
|
11390
|
+
}
|
|
10881
11391
|
<span>
|
|
10882
|
-
|
|
11392
|
+
{{ data.content.body }}
|
|
10883
11393
|
</span>
|
|
10884
11394
|
</div>
|
|
10885
11395
|
<div class="modal-footer">
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
11396
|
+
@if (data.cancel) {
|
|
11397
|
+
<button class="me-2" rlb-button outline data-modal-reason="cancel">
|
|
11398
|
+
{{ data.cancel }}
|
|
11399
|
+
</button>
|
|
11400
|
+
}
|
|
10889
11401
|
<button rlb-button data-modal-reason="ok" [disabled]="!valid">
|
|
10890
11402
|
{{ data.ok }}
|
|
10891
11403
|
</button>
|
|
@@ -10996,44 +11508,44 @@ class EventCreateEditComponent {
|
|
|
10996
11508
|
return "";
|
|
10997
11509
|
}
|
|
10998
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 }); }
|
|
10999
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
11000
11512
|
<div [class]="'modal-header' + headerColor">
|
|
11001
|
-
|
|
11002
|
-
|
|
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>
|
|
11003
11534
|
</div>
|
|
11004
|
-
<div class="modal-body" [formGroup]="form">
|
|
11005
|
-
<rlb-input enable-validation formControlName="title">
|
|
11006
|
-
<label before>Event title</label>
|
|
11007
|
-
</rlb-input>
|
|
11008
|
-
<rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
|
|
11009
|
-
<label before class="mt-3">Event start</label>
|
|
11010
|
-
</rlb-input>
|
|
11011
|
-
<rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
|
|
11012
|
-
<label before class="mt-3">Event end</label>
|
|
11013
|
-
</rlb-input>
|
|
11014
|
-
<rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
|
|
11015
|
-
<label before class="mt-3">Event color</label>
|
|
11016
|
-
<ng-container *ngFor="let color of colors">
|
|
11017
|
-
<rlb-option [value]="color">
|
|
11018
|
-
{{ color }}
|
|
11019
|
-
</rlb-option>
|
|
11020
|
-
</ng-container>
|
|
11021
|
-
</rlb-select>
|
|
11022
|
-
</div>
|
|
11023
11535
|
<div class="modal-footer">
|
|
11024
|
-
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11029
|
-
|
|
11030
|
-
|
|
11031
|
-
|
|
11032
|
-
|
|
11033
|
-
|
|
11034
|
-
|
|
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>
|
|
11035
11547
|
</div>
|
|
11036
|
-
|
|
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"] }] }); }
|
|
11037
11549
|
}
|
|
11038
11550
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EventCreateEditComponent, decorators: [{
|
|
11039
11551
|
type: Component,
|
|
@@ -11041,42 +11553,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
11041
11553
|
standalone: true,
|
|
11042
11554
|
template: `
|
|
11043
11555
|
<div [class]="'modal-header' + headerColor">
|
|
11044
|
-
|
|
11045
|
-
|
|
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>
|
|
11046
11577
|
</div>
|
|
11047
|
-
<div class="modal-body" [formGroup]="form">
|
|
11048
|
-
<rlb-input enable-validation formControlName="title">
|
|
11049
|
-
<label before>Event title</label>
|
|
11050
|
-
</rlb-input>
|
|
11051
|
-
<rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="start">
|
|
11052
|
-
<label before class="mt-3">Event start</label>
|
|
11053
|
-
</rlb-input>
|
|
11054
|
-
<rlb-input enable-validation type="datetime-local" date-type="date-tz" formControlName="end">
|
|
11055
|
-
<label before class="mt-3">Event end</label>
|
|
11056
|
-
</rlb-input>
|
|
11057
|
-
<rlb-select enable-validation [placeholder]="'Choose event color'" formControlName="color">
|
|
11058
|
-
<label before class="mt-3">Event color</label>
|
|
11059
|
-
<ng-container *ngFor="let color of colors">
|
|
11060
|
-
<rlb-option [value]="color">
|
|
11061
|
-
{{ color }}
|
|
11062
|
-
</rlb-option>
|
|
11063
|
-
</ng-container>
|
|
11064
|
-
</rlb-select>
|
|
11065
|
-
</div>
|
|
11066
11578
|
<div class="modal-footer">
|
|
11067
|
-
|
|
11068
|
-
|
|
11069
|
-
|
|
11070
|
-
|
|
11071
|
-
|
|
11072
|
-
|
|
11073
|
-
|
|
11074
|
-
|
|
11075
|
-
|
|
11076
|
-
|
|
11077
|
-
|
|
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>
|
|
11078
11590
|
</div>
|
|
11079
|
-
|
|
11591
|
+
`,
|
|
11080
11592
|
hostDirectives: [
|
|
11081
11593
|
{
|
|
11082
11594
|
directive: ModalDirective,
|
|
@@ -11107,56 +11619,58 @@ class CalendarOverflowEventsContainerComponent {
|
|
|
11107
11619
|
this.result = { event, action };
|
|
11108
11620
|
}
|
|
11109
11621
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarOverflowEventsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
11111
11623
|
<div [class]="'modal-header' + headerColor">
|
|
11112
|
-
|
|
11113
|
-
|
|
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"> </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>
|
|
11114
11663
|
</div>
|
|
11115
|
-
<div class="modal-body">
|
|
11116
|
-
<div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
|
|
11117
|
-
<rlb-card class="mb-0 shadow-lg rounded" [border]="event.color" *ngFor="let event of data.content">
|
|
11118
|
-
<rlb-card-body class="d-flex align-items-center justify-content-between">
|
|
11119
|
-
<div>
|
|
11120
|
-
<span rlb-badge pill [color]="event.color"> </span>
|
|
11121
|
-
<span>
|
|
11122
|
-
{{ event.title }}
|
|
11123
|
-
</span>
|
|
11124
|
-
</div>
|
|
11125
|
-
<div class="d-flex align-items-center gap-2">
|
|
11126
|
-
<rlb-fab
|
|
11127
|
-
(click)="closeDialog(event, 'edit')"
|
|
11128
|
-
data-modal-reason="ok"
|
|
11129
|
-
class="align-self-end"
|
|
11130
|
-
size="xs"
|
|
11131
|
-
outline
|
|
11132
|
-
>
|
|
11133
|
-
<i class="bi bi-pencil"></i>
|
|
11134
|
-
</rlb-fab>
|
|
11135
|
-
<rlb-fab
|
|
11136
|
-
(click)="closeDialog(event, 'delete')"
|
|
11137
|
-
data-modal-reason="ok"
|
|
11138
|
-
class="align-self-end"
|
|
11139
|
-
size="xs"
|
|
11140
|
-
color="danger"
|
|
11141
|
-
outline
|
|
11142
|
-
>
|
|
11143
|
-
<i class="bi bi-trash"></i>
|
|
11144
|
-
</rlb-fab>
|
|
11145
|
-
</div>
|
|
11146
|
-
</rlb-card-body>
|
|
11147
|
-
</rlb-card>
|
|
11148
|
-
</div>
|
|
11149
|
-
</div>
|
|
11150
11664
|
<div class="modal-footer">
|
|
11151
|
-
|
|
11152
|
-
|
|
11153
|
-
|
|
11154
|
-
|
|
11155
|
-
|
|
11156
|
-
|
|
11157
|
-
|
|
11665
|
+
<button
|
|
11666
|
+
rlb-button
|
|
11667
|
+
color="secondary"
|
|
11668
|
+
data-modal-reason="cancel"
|
|
11669
|
+
>
|
|
11670
|
+
{{ 'Close' }}
|
|
11671
|
+
</button>
|
|
11158
11672
|
</div>
|
|
11159
|
-
|
|
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"] }] }); }
|
|
11160
11674
|
}
|
|
11161
11675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarOverflowEventsContainerComponent, decorators: [{
|
|
11162
11676
|
type: Component,
|
|
@@ -11164,61 +11678,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
11164
11678
|
standalone: true,
|
|
11165
11679
|
template: `
|
|
11166
11680
|
<div [class]="'modal-header' + headerColor">
|
|
11167
|
-
|
|
11168
|
-
|
|
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"> </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>
|
|
11169
11720
|
</div>
|
|
11170
|
-
<div class="modal-body">
|
|
11171
|
-
<div class="d-flex flex-column gap-1 overflow-y-auto p-3" [style.height.rem]="containerHeightRem">
|
|
11172
|
-
<rlb-card class="mb-0 shadow-lg rounded" [border]="event.color" *ngFor="let event of data.content">
|
|
11173
|
-
<rlb-card-body class="d-flex align-items-center justify-content-between">
|
|
11174
|
-
<div>
|
|
11175
|
-
<span rlb-badge pill [color]="event.color"> </span>
|
|
11176
|
-
<span>
|
|
11177
|
-
{{ event.title }}
|
|
11178
|
-
</span>
|
|
11179
|
-
</div>
|
|
11180
|
-
<div class="d-flex align-items-center gap-2">
|
|
11181
|
-
<rlb-fab
|
|
11182
|
-
(click)="closeDialog(event, 'edit')"
|
|
11183
|
-
data-modal-reason="ok"
|
|
11184
|
-
class="align-self-end"
|
|
11185
|
-
size="xs"
|
|
11186
|
-
outline
|
|
11187
|
-
>
|
|
11188
|
-
<i class="bi bi-pencil"></i>
|
|
11189
|
-
</rlb-fab>
|
|
11190
|
-
<rlb-fab
|
|
11191
|
-
(click)="closeDialog(event, 'delete')"
|
|
11192
|
-
data-modal-reason="ok"
|
|
11193
|
-
class="align-self-end"
|
|
11194
|
-
size="xs"
|
|
11195
|
-
color="danger"
|
|
11196
|
-
outline
|
|
11197
|
-
>
|
|
11198
|
-
<i class="bi bi-trash"></i>
|
|
11199
|
-
</rlb-fab>
|
|
11200
|
-
</div>
|
|
11201
|
-
</rlb-card-body>
|
|
11202
|
-
</rlb-card>
|
|
11203
|
-
</div>
|
|
11204
|
-
</div>
|
|
11205
11721
|
<div class="modal-footer">
|
|
11206
|
-
|
|
11207
|
-
|
|
11208
|
-
|
|
11209
|
-
|
|
11210
|
-
|
|
11211
|
-
|
|
11212
|
-
|
|
11722
|
+
<button
|
|
11723
|
+
rlb-button
|
|
11724
|
+
color="secondary"
|
|
11725
|
+
data-modal-reason="cancel"
|
|
11726
|
+
>
|
|
11727
|
+
{{ 'Close' }}
|
|
11728
|
+
</button>
|
|
11213
11729
|
</div>
|
|
11214
|
-
|
|
11730
|
+
`,
|
|
11215
11731
|
hostDirectives: [
|
|
11216
11732
|
{
|
|
11217
11733
|
directive: ModalDirective,
|
|
11218
11734
|
inputs: ['id', 'data-instance', 'data-options'],
|
|
11219
11735
|
},
|
|
11220
11736
|
],
|
|
11221
|
-
imports: [
|
|
11737
|
+
imports: [RlbBootstrapModule]
|
|
11222
11738
|
}]
|
|
11223
11739
|
}] });
|
|
11224
11740
|
|
|
@@ -11227,14 +11743,16 @@ class CalendarToastComponent {
|
|
|
11227
11743
|
this.valid = true;
|
|
11228
11744
|
}
|
|
11229
11745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11230
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
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: `
|
|
11231
11747
|
<div class="toast-header">
|
|
11232
11748
|
<strong class="me-auto">{{data.title}}</strong>
|
|
11233
|
-
|
|
11749
|
+
@if (data.subtitle) {
|
|
11750
|
+
<small> {{data.subtitle }}</small>
|
|
11751
|
+
}
|
|
11234
11752
|
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
|
|
11235
11753
|
</div>
|
|
11236
11754
|
<div class="toast-body">{{data.content}}</div>
|
|
11237
|
-
|
|
11755
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: RlbBootstrapModule }] }); }
|
|
11238
11756
|
}
|
|
11239
11757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CalendarToastComponent, decorators: [{
|
|
11240
11758
|
type: Component,
|
|
@@ -11242,11 +11760,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
11242
11760
|
template: `
|
|
11243
11761
|
<div class="toast-header">
|
|
11244
11762
|
<strong class="me-auto">{{data.title}}</strong>
|
|
11245
|
-
|
|
11763
|
+
@if (data.subtitle) {
|
|
11764
|
+
<small> {{data.subtitle }}</small>
|
|
11765
|
+
}
|
|
11246
11766
|
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
|
|
11247
11767
|
</div>
|
|
11248
11768
|
<div class="toast-body">{{data.content}}</div>
|
|
11249
|
-
|
|
11769
|
+
`,
|
|
11250
11770
|
hostDirectives: [
|
|
11251
11771
|
{
|
|
11252
11772
|
directive: ToastDirective,
|
|
@@ -11254,7 +11774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
11254
11774
|
},
|
|
11255
11775
|
],
|
|
11256
11776
|
standalone: true,
|
|
11257
|
-
imports: [
|
|
11777
|
+
imports: [RlbBootstrapModule]
|
|
11258
11778
|
}]
|
|
11259
11779
|
}] });
|
|
11260
11780
|
|
|
@@ -11290,5 +11810,5 @@ function provideRlbBootstrap() {
|
|
|
11290
11810
|
* Generated bundle index. Do not edit.
|
|
11291
11811
|
*/
|
|
11292
11812
|
|
|
11293
|
-
export { AbstractAutocompleteComponent, AbstractComponent, AccordionBodyComponent, AccordionComponent, AccordionHeaderComponent, AccordionItemComponent, AlertComponent, AutocompleteComponent, AutocompleteCountryComponent, AutocompleteCountryDialCodeComponent, AutocompleteTimezonesComponent, AvatarComponent, BadgeComponent, BadgeDirective, BreadcrumbComponent, ButtonCloseComponent, ButtonComponent, ButtonGroupComponent, ButtonToolbarComponent, CALENDAR_COMPONENTS, COMPONENTS, CalendarComponent, CalendarEventComponent, CalendarGrid, CalendarHeaderComponent, CalendarMonthGridComponent, CalendarOverflowEventsContainerComponent, CalendarToastComponent, CalendarWeekGridComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CarouselCaptionComponent, CarouselComponent, CarouselSlideComponent, ChatContainerComponent, ChatItemComponent, CheckboxComponent, CollapseComponent, ColorComponent, CommonModalComponent, DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableComponent, DataTableHeaderComponent, DataTableLoadingComponent, DataTableNoItemsComponent, DataTableRowComponent, DatalistComponent, DateTzPipe, DayOfWeekPipe, DndDirective, DropdownComponent, DropdownContainerComponent, DropdownDirective, DropdownMenuItemComponent, EventCreateEditComponent, FileComponent, FileDndComponent, FormFieldsComponent, HelpText, INPUTS, InputComponent, InputGroupComponent, InputValidationComponent, ListComponent, ListItemComponent, ListItemImageComponent, MODALS, ModalContainerComponent, ModalDirective, ModalRegistryOptions, ModalService, MonthFormatterPipe, NavComponent, NavItemComponent, NavbarBrandDirective, NavbarComponent, NavbarDropdownItemComponent, NavbarFormComponent, NavbarItemComponent, NavbarItemsComponent, NavbarSeparatorComponent, NavbarTextComponent, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OptionComponent, PIPES, PaginationComponent, PaginationItemComponent, PlaceholderDirective, PopoverDirective, ProgressComponent, RLB_TRANSLATION_SERVICE, RadioComponent, RangeComponent, RlbBootstrapModule, RlbFabComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ScrollspyDirective, SearchModalComponent, SelectComponent, SidebarComponent, SidebarItemComponent, SpinnerComponent, SwitchComponent, TABLE, TOASTS, TabComponent, TabContentComponent, TabPaneComponent, TabsComponent, TextAreaComponent, ToastContainerComponent, ToastDirective, ToastRegistryOptions, ToastService, ToggleDirective, TooltipDirective, UniqueIdService, createArrayProxy, provideRlbBootstrap, requiredAutocompleteValue };
|
|
11813
|
+
export { AbstractAutocompleteComponent, AbstractComponent, AccordionBodyComponent, AccordionComponent, AccordionHeaderComponent, AccordionItemComponent, AlertComponent, AutocompleteComponent, AutocompleteCountryComponent, AutocompleteCountryDialCodeComponent, AutocompleteTimezonesComponent, AvatarComponent, BadgeComponent, BadgeDirective, BreadcrumbComponent, ButtonCloseComponent, ButtonComponent, ButtonGroupComponent, ButtonToolbarComponent, CALENDAR_COMPONENTS, COMPONENTS, CalendarComponent, CalendarDayGridComponent, CalendarEventComponent, CalendarGrid, CalendarHeaderComponent, CalendarMonthGridComponent, CalendarOverflowEventsContainerComponent, CalendarToastComponent, CalendarWeekGridComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderComponent, CardImageComponent, CardLinkComponent, CardSubtitleComponent, CardTextComponent, CardTitleComponent, CarouselCaptionComponent, CarouselComponent, CarouselSlideComponent, ChatContainerComponent, ChatItemComponent, CheckboxComponent, CollapseComponent, ColorComponent, CommonModalComponent, DataTableActionComponent, DataTableActionsComponent, DataTableCellComponent, DataTableComponent, DataTableHeaderComponent, DataTableLoadingComponent, DataTableNoItemsComponent, DataTableRowComponent, DatalistComponent, DateTzPipe, DayOfWeekPipe, DndDirective, DropdownComponent, DropdownContainerComponent, DropdownDirective, DropdownMenuItemComponent, EventCreateEditComponent, FileComponent, FileDndComponent, FormFieldsComponent, HelpText, INPUTS, InputComponent, InputGroupComponent, InputValidationComponent, ListComponent, ListItemComponent, ListItemImageComponent, MODALS, ModalContainerComponent, ModalDirective, ModalRegistryOptions, ModalService, MonthFormatterPipe, NavComponent, NavItemComponent, NavbarBrandDirective, NavbarComponent, NavbarDropdownItemComponent, NavbarFormComponent, NavbarItemComponent, NavbarItemsComponent, NavbarSeparatorComponent, NavbarTextComponent, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasTitleComponent, OptionComponent, PIPES, PaginationComponent, PaginationItemComponent, PlaceholderDirective, PopoverDirective, ProgressComponent, RLB_TRANSLATION_SERVICE, RadioComponent, RangeComponent, RlbBootstrapModule, RlbFabComponent, RlbPlaceholderComponent, RlbPlaceholderLineComponent, RlbPlaceholderTextComponent, ScrollspyDirective, SearchModalComponent, SelectComponent, SidebarComponent, SidebarItemComponent, SpinnerComponent, SwitchComponent, TABLE, TOASTS, TabComponent, TabContentComponent, TabPaneComponent, TabsComponent, TextAreaComponent, ToastContainerComponent, ToastDirective, ToastRegistryOptions, ToastService, ToggleDirective, TooltipDirective, UniqueIdService, createArrayProxy, provideRlbBootstrap, requiredAutocompleteValue };
|
|
11294
11814
|
//# sourceMappingURL=open-rlb-ng-bootstrap.mjs.map
|