@forgeroute/ui 0.4.20 → 0.4.22
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/forgeroute-ui.mjs +1858 -215
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui.d.ts +511 -10
|
@@ -496,6 +496,7 @@ var PaginationComponent = class PaginationComponent {
|
|
|
496
496
|
this.pageSize = input(25, ...ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []);
|
|
497
497
|
this.totalItems = input(0, ...ngDevMode ? [{ debugName: "totalItems" }] : /* istanbul ignore next */ []);
|
|
498
498
|
this.detached = input(false, ...ngDevMode ? [{ debugName: "detached" }] : /* istanbul ignore next */ []);
|
|
499
|
+
this.embedded = input(false, ...ngDevMode ? [{ debugName: "embedded" }] : /* istanbul ignore next */ []);
|
|
499
500
|
this.pageChange = output();
|
|
500
501
|
this.totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()) || 1, ...ngDevMode ? [{ debugName: "totalPages" }] : /* istanbul ignore next */ []);
|
|
501
502
|
this.startItem = computed(() => (this.page() - 1) * this.pageSize() + 1, ...ngDevMode ? [{ debugName: "startItem" }] : /* istanbul ignore next */ []);
|
|
@@ -561,10 +562,20 @@ var PaginationComponent = class PaginationComponent {
|
|
|
561
562
|
isSignal: true,
|
|
562
563
|
isRequired: false,
|
|
563
564
|
transformFunction: null
|
|
565
|
+
},
|
|
566
|
+
embedded: {
|
|
567
|
+
classPropertyName: "embedded",
|
|
568
|
+
publicName: "embedded",
|
|
569
|
+
isSignal: true,
|
|
570
|
+
isRequired: false,
|
|
571
|
+
transformFunction: null
|
|
564
572
|
}
|
|
565
573
|
},
|
|
566
574
|
outputs: { pageChange: "pageChange" },
|
|
567
|
-
host: { properties: {
|
|
575
|
+
host: { properties: {
|
|
576
|
+
"class.pagination-detached": "detached()",
|
|
577
|
+
"class.pagination-embedded": "embedded()"
|
|
578
|
+
} },
|
|
568
579
|
ngImport: i0,
|
|
569
580
|
template: `
|
|
570
581
|
@if (totalItems() > pageSize()) {
|
|
@@ -589,7 +600,7 @@ var PaginationComponent = class PaginationComponent {
|
|
|
589
600
|
}
|
|
590
601
|
`,
|
|
591
602
|
isInline: true,
|
|
592
|
-
styles: [".pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 10px 10px}:host(.pagination-detached) .pagination{border:1px solid #e2e8f0;border-radius:10px;margin-top:4px}.pagination-info{font-size:.8125rem;color:#64748b}.pagination-controls{display:flex;align-items:center;gap:4px}.pagination-nav{width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#334155;font-family:inherit;transition:background .1s}.pagination-nav:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.pagination-nav:disabled{opacity:.4;cursor:default}.pagination-nav:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-page{min-width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .1s,border-color .1s}.pagination-page:hover{background:#f8fafc;border-color:#cbd5e1}.pagination-page.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.pagination-page:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-ellipsis{padding:0 4px;color:#94a3b8;font-size:.8125rem}@media(max-width:640px),(pointer:coarse){.pagination-controls{flex-wrap:wrap;justify-content:center}.pagination-nav{width:44px;height:44px}.pagination-page{min-width:44px;height:44px}}@media(max-width:480px){.pagination{justify-content:center;padding:10px 12px}.pagination-info{width:100%;text-align:center}}\n"],
|
|
603
|
+
styles: [".pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 10px 10px}:host(.pagination-detached) .pagination{border:1px solid #e2e8f0;border-radius:10px;margin-top:4px}:host(.pagination-embedded) .pagination{background:transparent;border:none;border-radius:0;padding:0;margin-top:0}.pagination-info{font-size:.8125rem;color:#64748b}.pagination-controls{display:flex;align-items:center;gap:4px}.pagination-nav{width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#334155;font-family:inherit;transition:background .1s}.pagination-nav:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.pagination-nav:disabled{opacity:.4;cursor:default}.pagination-nav:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-page{min-width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .1s,border-color .1s}.pagination-page:hover{background:#f8fafc;border-color:#cbd5e1}.pagination-page.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.pagination-page:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-ellipsis{padding:0 4px;color:#94a3b8;font-size:.8125rem}@media(max-width:640px),(pointer:coarse){.pagination-controls{flex-wrap:wrap;justify-content:center}.pagination-nav{width:44px;height:44px}.pagination-page{min-width:44px;height:44px}}@media(max-width:480px){.pagination{justify-content:center;padding:10px 12px}.pagination-info{width:100%;text-align:center}}\n"],
|
|
593
604
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
594
605
|
});
|
|
595
606
|
}
|
|
@@ -605,7 +616,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
605
616
|
selector: "ui-pagination",
|
|
606
617
|
standalone: true,
|
|
607
618
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
608
|
-
host: {
|
|
619
|
+
host: {
|
|
620
|
+
"[class.pagination-detached]": "detached()",
|
|
621
|
+
"[class.pagination-embedded]": "embedded()"
|
|
622
|
+
},
|
|
609
623
|
template: `
|
|
610
624
|
@if (totalItems() > pageSize()) {
|
|
611
625
|
<nav class="pagination" role="navigation" aria-label="Pagination">
|
|
@@ -628,7 +642,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
628
642
|
</nav>
|
|
629
643
|
}
|
|
630
644
|
`,
|
|
631
|
-
styles: [".pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 10px 10px}:host(.pagination-detached) .pagination{border:1px solid #e2e8f0;border-radius:10px;margin-top:4px}.pagination-info{font-size:.8125rem;color:#64748b}.pagination-controls{display:flex;align-items:center;gap:4px}.pagination-nav{width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#334155;font-family:inherit;transition:background .1s}.pagination-nav:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.pagination-nav:disabled{opacity:.4;cursor:default}.pagination-nav:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-page{min-width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .1s,border-color .1s}.pagination-page:hover{background:#f8fafc;border-color:#cbd5e1}.pagination-page.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.pagination-page:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-ellipsis{padding:0 4px;color:#94a3b8;font-size:.8125rem}@media(max-width:640px),(pointer:coarse){.pagination-controls{flex-wrap:wrap;justify-content:center}.pagination-nav{width:44px;height:44px}.pagination-page{min-width:44px;height:44px}}@media(max-width:480px){.pagination{justify-content:center;padding:10px 12px}.pagination-info{width:100%;text-align:center}}\n"]
|
|
645
|
+
styles: [".pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 10px 10px}:host(.pagination-detached) .pagination{border:1px solid #e2e8f0;border-radius:10px;margin-top:4px}:host(.pagination-embedded) .pagination{background:transparent;border:none;border-radius:0;padding:0;margin-top:0}.pagination-info{font-size:.8125rem;color:#64748b}.pagination-controls{display:flex;align-items:center;gap:4px}.pagination-nav{width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#334155;font-family:inherit;transition:background .1s}.pagination-nav:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.pagination-nav:disabled{opacity:.4;cursor:default}.pagination-nav:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-page{min-width:32px;height:32px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .1s,border-color .1s}.pagination-page:hover{background:#f8fafc;border-color:#cbd5e1}.pagination-page.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.pagination-page:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pagination-ellipsis{padding:0 4px;color:#94a3b8;font-size:.8125rem}@media(max-width:640px),(pointer:coarse){.pagination-controls{flex-wrap:wrap;justify-content:center}.pagination-nav{width:44px;height:44px}.pagination-page{min-width:44px;height:44px}}@media(max-width:480px){.pagination{justify-content:center;padding:10px 12px}.pagination-info{width:100%;text-align:center}}\n"]
|
|
632
646
|
}]
|
|
633
647
|
}],
|
|
634
648
|
propDecorators: {
|
|
@@ -664,6 +678,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
664
678
|
required: false
|
|
665
679
|
}]
|
|
666
680
|
}],
|
|
681
|
+
embedded: [{
|
|
682
|
+
type: i0.Input,
|
|
683
|
+
args: [{
|
|
684
|
+
isSignal: true,
|
|
685
|
+
alias: "embedded",
|
|
686
|
+
required: false
|
|
687
|
+
}]
|
|
688
|
+
}],
|
|
667
689
|
pageChange: [{
|
|
668
690
|
type: i0.Output,
|
|
669
691
|
args: ["pageChange"]
|
|
@@ -1472,9 +1494,33 @@ var AvatarComponent = class AvatarComponent {
|
|
|
1472
1494
|
this.initials = input.required(...ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []);
|
|
1473
1495
|
this.name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
1474
1496
|
this.size = input(32, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
1497
|
+
this.imageUrl = input(void 0, ...ngDevMode ? [{ debugName: "imageUrl" }] : /* istanbul ignore next */ []);
|
|
1498
|
+
this.editable = input(false, ...ngDevMode ? [{ debugName: "editable" }] : /* istanbul ignore next */ []);
|
|
1499
|
+
this.editLabel = input("Change photo", ...ngDevMode ? [{ debugName: "editLabel" }] : /* istanbul ignore next */ []);
|
|
1500
|
+
this.busy = input(false, ...ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []);
|
|
1501
|
+
this.editClick = output();
|
|
1502
|
+
this.imageError = output();
|
|
1503
|
+
this.failedUrl = signal(null, ...ngDevMode ? [{ debugName: "failedUrl" }] : /* istanbul ignore next */ []);
|
|
1504
|
+
this.showImage = computed(() => {
|
|
1505
|
+
const url = this.imageUrl();
|
|
1506
|
+
return !!url && this.failedUrl() !== url;
|
|
1507
|
+
}, ...ngDevMode ? [{ debugName: "showImage" }] : /* istanbul ignore next */ []);
|
|
1508
|
+
this.badgeSize = computed(() => Math.max(18, Math.round(this.size() * .3)), ...ngDevMode ? [{ debugName: "badgeSize" }] : /* istanbul ignore next */ []);
|
|
1475
1509
|
this.bg = computed(() => BG_PALETTE[colorIndex(this.initials())], ...ngDevMode ? [{ debugName: "bg" }] : /* istanbul ignore next */ []);
|
|
1476
1510
|
this.color = computed(() => COLOR_PALETTE[colorIndex(this.initials())], ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
|
|
1477
1511
|
}
|
|
1512
|
+
onImageError() {
|
|
1513
|
+
this.failedUrl.set(this.imageUrl() ?? null);
|
|
1514
|
+
this.imageError.emit();
|
|
1515
|
+
}
|
|
1516
|
+
onEdit() {
|
|
1517
|
+
if (this.busy()) return;
|
|
1518
|
+
this.editClick.emit();
|
|
1519
|
+
}
|
|
1520
|
+
onKey(event) {
|
|
1521
|
+
event.preventDefault();
|
|
1522
|
+
this.onEdit();
|
|
1523
|
+
}
|
|
1478
1524
|
static {
|
|
1479
1525
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1480
1526
|
minVersion: "12.0.0",
|
|
@@ -1487,7 +1533,7 @@ var AvatarComponent = class AvatarComponent {
|
|
|
1487
1533
|
}
|
|
1488
1534
|
static {
|
|
1489
1535
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1490
|
-
minVersion: "17.
|
|
1536
|
+
minVersion: "17.0.0",
|
|
1491
1537
|
version: "22.2.2",
|
|
1492
1538
|
type: AvatarComponent,
|
|
1493
1539
|
isStandalone: true,
|
|
@@ -1513,24 +1559,91 @@ var AvatarComponent = class AvatarComponent {
|
|
|
1513
1559
|
isSignal: true,
|
|
1514
1560
|
isRequired: false,
|
|
1515
1561
|
transformFunction: null
|
|
1562
|
+
},
|
|
1563
|
+
imageUrl: {
|
|
1564
|
+
classPropertyName: "imageUrl",
|
|
1565
|
+
publicName: "imageUrl",
|
|
1566
|
+
isSignal: true,
|
|
1567
|
+
isRequired: false,
|
|
1568
|
+
transformFunction: null
|
|
1569
|
+
},
|
|
1570
|
+
editable: {
|
|
1571
|
+
classPropertyName: "editable",
|
|
1572
|
+
publicName: "editable",
|
|
1573
|
+
isSignal: true,
|
|
1574
|
+
isRequired: false,
|
|
1575
|
+
transformFunction: null
|
|
1576
|
+
},
|
|
1577
|
+
editLabel: {
|
|
1578
|
+
classPropertyName: "editLabel",
|
|
1579
|
+
publicName: "editLabel",
|
|
1580
|
+
isSignal: true,
|
|
1581
|
+
isRequired: false,
|
|
1582
|
+
transformFunction: null
|
|
1583
|
+
},
|
|
1584
|
+
busy: {
|
|
1585
|
+
classPropertyName: "busy",
|
|
1586
|
+
publicName: "busy",
|
|
1587
|
+
isSignal: true,
|
|
1588
|
+
isRequired: false,
|
|
1589
|
+
transformFunction: null
|
|
1516
1590
|
}
|
|
1517
1591
|
},
|
|
1592
|
+
outputs: {
|
|
1593
|
+
editClick: "editClick",
|
|
1594
|
+
imageError: "imageError"
|
|
1595
|
+
},
|
|
1518
1596
|
ngImport: i0,
|
|
1519
1597
|
template: `
|
|
1520
|
-
|
|
1521
|
-
class="
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1598
|
+
@if (editable()) {
|
|
1599
|
+
<span class="av-edit" role="button" [attr.tabindex]="busy() ? -1 : 0" [attr.aria-label]="editLabel()" [attr.title]="editLabel()"
|
|
1600
|
+
[attr.aria-busy]="busy() ? 'true' : null" [attr.aria-disabled]="busy() ? 'true' : null" [class.av-busy]="busy()"
|
|
1601
|
+
[style.width.px]="size()" [style.height.px]="size()"
|
|
1602
|
+
(click)="onEdit()" (keydown.enter)="onKey($event)" (keydown.space)="onKey($event)">
|
|
1603
|
+
<ng-container [ngTemplateOutlet]="face" />
|
|
1604
|
+
<span class="av-badge" aria-hidden="true" [style.width.px]="badgeSize()" [style.height.px]="badgeSize()">
|
|
1605
|
+
@if (busy()) {
|
|
1606
|
+
<span class="av-spinner" [style.width.px]="badgeSize() * 0.6" [style.height.px]="badgeSize() * 0.6"></span>
|
|
1607
|
+
} @else {
|
|
1608
|
+
<svg [attr.width]="badgeSize() * 0.6" [attr.height]="badgeSize() * 0.6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>
|
|
1609
|
+
}
|
|
1610
|
+
</span>
|
|
1611
|
+
</span>
|
|
1612
|
+
} @else {
|
|
1613
|
+
<ng-container [ngTemplateOutlet]="face" />
|
|
1614
|
+
}
|
|
1615
|
+
<ng-template #face>
|
|
1616
|
+
@if (showImage()) {
|
|
1617
|
+
<img class="avatar avatar-img" [src]="imageUrl()" [attr.alt]="editable() ? '' : (name() || initials())"
|
|
1618
|
+
[style.width.px]="size()" [style.height.px]="size()" (error)="onImageError()" />
|
|
1619
|
+
} @else {
|
|
1620
|
+
<span
|
|
1621
|
+
class="avatar"
|
|
1622
|
+
[attr.role]="editable() ? null : 'img'"
|
|
1623
|
+
[attr.aria-hidden]="editable() ? 'true' : null"
|
|
1624
|
+
[style.width.px]="size()"
|
|
1625
|
+
[style.height.px]="size()"
|
|
1626
|
+
[style.font-size.px]="size() * 0.38"
|
|
1627
|
+
[style.background]="bg()"
|
|
1628
|
+
[style.color]="color()"
|
|
1629
|
+
[attr.aria-label]="editable() ? null : (name() || initials())">
|
|
1630
|
+
{{ initials() }}
|
|
1631
|
+
</span>
|
|
1632
|
+
}
|
|
1633
|
+
</ng-template>
|
|
1531
1634
|
`,
|
|
1532
1635
|
isInline: true,
|
|
1533
|
-
styles: [":host{display:inline-flex;flex-shrink:0}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;text-transform:uppercase;letter-spacing:.02em;-webkit-user-select:none;user-select:none;flex-shrink:0}\n"],
|
|
1636
|
+
styles: [":host{display:inline-flex;flex-shrink:0}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;text-transform:uppercase;letter-spacing:.02em;-webkit-user-select:none;user-select:none;flex-shrink:0}.avatar-img{display:block;object-fit:cover}.av-edit{position:relative;display:inline-flex;flex-shrink:0;border-radius:50%;cursor:pointer}.av-edit:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.av-edit.av-busy{cursor:progress}.av-edit.av-busy .avatar{opacity:.55}.av-badge{position:absolute;right:-2px;bottom:-2px;box-sizing:border-box;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;color:#475569;border:1px solid #cbd5e1;box-shadow:0 1px 2px #0f172a1f}@media(hover:hover){.av-edit:hover:not(.av-busy) .av-badge{color:#0f172a;border-color:#94a3b8}}.av-spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:av-spin .6s linear infinite}@keyframes av-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.av-spinner{animation-duration:2s}}@media(pointer:coarse){.av-edit:after{content:\"\";position:absolute;inset:-6px}}\n"],
|
|
1637
|
+
dependencies: [{
|
|
1638
|
+
kind: "directive",
|
|
1639
|
+
type: NgTemplateOutlet,
|
|
1640
|
+
selector: "[ngTemplateOutlet]",
|
|
1641
|
+
inputs: [
|
|
1642
|
+
"ngTemplateOutletContext",
|
|
1643
|
+
"ngTemplateOutlet",
|
|
1644
|
+
"ngTemplateOutletInjector"
|
|
1645
|
+
]
|
|
1646
|
+
}],
|
|
1534
1647
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
1535
1648
|
});
|
|
1536
1649
|
}
|
|
@@ -1545,21 +1658,47 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1545
1658
|
args: [{
|
|
1546
1659
|
selector: "ui-avatar",
|
|
1547
1660
|
standalone: true,
|
|
1661
|
+
imports: [NgTemplateOutlet],
|
|
1548
1662
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1549
1663
|
template: `
|
|
1550
|
-
|
|
1551
|
-
class="
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1664
|
+
@if (editable()) {
|
|
1665
|
+
<span class="av-edit" role="button" [attr.tabindex]="busy() ? -1 : 0" [attr.aria-label]="editLabel()" [attr.title]="editLabel()"
|
|
1666
|
+
[attr.aria-busy]="busy() ? 'true' : null" [attr.aria-disabled]="busy() ? 'true' : null" [class.av-busy]="busy()"
|
|
1667
|
+
[style.width.px]="size()" [style.height.px]="size()"
|
|
1668
|
+
(click)="onEdit()" (keydown.enter)="onKey($event)" (keydown.space)="onKey($event)">
|
|
1669
|
+
<ng-container [ngTemplateOutlet]="face" />
|
|
1670
|
+
<span class="av-badge" aria-hidden="true" [style.width.px]="badgeSize()" [style.height.px]="badgeSize()">
|
|
1671
|
+
@if (busy()) {
|
|
1672
|
+
<span class="av-spinner" [style.width.px]="badgeSize() * 0.6" [style.height.px]="badgeSize() * 0.6"></span>
|
|
1673
|
+
} @else {
|
|
1674
|
+
<svg [attr.width]="badgeSize() * 0.6" [attr.height]="badgeSize() * 0.6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>
|
|
1675
|
+
}
|
|
1676
|
+
</span>
|
|
1677
|
+
</span>
|
|
1678
|
+
} @else {
|
|
1679
|
+
<ng-container [ngTemplateOutlet]="face" />
|
|
1680
|
+
}
|
|
1681
|
+
<ng-template #face>
|
|
1682
|
+
@if (showImage()) {
|
|
1683
|
+
<img class="avatar avatar-img" [src]="imageUrl()" [attr.alt]="editable() ? '' : (name() || initials())"
|
|
1684
|
+
[style.width.px]="size()" [style.height.px]="size()" (error)="onImageError()" />
|
|
1685
|
+
} @else {
|
|
1686
|
+
<span
|
|
1687
|
+
class="avatar"
|
|
1688
|
+
[attr.role]="editable() ? null : 'img'"
|
|
1689
|
+
[attr.aria-hidden]="editable() ? 'true' : null"
|
|
1690
|
+
[style.width.px]="size()"
|
|
1691
|
+
[style.height.px]="size()"
|
|
1692
|
+
[style.font-size.px]="size() * 0.38"
|
|
1693
|
+
[style.background]="bg()"
|
|
1694
|
+
[style.color]="color()"
|
|
1695
|
+
[attr.aria-label]="editable() ? null : (name() || initials())">
|
|
1696
|
+
{{ initials() }}
|
|
1697
|
+
</span>
|
|
1698
|
+
}
|
|
1699
|
+
</ng-template>
|
|
1561
1700
|
`,
|
|
1562
|
-
styles: [":host{display:inline-flex;flex-shrink:0}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;text-transform:uppercase;letter-spacing:.02em;-webkit-user-select:none;user-select:none;flex-shrink:0}\n"]
|
|
1701
|
+
styles: [":host{display:inline-flex;flex-shrink:0}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;text-transform:uppercase;letter-spacing:.02em;-webkit-user-select:none;user-select:none;flex-shrink:0}.avatar-img{display:block;object-fit:cover}.av-edit{position:relative;display:inline-flex;flex-shrink:0;border-radius:50%;cursor:pointer}.av-edit:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.av-edit.av-busy{cursor:progress}.av-edit.av-busy .avatar{opacity:.55}.av-badge{position:absolute;right:-2px;bottom:-2px;box-sizing:border-box;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;color:#475569;border:1px solid #cbd5e1;box-shadow:0 1px 2px #0f172a1f}@media(hover:hover){.av-edit:hover:not(.av-busy) .av-badge{color:#0f172a;border-color:#94a3b8}}.av-spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:av-spin .6s linear infinite}@keyframes av-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.av-spinner{animation-duration:2s}}@media(pointer:coarse){.av-edit:after{content:\"\";position:absolute;inset:-6px}}\n"]
|
|
1563
1702
|
}]
|
|
1564
1703
|
}],
|
|
1565
1704
|
propDecorators: {
|
|
@@ -1586,6 +1725,46 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1586
1725
|
alias: "size",
|
|
1587
1726
|
required: false
|
|
1588
1727
|
}]
|
|
1728
|
+
}],
|
|
1729
|
+
imageUrl: [{
|
|
1730
|
+
type: i0.Input,
|
|
1731
|
+
args: [{
|
|
1732
|
+
isSignal: true,
|
|
1733
|
+
alias: "imageUrl",
|
|
1734
|
+
required: false
|
|
1735
|
+
}]
|
|
1736
|
+
}],
|
|
1737
|
+
editable: [{
|
|
1738
|
+
type: i0.Input,
|
|
1739
|
+
args: [{
|
|
1740
|
+
isSignal: true,
|
|
1741
|
+
alias: "editable",
|
|
1742
|
+
required: false
|
|
1743
|
+
}]
|
|
1744
|
+
}],
|
|
1745
|
+
editLabel: [{
|
|
1746
|
+
type: i0.Input,
|
|
1747
|
+
args: [{
|
|
1748
|
+
isSignal: true,
|
|
1749
|
+
alias: "editLabel",
|
|
1750
|
+
required: false
|
|
1751
|
+
}]
|
|
1752
|
+
}],
|
|
1753
|
+
busy: [{
|
|
1754
|
+
type: i0.Input,
|
|
1755
|
+
args: [{
|
|
1756
|
+
isSignal: true,
|
|
1757
|
+
alias: "busy",
|
|
1758
|
+
required: false
|
|
1759
|
+
}]
|
|
1760
|
+
}],
|
|
1761
|
+
editClick: [{
|
|
1762
|
+
type: i0.Output,
|
|
1763
|
+
args: ["editClick"]
|
|
1764
|
+
}],
|
|
1765
|
+
imageError: [{
|
|
1766
|
+
type: i0.Output,
|
|
1767
|
+
args: ["imageError"]
|
|
1589
1768
|
}]
|
|
1590
1769
|
}
|
|
1591
1770
|
});
|
|
@@ -4316,6 +4495,9 @@ const EXTRA_ICONS = {
|
|
|
4316
4495
|
"card": "M3 4h18a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M1 10h22",
|
|
4317
4496
|
"view-off": "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z M3 3l18 18",
|
|
4318
4497
|
"refund": "M3 10h10a8 8 0 0 1 8 8v2 M3 10l6 6 M3 10l6-6",
|
|
4498
|
+
"link": "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71 M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",
|
|
4499
|
+
"chart": "M18 20V10 M12 20V4 M6 20v-6",
|
|
4500
|
+
"save": "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z M17 21v-8H7v8 M7 3v5h8",
|
|
4319
4501
|
"bank": "M3 21h18 M3 10h18 M5 6l7-3 7 3 M4 10v11 M20 10v11 M8 14v3 M12 14v3 M16 14v3"
|
|
4320
4502
|
};
|
|
4321
4503
|
function iconPath(name) {
|
|
@@ -7333,7 +7515,7 @@ var SelectComponent = class SelectComponent {
|
|
|
7333
7515
|
<option value="" [disabled]="true" [selected]="_value() === ''">{{ placeholder() }}</option>
|
|
7334
7516
|
}
|
|
7335
7517
|
@for (opt of options(); track opt.value; let i = $index) {
|
|
7336
|
-
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7518
|
+
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [disabled]="!!opt.disabled" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7337
7519
|
}
|
|
7338
7520
|
</select>
|
|
7339
7521
|
<svg class="sl-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
|
|
@@ -7404,7 +7586,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
7404
7586
|
<option value="" [disabled]="true" [selected]="_value() === ''">{{ placeholder() }}</option>
|
|
7405
7587
|
}
|
|
7406
7588
|
@for (opt of options(); track opt.value; let i = $index) {
|
|
7407
|
-
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7589
|
+
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [disabled]="!!opt.disabled" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7408
7590
|
}
|
|
7409
7591
|
</select>
|
|
7410
7592
|
<svg class="sl-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
|
|
@@ -9231,6 +9413,15 @@ var EmptyStateComponent = class EmptyStateComponent {
|
|
|
9231
9413
|
@case ('shield') {
|
|
9232
9414
|
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
9233
9415
|
}
|
|
9416
|
+
@case ('pipeline') {
|
|
9417
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4h18l-7 8.5V19l-4 2v-8.5z"/></svg>
|
|
9418
|
+
}
|
|
9419
|
+
@case ('property') {
|
|
9420
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/><path d="M16 11h2a2 2 0 0 1 2 2v8"/><path d="M2 21h20"/><path d="M8 7h4M8 11h4M8 15h4"/></svg>
|
|
9421
|
+
}
|
|
9422
|
+
@case ('clipboard') {
|
|
9423
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="5" y="4" width="14" height="18" rx="2"/><path d="M9 2h6v4H9z"/><path d="m8.5 12 1.5 1.5 2.5-3"/><path d="M14.5 12.5H16M8.5 18H16"/></svg>
|
|
9424
|
+
}
|
|
9234
9425
|
@default {
|
|
9235
9426
|
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
|
|
9236
9427
|
}
|
|
@@ -9305,6 +9496,15 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9305
9496
|
@case ('shield') {
|
|
9306
9497
|
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
9307
9498
|
}
|
|
9499
|
+
@case ('pipeline') {
|
|
9500
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4h18l-7 8.5V19l-4 2v-8.5z"/></svg>
|
|
9501
|
+
}
|
|
9502
|
+
@case ('property') {
|
|
9503
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16"/><path d="M16 11h2a2 2 0 0 1 2 2v8"/><path d="M2 21h20"/><path d="M8 7h4M8 11h4M8 15h4"/></svg>
|
|
9504
|
+
}
|
|
9505
|
+
@case ('clipboard') {
|
|
9506
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="5" y="4" width="14" height="18" rx="2"/><path d="M9 2h6v4H9z"/><path d="m8.5 12 1.5 1.5 2.5-3"/><path d="M14.5 12.5H16M8.5 18H16"/></svg>
|
|
9507
|
+
}
|
|
9308
9508
|
@default {
|
|
9309
9509
|
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
|
|
9310
9510
|
}
|
|
@@ -9985,7 +10185,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
9985
10185
|
this.showMoreActions = input(true, ...ngDevMode ? [{ debugName: "showMoreActions" }] : /* istanbul ignore next */ []);
|
|
9986
10186
|
this.showSearch = input(true, ...ngDevMode ? [{ debugName: "showSearch" }] : /* istanbul ignore next */ []);
|
|
9987
10187
|
this.showQuickTabs = input(true, ...ngDevMode ? [{ debugName: "showQuickTabs" }] : /* istanbul ignore next */ []);
|
|
9988
|
-
this.
|
|
10188
|
+
this.tableTitle = input("", ...ngDevMode ? [{ debugName: "tableTitle" }] : /* istanbul ignore next */ []);
|
|
10189
|
+
this._showHeader = computed(() => !!this.tableTitle() || this.showSearch() || this.showToolbar() || this._effectiveTabs().length > 0, ...ngDevMode ? [{ debugName: "_showHeader" }] : /* istanbul ignore next */ []);
|
|
9989
10190
|
this.countsEndpoint = input("", ...ngDevMode ? [{ debugName: "countsEndpoint" }] : /* istanbul ignore next */ []);
|
|
9990
10191
|
this.params = input(null, ...ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []);
|
|
9991
10192
|
this.tableButtons = input([], ...ngDevMode ? [{ debugName: "tableButtons" }] : /* istanbul ignore next */ []);
|
|
@@ -10964,6 +11165,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10964
11165
|
isRequired: false,
|
|
10965
11166
|
transformFunction: null
|
|
10966
11167
|
},
|
|
11168
|
+
tableTitle: {
|
|
11169
|
+
classPropertyName: "tableTitle",
|
|
11170
|
+
publicName: "tableTitle",
|
|
11171
|
+
isSignal: true,
|
|
11172
|
+
isRequired: false,
|
|
11173
|
+
transformFunction: null
|
|
11174
|
+
},
|
|
10967
11175
|
countsEndpoint: {
|
|
10968
11176
|
classPropertyName: "countsEndpoint",
|
|
10969
11177
|
publicName: "countsEndpoint",
|
|
@@ -11099,6 +11307,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11099
11307
|
@if (_showHeader()) {
|
|
11100
11308
|
<div class="dt-sk-toolbar">
|
|
11101
11309
|
<div class="dt-sk-toolbar-left">
|
|
11310
|
+
@if (tableTitle()) {
|
|
11311
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
11312
|
+
}
|
|
11102
11313
|
@if (showSearch()) {
|
|
11103
11314
|
<div class="dt-sk-search">
|
|
11104
11315
|
<div class="dt-sk-shimmer dt-sk-search-icon"></div>
|
|
@@ -11124,6 +11335,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11124
11335
|
} @else if (_showHeader()) {
|
|
11125
11336
|
<div class="dt-header alive-header">
|
|
11126
11337
|
<div class="dt-header-left">
|
|
11338
|
+
@if (tableTitle()) {
|
|
11339
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
11340
|
+
}
|
|
11127
11341
|
@if (showSearch() && !_emptyUnfiltered()) {
|
|
11128
11342
|
<ui-search-input
|
|
11129
11343
|
[value]="_search()"
|
|
@@ -11767,7 +11981,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11767
11981
|
</div>
|
|
11768
11982
|
`,
|
|
11769
11983
|
isInline: true,
|
|
11770
|
-
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"],
|
|
11984
|
+
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-title{margin:0;font-size:.8125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b;overflow-wrap:anywhere}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"],
|
|
11771
11985
|
dependencies: [
|
|
11772
11986
|
{
|
|
11773
11987
|
kind: "directive",
|
|
@@ -11805,7 +12019,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11805
12019
|
"page",
|
|
11806
12020
|
"pageSize",
|
|
11807
12021
|
"totalItems",
|
|
11808
|
-
"detached"
|
|
12022
|
+
"detached",
|
|
12023
|
+
"embedded"
|
|
11809
12024
|
],
|
|
11810
12025
|
outputs: ["pageChange"]
|
|
11811
12026
|
},
|
|
@@ -11903,8 +12118,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11903
12118
|
inputs: [
|
|
11904
12119
|
"initials",
|
|
11905
12120
|
"name",
|
|
11906
|
-
"size"
|
|
11907
|
-
|
|
12121
|
+
"size",
|
|
12122
|
+
"imageUrl",
|
|
12123
|
+
"editable",
|
|
12124
|
+
"editLabel",
|
|
12125
|
+
"busy"
|
|
12126
|
+
],
|
|
12127
|
+
outputs: ["editClick", "imageError"]
|
|
11908
12128
|
},
|
|
11909
12129
|
{
|
|
11910
12130
|
kind: "component",
|
|
@@ -12153,6 +12373,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12153
12373
|
@if (_showHeader()) {
|
|
12154
12374
|
<div class="dt-sk-toolbar">
|
|
12155
12375
|
<div class="dt-sk-toolbar-left">
|
|
12376
|
+
@if (tableTitle()) {
|
|
12377
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
12378
|
+
}
|
|
12156
12379
|
@if (showSearch()) {
|
|
12157
12380
|
<div class="dt-sk-search">
|
|
12158
12381
|
<div class="dt-sk-shimmer dt-sk-search-icon"></div>
|
|
@@ -12178,6 +12401,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12178
12401
|
} @else if (_showHeader()) {
|
|
12179
12402
|
<div class="dt-header alive-header">
|
|
12180
12403
|
<div class="dt-header-left">
|
|
12404
|
+
@if (tableTitle()) {
|
|
12405
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
12406
|
+
}
|
|
12181
12407
|
@if (showSearch() && !_emptyUnfiltered()) {
|
|
12182
12408
|
<ui-search-input
|
|
12183
12409
|
[value]="_search()"
|
|
@@ -12820,7 +13046,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12820
13046
|
}
|
|
12821
13047
|
</div>
|
|
12822
13048
|
`,
|
|
12823
|
-
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"]
|
|
13049
|
+
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-title{margin:0;font-size:.8125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b;overflow-wrap:anywhere}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"]
|
|
12824
13050
|
}]
|
|
12825
13051
|
}],
|
|
12826
13052
|
ctorParameters: () => [],
|
|
@@ -12937,6 +13163,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12937
13163
|
required: false
|
|
12938
13164
|
}]
|
|
12939
13165
|
}],
|
|
13166
|
+
tableTitle: [{
|
|
13167
|
+
type: i0.Input,
|
|
13168
|
+
args: [{
|
|
13169
|
+
isSignal: true,
|
|
13170
|
+
alias: "tableTitle",
|
|
13171
|
+
required: false
|
|
13172
|
+
}]
|
|
13173
|
+
}],
|
|
12940
13174
|
countsEndpoint: [{
|
|
12941
13175
|
type: i0.Input,
|
|
12942
13176
|
args: [{
|
|
@@ -24823,6 +25057,976 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
24823
25057
|
}]
|
|
24824
25058
|
}
|
|
24825
25059
|
});
|
|
25060
|
+
const ICON_PATHS = {
|
|
25061
|
+
call: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 12a19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 3.6 1.27h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.91 8.91a16 16 0 0 0 6 6l1-1a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z",
|
|
25062
|
+
email: "M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M22 7l-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",
|
|
25063
|
+
sms: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
|
|
25064
|
+
task: "M9 11l3 3L22 4 M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11",
|
|
25065
|
+
doc: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6",
|
|
25066
|
+
money: "M12 1v22 M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",
|
|
25067
|
+
deal: "M22 7l-8.5 8.5-5-5L2 17 M16 7h6v6",
|
|
25068
|
+
survey: "M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2 M10 3h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z M9 12h6 M9 16h4",
|
|
25069
|
+
property: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z M9 22V12h6v10",
|
|
25070
|
+
search: "M11 3a8 8 0 1 0 0 16 8 8 0 0 0 0-16z M21 21l-4.35-4.35",
|
|
25071
|
+
heart: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z",
|
|
25072
|
+
calc: "M6 2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z M8 6h8 M8 10h2 M14 10h2 M8 14h2 M14 14h2 M8 18h2 M14 18h2",
|
|
25073
|
+
repeat: "M17 1l4 4-4 4 M3 11V9a4 4 0 0 1 4-4h14 M7 23l-4-4 4-4 M21 13v2a4 4 0 0 1-4 4H3"
|
|
25074
|
+
};
|
|
25075
|
+
const CALENDAR_PATH = "M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M16 2v4 M8 2v4 M3 10h18";
|
|
25076
|
+
const EDIT_PATH = "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7 M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z";
|
|
25077
|
+
const INDICATOR_LABEL = {
|
|
25078
|
+
high: "High priority",
|
|
25079
|
+
medium: "Medium priority",
|
|
25080
|
+
low: "Low priority"
|
|
25081
|
+
};
|
|
25082
|
+
var CardListItemComponent = class CardListItemComponent {
|
|
25083
|
+
constructor() {
|
|
25084
|
+
this.title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
25085
|
+
this.description = input(void 0, ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
|
|
25086
|
+
this.date = input(void 0, ...ngDevMode ? [{ debugName: "date" }] : /* istanbul ignore next */ []);
|
|
25087
|
+
this.type = input(void 0, ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
25088
|
+
this.typeVariant = input("gray", ...ngDevMode ? [{ debugName: "typeVariant" }] : /* istanbul ignore next */ []);
|
|
25089
|
+
this.status = input(void 0, ...ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []);
|
|
25090
|
+
this.statusVariant = input(void 0, ...ngDevMode ? [{ debugName: "statusVariant" }] : /* istanbul ignore next */ []);
|
|
25091
|
+
this.indicator = input("none", ...ngDevMode ? [{ debugName: "indicator" }] : /* istanbul ignore next */ []);
|
|
25092
|
+
this.icon = input(void 0, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
25093
|
+
this.editButton = input(false, ...ngDevMode ? [{ debugName: "editButton" }] : /* istanbul ignore next */ []);
|
|
25094
|
+
this.viewButton = input(false, ...ngDevMode ? [{ debugName: "viewButton" }] : /* istanbul ignore next */ []);
|
|
25095
|
+
this.editAriaLabel = input("", ...ngDevMode ? [{ debugName: "editAriaLabel" }] : /* istanbul ignore next */ []);
|
|
25096
|
+
this.viewAriaLabel = input("", ...ngDevMode ? [{ debugName: "viewAriaLabel" }] : /* istanbul ignore next */ []);
|
|
25097
|
+
this.editClick = output();
|
|
25098
|
+
this.viewClick = output();
|
|
25099
|
+
this.calendarPath = CALENDAR_PATH;
|
|
25100
|
+
this.editPath = EDIT_PATH;
|
|
25101
|
+
this.iconPath = computed(() => {
|
|
25102
|
+
const i = this.icon();
|
|
25103
|
+
return i ? ICON_PATHS[i] ?? null : null;
|
|
25104
|
+
}, ...ngDevMode ? [{ debugName: "iconPath" }] : /* istanbul ignore next */ []);
|
|
25105
|
+
this.indicatorLabel = computed(() => INDICATOR_LABEL[this.indicator()] ?? "", ...ngDevMode ? [{ debugName: "indicatorLabel" }] : /* istanbul ignore next */ []);
|
|
25106
|
+
}
|
|
25107
|
+
static {
|
|
25108
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
25109
|
+
minVersion: "12.0.0",
|
|
25110
|
+
version: "22.2.2",
|
|
25111
|
+
ngImport: i0,
|
|
25112
|
+
type: CardListItemComponent,
|
|
25113
|
+
deps: [],
|
|
25114
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
25115
|
+
});
|
|
25116
|
+
}
|
|
25117
|
+
static {
|
|
25118
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
25119
|
+
minVersion: "17.0.0",
|
|
25120
|
+
version: "22.2.2",
|
|
25121
|
+
type: CardListItemComponent,
|
|
25122
|
+
isStandalone: true,
|
|
25123
|
+
selector: "ui-card-list-item",
|
|
25124
|
+
inputs: {
|
|
25125
|
+
title: {
|
|
25126
|
+
classPropertyName: "title",
|
|
25127
|
+
publicName: "title",
|
|
25128
|
+
isSignal: true,
|
|
25129
|
+
isRequired: false,
|
|
25130
|
+
transformFunction: null
|
|
25131
|
+
},
|
|
25132
|
+
description: {
|
|
25133
|
+
classPropertyName: "description",
|
|
25134
|
+
publicName: "description",
|
|
25135
|
+
isSignal: true,
|
|
25136
|
+
isRequired: false,
|
|
25137
|
+
transformFunction: null
|
|
25138
|
+
},
|
|
25139
|
+
date: {
|
|
25140
|
+
classPropertyName: "date",
|
|
25141
|
+
publicName: "date",
|
|
25142
|
+
isSignal: true,
|
|
25143
|
+
isRequired: false,
|
|
25144
|
+
transformFunction: null
|
|
25145
|
+
},
|
|
25146
|
+
type: {
|
|
25147
|
+
classPropertyName: "type",
|
|
25148
|
+
publicName: "type",
|
|
25149
|
+
isSignal: true,
|
|
25150
|
+
isRequired: false,
|
|
25151
|
+
transformFunction: null
|
|
25152
|
+
},
|
|
25153
|
+
typeVariant: {
|
|
25154
|
+
classPropertyName: "typeVariant",
|
|
25155
|
+
publicName: "typeVariant",
|
|
25156
|
+
isSignal: true,
|
|
25157
|
+
isRequired: false,
|
|
25158
|
+
transformFunction: null
|
|
25159
|
+
},
|
|
25160
|
+
status: {
|
|
25161
|
+
classPropertyName: "status",
|
|
25162
|
+
publicName: "status",
|
|
25163
|
+
isSignal: true,
|
|
25164
|
+
isRequired: false,
|
|
25165
|
+
transformFunction: null
|
|
25166
|
+
},
|
|
25167
|
+
statusVariant: {
|
|
25168
|
+
classPropertyName: "statusVariant",
|
|
25169
|
+
publicName: "statusVariant",
|
|
25170
|
+
isSignal: true,
|
|
25171
|
+
isRequired: false,
|
|
25172
|
+
transformFunction: null
|
|
25173
|
+
},
|
|
25174
|
+
indicator: {
|
|
25175
|
+
classPropertyName: "indicator",
|
|
25176
|
+
publicName: "indicator",
|
|
25177
|
+
isSignal: true,
|
|
25178
|
+
isRequired: false,
|
|
25179
|
+
transformFunction: null
|
|
25180
|
+
},
|
|
25181
|
+
icon: {
|
|
25182
|
+
classPropertyName: "icon",
|
|
25183
|
+
publicName: "icon",
|
|
25184
|
+
isSignal: true,
|
|
25185
|
+
isRequired: false,
|
|
25186
|
+
transformFunction: null
|
|
25187
|
+
},
|
|
25188
|
+
editButton: {
|
|
25189
|
+
classPropertyName: "editButton",
|
|
25190
|
+
publicName: "editButton",
|
|
25191
|
+
isSignal: true,
|
|
25192
|
+
isRequired: false,
|
|
25193
|
+
transformFunction: null
|
|
25194
|
+
},
|
|
25195
|
+
viewButton: {
|
|
25196
|
+
classPropertyName: "viewButton",
|
|
25197
|
+
publicName: "viewButton",
|
|
25198
|
+
isSignal: true,
|
|
25199
|
+
isRequired: false,
|
|
25200
|
+
transformFunction: null
|
|
25201
|
+
},
|
|
25202
|
+
editAriaLabel: {
|
|
25203
|
+
classPropertyName: "editAriaLabel",
|
|
25204
|
+
publicName: "editAriaLabel",
|
|
25205
|
+
isSignal: true,
|
|
25206
|
+
isRequired: false,
|
|
25207
|
+
transformFunction: null
|
|
25208
|
+
},
|
|
25209
|
+
viewAriaLabel: {
|
|
25210
|
+
classPropertyName: "viewAriaLabel",
|
|
25211
|
+
publicName: "viewAriaLabel",
|
|
25212
|
+
isSignal: true,
|
|
25213
|
+
isRequired: false,
|
|
25214
|
+
transformFunction: null
|
|
25215
|
+
}
|
|
25216
|
+
},
|
|
25217
|
+
outputs: {
|
|
25218
|
+
editClick: "editClick",
|
|
25219
|
+
viewClick: "viewClick"
|
|
25220
|
+
},
|
|
25221
|
+
ngImport: i0,
|
|
25222
|
+
template: `
|
|
25223
|
+
<div class="cli-row">
|
|
25224
|
+
@if (iconPath(); as d) {
|
|
25225
|
+
<div class="cli-icon-circle" [class]="'cli-icon-circle cli-icon-circle--' + icon()" aria-hidden="true">
|
|
25226
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>
|
|
25227
|
+
</div>
|
|
25228
|
+
} @else if (indicator() !== 'none') {
|
|
25229
|
+
@if (indicatorLabel(); as label) {
|
|
25230
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" [uiTooltip]="label" tabindex="0" role="img" [attr.aria-label]="label"></div>
|
|
25231
|
+
} @else {
|
|
25232
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" aria-hidden="true"></div>
|
|
25233
|
+
}
|
|
25234
|
+
}
|
|
25235
|
+
|
|
25236
|
+
<div class="cli-body">
|
|
25237
|
+
<div class="cli-title-row">
|
|
25238
|
+
<span class="cli-title">{{ title() }}</span>
|
|
25239
|
+
@if (type()) { <ui-badge [label]="type()!" [variant]="typeVariant()" /> }
|
|
25240
|
+
@if (status() && statusVariant()) { <ui-badge [label]="status()!" [variant]="statusVariant()!" /> }
|
|
25241
|
+
</div>
|
|
25242
|
+
<div class="cli-desc-row">
|
|
25243
|
+
@if (description()) { <span class="cli-description">{{ description() }}</span> }
|
|
25244
|
+
<ng-content select="[card-list-inline]" />
|
|
25245
|
+
</div>
|
|
25246
|
+
@if (date()) {
|
|
25247
|
+
<span class="cli-date">
|
|
25248
|
+
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="calendarPath" /></svg>
|
|
25249
|
+
{{ date() }}
|
|
25250
|
+
</span>
|
|
25251
|
+
}
|
|
25252
|
+
</div>
|
|
25253
|
+
|
|
25254
|
+
@if (editButton()) {
|
|
25255
|
+
<button class="cli-chip cli-chip--edit" type="button" [attr.aria-label]="editAriaLabel() || null" (click)="editClick.emit()">
|
|
25256
|
+
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="editPath" /></svg>
|
|
25257
|
+
Edit
|
|
25258
|
+
</button>
|
|
25259
|
+
}
|
|
25260
|
+
@if (viewButton()) {
|
|
25261
|
+
<button class="cli-chip cli-chip--view" type="button" [attr.aria-label]="viewAriaLabel() || null" (click)="viewClick.emit()">View</button>
|
|
25262
|
+
}
|
|
25263
|
+
<ng-content select="[card-list-action]" />
|
|
25264
|
+
<ng-content />
|
|
25265
|
+
</div>
|
|
25266
|
+
<ng-content select="[card-stats]" />
|
|
25267
|
+
<ng-content select="[card-detail]" />
|
|
25268
|
+
`,
|
|
25269
|
+
isInline: true,
|
|
25270
|
+
styles: ["ui-card-list-item{display:block;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;margin-bottom:8px}ui-card-list-item:last-child{margin-bottom:0}ui-card-list-item .cli-row{display:flex;align-items:flex-start;gap:12px;padding:13px 18px;transition:background .12s}ui-card-list-item .cli-row:hover{background:#f8fafc}@media(prefers-reduced-motion:reduce){ui-card-list-item .cli-row{transition:none}}ui-card-list-item .cli-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-top:5px}ui-card-list-item .cli-dot:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}ui-card-list-item .cli-dot--high{background:#ef4444}ui-card-list-item .cli-dot--medium{background:#f59e0b}ui-card-list-item .cli-dot--low{background:#94a3b8}ui-card-list-item .cli-dot--blue{background:#3b82f6}ui-card-list-item .cli-dot--green{background:#22c55e}ui-card-list-item .cli-icon-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}ui-card-list-item .cli-icon-circle--call{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--email{background:#dcfce7;color:#16a34a}ui-card-list-item .cli-icon-circle--sms{background:#fef9c3;color:#ca8a04}ui-card-list-item .cli-icon-circle--task{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--doc{background:#ffedd5;color:#ea580c}ui-card-list-item .cli-icon-circle--money{background:#d1fae5;color:#059669}ui-card-list-item .cli-icon-circle--deal{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-icon-circle--survey{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--property{background:#fef3c7;color:#d97706}ui-card-list-item .cli-icon-circle--search{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-icon-circle--heart{background:#fce7f3;color:#db2777}ui-card-list-item .cli-icon-circle--calc{background:#d1fae5;color:#059669}ui-card-list-item .cli-icon-circle--repeat{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;overflow-wrap:anywhere;word-break:break-word}ui-card-list-item .cli-title-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}ui-card-list-item .cli-title{font-size:.875rem;font-weight:600;color:#1e293b}ui-card-list-item .cli-desc-row{display:flex;align-items:center;gap:8px}ui-card-list-item .cli-desc-row:empty{display:none}ui-card-list-item .cli-description{font-size:.8125rem;color:#64748b;min-width:0}ui-card-list-item .cli-date{display:flex;align-items:center;gap:4px;font-size:.75rem;color:#64748b}ui-card-list-item .cli-chip{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;align-self:center;box-sizing:border-box;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;background:none;cursor:pointer;padding:4px 10px;border-radius:6px;text-decoration:none;transition:background .15s,color .15s,border-color .15s}ui-card-list-item .cli-chip--edit{color:#64748b;border:1px solid #e2e8f0}ui-card-list-item .cli-chip--edit:hover{background:#f1f5f9;color:#1e293b}ui-card-list-item .cli-chip--view{color:#2563eb;border:1px solid #dbeafe}ui-card-list-item .cli-chip--view:hover{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}ui-card-list-item .cli-chip:focus-visible,ui-card-list-item .cli-inline-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}ui-card-list-item .cli-inline-link{flex-shrink:0;margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:.8rem;font-weight:500;color:#2563eb;text-decoration:none;transition:color .15s}ui-card-list-item .cli-inline-link:hover{color:#1d4ed8}@media(pointer:coarse),(max-width:480px){ui-card-list-item .cli-chip{min-height:44px;padding:4px 14px}}ui-card-list-item [card-stats]{display:flex;align-items:stretch;background:#f8fafc;border-top:1px solid #f1f5f9}ui-card-list-item [card-detail]{background:#f8fafc;border-top:1px solid #e2e8f0}ui-card-list-item .cli-stat{flex:1;display:flex;flex-direction:column;gap:2px;padding:10px 14px}ui-card-list-item .cli-stat-label{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#64748b}ui-card-list-item .cli-stat-value{font-size:.9375rem;font-weight:600;color:#0f172a}ui-card-list-item .cli-stat-divider{width:1px;background:#e2e8f0;margin:8px 0}\n"],
|
|
25271
|
+
dependencies: [{
|
|
25272
|
+
kind: "component",
|
|
25273
|
+
type: BadgeComponent,
|
|
25274
|
+
selector: "ui-badge",
|
|
25275
|
+
inputs: ["label", "variant"]
|
|
25276
|
+
}, {
|
|
25277
|
+
kind: "directive",
|
|
25278
|
+
type: TooltipDirective,
|
|
25279
|
+
selector: "[uiTooltip]",
|
|
25280
|
+
inputs: ["uiTooltip", "tooltipPosition"]
|
|
25281
|
+
}],
|
|
25282
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
25283
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
25284
|
+
});
|
|
25285
|
+
}
|
|
25286
|
+
};
|
|
25287
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
25288
|
+
minVersion: "12.0.0",
|
|
25289
|
+
version: "22.2.2",
|
|
25290
|
+
ngImport: i0,
|
|
25291
|
+
type: CardListItemComponent,
|
|
25292
|
+
decorators: [{
|
|
25293
|
+
type: Component,
|
|
25294
|
+
args: [{
|
|
25295
|
+
selector: "ui-card-list-item",
|
|
25296
|
+
standalone: true,
|
|
25297
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25298
|
+
encapsulation: ViewEncapsulation.None,
|
|
25299
|
+
imports: [BadgeComponent, TooltipDirective],
|
|
25300
|
+
template: `
|
|
25301
|
+
<div class="cli-row">
|
|
25302
|
+
@if (iconPath(); as d) {
|
|
25303
|
+
<div class="cli-icon-circle" [class]="'cli-icon-circle cli-icon-circle--' + icon()" aria-hidden="true">
|
|
25304
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>
|
|
25305
|
+
</div>
|
|
25306
|
+
} @else if (indicator() !== 'none') {
|
|
25307
|
+
@if (indicatorLabel(); as label) {
|
|
25308
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" [uiTooltip]="label" tabindex="0" role="img" [attr.aria-label]="label"></div>
|
|
25309
|
+
} @else {
|
|
25310
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" aria-hidden="true"></div>
|
|
25311
|
+
}
|
|
25312
|
+
}
|
|
25313
|
+
|
|
25314
|
+
<div class="cli-body">
|
|
25315
|
+
<div class="cli-title-row">
|
|
25316
|
+
<span class="cli-title">{{ title() }}</span>
|
|
25317
|
+
@if (type()) { <ui-badge [label]="type()!" [variant]="typeVariant()" /> }
|
|
25318
|
+
@if (status() && statusVariant()) { <ui-badge [label]="status()!" [variant]="statusVariant()!" /> }
|
|
25319
|
+
</div>
|
|
25320
|
+
<div class="cli-desc-row">
|
|
25321
|
+
@if (description()) { <span class="cli-description">{{ description() }}</span> }
|
|
25322
|
+
<ng-content select="[card-list-inline]" />
|
|
25323
|
+
</div>
|
|
25324
|
+
@if (date()) {
|
|
25325
|
+
<span class="cli-date">
|
|
25326
|
+
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="calendarPath" /></svg>
|
|
25327
|
+
{{ date() }}
|
|
25328
|
+
</span>
|
|
25329
|
+
}
|
|
25330
|
+
</div>
|
|
25331
|
+
|
|
25332
|
+
@if (editButton()) {
|
|
25333
|
+
<button class="cli-chip cli-chip--edit" type="button" [attr.aria-label]="editAriaLabel() || null" (click)="editClick.emit()">
|
|
25334
|
+
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="editPath" /></svg>
|
|
25335
|
+
Edit
|
|
25336
|
+
</button>
|
|
25337
|
+
}
|
|
25338
|
+
@if (viewButton()) {
|
|
25339
|
+
<button class="cli-chip cli-chip--view" type="button" [attr.aria-label]="viewAriaLabel() || null" (click)="viewClick.emit()">View</button>
|
|
25340
|
+
}
|
|
25341
|
+
<ng-content select="[card-list-action]" />
|
|
25342
|
+
<ng-content />
|
|
25343
|
+
</div>
|
|
25344
|
+
<ng-content select="[card-stats]" />
|
|
25345
|
+
<ng-content select="[card-detail]" />
|
|
25346
|
+
`,
|
|
25347
|
+
styles: ["ui-card-list-item{display:block;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;margin-bottom:8px}ui-card-list-item:last-child{margin-bottom:0}ui-card-list-item .cli-row{display:flex;align-items:flex-start;gap:12px;padding:13px 18px;transition:background .12s}ui-card-list-item .cli-row:hover{background:#f8fafc}@media(prefers-reduced-motion:reduce){ui-card-list-item .cli-row{transition:none}}ui-card-list-item .cli-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-top:5px}ui-card-list-item .cli-dot:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}ui-card-list-item .cli-dot--high{background:#ef4444}ui-card-list-item .cli-dot--medium{background:#f59e0b}ui-card-list-item .cli-dot--low{background:#94a3b8}ui-card-list-item .cli-dot--blue{background:#3b82f6}ui-card-list-item .cli-dot--green{background:#22c55e}ui-card-list-item .cli-icon-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}ui-card-list-item .cli-icon-circle--call{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--email{background:#dcfce7;color:#16a34a}ui-card-list-item .cli-icon-circle--sms{background:#fef9c3;color:#ca8a04}ui-card-list-item .cli-icon-circle--task{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--doc{background:#ffedd5;color:#ea580c}ui-card-list-item .cli-icon-circle--money{background:#d1fae5;color:#059669}ui-card-list-item .cli-icon-circle--deal{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-icon-circle--survey{background:#dbeafe;color:#2563eb}ui-card-list-item .cli-icon-circle--property{background:#fef3c7;color:#d97706}ui-card-list-item .cli-icon-circle--search{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-icon-circle--heart{background:#fce7f3;color:#db2777}ui-card-list-item .cli-icon-circle--calc{background:#d1fae5;color:#059669}ui-card-list-item .cli-icon-circle--repeat{background:#e0f2fe;color:#0284c7}ui-card-list-item .cli-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;overflow-wrap:anywhere;word-break:break-word}ui-card-list-item .cli-title-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}ui-card-list-item .cli-title{font-size:.875rem;font-weight:600;color:#1e293b}ui-card-list-item .cli-desc-row{display:flex;align-items:center;gap:8px}ui-card-list-item .cli-desc-row:empty{display:none}ui-card-list-item .cli-description{font-size:.8125rem;color:#64748b;min-width:0}ui-card-list-item .cli-date{display:flex;align-items:center;gap:4px;font-size:.75rem;color:#64748b}ui-card-list-item .cli-chip{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;align-self:center;box-sizing:border-box;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;background:none;cursor:pointer;padding:4px 10px;border-radius:6px;text-decoration:none;transition:background .15s,color .15s,border-color .15s}ui-card-list-item .cli-chip--edit{color:#64748b;border:1px solid #e2e8f0}ui-card-list-item .cli-chip--edit:hover{background:#f1f5f9;color:#1e293b}ui-card-list-item .cli-chip--view{color:#2563eb;border:1px solid #dbeafe}ui-card-list-item .cli-chip--view:hover{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}ui-card-list-item .cli-chip:focus-visible,ui-card-list-item .cli-inline-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}ui-card-list-item .cli-inline-link{flex-shrink:0;margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:.8rem;font-weight:500;color:#2563eb;text-decoration:none;transition:color .15s}ui-card-list-item .cli-inline-link:hover{color:#1d4ed8}@media(pointer:coarse),(max-width:480px){ui-card-list-item .cli-chip{min-height:44px;padding:4px 14px}}ui-card-list-item [card-stats]{display:flex;align-items:stretch;background:#f8fafc;border-top:1px solid #f1f5f9}ui-card-list-item [card-detail]{background:#f8fafc;border-top:1px solid #e2e8f0}ui-card-list-item .cli-stat{flex:1;display:flex;flex-direction:column;gap:2px;padding:10px 14px}ui-card-list-item .cli-stat-label{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#64748b}ui-card-list-item .cli-stat-value{font-size:.9375rem;font-weight:600;color:#0f172a}ui-card-list-item .cli-stat-divider{width:1px;background:#e2e8f0;margin:8px 0}\n"]
|
|
25348
|
+
}]
|
|
25349
|
+
}],
|
|
25350
|
+
propDecorators: {
|
|
25351
|
+
title: [{
|
|
25352
|
+
type: i0.Input,
|
|
25353
|
+
args: [{
|
|
25354
|
+
isSignal: true,
|
|
25355
|
+
alias: "title",
|
|
25356
|
+
required: false
|
|
25357
|
+
}]
|
|
25358
|
+
}],
|
|
25359
|
+
description: [{
|
|
25360
|
+
type: i0.Input,
|
|
25361
|
+
args: [{
|
|
25362
|
+
isSignal: true,
|
|
25363
|
+
alias: "description",
|
|
25364
|
+
required: false
|
|
25365
|
+
}]
|
|
25366
|
+
}],
|
|
25367
|
+
date: [{
|
|
25368
|
+
type: i0.Input,
|
|
25369
|
+
args: [{
|
|
25370
|
+
isSignal: true,
|
|
25371
|
+
alias: "date",
|
|
25372
|
+
required: false
|
|
25373
|
+
}]
|
|
25374
|
+
}],
|
|
25375
|
+
type: [{
|
|
25376
|
+
type: i0.Input,
|
|
25377
|
+
args: [{
|
|
25378
|
+
isSignal: true,
|
|
25379
|
+
alias: "type",
|
|
25380
|
+
required: false
|
|
25381
|
+
}]
|
|
25382
|
+
}],
|
|
25383
|
+
typeVariant: [{
|
|
25384
|
+
type: i0.Input,
|
|
25385
|
+
args: [{
|
|
25386
|
+
isSignal: true,
|
|
25387
|
+
alias: "typeVariant",
|
|
25388
|
+
required: false
|
|
25389
|
+
}]
|
|
25390
|
+
}],
|
|
25391
|
+
status: [{
|
|
25392
|
+
type: i0.Input,
|
|
25393
|
+
args: [{
|
|
25394
|
+
isSignal: true,
|
|
25395
|
+
alias: "status",
|
|
25396
|
+
required: false
|
|
25397
|
+
}]
|
|
25398
|
+
}],
|
|
25399
|
+
statusVariant: [{
|
|
25400
|
+
type: i0.Input,
|
|
25401
|
+
args: [{
|
|
25402
|
+
isSignal: true,
|
|
25403
|
+
alias: "statusVariant",
|
|
25404
|
+
required: false
|
|
25405
|
+
}]
|
|
25406
|
+
}],
|
|
25407
|
+
indicator: [{
|
|
25408
|
+
type: i0.Input,
|
|
25409
|
+
args: [{
|
|
25410
|
+
isSignal: true,
|
|
25411
|
+
alias: "indicator",
|
|
25412
|
+
required: false
|
|
25413
|
+
}]
|
|
25414
|
+
}],
|
|
25415
|
+
icon: [{
|
|
25416
|
+
type: i0.Input,
|
|
25417
|
+
args: [{
|
|
25418
|
+
isSignal: true,
|
|
25419
|
+
alias: "icon",
|
|
25420
|
+
required: false
|
|
25421
|
+
}]
|
|
25422
|
+
}],
|
|
25423
|
+
editButton: [{
|
|
25424
|
+
type: i0.Input,
|
|
25425
|
+
args: [{
|
|
25426
|
+
isSignal: true,
|
|
25427
|
+
alias: "editButton",
|
|
25428
|
+
required: false
|
|
25429
|
+
}]
|
|
25430
|
+
}],
|
|
25431
|
+
viewButton: [{
|
|
25432
|
+
type: i0.Input,
|
|
25433
|
+
args: [{
|
|
25434
|
+
isSignal: true,
|
|
25435
|
+
alias: "viewButton",
|
|
25436
|
+
required: false
|
|
25437
|
+
}]
|
|
25438
|
+
}],
|
|
25439
|
+
editAriaLabel: [{
|
|
25440
|
+
type: i0.Input,
|
|
25441
|
+
args: [{
|
|
25442
|
+
isSignal: true,
|
|
25443
|
+
alias: "editAriaLabel",
|
|
25444
|
+
required: false
|
|
25445
|
+
}]
|
|
25446
|
+
}],
|
|
25447
|
+
viewAriaLabel: [{
|
|
25448
|
+
type: i0.Input,
|
|
25449
|
+
args: [{
|
|
25450
|
+
isSignal: true,
|
|
25451
|
+
alias: "viewAriaLabel",
|
|
25452
|
+
required: false
|
|
25453
|
+
}]
|
|
25454
|
+
}],
|
|
25455
|
+
editClick: [{
|
|
25456
|
+
type: i0.Output,
|
|
25457
|
+
args: ["editClick"]
|
|
25458
|
+
}],
|
|
25459
|
+
viewClick: [{
|
|
25460
|
+
type: i0.Output,
|
|
25461
|
+
args: ["viewClick"]
|
|
25462
|
+
}]
|
|
25463
|
+
}
|
|
25464
|
+
});
|
|
25465
|
+
const ACTION_VERB = {
|
|
25466
|
+
load: "loading",
|
|
25467
|
+
save: "saving",
|
|
25468
|
+
create: "creating",
|
|
25469
|
+
update: "updating",
|
|
25470
|
+
delete: "deleting",
|
|
25471
|
+
send: "sending",
|
|
25472
|
+
export: "exporting",
|
|
25473
|
+
import: "importing",
|
|
25474
|
+
upload: "uploading",
|
|
25475
|
+
download: "downloading"
|
|
25476
|
+
};
|
|
25477
|
+
const ACTION_PERMISSION_VERB = {
|
|
25478
|
+
load: "access",
|
|
25479
|
+
save: "save",
|
|
25480
|
+
create: "create",
|
|
25481
|
+
update: "update",
|
|
25482
|
+
delete: "delete",
|
|
25483
|
+
send: "send",
|
|
25484
|
+
export: "export",
|
|
25485
|
+
import: "import",
|
|
25486
|
+
upload: "upload",
|
|
25487
|
+
download: "download"
|
|
25488
|
+
};
|
|
25489
|
+
const REQUEST_METHOD = "__forgerouteRequestMethod";
|
|
25490
|
+
const errorContextInterceptor = (req, next) => next(req).pipe(catchError$1((err) => {
|
|
25491
|
+
if (err instanceof HttpErrorResponse && !(REQUEST_METHOD in err)) Object.defineProperty(err, REQUEST_METHOD, {
|
|
25492
|
+
value: req.method.toUpperCase(),
|
|
25493
|
+
enumerable: false
|
|
25494
|
+
});
|
|
25495
|
+
return throwError(() => err);
|
|
25496
|
+
}));
|
|
25497
|
+
function actionFromMethod(error) {
|
|
25498
|
+
switch (error[REQUEST_METHOD]) {
|
|
25499
|
+
case "POST":
|
|
25500
|
+
case "PUT":
|
|
25501
|
+
case "PATCH": return "save";
|
|
25502
|
+
case "DELETE": return "delete";
|
|
25503
|
+
default: return "load";
|
|
25504
|
+
}
|
|
25505
|
+
}
|
|
25506
|
+
function withoutLeadingArticle(ctx) {
|
|
25507
|
+
return ctx.replace(/^(?:the|an?)\s+/i, "") || ctx;
|
|
25508
|
+
}
|
|
25509
|
+
function getErrorMessage(error, fallbackContext, action) {
|
|
25510
|
+
const ctx = fallbackContext?.trim() || "data";
|
|
25511
|
+
const act = action ?? (error instanceof HttpErrorResponse ? actionFromMethod(error) : "load");
|
|
25512
|
+
const failed = `There was an error ${ACTION_VERB[act]} ${ctx}.`;
|
|
25513
|
+
if (error instanceof HttpErrorResponse) {
|
|
25514
|
+
if (error.error?.message) return error.error.message;
|
|
25515
|
+
if (typeof error.error === "string" && error.error.length < 200) return error.error;
|
|
25516
|
+
switch (error.status) {
|
|
25517
|
+
case 0: return `${failed} Please check your connection and try again.`;
|
|
25518
|
+
case 401: return "Your session has expired. Please log in again.";
|
|
25519
|
+
case 403: return `You don't have permission to ${ACTION_PERMISSION_VERB[act]} ${ctx}.`;
|
|
25520
|
+
case 404: return `The ${withoutLeadingArticle(ctx)} you're looking for could not be found.`;
|
|
25521
|
+
case 408: return `${failed} The request timed out — please try again.`;
|
|
25522
|
+
case 422: return "The data you submitted is invalid. Please check your input and try again.";
|
|
25523
|
+
case 429: return `${failed} Too many requests — please wait a moment and try again.`;
|
|
25524
|
+
case 502:
|
|
25525
|
+
case 503:
|
|
25526
|
+
case 504: return `${failed} Please try again in a few minutes.`;
|
|
25527
|
+
default: return `${failed} Please try again.`;
|
|
25528
|
+
}
|
|
25529
|
+
}
|
|
25530
|
+
if (error instanceof Error) return error.message;
|
|
25531
|
+
if (typeof error === "string") return error;
|
|
25532
|
+
return `${failed} Please try again.`;
|
|
25533
|
+
}
|
|
25534
|
+
const NOTES_MAX_LENGTH = 1e4;
|
|
25535
|
+
const NOTES_PAGE_SIZE = 5;
|
|
25536
|
+
var NotesComponent = class NotesComponent {
|
|
25537
|
+
initials(name) {
|
|
25538
|
+
const parts = (name || "You").trim().split(/\s+/).filter(Boolean);
|
|
25539
|
+
return ((parts[0]?.[0] ?? "") + (parts.length > 1 ? parts[parts.length - 1][0] : "")).toUpperCase();
|
|
25540
|
+
}
|
|
25541
|
+
tooLong(text) {
|
|
25542
|
+
return text.trim().length > NOTES_MAX_LENGTH;
|
|
25543
|
+
}
|
|
25544
|
+
validBody(text) {
|
|
25545
|
+
const n = text.trim().length;
|
|
25546
|
+
return n > 0 && n <= 1e4;
|
|
25547
|
+
}
|
|
25548
|
+
get listUrl() {
|
|
25549
|
+
return `${this.apiBase}/notes/${this.resourceType()}/${this.resourceId()}`;
|
|
25550
|
+
}
|
|
25551
|
+
constructor() {
|
|
25552
|
+
this.resourceType = input("", ...ngDevMode ? [{ debugName: "resourceType" }] : /* istanbul ignore next */ []);
|
|
25553
|
+
this.resourceId = input("", ...ngDevMode ? [{ debugName: "resourceId" }] : /* istanbul ignore next */ []);
|
|
25554
|
+
this.readOnly = input(false, ...ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []);
|
|
25555
|
+
this.totalChange = output();
|
|
25556
|
+
this.http = inject(HttpClient);
|
|
25557
|
+
this.toast = inject(ToastService);
|
|
25558
|
+
this.destroyRef = inject(DestroyRef);
|
|
25559
|
+
this.apiBase = inject(FORGEROUTE_CONFIG, { optional: true })?.baseUrl ?? "/api";
|
|
25560
|
+
this.pageSize = NOTES_PAGE_SIZE;
|
|
25561
|
+
this.maxLength = NOTES_MAX_LENGTH;
|
|
25562
|
+
this.notes = signal([], ...ngDevMode ? [{ debugName: "notes" }] : /* istanbul ignore next */ []);
|
|
25563
|
+
this.loading = signal(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
25564
|
+
this.saving = signal(false, ...ngDevMode ? [{ debugName: "saving" }] : /* istanbul ignore next */ []);
|
|
25565
|
+
this.page = signal(0, ...ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []);
|
|
25566
|
+
this.totalElements = signal(0, ...ngDevMode ? [{ debugName: "totalElements" }] : /* istanbul ignore next */ []);
|
|
25567
|
+
this.editingId = signal(null, ...ngDevMode ? [{ debugName: "editingId" }] : /* istanbul ignore next */ []);
|
|
25568
|
+
this.deletingId = signal(null, ...ngDevMode ? [{ debugName: "deletingId" }] : /* istanbul ignore next */ []);
|
|
25569
|
+
this.newBody = "";
|
|
25570
|
+
this.editBody = "";
|
|
25571
|
+
effect(() => {
|
|
25572
|
+
const id = this.resourceId();
|
|
25573
|
+
const type = this.resourceType();
|
|
25574
|
+
if (id && type) untracked(() => this.loadPage(0));
|
|
25575
|
+
});
|
|
25576
|
+
}
|
|
25577
|
+
loadPage(p) {
|
|
25578
|
+
if (!this.resourceType() || !this.resourceId()) return;
|
|
25579
|
+
this.loading.set(true);
|
|
25580
|
+
this.http.get(`${this.listUrl}?page=${p}&size=${this.pageSize}`).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25581
|
+
next: (res) => {
|
|
25582
|
+
this.notes.set(res.content);
|
|
25583
|
+
this.page.set(res.page);
|
|
25584
|
+
this.totalElements.set(res.totalElements);
|
|
25585
|
+
this.loading.set(false);
|
|
25586
|
+
this.totalChange.emit(res.totalElements);
|
|
25587
|
+
},
|
|
25588
|
+
error: (err) => {
|
|
25589
|
+
this.loading.set(false);
|
|
25590
|
+
this.toast.error(getErrorMessage(err, "notes"));
|
|
25591
|
+
}
|
|
25592
|
+
});
|
|
25593
|
+
}
|
|
25594
|
+
addNote() {
|
|
25595
|
+
if (this.readOnly() || !this.validBody(this.newBody) || this.saving()) return;
|
|
25596
|
+
this.saving.set(true);
|
|
25597
|
+
this.http.post(this.listUrl, { body: this.newBody.trim() }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25598
|
+
next: () => {
|
|
25599
|
+
this.newBody = "";
|
|
25600
|
+
this.saving.set(false);
|
|
25601
|
+
this.loadPage(0);
|
|
25602
|
+
},
|
|
25603
|
+
error: (err) => {
|
|
25604
|
+
this.saving.set(false);
|
|
25605
|
+
this.toast.error(getErrorMessage(err, "note", "create"));
|
|
25606
|
+
}
|
|
25607
|
+
});
|
|
25608
|
+
}
|
|
25609
|
+
startEdit(note) {
|
|
25610
|
+
if (this.readOnly()) return;
|
|
25611
|
+
this.editingId.set(note.id);
|
|
25612
|
+
this.editBody = note.body;
|
|
25613
|
+
}
|
|
25614
|
+
cancelEdit() {
|
|
25615
|
+
this.editingId.set(null);
|
|
25616
|
+
this.editBody = "";
|
|
25617
|
+
}
|
|
25618
|
+
saveEdit(noteId) {
|
|
25619
|
+
if (this.readOnly() || !this.validBody(this.editBody) || this.saving()) return;
|
|
25620
|
+
this.saving.set(true);
|
|
25621
|
+
this.http.put(`${this.apiBase}/notes/${noteId}`, { body: this.editBody.trim() }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25622
|
+
next: (updated) => {
|
|
25623
|
+
this.notes.update((arr) => arr.map((n) => n.id === noteId ? updated : n));
|
|
25624
|
+
this.editingId.set(null);
|
|
25625
|
+
this.saving.set(false);
|
|
25626
|
+
},
|
|
25627
|
+
error: (err) => {
|
|
25628
|
+
this.saving.set(false);
|
|
25629
|
+
this.toast.error(getErrorMessage(err, "note", "update"));
|
|
25630
|
+
}
|
|
25631
|
+
});
|
|
25632
|
+
}
|
|
25633
|
+
confirmDelete(id) {
|
|
25634
|
+
if (this.readOnly()) return;
|
|
25635
|
+
this.deletingId.set(id);
|
|
25636
|
+
}
|
|
25637
|
+
deleteNote() {
|
|
25638
|
+
const id = this.deletingId();
|
|
25639
|
+
if (this.readOnly() || !id || this.saving()) return;
|
|
25640
|
+
this.saving.set(true);
|
|
25641
|
+
this.http.delete(`${this.apiBase}/notes/${id}`).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25642
|
+
next: () => {
|
|
25643
|
+
this.deletingId.set(null);
|
|
25644
|
+
this.saving.set(false);
|
|
25645
|
+
this.loadPage(this.notes().length === 1 && this.page() > 0 ? this.page() - 1 : this.page());
|
|
25646
|
+
},
|
|
25647
|
+
error: (err) => {
|
|
25648
|
+
this.deletingId.set(null);
|
|
25649
|
+
this.saving.set(false);
|
|
25650
|
+
this.toast.error(getErrorMessage(err, "note", "delete"));
|
|
25651
|
+
}
|
|
25652
|
+
});
|
|
25653
|
+
}
|
|
25654
|
+
static {
|
|
25655
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
25656
|
+
minVersion: "12.0.0",
|
|
25657
|
+
version: "22.2.2",
|
|
25658
|
+
ngImport: i0,
|
|
25659
|
+
type: NotesComponent,
|
|
25660
|
+
deps: [],
|
|
25661
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
25662
|
+
});
|
|
25663
|
+
}
|
|
25664
|
+
static {
|
|
25665
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
25666
|
+
minVersion: "17.0.0",
|
|
25667
|
+
version: "22.2.2",
|
|
25668
|
+
type: NotesComponent,
|
|
25669
|
+
isStandalone: true,
|
|
25670
|
+
selector: "ui-notes",
|
|
25671
|
+
inputs: {
|
|
25672
|
+
resourceType: {
|
|
25673
|
+
classPropertyName: "resourceType",
|
|
25674
|
+
publicName: "resourceType",
|
|
25675
|
+
isSignal: true,
|
|
25676
|
+
isRequired: false,
|
|
25677
|
+
transformFunction: null
|
|
25678
|
+
},
|
|
25679
|
+
resourceId: {
|
|
25680
|
+
classPropertyName: "resourceId",
|
|
25681
|
+
publicName: "resourceId",
|
|
25682
|
+
isSignal: true,
|
|
25683
|
+
isRequired: false,
|
|
25684
|
+
transformFunction: null
|
|
25685
|
+
},
|
|
25686
|
+
readOnly: {
|
|
25687
|
+
classPropertyName: "readOnly",
|
|
25688
|
+
publicName: "readOnly",
|
|
25689
|
+
isSignal: true,
|
|
25690
|
+
isRequired: false,
|
|
25691
|
+
transformFunction: null
|
|
25692
|
+
}
|
|
25693
|
+
},
|
|
25694
|
+
outputs: { totalChange: "totalChange" },
|
|
25695
|
+
ngImport: i0,
|
|
25696
|
+
template: `
|
|
25697
|
+
@if (!readOnly()) {
|
|
25698
|
+
<div class="note-add">
|
|
25699
|
+
<ui-textarea-input ariaLabel="Add a note" placeholder="Add a note..." [rows]="3" [maxlength]="maxLength" [showErrors]="tooLong(newBody)" [disabled]="saving()" [(ngModel)]="newBody"
|
|
25700
|
+
(keydown.meta.enter)="addNote()" (keydown.control.enter)="addNote()" />
|
|
25701
|
+
<div class="note-add-footer">
|
|
25702
|
+
<ui-button variant="primary" size="sm" data-testid="note-add-btn" [loading]="saving()" [disabled]="!validBody(newBody)" (click)="addNote()">Add Note</ui-button>
|
|
25703
|
+
</div>
|
|
25704
|
+
</div>
|
|
25705
|
+
}
|
|
25706
|
+
|
|
25707
|
+
@if (loading() && notes().length === 0) {
|
|
25708
|
+
<div class="note-loading" role="status">Loading notes...</div>
|
|
25709
|
+
} @else if (notes().length === 0) {
|
|
25710
|
+
<ui-empty-state iconType="person" title="No notes yet" [message]="readOnly() ? 'No notes have been added.' : 'Add your first note above.'" />
|
|
25711
|
+
} @else {
|
|
25712
|
+
<ul class="note-list" aria-label="Notes">
|
|
25713
|
+
@for (note of notes(); track note.id) {
|
|
25714
|
+
<li class="note-item" [class.editing]="editingId() === note.id">
|
|
25715
|
+
<ui-avatar class="note-avatar" [initials]="initials(note.createdByName)" [name]="note.createdByName || 'You'" [size]="32" />
|
|
25716
|
+
<div class="note-main">
|
|
25717
|
+
<div class="note-head">
|
|
25718
|
+
<span class="note-author">{{ note.createdByName || 'You' }}</span>
|
|
25719
|
+
<span class="note-dot" aria-hidden="true">·</span>
|
|
25720
|
+
<time class="note-date" [attr.datetime]="note.createdAt">{{ note.createdAt | date:'MMM d, yyyy h:mm a' }}</time>
|
|
25721
|
+
@if (note.updatedAt !== note.createdAt) {
|
|
25722
|
+
<span class="note-edited">edited</span>
|
|
25723
|
+
}
|
|
25724
|
+
@if (!readOnly() && editingId() !== note.id) {
|
|
25725
|
+
<div class="note-actions">
|
|
25726
|
+
<ui-icon name="edit" [size]="14" tooltip="Edit note" (iconClick)="startEdit(note)" />
|
|
25727
|
+
<ui-icon name="delete" variant="danger" [size]="14" tooltip="Delete note" (iconClick)="confirmDelete(note.id)" />
|
|
25728
|
+
</div>
|
|
25729
|
+
}
|
|
25730
|
+
</div>
|
|
25731
|
+
@if (editingId() === note.id) {
|
|
25732
|
+
<ui-textarea-input ariaLabel="Edit note" [rows]="3" [maxlength]="maxLength" [showErrors]="tooLong(editBody)" [disabled]="saving()" [(ngModel)]="editBody" />
|
|
25733
|
+
<div class="note-item-footer">
|
|
25734
|
+
<ui-button variant="secondary" size="sm" (click)="cancelEdit()">Cancel</ui-button>
|
|
25735
|
+
<ui-button variant="primary" size="sm" [loading]="saving()" [disabled]="!validBody(editBody)" (click)="saveEdit(note.id)">Save</ui-button>
|
|
25736
|
+
</div>
|
|
25737
|
+
} @else {
|
|
25738
|
+
<p class="note-body">{{ note.body }}</p>
|
|
25739
|
+
}
|
|
25740
|
+
</div>
|
|
25741
|
+
</li>
|
|
25742
|
+
}
|
|
25743
|
+
</ul>
|
|
25744
|
+
<ui-pagination [page]="page() + 1" [pageSize]="pageSize" [totalItems]="totalElements()" (pageChange)="loadPage($event - 1)" />
|
|
25745
|
+
}
|
|
25746
|
+
|
|
25747
|
+
<ui-modal [open]="!!deletingId()" title="Delete Note" maxWidth="420px" dialogTestId="delete-note-modal" (close)="deletingId.set(null)">
|
|
25748
|
+
<p class="note-delete-msg" data-testid="delete-note-message">Delete this note? It is permanently removed from this record and cannot be undone.</p>
|
|
25749
|
+
<ui-button modal-footer-left variant="secondary" size="sm" data-testid="delete-note-cancel" (click)="deletingId.set(null)">Cancel</ui-button>
|
|
25750
|
+
<ui-button modal-footer-right variant="danger" size="sm" data-testid="delete-note-confirm" [loading]="saving()" (click)="deleteNote()">Delete Note</ui-button>
|
|
25751
|
+
</ui-modal>
|
|
25752
|
+
`,
|
|
25753
|
+
isInline: true,
|
|
25754
|
+
styles: [":host{display:block}.note-add{padding:14px;margin-bottom:18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.note-add-footer{display:flex;justify-content:flex-end;margin-top:10px}.note-loading{padding:24px 0;font-size:.875rem;color:#64748b;text-align:center}.note-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.note-item{display:flex;gap:12px;padding:14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;transition:border-color .15s,box-shadow .15s}@media(hover:hover){.note-item:hover{border-color:#cbd5e1;box-shadow:0 1px 3px #0f172a0f}}.note-item.editing{background:#f8fafc;border-color:#bfdbfe}@media(prefers-reduced-motion:reduce){.note-item{transition:none}}.note-avatar{flex-shrink:0}.note-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.note-head{display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;min-height:28px}.note-author{font-size:.875rem;font-weight:600;color:#0f172a}.note-dot{color:#94a3b8;font-size:.75rem}.note-date{font-size:.75rem;color:#64748b}.note-edited{font-size:.75rem;font-style:italic;color:#64748b}.note-actions{display:flex;align-items:center;gap:2px;margin-left:auto}.note-body{margin:0;font-size:.9375rem;line-height:1.6;color:#1e293b;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.note-item-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.note-delete-msg{margin:0;font-size:.9375rem;line-height:1.5;color:#334155}@media(max-width:480px){.note-item{padding:12px;gap:10px}.note-add{padding:12px}}\n"],
|
|
25755
|
+
dependencies: [
|
|
25756
|
+
{
|
|
25757
|
+
kind: "ngmodule",
|
|
25758
|
+
type: FormsModule
|
|
25759
|
+
},
|
|
25760
|
+
{
|
|
25761
|
+
kind: "directive",
|
|
25762
|
+
type: i1.NgControlStatus,
|
|
25763
|
+
selector: "[formControlName],[ngModel],[formControl]"
|
|
25764
|
+
},
|
|
25765
|
+
{
|
|
25766
|
+
kind: "directive",
|
|
25767
|
+
type: i1.MaxLengthValidator,
|
|
25768
|
+
selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]",
|
|
25769
|
+
inputs: ["maxlength"]
|
|
25770
|
+
},
|
|
25771
|
+
{
|
|
25772
|
+
kind: "directive",
|
|
25773
|
+
type: i1.NgModel,
|
|
25774
|
+
selector: "[ngModel]:not([formControlName]):not([formControl])",
|
|
25775
|
+
inputs: [
|
|
25776
|
+
"name",
|
|
25777
|
+
"disabled",
|
|
25778
|
+
"ngModel",
|
|
25779
|
+
"ngModelOptions"
|
|
25780
|
+
],
|
|
25781
|
+
outputs: ["ngModelChange"],
|
|
25782
|
+
exportAs: ["ngModel"]
|
|
25783
|
+
},
|
|
25784
|
+
{
|
|
25785
|
+
kind: "component",
|
|
25786
|
+
type: ButtonComponent,
|
|
25787
|
+
selector: "ui-button",
|
|
25788
|
+
inputs: [
|
|
25789
|
+
"variant",
|
|
25790
|
+
"routerLink",
|
|
25791
|
+
"queryParams",
|
|
25792
|
+
"fragment",
|
|
25793
|
+
"state",
|
|
25794
|
+
"href",
|
|
25795
|
+
"target",
|
|
25796
|
+
"rel",
|
|
25797
|
+
"shortLabel",
|
|
25798
|
+
"shortBelow",
|
|
25799
|
+
"color",
|
|
25800
|
+
"active",
|
|
25801
|
+
"size",
|
|
25802
|
+
"type",
|
|
25803
|
+
"disabled",
|
|
25804
|
+
"loading",
|
|
25805
|
+
"fullWidth",
|
|
25806
|
+
"ariaLabel",
|
|
25807
|
+
"ariaExpanded",
|
|
25808
|
+
"ariaPressed",
|
|
25809
|
+
"ariaDescribedBy",
|
|
25810
|
+
"modal-footer-left",
|
|
25811
|
+
"modal-footer-right"
|
|
25812
|
+
]
|
|
25813
|
+
},
|
|
25814
|
+
{
|
|
25815
|
+
kind: "component",
|
|
25816
|
+
type: ModalComponent,
|
|
25817
|
+
selector: "ui-modal",
|
|
25818
|
+
inputs: [
|
|
25819
|
+
"open",
|
|
25820
|
+
"title",
|
|
25821
|
+
"description",
|
|
25822
|
+
"maxWidth",
|
|
25823
|
+
"bodyOverflow",
|
|
25824
|
+
"dialogTestId",
|
|
25825
|
+
"hideClose",
|
|
25826
|
+
"closable",
|
|
25827
|
+
"returnFocusTo"
|
|
25828
|
+
],
|
|
25829
|
+
outputs: ["close"]
|
|
25830
|
+
},
|
|
25831
|
+
{
|
|
25832
|
+
kind: "component",
|
|
25833
|
+
type: EmptyStateComponent,
|
|
25834
|
+
selector: "ui-empty-state",
|
|
25835
|
+
inputs: [
|
|
25836
|
+
"message",
|
|
25837
|
+
"title",
|
|
25838
|
+
"iconType"
|
|
25839
|
+
]
|
|
25840
|
+
},
|
|
25841
|
+
{
|
|
25842
|
+
kind: "component",
|
|
25843
|
+
type: PaginationComponent,
|
|
25844
|
+
selector: "ui-pagination",
|
|
25845
|
+
inputs: [
|
|
25846
|
+
"page",
|
|
25847
|
+
"pageSize",
|
|
25848
|
+
"totalItems",
|
|
25849
|
+
"detached",
|
|
25850
|
+
"embedded"
|
|
25851
|
+
],
|
|
25852
|
+
outputs: ["pageChange"]
|
|
25853
|
+
},
|
|
25854
|
+
{
|
|
25855
|
+
kind: "component",
|
|
25856
|
+
type: TextareaInputComponent,
|
|
25857
|
+
selector: "ui-textarea-input",
|
|
25858
|
+
inputs: [
|
|
25859
|
+
"label",
|
|
25860
|
+
"ariaLabel",
|
|
25861
|
+
"placeholder",
|
|
25862
|
+
"rows",
|
|
25863
|
+
"maxlength",
|
|
25864
|
+
"required",
|
|
25865
|
+
"readonly",
|
|
25866
|
+
"hint",
|
|
25867
|
+
"hintAsDescription",
|
|
25868
|
+
"error",
|
|
25869
|
+
"monospace",
|
|
25870
|
+
"showErrors",
|
|
25871
|
+
"disabled"
|
|
25872
|
+
],
|
|
25873
|
+
outputs: ["invalidChange"]
|
|
25874
|
+
},
|
|
25875
|
+
{
|
|
25876
|
+
kind: "component",
|
|
25877
|
+
type: IconComponent,
|
|
25878
|
+
selector: "ui-icon",
|
|
25879
|
+
inputs: [
|
|
25880
|
+
"name",
|
|
25881
|
+
"tooltip",
|
|
25882
|
+
"ariaLabel",
|
|
25883
|
+
"size",
|
|
25884
|
+
"variant",
|
|
25885
|
+
"disabled",
|
|
25886
|
+
"loading",
|
|
25887
|
+
"interactive"
|
|
25888
|
+
],
|
|
25889
|
+
outputs: ["iconClick"]
|
|
25890
|
+
},
|
|
25891
|
+
{
|
|
25892
|
+
kind: "component",
|
|
25893
|
+
type: AvatarComponent,
|
|
25894
|
+
selector: "ui-avatar",
|
|
25895
|
+
inputs: [
|
|
25896
|
+
"initials",
|
|
25897
|
+
"name",
|
|
25898
|
+
"size",
|
|
25899
|
+
"imageUrl",
|
|
25900
|
+
"editable",
|
|
25901
|
+
"editLabel",
|
|
25902
|
+
"busy"
|
|
25903
|
+
],
|
|
25904
|
+
outputs: ["editClick", "imageError"]
|
|
25905
|
+
},
|
|
25906
|
+
{
|
|
25907
|
+
kind: "pipe",
|
|
25908
|
+
type: DatePipe,
|
|
25909
|
+
name: "date"
|
|
25910
|
+
}
|
|
25911
|
+
],
|
|
25912
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
25913
|
+
});
|
|
25914
|
+
}
|
|
25915
|
+
};
|
|
25916
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
25917
|
+
minVersion: "12.0.0",
|
|
25918
|
+
version: "22.2.2",
|
|
25919
|
+
ngImport: i0,
|
|
25920
|
+
type: NotesComponent,
|
|
25921
|
+
decorators: [{
|
|
25922
|
+
type: Component,
|
|
25923
|
+
args: [{
|
|
25924
|
+
selector: "ui-notes",
|
|
25925
|
+
standalone: true,
|
|
25926
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25927
|
+
imports: [
|
|
25928
|
+
DatePipe,
|
|
25929
|
+
FormsModule,
|
|
25930
|
+
ButtonComponent,
|
|
25931
|
+
ModalComponent,
|
|
25932
|
+
EmptyStateComponent,
|
|
25933
|
+
PaginationComponent,
|
|
25934
|
+
TextareaInputComponent,
|
|
25935
|
+
IconComponent,
|
|
25936
|
+
AvatarComponent
|
|
25937
|
+
],
|
|
25938
|
+
template: `
|
|
25939
|
+
@if (!readOnly()) {
|
|
25940
|
+
<div class="note-add">
|
|
25941
|
+
<ui-textarea-input ariaLabel="Add a note" placeholder="Add a note..." [rows]="3" [maxlength]="maxLength" [showErrors]="tooLong(newBody)" [disabled]="saving()" [(ngModel)]="newBody"
|
|
25942
|
+
(keydown.meta.enter)="addNote()" (keydown.control.enter)="addNote()" />
|
|
25943
|
+
<div class="note-add-footer">
|
|
25944
|
+
<ui-button variant="primary" size="sm" data-testid="note-add-btn" [loading]="saving()" [disabled]="!validBody(newBody)" (click)="addNote()">Add Note</ui-button>
|
|
25945
|
+
</div>
|
|
25946
|
+
</div>
|
|
25947
|
+
}
|
|
25948
|
+
|
|
25949
|
+
@if (loading() && notes().length === 0) {
|
|
25950
|
+
<div class="note-loading" role="status">Loading notes...</div>
|
|
25951
|
+
} @else if (notes().length === 0) {
|
|
25952
|
+
<ui-empty-state iconType="person" title="No notes yet" [message]="readOnly() ? 'No notes have been added.' : 'Add your first note above.'" />
|
|
25953
|
+
} @else {
|
|
25954
|
+
<ul class="note-list" aria-label="Notes">
|
|
25955
|
+
@for (note of notes(); track note.id) {
|
|
25956
|
+
<li class="note-item" [class.editing]="editingId() === note.id">
|
|
25957
|
+
<ui-avatar class="note-avatar" [initials]="initials(note.createdByName)" [name]="note.createdByName || 'You'" [size]="32" />
|
|
25958
|
+
<div class="note-main">
|
|
25959
|
+
<div class="note-head">
|
|
25960
|
+
<span class="note-author">{{ note.createdByName || 'You' }}</span>
|
|
25961
|
+
<span class="note-dot" aria-hidden="true">·</span>
|
|
25962
|
+
<time class="note-date" [attr.datetime]="note.createdAt">{{ note.createdAt | date:'MMM d, yyyy h:mm a' }}</time>
|
|
25963
|
+
@if (note.updatedAt !== note.createdAt) {
|
|
25964
|
+
<span class="note-edited">edited</span>
|
|
25965
|
+
}
|
|
25966
|
+
@if (!readOnly() && editingId() !== note.id) {
|
|
25967
|
+
<div class="note-actions">
|
|
25968
|
+
<ui-icon name="edit" [size]="14" tooltip="Edit note" (iconClick)="startEdit(note)" />
|
|
25969
|
+
<ui-icon name="delete" variant="danger" [size]="14" tooltip="Delete note" (iconClick)="confirmDelete(note.id)" />
|
|
25970
|
+
</div>
|
|
25971
|
+
}
|
|
25972
|
+
</div>
|
|
25973
|
+
@if (editingId() === note.id) {
|
|
25974
|
+
<ui-textarea-input ariaLabel="Edit note" [rows]="3" [maxlength]="maxLength" [showErrors]="tooLong(editBody)" [disabled]="saving()" [(ngModel)]="editBody" />
|
|
25975
|
+
<div class="note-item-footer">
|
|
25976
|
+
<ui-button variant="secondary" size="sm" (click)="cancelEdit()">Cancel</ui-button>
|
|
25977
|
+
<ui-button variant="primary" size="sm" [loading]="saving()" [disabled]="!validBody(editBody)" (click)="saveEdit(note.id)">Save</ui-button>
|
|
25978
|
+
</div>
|
|
25979
|
+
} @else {
|
|
25980
|
+
<p class="note-body">{{ note.body }}</p>
|
|
25981
|
+
}
|
|
25982
|
+
</div>
|
|
25983
|
+
</li>
|
|
25984
|
+
}
|
|
25985
|
+
</ul>
|
|
25986
|
+
<ui-pagination [page]="page() + 1" [pageSize]="pageSize" [totalItems]="totalElements()" (pageChange)="loadPage($event - 1)" />
|
|
25987
|
+
}
|
|
25988
|
+
|
|
25989
|
+
<ui-modal [open]="!!deletingId()" title="Delete Note" maxWidth="420px" dialogTestId="delete-note-modal" (close)="deletingId.set(null)">
|
|
25990
|
+
<p class="note-delete-msg" data-testid="delete-note-message">Delete this note? It is permanently removed from this record and cannot be undone.</p>
|
|
25991
|
+
<ui-button modal-footer-left variant="secondary" size="sm" data-testid="delete-note-cancel" (click)="deletingId.set(null)">Cancel</ui-button>
|
|
25992
|
+
<ui-button modal-footer-right variant="danger" size="sm" data-testid="delete-note-confirm" [loading]="saving()" (click)="deleteNote()">Delete Note</ui-button>
|
|
25993
|
+
</ui-modal>
|
|
25994
|
+
`,
|
|
25995
|
+
styles: [":host{display:block}.note-add{padding:14px;margin-bottom:18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.note-add-footer{display:flex;justify-content:flex-end;margin-top:10px}.note-loading{padding:24px 0;font-size:.875rem;color:#64748b;text-align:center}.note-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.note-item{display:flex;gap:12px;padding:14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;transition:border-color .15s,box-shadow .15s}@media(hover:hover){.note-item:hover{border-color:#cbd5e1;box-shadow:0 1px 3px #0f172a0f}}.note-item.editing{background:#f8fafc;border-color:#bfdbfe}@media(prefers-reduced-motion:reduce){.note-item{transition:none}}.note-avatar{flex-shrink:0}.note-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.note-head{display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;min-height:28px}.note-author{font-size:.875rem;font-weight:600;color:#0f172a}.note-dot{color:#94a3b8;font-size:.75rem}.note-date{font-size:.75rem;color:#64748b}.note-edited{font-size:.75rem;font-style:italic;color:#64748b}.note-actions{display:flex;align-items:center;gap:2px;margin-left:auto}.note-body{margin:0;font-size:.9375rem;line-height:1.6;color:#1e293b;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.note-item-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.note-delete-msg{margin:0;font-size:.9375rem;line-height:1.5;color:#334155}@media(max-width:480px){.note-item{padding:12px;gap:10px}.note-add{padding:12px}}\n"]
|
|
25996
|
+
}]
|
|
25997
|
+
}],
|
|
25998
|
+
ctorParameters: () => [],
|
|
25999
|
+
propDecorators: {
|
|
26000
|
+
resourceType: [{
|
|
26001
|
+
type: i0.Input,
|
|
26002
|
+
args: [{
|
|
26003
|
+
isSignal: true,
|
|
26004
|
+
alias: "resourceType",
|
|
26005
|
+
required: false
|
|
26006
|
+
}]
|
|
26007
|
+
}],
|
|
26008
|
+
resourceId: [{
|
|
26009
|
+
type: i0.Input,
|
|
26010
|
+
args: [{
|
|
26011
|
+
isSignal: true,
|
|
26012
|
+
alias: "resourceId",
|
|
26013
|
+
required: false
|
|
26014
|
+
}]
|
|
26015
|
+
}],
|
|
26016
|
+
readOnly: [{
|
|
26017
|
+
type: i0.Input,
|
|
26018
|
+
args: [{
|
|
26019
|
+
isSignal: true,
|
|
26020
|
+
alias: "readOnly",
|
|
26021
|
+
required: false
|
|
26022
|
+
}]
|
|
26023
|
+
}],
|
|
26024
|
+
totalChange: [{
|
|
26025
|
+
type: i0.Output,
|
|
26026
|
+
args: ["totalChange"]
|
|
26027
|
+
}]
|
|
26028
|
+
}
|
|
26029
|
+
});
|
|
24826
26030
|
function provideForgerouteToast(options = {}) {
|
|
24827
26031
|
return makeEnvironmentProviders([provideEnvironmentInitializer(() => {
|
|
24828
26032
|
if (options.dismissible) inject(ToastService).dismissible.set(true);
|
|
@@ -24847,11 +26051,11 @@ const LAYOUT_GAP_PX = {
|
|
|
24847
26051
|
lg: 24,
|
|
24848
26052
|
xl: 32
|
|
24849
26053
|
};
|
|
24850
|
-
const CSS_LENGTH = /^(?:0|-?(?:\d+\.?\d*|\.\d+)(?:px|rem|em|%|vh|vw|ch)|(?:calc|var)\([^;{}]*\))$/i;
|
|
26054
|
+
const CSS_LENGTH$1 = /^(?:0|-?(?:\d+\.?\d*|\.\d+)(?:px|rem|em|%|vh|vw|ch)|(?:calc|var)\([^;{}]*\))$/i;
|
|
24851
26055
|
function resolveLayoutGap(gap, fallback) {
|
|
24852
26056
|
const v = (gap ?? "").trim();
|
|
24853
26057
|
if (Object.prototype.hasOwnProperty.call(LAYOUT_GAP_PX, v)) return `${LAYOUT_GAP_PX[v]}px`;
|
|
24854
|
-
if (v && CSS_LENGTH.test(v)) return v;
|
|
26058
|
+
if (v && CSS_LENGTH$1.test(v)) return v;
|
|
24855
26059
|
return `${LAYOUT_GAP_PX[fallback]}px`;
|
|
24856
26060
|
}
|
|
24857
26061
|
function reorderItems(items, order) {
|
|
@@ -26845,6 +28049,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26845
28049
|
this.sections = input([], ...ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []);
|
|
26846
28050
|
this.showEmptyState = input(false, ...ngDevMode ? [{ debugName: "showEmptyState" }] : /* istanbul ignore next */ []);
|
|
26847
28051
|
this.labelColon = input(false, ...ngDevMode ? [{ debugName: "labelColon" }] : /* istanbul ignore next */ []);
|
|
28052
|
+
this.fill = input(false, ...ngDevMode ? [{ debugName: "fill" }] : /* istanbul ignore next */ []);
|
|
26848
28053
|
this.displaySections = computed(() => this.showEmptyState() ? this.sections() : this.sections().filter((s) => s.items.some((i) => !i.hidden)), ...ngDevMode ? [{ debugName: "displaySections" }] : /* istanbul ignore next */ []);
|
|
26849
28054
|
}
|
|
26850
28055
|
hrefOf(item) {
|
|
@@ -26910,8 +28115,16 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26910
28115
|
isSignal: true,
|
|
26911
28116
|
isRequired: false,
|
|
26912
28117
|
transformFunction: null
|
|
28118
|
+
},
|
|
28119
|
+
fill: {
|
|
28120
|
+
classPropertyName: "fill",
|
|
28121
|
+
publicName: "fill",
|
|
28122
|
+
isSignal: true,
|
|
28123
|
+
isRequired: false,
|
|
28124
|
+
transformFunction: null
|
|
26913
28125
|
}
|
|
26914
28126
|
},
|
|
28127
|
+
host: { properties: { "class.pil-fill": "fill()" } },
|
|
26915
28128
|
ngImport: i0,
|
|
26916
28129
|
template: `
|
|
26917
28130
|
@for (section of displaySections(); track section.title ?? $index) {
|
|
@@ -26969,11 +28182,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26969
28182
|
<span [class.pil-muted]="item.muted" [class.pil-danger]="item.danger" [class.pil-multiline]="item.multiline">{{ item.value || '—' }}</span>
|
|
26970
28183
|
}
|
|
26971
28184
|
@if (item.editAction) {
|
|
26972
|
-
<ui-
|
|
26973
|
-
[ariaLabel]="item.editTooltip ?? 'Edit'" [attr.title]="item.editTooltip ?? 'Edit'"
|
|
26974
|
-
(click)="item.editAction!()">
|
|
26975
|
-
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
|
|
26976
|
-
</ui-button>
|
|
28185
|
+
<ui-icon class="pil-edit-btn" name="edit" [size]="14" [tooltip]="item.editTooltip ?? 'Edit'" (iconClick)="item.editAction!()" />
|
|
26977
28186
|
}
|
|
26978
28187
|
</span>
|
|
26979
28188
|
</div>
|
|
@@ -26983,7 +28192,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26983
28192
|
}
|
|
26984
28193
|
`,
|
|
26985
28194
|
isInline: true,
|
|
26986
|
-
styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-multiline{white-space:pre-line;overflow-wrap:anywhere;word-break:break-word}.pil-strong .pil-label,.pil-strong .pil-value,.pil-strong .pil-muted{font-weight:700;color:#0f172a}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"],
|
|
28195
|
+
styles: [":host{display:flex;flex-direction:column;gap:12px}:host(.pil-fill){flex:1;min-height:0}:host(.pil-fill) .pil-section{flex:1}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-multiline{white-space:pre-line;overflow-wrap:anywhere;word-break:break-word}.pil-strong .pil-label,.pil-strong .pil-value,.pil-strong .pil-muted{font-weight:700;color:#0f172a}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"],
|
|
26987
28196
|
dependencies: [
|
|
26988
28197
|
{
|
|
26989
28198
|
kind: "component",
|
|
@@ -27022,33 +28231,19 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
27022
28231
|
},
|
|
27023
28232
|
{
|
|
27024
28233
|
kind: "component",
|
|
27025
|
-
type:
|
|
27026
|
-
selector: "ui-
|
|
28234
|
+
type: IconComponent,
|
|
28235
|
+
selector: "ui-icon",
|
|
27027
28236
|
inputs: [
|
|
27028
|
-
"
|
|
27029
|
-
"
|
|
27030
|
-
"
|
|
27031
|
-
"fragment",
|
|
27032
|
-
"state",
|
|
27033
|
-
"href",
|
|
27034
|
-
"target",
|
|
27035
|
-
"rel",
|
|
27036
|
-
"shortLabel",
|
|
27037
|
-
"shortBelow",
|
|
27038
|
-
"color",
|
|
27039
|
-
"active",
|
|
28237
|
+
"name",
|
|
28238
|
+
"tooltip",
|
|
28239
|
+
"ariaLabel",
|
|
27040
28240
|
"size",
|
|
27041
|
-
"
|
|
28241
|
+
"variant",
|
|
27042
28242
|
"disabled",
|
|
27043
28243
|
"loading",
|
|
27044
|
-
"
|
|
27045
|
-
|
|
27046
|
-
|
|
27047
|
-
"ariaPressed",
|
|
27048
|
-
"ariaDescribedBy",
|
|
27049
|
-
"modal-footer-left",
|
|
27050
|
-
"modal-footer-right"
|
|
27051
|
-
]
|
|
28244
|
+
"interactive"
|
|
28245
|
+
],
|
|
28246
|
+
outputs: ["iconClick"]
|
|
27052
28247
|
}
|
|
27053
28248
|
],
|
|
27054
28249
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
@@ -27070,8 +28265,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27070
28265
|
BadgeComponent,
|
|
27071
28266
|
RouterLink,
|
|
27072
28267
|
EmptyStateComponent,
|
|
27073
|
-
|
|
28268
|
+
IconComponent
|
|
27074
28269
|
],
|
|
28270
|
+
host: { "[class.pil-fill]": "fill()" },
|
|
27075
28271
|
template: `
|
|
27076
28272
|
@for (section of displaySections(); track section.title ?? $index) {
|
|
27077
28273
|
<div class="pil-section">
|
|
@@ -27128,11 +28324,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27128
28324
|
<span [class.pil-muted]="item.muted" [class.pil-danger]="item.danger" [class.pil-multiline]="item.multiline">{{ item.value || '—' }}</span>
|
|
27129
28325
|
}
|
|
27130
28326
|
@if (item.editAction) {
|
|
27131
|
-
<ui-
|
|
27132
|
-
[ariaLabel]="item.editTooltip ?? 'Edit'" [attr.title]="item.editTooltip ?? 'Edit'"
|
|
27133
|
-
(click)="item.editAction!()">
|
|
27134
|
-
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
|
|
27135
|
-
</ui-button>
|
|
28327
|
+
<ui-icon class="pil-edit-btn" name="edit" [size]="14" [tooltip]="item.editTooltip ?? 'Edit'" (iconClick)="item.editAction!()" />
|
|
27136
28328
|
}
|
|
27137
28329
|
</span>
|
|
27138
28330
|
</div>
|
|
@@ -27141,7 +28333,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27141
28333
|
</div>
|
|
27142
28334
|
}
|
|
27143
28335
|
`,
|
|
27144
|
-
styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-multiline{white-space:pre-line;overflow-wrap:anywhere;word-break:break-word}.pil-strong .pil-label,.pil-strong .pil-value,.pil-strong .pil-muted{font-weight:700;color:#0f172a}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"]
|
|
28336
|
+
styles: [":host{display:flex;flex-direction:column;gap:12px}:host(.pil-fill){flex:1;min-height:0}:host(.pil-fill) .pil-section{flex:1}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-multiline{white-space:pre-line;overflow-wrap:anywhere;word-break:break-word}.pil-strong .pil-label,.pil-strong .pil-value,.pil-strong .pil-muted{font-weight:700;color:#0f172a}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"]
|
|
27145
28337
|
}]
|
|
27146
28338
|
}],
|
|
27147
28339
|
propDecorators: {
|
|
@@ -27168,6 +28360,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27168
28360
|
alias: "labelColon",
|
|
27169
28361
|
required: false
|
|
27170
28362
|
}]
|
|
28363
|
+
}],
|
|
28364
|
+
fill: [{
|
|
28365
|
+
type: i0.Input,
|
|
28366
|
+
args: [{
|
|
28367
|
+
isSignal: true,
|
|
28368
|
+
alias: "fill",
|
|
28369
|
+
required: false
|
|
28370
|
+
}]
|
|
27171
28371
|
}]
|
|
27172
28372
|
}
|
|
27173
28373
|
});
|
|
@@ -27298,75 +28498,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27298
28498
|
}]
|
|
27299
28499
|
}
|
|
27300
28500
|
});
|
|
27301
|
-
const ACTION_VERB = {
|
|
27302
|
-
load: "loading",
|
|
27303
|
-
save: "saving",
|
|
27304
|
-
create: "creating",
|
|
27305
|
-
update: "updating",
|
|
27306
|
-
delete: "deleting",
|
|
27307
|
-
send: "sending",
|
|
27308
|
-
export: "exporting",
|
|
27309
|
-
import: "importing",
|
|
27310
|
-
upload: "uploading",
|
|
27311
|
-
download: "downloading"
|
|
27312
|
-
};
|
|
27313
|
-
const ACTION_PERMISSION_VERB = {
|
|
27314
|
-
load: "access",
|
|
27315
|
-
save: "save",
|
|
27316
|
-
create: "create",
|
|
27317
|
-
update: "update",
|
|
27318
|
-
delete: "delete",
|
|
27319
|
-
send: "send",
|
|
27320
|
-
export: "export",
|
|
27321
|
-
import: "import",
|
|
27322
|
-
upload: "upload",
|
|
27323
|
-
download: "download"
|
|
27324
|
-
};
|
|
27325
|
-
const REQUEST_METHOD = "__forgerouteRequestMethod";
|
|
27326
|
-
const errorContextInterceptor = (req, next) => next(req).pipe(catchError$1((err) => {
|
|
27327
|
-
if (err instanceof HttpErrorResponse && !(REQUEST_METHOD in err)) Object.defineProperty(err, REQUEST_METHOD, {
|
|
27328
|
-
value: req.method.toUpperCase(),
|
|
27329
|
-
enumerable: false
|
|
27330
|
-
});
|
|
27331
|
-
return throwError(() => err);
|
|
27332
|
-
}));
|
|
27333
|
-
function actionFromMethod(error) {
|
|
27334
|
-
switch (error[REQUEST_METHOD]) {
|
|
27335
|
-
case "POST":
|
|
27336
|
-
case "PUT":
|
|
27337
|
-
case "PATCH": return "save";
|
|
27338
|
-
case "DELETE": return "delete";
|
|
27339
|
-
default: return "load";
|
|
27340
|
-
}
|
|
27341
|
-
}
|
|
27342
|
-
function withoutLeadingArticle(ctx) {
|
|
27343
|
-
return ctx.replace(/^(?:the|an?)\s+/i, "") || ctx;
|
|
27344
|
-
}
|
|
27345
|
-
function getErrorMessage(error, fallbackContext, action) {
|
|
27346
|
-
const ctx = fallbackContext?.trim() || "data";
|
|
27347
|
-
const act = action ?? (error instanceof HttpErrorResponse ? actionFromMethod(error) : "load");
|
|
27348
|
-
const failed = `There was an error ${ACTION_VERB[act]} ${ctx}.`;
|
|
27349
|
-
if (error instanceof HttpErrorResponse) {
|
|
27350
|
-
if (error.error?.message) return error.error.message;
|
|
27351
|
-
if (typeof error.error === "string" && error.error.length < 200) return error.error;
|
|
27352
|
-
switch (error.status) {
|
|
27353
|
-
case 0: return `${failed} Please check your connection and try again.`;
|
|
27354
|
-
case 401: return "Your session has expired. Please log in again.";
|
|
27355
|
-
case 403: return `You don't have permission to ${ACTION_PERMISSION_VERB[act]} ${ctx}.`;
|
|
27356
|
-
case 404: return `The ${withoutLeadingArticle(ctx)} you're looking for could not be found.`;
|
|
27357
|
-
case 408: return `${failed} The request timed out — please try again.`;
|
|
27358
|
-
case 422: return "The data you submitted is invalid. Please check your input and try again.";
|
|
27359
|
-
case 429: return `${failed} Too many requests — please wait a moment and try again.`;
|
|
27360
|
-
case 502:
|
|
27361
|
-
case 503:
|
|
27362
|
-
case 504: return `${failed} Please try again in a few minutes.`;
|
|
27363
|
-
default: return `${failed} Please try again.`;
|
|
27364
|
-
}
|
|
27365
|
-
}
|
|
27366
|
-
if (error instanceof Error) return error.message;
|
|
27367
|
-
if (typeof error === "string") return error;
|
|
27368
|
-
return `${failed} Please try again.`;
|
|
27369
|
-
}
|
|
27370
28501
|
const US_STATES = [
|
|
27371
28502
|
{
|
|
27372
28503
|
value: "AL",
|
|
@@ -28416,6 +29547,98 @@ var TimelineComponent = class TimelineComponent {
|
|
|
28416
29547
|
this.emptyMessage = input("", ...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
|
|
28417
29548
|
this.maxHeight = input("", ...ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []);
|
|
28418
29549
|
this.timePosition = input("below", ...ngDevMode ? [{ debugName: "timePosition" }] : /* istanbul ignore next */ []);
|
|
29550
|
+
this.groupByDay = input(false, ...ngDevMode ? [{ debugName: "groupByDay" }] : /* istanbul ignore next */ []);
|
|
29551
|
+
this.timeZone = input("", ...ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []);
|
|
29552
|
+
this.now = input(null, ...ngDevMode ? [{ debugName: "now" }] : /* istanbul ignore next */ []);
|
|
29553
|
+
this.dayHeadingLevel = input(3, ...ngDevMode ? [{ debugName: "dayHeadingLevel" }] : /* istanbul ignore next */ []);
|
|
29554
|
+
this.headingLevel = computed(() => {
|
|
29555
|
+
const n = this.dayHeadingLevel();
|
|
29556
|
+
return Number.isInteger(n) && n >= 1 && n <= 6 ? n : 3;
|
|
29557
|
+
}, ...ngDevMode ? [{ debugName: "headingLevel" }] : /* istanbul ignore next */ []);
|
|
29558
|
+
this.groups = computed(() => {
|
|
29559
|
+
if (!this.groupByDay()) return [];
|
|
29560
|
+
const zone = this.timeZone() || void 0;
|
|
29561
|
+
let fmt;
|
|
29562
|
+
try {
|
|
29563
|
+
fmt = new Intl.DateTimeFormat("en-US", {
|
|
29564
|
+
timeZone: zone,
|
|
29565
|
+
year: "numeric",
|
|
29566
|
+
month: "2-digit",
|
|
29567
|
+
day: "2-digit"
|
|
29568
|
+
});
|
|
29569
|
+
} catch {
|
|
29570
|
+
fmt = new Intl.DateTimeFormat("en-US", {
|
|
29571
|
+
year: "numeric",
|
|
29572
|
+
month: "2-digit",
|
|
29573
|
+
day: "2-digit"
|
|
29574
|
+
});
|
|
29575
|
+
}
|
|
29576
|
+
const parts = (d) => {
|
|
29577
|
+
const p = fmt.formatToParts(d);
|
|
29578
|
+
const get = (t) => Number(p.find((x) => x.type === t)?.value);
|
|
29579
|
+
return {
|
|
29580
|
+
y: get("year"),
|
|
29581
|
+
m: get("month"),
|
|
29582
|
+
d: get("day")
|
|
29583
|
+
};
|
|
29584
|
+
};
|
|
29585
|
+
const keyOf = (v) => `${v.y}-${String(v.m).padStart(2, "0")}-${String(v.d).padStart(2, "0")}`;
|
|
29586
|
+
const nowRaw = this.now();
|
|
29587
|
+
let nowDate = nowRaw == null ? /* @__PURE__ */ new Date() : new Date(nowRaw);
|
|
29588
|
+
if (isNaN(nowDate.getTime())) nowDate = /* @__PURE__ */ new Date();
|
|
29589
|
+
const t = parts(nowDate);
|
|
29590
|
+
const todayKey = keyOf(t);
|
|
29591
|
+
const yd = new Date(Date.UTC(t.y, t.m - 1, t.d - 1));
|
|
29592
|
+
const yesterdayKey = keyOf({
|
|
29593
|
+
y: yd.getUTCFullYear(),
|
|
29594
|
+
m: yd.getUTCMonth() + 1,
|
|
29595
|
+
d: yd.getUTCDate()
|
|
29596
|
+
});
|
|
29597
|
+
const labelFmt = (withYear, tz) => new Intl.DateTimeFormat("en-US", {
|
|
29598
|
+
timeZone: tz,
|
|
29599
|
+
month: "short",
|
|
29600
|
+
day: "numeric",
|
|
29601
|
+
...withYear ? { year: "numeric" } : {}
|
|
29602
|
+
});
|
|
29603
|
+
const label = (v) => keyOf(v) === todayKey ? "Today" : keyOf(v) === yesterdayKey ? "Yesterday" : labelFmt(v.y !== t.y, "UTC").format(new Date(Date.UTC(v.y, v.m - 1, v.d)));
|
|
29604
|
+
const dayOf = (iso) => {
|
|
29605
|
+
const m = iso ? /^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/.exec(iso) : null;
|
|
29606
|
+
if (!m) return null;
|
|
29607
|
+
const y = Number(m[1]), mo = Number(m[2]), d = Number(m[3]);
|
|
29608
|
+
const probe = new Date(Date.UTC(y, mo - 1, d));
|
|
29609
|
+
if (probe.getUTCFullYear() !== y || probe.getUTCMonth() !== mo - 1 || probe.getUTCDate() !== d) return null;
|
|
29610
|
+
if (m[4] !== void 0 && (Number(m[4]) > 23 || Number(m[5]) > 59 || m[6] !== void 0 && Number(m[6]) > 59)) return null;
|
|
29611
|
+
if (m[7] === void 0) return {
|
|
29612
|
+
y,
|
|
29613
|
+
m: mo,
|
|
29614
|
+
d
|
|
29615
|
+
};
|
|
29616
|
+
const inst = new Date(iso.replace(/([+-]\d{2})(\d{2})$/, "$1:$2"));
|
|
29617
|
+
return isNaN(inst.getTime()) ? null : parts(inst);
|
|
29618
|
+
};
|
|
29619
|
+
const groups = [];
|
|
29620
|
+
for (const item of this.items()) {
|
|
29621
|
+
const v = dayOf(item.dateTime);
|
|
29622
|
+
const last = groups[groups.length - 1];
|
|
29623
|
+
if (!v) {
|
|
29624
|
+
if (last) last.items.push(item);
|
|
29625
|
+
else groups.push({
|
|
29626
|
+
key: "",
|
|
29627
|
+
label: "",
|
|
29628
|
+
items: [item]
|
|
29629
|
+
});
|
|
29630
|
+
continue;
|
|
29631
|
+
}
|
|
29632
|
+
const key = keyOf(v);
|
|
29633
|
+
if (last && last.key === key) last.items.push(item);
|
|
29634
|
+
else groups.push({
|
|
29635
|
+
key,
|
|
29636
|
+
label: label(v),
|
|
29637
|
+
items: [item]
|
|
29638
|
+
});
|
|
29639
|
+
}
|
|
29640
|
+
return groups;
|
|
29641
|
+
}, ...ngDevMode ? [{ debugName: "groups" }] : /* istanbul ignore next */ []);
|
|
28419
29642
|
}
|
|
28420
29643
|
dotColor(item) {
|
|
28421
29644
|
return item.dotVariant ? BADGE_VARIANT_STYLES[item.dotVariant]?.color ?? null : null;
|
|
@@ -28472,6 +29695,34 @@ var TimelineComponent = class TimelineComponent {
|
|
|
28472
29695
|
isSignal: true,
|
|
28473
29696
|
isRequired: false,
|
|
28474
29697
|
transformFunction: null
|
|
29698
|
+
},
|
|
29699
|
+
groupByDay: {
|
|
29700
|
+
classPropertyName: "groupByDay",
|
|
29701
|
+
publicName: "groupByDay",
|
|
29702
|
+
isSignal: true,
|
|
29703
|
+
isRequired: false,
|
|
29704
|
+
transformFunction: null
|
|
29705
|
+
},
|
|
29706
|
+
timeZone: {
|
|
29707
|
+
classPropertyName: "timeZone",
|
|
29708
|
+
publicName: "timeZone",
|
|
29709
|
+
isSignal: true,
|
|
29710
|
+
isRequired: false,
|
|
29711
|
+
transformFunction: null
|
|
29712
|
+
},
|
|
29713
|
+
now: {
|
|
29714
|
+
classPropertyName: "now",
|
|
29715
|
+
publicName: "now",
|
|
29716
|
+
isSignal: true,
|
|
29717
|
+
isRequired: false,
|
|
29718
|
+
transformFunction: null
|
|
29719
|
+
},
|
|
29720
|
+
dayHeadingLevel: {
|
|
29721
|
+
classPropertyName: "dayHeadingLevel",
|
|
29722
|
+
publicName: "dayHeadingLevel",
|
|
29723
|
+
isSignal: true,
|
|
29724
|
+
isRequired: false,
|
|
29725
|
+
transformFunction: null
|
|
28475
29726
|
}
|
|
28476
29727
|
},
|
|
28477
29728
|
ngImport: i0,
|
|
@@ -28488,29 +29739,47 @@ var TimelineComponent = class TimelineComponent {
|
|
|
28488
29739
|
<ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
|
|
28489
29740
|
}
|
|
28490
29741
|
<ng-template #listTpl>
|
|
28491
|
-
|
|
28492
|
-
|
|
28493
|
-
|
|
28494
|
-
<
|
|
28495
|
-
@if (
|
|
28496
|
-
|
|
28497
|
-
|
|
28498
|
-
|
|
28499
|
-
<span class="tl-title">{{ item.title }}</span>
|
|
28500
|
-
@if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
|
|
28501
|
-
@for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
|
|
28502
|
-
@if (timePosition() === 'end' && (item.time || item.dateTime)) {
|
|
28503
|
-
<time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29742
|
+
@if (groupByDay()) {
|
|
29743
|
+
<ol class="tl tl-grouped" [attr.aria-label]="ariaLabel() || null">
|
|
29744
|
+
@for (g of groups(); track $index) {
|
|
29745
|
+
<li class="tl-day-group" [attr.data-day]="g.key || null">
|
|
29746
|
+
@if (g.label) { <div class="tl-day" role="heading" [attr.aria-level]="headingLevel()">{{ g.label }}</div> }
|
|
29747
|
+
<ol class="tl-sub">
|
|
29748
|
+
@for (item of g.items; track item.id ?? $index) {
|
|
29749
|
+
<ng-container [ngTemplateOutlet]="itemTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
|
|
28504
29750
|
}
|
|
28505
|
-
</
|
|
28506
|
-
|
|
28507
|
-
|
|
28508
|
-
|
|
28509
|
-
|
|
28510
|
-
|
|
28511
|
-
|
|
28512
|
-
|
|
28513
|
-
|
|
29751
|
+
</ol>
|
|
29752
|
+
</li>
|
|
29753
|
+
}
|
|
29754
|
+
</ol>
|
|
29755
|
+
} @else {
|
|
29756
|
+
<ol class="tl" [attr.aria-label]="ariaLabel() || null">
|
|
29757
|
+
@for (item of items(); track item.id ?? $index) {
|
|
29758
|
+
<ng-container [ngTemplateOutlet]="itemTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
|
|
29759
|
+
}
|
|
29760
|
+
</ol>
|
|
29761
|
+
}
|
|
29762
|
+
</ng-template>
|
|
29763
|
+
<ng-template #itemTpl let-item>
|
|
29764
|
+
<li [attr.data-testid]="item.testId || null" class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon" [style.--tl-color]="dotColor(item)">
|
|
29765
|
+
<span class="tl-marker" aria-hidden="true">
|
|
29766
|
+
@if (item.icon) { <ui-icon [name]="item.icon" [interactive]="false" [size]="12" /> }
|
|
29767
|
+
</span>
|
|
29768
|
+
<div class="tl-content">
|
|
29769
|
+
<div class="tl-head">
|
|
29770
|
+
<span class="tl-title">{{ item.title }}</span>
|
|
29771
|
+
@if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
|
|
29772
|
+
@for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
|
|
29773
|
+
@if (timePosition() === 'end' && (item.time || item.dateTime)) {
|
|
29774
|
+
<time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29775
|
+
}
|
|
29776
|
+
</div>
|
|
29777
|
+
@if (item.description) { <p class="tl-description">{{ item.description }}</p> }
|
|
29778
|
+
@if (timePosition() !== 'end' && (item.time || item.dateTime)) {
|
|
29779
|
+
<time class="tl-time" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29780
|
+
}
|
|
29781
|
+
</div>
|
|
29782
|
+
</li>
|
|
28514
29783
|
</ng-template>
|
|
28515
29784
|
<ng-template #badgeTpl let-b>
|
|
28516
29785
|
@if (b.tooltip) {
|
|
@@ -28521,7 +29790,7 @@ var TimelineComponent = class TimelineComponent {
|
|
|
28521
29790
|
</ng-template>
|
|
28522
29791
|
`,
|
|
28523
29792
|
isInline: true,
|
|
28524
|
-
styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"],
|
|
29793
|
+
styles: [":host{display:block}.tl,.tl-sub{list-style:none;margin:0;padding:0}.tl-day-group+.tl-day-group{margin-top:16px}.tl-day{margin:0 0 10px;font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.2;color:#64748b}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"],
|
|
28525
29794
|
dependencies: [
|
|
28526
29795
|
{
|
|
28527
29796
|
kind: "component",
|
|
@@ -28602,29 +29871,47 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
28602
29871
|
<ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
|
|
28603
29872
|
}
|
|
28604
29873
|
<ng-template #listTpl>
|
|
28605
|
-
|
|
28606
|
-
|
|
28607
|
-
|
|
28608
|
-
<
|
|
28609
|
-
@if (
|
|
28610
|
-
|
|
28611
|
-
|
|
28612
|
-
|
|
28613
|
-
<span class="tl-title">{{ item.title }}</span>
|
|
28614
|
-
@if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
|
|
28615
|
-
@for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
|
|
28616
|
-
@if (timePosition() === 'end' && (item.time || item.dateTime)) {
|
|
28617
|
-
<time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29874
|
+
@if (groupByDay()) {
|
|
29875
|
+
<ol class="tl tl-grouped" [attr.aria-label]="ariaLabel() || null">
|
|
29876
|
+
@for (g of groups(); track $index) {
|
|
29877
|
+
<li class="tl-day-group" [attr.data-day]="g.key || null">
|
|
29878
|
+
@if (g.label) { <div class="tl-day" role="heading" [attr.aria-level]="headingLevel()">{{ g.label }}</div> }
|
|
29879
|
+
<ol class="tl-sub">
|
|
29880
|
+
@for (item of g.items; track item.id ?? $index) {
|
|
29881
|
+
<ng-container [ngTemplateOutlet]="itemTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
|
|
28618
29882
|
}
|
|
28619
|
-
</
|
|
28620
|
-
|
|
28621
|
-
|
|
28622
|
-
|
|
28623
|
-
|
|
28624
|
-
|
|
28625
|
-
|
|
28626
|
-
|
|
28627
|
-
|
|
29883
|
+
</ol>
|
|
29884
|
+
</li>
|
|
29885
|
+
}
|
|
29886
|
+
</ol>
|
|
29887
|
+
} @else {
|
|
29888
|
+
<ol class="tl" [attr.aria-label]="ariaLabel() || null">
|
|
29889
|
+
@for (item of items(); track item.id ?? $index) {
|
|
29890
|
+
<ng-container [ngTemplateOutlet]="itemTpl" [ngTemplateOutletContext]="{ $implicit: item }" />
|
|
29891
|
+
}
|
|
29892
|
+
</ol>
|
|
29893
|
+
}
|
|
29894
|
+
</ng-template>
|
|
29895
|
+
<ng-template #itemTpl let-item>
|
|
29896
|
+
<li [attr.data-testid]="item.testId || null" class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon" [style.--tl-color]="dotColor(item)">
|
|
29897
|
+
<span class="tl-marker" aria-hidden="true">
|
|
29898
|
+
@if (item.icon) { <ui-icon [name]="item.icon" [interactive]="false" [size]="12" /> }
|
|
29899
|
+
</span>
|
|
29900
|
+
<div class="tl-content">
|
|
29901
|
+
<div class="tl-head">
|
|
29902
|
+
<span class="tl-title">{{ item.title }}</span>
|
|
29903
|
+
@if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
|
|
29904
|
+
@for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
|
|
29905
|
+
@if (timePosition() === 'end' && (item.time || item.dateTime)) {
|
|
29906
|
+
<time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29907
|
+
}
|
|
29908
|
+
</div>
|
|
29909
|
+
@if (item.description) { <p class="tl-description">{{ item.description }}</p> }
|
|
29910
|
+
@if (timePosition() !== 'end' && (item.time || item.dateTime)) {
|
|
29911
|
+
<time class="tl-time" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
|
|
29912
|
+
}
|
|
29913
|
+
</div>
|
|
29914
|
+
</li>
|
|
28628
29915
|
</ng-template>
|
|
28629
29916
|
<ng-template #badgeTpl let-b>
|
|
28630
29917
|
@if (b.tooltip) {
|
|
@@ -28634,7 +29921,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
28634
29921
|
}
|
|
28635
29922
|
</ng-template>
|
|
28636
29923
|
`,
|
|
28637
|
-
styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"]
|
|
29924
|
+
styles: [":host{display:block}.tl,.tl-sub{list-style:none;margin:0;padding:0}.tl-day-group+.tl-day-group{margin-top:16px}.tl-day{margin:0 0 10px;font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.2;color:#64748b}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"]
|
|
28638
29925
|
}]
|
|
28639
29926
|
}],
|
|
28640
29927
|
propDecorators: {
|
|
@@ -28677,6 +29964,38 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
28677
29964
|
alias: "timePosition",
|
|
28678
29965
|
required: false
|
|
28679
29966
|
}]
|
|
29967
|
+
}],
|
|
29968
|
+
groupByDay: [{
|
|
29969
|
+
type: i0.Input,
|
|
29970
|
+
args: [{
|
|
29971
|
+
isSignal: true,
|
|
29972
|
+
alias: "groupByDay",
|
|
29973
|
+
required: false
|
|
29974
|
+
}]
|
|
29975
|
+
}],
|
|
29976
|
+
timeZone: [{
|
|
29977
|
+
type: i0.Input,
|
|
29978
|
+
args: [{
|
|
29979
|
+
isSignal: true,
|
|
29980
|
+
alias: "timeZone",
|
|
29981
|
+
required: false
|
|
29982
|
+
}]
|
|
29983
|
+
}],
|
|
29984
|
+
now: [{
|
|
29985
|
+
type: i0.Input,
|
|
29986
|
+
args: [{
|
|
29987
|
+
isSignal: true,
|
|
29988
|
+
alias: "now",
|
|
29989
|
+
required: false
|
|
29990
|
+
}]
|
|
29991
|
+
}],
|
|
29992
|
+
dayHeadingLevel: [{
|
|
29993
|
+
type: i0.Input,
|
|
29994
|
+
args: [{
|
|
29995
|
+
isSignal: true,
|
|
29996
|
+
alias: "dayHeadingLevel",
|
|
29997
|
+
required: false
|
|
29998
|
+
}]
|
|
28680
29999
|
}]
|
|
28681
30000
|
}
|
|
28682
30001
|
});
|
|
@@ -33305,6 +34624,7 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33305
34624
|
this.subtitle = input("", ...ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []);
|
|
33306
34625
|
this.background = input("", ...ngDevMode ? [{ debugName: "background" }] : /* istanbul ignore next */ []);
|
|
33307
34626
|
this.headerBackground = input("", ...ngDevMode ? [{ debugName: "headerBackground" }] : /* istanbul ignore next */ []);
|
|
34627
|
+
this.footerBackground = input("", ...ngDevMode ? [{ debugName: "footerBackground" }] : /* istanbul ignore next */ []);
|
|
33308
34628
|
this.textColor = input("", ...ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []);
|
|
33309
34629
|
this.showHeader = input(true, ...ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []);
|
|
33310
34630
|
this.collapsible = input(true, ...ngDevMode ? [{ debugName: "collapsible" }] : /* istanbul ignore next */ []);
|
|
@@ -33421,6 +34741,13 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33421
34741
|
isRequired: false,
|
|
33422
34742
|
transformFunction: null
|
|
33423
34743
|
},
|
|
34744
|
+
footerBackground: {
|
|
34745
|
+
classPropertyName: "footerBackground",
|
|
34746
|
+
publicName: "footerBackground",
|
|
34747
|
+
isSignal: true,
|
|
34748
|
+
isRequired: false,
|
|
34749
|
+
transformFunction: null
|
|
34750
|
+
},
|
|
33424
34751
|
textColor: {
|
|
33425
34752
|
classPropertyName: "textColor",
|
|
33426
34753
|
publicName: "textColor",
|
|
@@ -33578,10 +34905,11 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33578
34905
|
<ng-content />
|
|
33579
34906
|
</div>
|
|
33580
34907
|
</div>
|
|
34908
|
+
<div class="dc-footer" [class.dc-footer--hidden]="!isOpen()" [style.background]="footerBackground() || null"><ng-content select="[card-footer]" /></div>
|
|
33581
34909
|
</div>
|
|
33582
34910
|
`,
|
|
33583
34911
|
isInline: true,
|
|
33584
|
-
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-has-bg .dc-header.open{border-bottom-color:#94a3b859}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.
|
|
34912
|
+
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-has-bg .dc-header.open{border-bottom-color:#94a3b859}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.8125rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"],
|
|
33585
34913
|
dependencies: [{
|
|
33586
34914
|
kind: "component",
|
|
33587
34915
|
type: ButtonComponent,
|
|
@@ -33678,9 +35006,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33678
35006
|
<ng-content />
|
|
33679
35007
|
</div>
|
|
33680
35008
|
</div>
|
|
35009
|
+
<div class="dc-footer" [class.dc-footer--hidden]="!isOpen()" [style.background]="footerBackground() || null"><ng-content select="[card-footer]" /></div>
|
|
33681
35010
|
</div>
|
|
33682
35011
|
`,
|
|
33683
|
-
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-has-bg .dc-header.open{border-bottom-color:#94a3b859}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.
|
|
35012
|
+
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-has-bg .dc-header.open{border-bottom-color:#94a3b859}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.8125rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"]
|
|
33684
35013
|
}]
|
|
33685
35014
|
}],
|
|
33686
35015
|
propDecorators: {
|
|
@@ -33748,6 +35077,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33748
35077
|
required: false
|
|
33749
35078
|
}]
|
|
33750
35079
|
}],
|
|
35080
|
+
footerBackground: [{
|
|
35081
|
+
type: i0.Input,
|
|
35082
|
+
args: [{
|
|
35083
|
+
isSignal: true,
|
|
35084
|
+
alias: "footerBackground",
|
|
35085
|
+
required: false
|
|
35086
|
+
}]
|
|
35087
|
+
}],
|
|
33751
35088
|
textColor: [{
|
|
33752
35089
|
type: i0.Input,
|
|
33753
35090
|
args: [{
|
|
@@ -33980,6 +35317,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33980
35317
|
});
|
|
33981
35318
|
var BoardCardDirective = class BoardCardDirective {
|
|
33982
35319
|
constructor() {
|
|
35320
|
+
this.typeFrom = input("", {
|
|
35321
|
+
...ngDevMode ? { debugName: "typeFrom" } : /* istanbul ignore next */ {},
|
|
35322
|
+
alias: "uiBoardCard"
|
|
35323
|
+
});
|
|
33983
35324
|
this.template = inject(TemplateRef);
|
|
33984
35325
|
}
|
|
33985
35326
|
static ngTemplateContextGuard(_dir, _ctx) {
|
|
@@ -33997,11 +35338,18 @@ var BoardCardDirective = class BoardCardDirective {
|
|
|
33997
35338
|
}
|
|
33998
35339
|
static {
|
|
33999
35340
|
this.ɵdir = i0.ɵɵngDeclareDirective({
|
|
34000
|
-
minVersion: "
|
|
35341
|
+
minVersion: "17.1.0",
|
|
34001
35342
|
version: "22.2.2",
|
|
34002
35343
|
type: BoardCardDirective,
|
|
34003
35344
|
isStandalone: true,
|
|
34004
35345
|
selector: "ng-template[uiBoardCard]",
|
|
35346
|
+
inputs: { typeFrom: {
|
|
35347
|
+
classPropertyName: "typeFrom",
|
|
35348
|
+
publicName: "uiBoardCard",
|
|
35349
|
+
isSignal: true,
|
|
35350
|
+
isRequired: false,
|
|
35351
|
+
transformFunction: null
|
|
35352
|
+
} },
|
|
34005
35353
|
ngImport: i0
|
|
34006
35354
|
});
|
|
34007
35355
|
}
|
|
@@ -34017,8 +35365,17 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34017
35365
|
selector: "ng-template[uiBoardCard]",
|
|
34018
35366
|
standalone: true
|
|
34019
35367
|
}]
|
|
34020
|
-
}]
|
|
35368
|
+
}],
|
|
35369
|
+
propDecorators: { typeFrom: [{
|
|
35370
|
+
type: i0.Input,
|
|
35371
|
+
args: [{
|
|
35372
|
+
isSignal: true,
|
|
35373
|
+
alias: "uiBoardCard",
|
|
35374
|
+
required: false
|
|
35375
|
+
}]
|
|
35376
|
+
}] }
|
|
34021
35377
|
});
|
|
35378
|
+
let nextBoardId = 0;
|
|
34022
35379
|
const DOT_COLORS = {
|
|
34023
35380
|
blue: "#3b82f6",
|
|
34024
35381
|
cyan: "#06b6d4",
|
|
@@ -34032,6 +35389,25 @@ const DOT_COLORS = {
|
|
|
34032
35389
|
gray: "#6b7280"
|
|
34033
35390
|
};
|
|
34034
35391
|
var BoardComponent = class BoardComponent {
|
|
35392
|
+
limitOf(col) {
|
|
35393
|
+
const size = this.pageSize() > 0 ? Math.floor(this.pageSize()) : 0;
|
|
35394
|
+
if (!size) return col.items.length;
|
|
35395
|
+
let limit = this.drawn()[col.key] ?? size;
|
|
35396
|
+
const moved = this.movedTo();
|
|
35397
|
+
if (moved?.to === col.key) limit = Math.max(limit, col.items.findIndex((i) => this.itemKey()(i) === moved.key) + 1);
|
|
35398
|
+
return limit;
|
|
35399
|
+
}
|
|
35400
|
+
showMore(key) {
|
|
35401
|
+
const size = Math.floor(this.pageSize());
|
|
35402
|
+
const col = this.cols().find((c) => c.key === key);
|
|
35403
|
+
if (!col || size < 1) return;
|
|
35404
|
+
const limit = Math.min(col.items.length, this.limitOf(col) + size);
|
|
35405
|
+
this.drawn.update((d) => ({
|
|
35406
|
+
...d,
|
|
35407
|
+
[key]: limit
|
|
35408
|
+
}));
|
|
35409
|
+
this.announcement.set(`Showing ${limit} of ${col.items.length} ${this.itemNounPlural()} in ${col.label}`);
|
|
35410
|
+
}
|
|
34035
35411
|
constructor() {
|
|
34036
35412
|
this.columns = input.required(...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
|
|
34037
35413
|
this.itemKey = input.required(...ngDevMode ? [{ debugName: "itemKey" }] : /* istanbul ignore next */ []);
|
|
@@ -34048,12 +35424,29 @@ var BoardComponent = class BoardComponent {
|
|
|
34048
35424
|
this.itemNoun = input("item", ...ngDevMode ? [{ debugName: "itemNoun" }] : /* istanbul ignore next */ []);
|
|
34049
35425
|
this.itemNounPlural = input("items", ...ngDevMode ? [{ debugName: "itemNounPlural" }] : /* istanbul ignore next */ []);
|
|
34050
35426
|
this.retryLabel = input("Retry", ...ngDevMode ? [{ debugName: "retryLabel" }] : /* istanbul ignore next */ []);
|
|
35427
|
+
this.pageSize = input(50, ...ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []);
|
|
34051
35428
|
this.cardClick = output();
|
|
34052
35429
|
this.cardAction = output();
|
|
34053
35430
|
this.itemMove = output();
|
|
34054
35431
|
this.retry = output();
|
|
34055
35432
|
this.card = contentChild(BoardCardDirective, ...ngDevMode ? [{ debugName: "card" }] : /* istanbul ignore next */ []);
|
|
34056
35433
|
this.cols = linkedSignal(() => this.columns(), ...ngDevMode ? [{ debugName: "cols" }] : /* istanbul ignore next */ []);
|
|
35434
|
+
this.drawn = signal({}, ...ngDevMode ? [{ debugName: "drawn" }] : /* istanbul ignore next */ []);
|
|
35435
|
+
this.movedTo = signal(null, ...ngDevMode ? [{ debugName: "movedTo" }] : /* istanbul ignore next */ []);
|
|
35436
|
+
this.shownCols = computed(() => {
|
|
35437
|
+
const size = this.pageSize() > 0 ? Math.floor(this.pageSize()) : 0;
|
|
35438
|
+
return this.cols().map((col) => {
|
|
35439
|
+
const limit = this.limitOf(col);
|
|
35440
|
+
const hidden = Math.max(0, col.items.length - limit);
|
|
35441
|
+
return {
|
|
35442
|
+
col,
|
|
35443
|
+
shown: hidden ? col.items.slice(0, limit) : col.items,
|
|
35444
|
+
hidden,
|
|
35445
|
+
next: Math.min(size, hidden)
|
|
35446
|
+
};
|
|
35447
|
+
});
|
|
35448
|
+
}, ...ngDevMode ? [{ debugName: "shownCols" }] : /* istanbul ignore next */ []);
|
|
35449
|
+
this.hintId = `ub-hint-${nextBoardId++}`;
|
|
34057
35450
|
this.overKey = signal(null, ...ngDevMode ? [{ debugName: "overKey" }] : /* istanbul ignore next */ []);
|
|
34058
35451
|
this.draggingKey = signal(null, ...ngDevMode ? [{ debugName: "draggingKey" }] : /* istanbul ignore next */ []);
|
|
34059
35452
|
this.announcement = signal("", ...ngDevMode ? [{ debugName: "announcement" }] : /* istanbul ignore next */ []);
|
|
@@ -34061,7 +35454,12 @@ var BoardComponent = class BoardComponent {
|
|
|
34061
35454
|
this.drag = null;
|
|
34062
35455
|
this.skeletonColumns = computed(() => Array.from({ length: Math.max(this.columns().length, 4) }, (_, i) => i), ...ngDevMode ? [{ debugName: "skeletonColumns" }] : /* istanbul ignore next */ []);
|
|
34063
35456
|
this.canDrag = computed(() => !this.readOnly() && !this.moveDisabled(), ...ngDevMode ? [{ debugName: "canDrag" }] : /* istanbul ignore next */ []);
|
|
34064
|
-
|
|
35457
|
+
effect(() => {
|
|
35458
|
+
if (this.loading()) {
|
|
35459
|
+
this.drawn.set({});
|
|
35460
|
+
this.movedTo.set(null);
|
|
35461
|
+
}
|
|
35462
|
+
});
|
|
34065
35463
|
}
|
|
34066
35464
|
dot(color) {
|
|
34067
35465
|
return color && DOT_COLORS[color] || color || "#3b82f6";
|
|
@@ -34147,11 +35545,18 @@ var BoardComponent = class BoardComponent {
|
|
|
34147
35545
|
};
|
|
34148
35546
|
return c;
|
|
34149
35547
|
}));
|
|
35548
|
+
this.movedTo.set({
|
|
35549
|
+
key,
|
|
35550
|
+
to
|
|
35551
|
+
});
|
|
34150
35552
|
this.itemMove.emit({
|
|
34151
35553
|
item,
|
|
34152
35554
|
from,
|
|
34153
35555
|
to,
|
|
34154
|
-
revert: () =>
|
|
35556
|
+
revert: () => {
|
|
35557
|
+
this.cols.set(before);
|
|
35558
|
+
this.movedTo.set(null);
|
|
35559
|
+
}
|
|
34155
35560
|
});
|
|
34156
35561
|
}
|
|
34157
35562
|
static {
|
|
@@ -34276,6 +35681,13 @@ var BoardComponent = class BoardComponent {
|
|
|
34276
35681
|
isSignal: true,
|
|
34277
35682
|
isRequired: false,
|
|
34278
35683
|
transformFunction: null
|
|
35684
|
+
},
|
|
35685
|
+
pageSize: {
|
|
35686
|
+
classPropertyName: "pageSize",
|
|
35687
|
+
publicName: "pageSize",
|
|
35688
|
+
isSignal: true,
|
|
35689
|
+
isRequired: false,
|
|
35690
|
+
transformFunction: null
|
|
34279
35691
|
}
|
|
34280
35692
|
},
|
|
34281
35693
|
outputs: {
|
|
@@ -34320,8 +35732,9 @@ var BoardComponent = class BoardComponent {
|
|
|
34320
35732
|
} @else if (cols().length === 0) {
|
|
34321
35733
|
<div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
|
|
34322
35734
|
} @else {
|
|
34323
|
-
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
|
|
34324
|
-
@for (
|
|
35735
|
+
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()" [attr.aria-describedby]="canDrag() ? hintId : null">
|
|
35736
|
+
@for (view of shownCols(); track view.col.key) {
|
|
35737
|
+
@let col = view.col;
|
|
34325
35738
|
<div class="ub-col"
|
|
34326
35739
|
[class.ub-col--over]="overKey() === col.key"
|
|
34327
35740
|
[class.ub-col--success]="col.tone === 'success'"
|
|
@@ -34337,19 +35750,20 @@ var BoardComponent = class BoardComponent {
|
|
|
34337
35750
|
<span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
|
|
34338
35751
|
</div>
|
|
34339
35752
|
@if (col.summary) {
|
|
34340
|
-
<div class="ub-col__summary"
|
|
35753
|
+
<div class="ub-col__summary"><span aria-hidden="true">{{ col.summary }}</span><span class="ub-sr-only">{{ col.summaryLabel || col.summary }}</span></div>
|
|
34341
35754
|
}
|
|
34342
35755
|
</div>
|
|
34343
|
-
<div class="ub-col__cards" role="list">
|
|
34344
|
-
@for (item of
|
|
35756
|
+
<div class="ub-col__cards" [attr.role]="col.items.length ? 'list' : null">
|
|
35757
|
+
@for (item of view.shown; track itemKey()(item)) {
|
|
35758
|
+
@let key = itemKey()(item);
|
|
34345
35759
|
<div class="ub-card"
|
|
34346
35760
|
[class.ub-card--success]="col.tone === 'success'"
|
|
34347
|
-
[class.ub-card--dragging]="draggingKey() ===
|
|
35761
|
+
[class.ub-card--dragging]="draggingKey() === key"
|
|
34348
35762
|
role="listitem"
|
|
34349
35763
|
tabindex="0"
|
|
34350
|
-
[attr.data-board-key]="
|
|
35764
|
+
[attr.data-board-key]="key"
|
|
34351
35765
|
[attr.aria-label]="itemLabel()(item)"
|
|
34352
|
-
[attr.aria-keyshortcuts]="
|
|
35766
|
+
[attr.aria-keyshortcuts]="canDrag() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
|
|
34353
35767
|
[attr.draggable]="canDrag() ? 'true' : null"
|
|
34354
35768
|
(dragstart)="onDragStart($event, item, col)"
|
|
34355
35769
|
(dragend)="onDragEnd()"
|
|
@@ -34360,6 +35774,11 @@ var BoardComponent = class BoardComponent {
|
|
|
34360
35774
|
}
|
|
34361
35775
|
</div>
|
|
34362
35776
|
}
|
|
35777
|
+
@if (view.hidden > 0) {
|
|
35778
|
+
<div class="ub-col__more" role="listitem">
|
|
35779
|
+
<button type="button" class="ub-more-btn" [attr.aria-label]="'Show ' + view.next + ' more (' + view.hidden + ' not shown), ' + col.label" (click)="showMore(col.key)">Show {{ view.next }} more ({{ view.hidden }} not shown)</button>
|
|
35780
|
+
</div>
|
|
35781
|
+
}
|
|
34363
35782
|
@if (col.items.length === 0) {
|
|
34364
35783
|
<div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
|
|
34365
35784
|
}
|
|
@@ -34367,12 +35786,15 @@ var BoardComponent = class BoardComponent {
|
|
|
34367
35786
|
</div>
|
|
34368
35787
|
}
|
|
34369
35788
|
</div>
|
|
35789
|
+
@if (canDrag()) {
|
|
35790
|
+
<p class="ub-sr-only" [id]="hintId">Drag a card to another column to move it, or focus a card and press Shift with the Left or Right Arrow key.</p>
|
|
35791
|
+
}
|
|
34370
35792
|
<div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
|
|
34371
35793
|
}
|
|
34372
35794
|
</div>
|
|
34373
35795
|
`,
|
|
34374
35796
|
isInline: true,
|
|
34375
|
-
styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:
|
|
35797
|
+
styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:stretch}.ub-board::-webkit-scrollbar{height:6px}.ub-board::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.ub-board::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.ub-col{flex:0 0 280px;min-width:280px;max-width:280px;display:flex;flex-direction:column;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;min-height:0;transition:border-color .15s,background .15s}.ub-col--over{border-color:#3b82f6;background:#eff6ff}.ub-col--success{background:#f0fdf4;border-color:#bbf7d0}.ub-col--success.ub-col--over{border-color:#22c55e;background:#dcfce7}.ub-col__header{padding:12px 14px 10px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ub-col__title{display:flex;align-items:center;gap:7px;margin-bottom:2px}.ub-col__dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.ub-col__label{font-size:12px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.04em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-col__count{font-size:11px;font-weight:600;color:#fff;background:#64748b;border-radius:10px;padding:1px 7px;flex-shrink:0}.ub-col__summary{font-size:11px;color:#64748b;font-weight:500;margin-top:2px}.ub-col__cards{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:60px}.ub-col__cards::-webkit-scrollbar{width:4px}.ub-col__cards::-webkit-scrollbar-track{background:transparent}.ub-col__cards::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.ub-col__more{flex-shrink:0}.ub-more-btn{width:100%;padding:8px 10px;font:inherit;font-size:12px;font-weight:600;color:#475569;background:#fff;border:1.5px dashed #cbd5e1;border-radius:8px;cursor:pointer}.ub-more-btn:hover{background:#f1f5f9;border-color:#94a3b8}.ub-more-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-col__empty{text-align:center;padding:24px 12px;color:#64748b;font-size:12px;border:1.5px dashed #e2e8f0;border-radius:8px;margin:4px 0}.ub-card{position:relative;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;padding:11px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s,transform .12s}.ub-card[draggable=true]{cursor:grab}.ub-card[draggable=true]:active{cursor:grabbing}.ub-card:hover{border-color:#94a3b8;box-shadow:0 2px 8px #00000012}.ub-card:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-card--dragging{opacity:.4;transform:scale(.98);box-shadow:none}.ub-card--success{border-left:3px solid #22c55e}.ub-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:4px}.ub-card__title{font-size:13px;font-weight:600;color:#1e293b;line-height:1.35;flex:1;min-width:0;word-break:break-word}.ub-card:hover .ub-card__title{color:#2563eb}.ub-card__top-right{flex-shrink:0;margin-top:-2px}.ub-card__status-row{margin-bottom:5px}.ub-card__contact{font-size:12px;color:#475569;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__property{font-size:11px;color:#64748b;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__next-step{display:flex;align-items:flex-start;gap:4px;font-size:11px;color:#64748b;margin-bottom:6px;line-height:1.4}.ub-card__next-step svg{flex-shrink:0;margin-top:1px;color:#94a3b8}.ub-card__footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid #f1f5f9}.ub-card__value{font-size:12px;font-weight:700;color:#0f172a}.ub-card__activity{font-size:11px;color:#64748b}.ub-card__activity--stale{color:#b45309;font-weight:600}.ub-skeleton{display:flex;gap:12px;padding-bottom:16px}.ub-col-skeleton{flex:0 0 280px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.ub-col-skeleton__header,.ub-col-skeleton__card{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:ub-shimmer 1.4s infinite}.ub-col-skeleton__header{height:32px;border-radius:6px}.ub-col-skeleton__card{height:90px;border-radius:8px}@keyframes ub-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ub-col-skeleton__header,.ub-col-skeleton__card{animation:none}.ub-card,.ub-col{transition:none}.ub-card--dragging{transform:none}}@media(pointer:coarse){.ub-more-btn{min-height:44px}}.ub-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;color:#64748b;font-size:14px;text-align:center}.ub-message p{margin:0}.ub-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(max-width:640px){.ub-board{flex-direction:column;overflow-x:hidden;overflow-y:auto;height:auto;align-items:stretch}.ub-col{flex:none;min-width:0;max-width:100%;width:100%;max-height:none}.ub-skeleton{flex-direction:column}.ub-col-skeleton{flex:none;width:100%}}\n"],
|
|
34376
35798
|
dependencies: [
|
|
34377
35799
|
{
|
|
34378
35800
|
kind: "directive",
|
|
@@ -34472,8 +35894,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34472
35894
|
} @else if (cols().length === 0) {
|
|
34473
35895
|
<div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
|
|
34474
35896
|
} @else {
|
|
34475
|
-
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
|
|
34476
|
-
@for (
|
|
35897
|
+
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()" [attr.aria-describedby]="canDrag() ? hintId : null">
|
|
35898
|
+
@for (view of shownCols(); track view.col.key) {
|
|
35899
|
+
@let col = view.col;
|
|
34477
35900
|
<div class="ub-col"
|
|
34478
35901
|
[class.ub-col--over]="overKey() === col.key"
|
|
34479
35902
|
[class.ub-col--success]="col.tone === 'success'"
|
|
@@ -34489,19 +35912,20 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34489
35912
|
<span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
|
|
34490
35913
|
</div>
|
|
34491
35914
|
@if (col.summary) {
|
|
34492
|
-
<div class="ub-col__summary"
|
|
35915
|
+
<div class="ub-col__summary"><span aria-hidden="true">{{ col.summary }}</span><span class="ub-sr-only">{{ col.summaryLabel || col.summary }}</span></div>
|
|
34493
35916
|
}
|
|
34494
35917
|
</div>
|
|
34495
|
-
<div class="ub-col__cards" role="list">
|
|
34496
|
-
@for (item of
|
|
35918
|
+
<div class="ub-col__cards" [attr.role]="col.items.length ? 'list' : null">
|
|
35919
|
+
@for (item of view.shown; track itemKey()(item)) {
|
|
35920
|
+
@let key = itemKey()(item);
|
|
34497
35921
|
<div class="ub-card"
|
|
34498
35922
|
[class.ub-card--success]="col.tone === 'success'"
|
|
34499
|
-
[class.ub-card--dragging]="draggingKey() ===
|
|
35923
|
+
[class.ub-card--dragging]="draggingKey() === key"
|
|
34500
35924
|
role="listitem"
|
|
34501
35925
|
tabindex="0"
|
|
34502
|
-
[attr.data-board-key]="
|
|
35926
|
+
[attr.data-board-key]="key"
|
|
34503
35927
|
[attr.aria-label]="itemLabel()(item)"
|
|
34504
|
-
[attr.aria-keyshortcuts]="
|
|
35928
|
+
[attr.aria-keyshortcuts]="canDrag() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
|
|
34505
35929
|
[attr.draggable]="canDrag() ? 'true' : null"
|
|
34506
35930
|
(dragstart)="onDragStart($event, item, col)"
|
|
34507
35931
|
(dragend)="onDragEnd()"
|
|
@@ -34512,6 +35936,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34512
35936
|
}
|
|
34513
35937
|
</div>
|
|
34514
35938
|
}
|
|
35939
|
+
@if (view.hidden > 0) {
|
|
35940
|
+
<div class="ub-col__more" role="listitem">
|
|
35941
|
+
<button type="button" class="ub-more-btn" [attr.aria-label]="'Show ' + view.next + ' more (' + view.hidden + ' not shown), ' + col.label" (click)="showMore(col.key)">Show {{ view.next }} more ({{ view.hidden }} not shown)</button>
|
|
35942
|
+
</div>
|
|
35943
|
+
}
|
|
34515
35944
|
@if (col.items.length === 0) {
|
|
34516
35945
|
<div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
|
|
34517
35946
|
}
|
|
@@ -34519,13 +35948,17 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34519
35948
|
</div>
|
|
34520
35949
|
}
|
|
34521
35950
|
</div>
|
|
35951
|
+
@if (canDrag()) {
|
|
35952
|
+
<p class="ub-sr-only" [id]="hintId">Drag a card to another column to move it, or focus a card and press Shift with the Left or Right Arrow key.</p>
|
|
35953
|
+
}
|
|
34522
35954
|
<div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
|
|
34523
35955
|
}
|
|
34524
35956
|
</div>
|
|
34525
35957
|
`,
|
|
34526
|
-
styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:
|
|
35958
|
+
styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:stretch}.ub-board::-webkit-scrollbar{height:6px}.ub-board::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.ub-board::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.ub-col{flex:0 0 280px;min-width:280px;max-width:280px;display:flex;flex-direction:column;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;min-height:0;transition:border-color .15s,background .15s}.ub-col--over{border-color:#3b82f6;background:#eff6ff}.ub-col--success{background:#f0fdf4;border-color:#bbf7d0}.ub-col--success.ub-col--over{border-color:#22c55e;background:#dcfce7}.ub-col__header{padding:12px 14px 10px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ub-col__title{display:flex;align-items:center;gap:7px;margin-bottom:2px}.ub-col__dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.ub-col__label{font-size:12px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.04em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-col__count{font-size:11px;font-weight:600;color:#fff;background:#64748b;border-radius:10px;padding:1px 7px;flex-shrink:0}.ub-col__summary{font-size:11px;color:#64748b;font-weight:500;margin-top:2px}.ub-col__cards{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:60px}.ub-col__cards::-webkit-scrollbar{width:4px}.ub-col__cards::-webkit-scrollbar-track{background:transparent}.ub-col__cards::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.ub-col__more{flex-shrink:0}.ub-more-btn{width:100%;padding:8px 10px;font:inherit;font-size:12px;font-weight:600;color:#475569;background:#fff;border:1.5px dashed #cbd5e1;border-radius:8px;cursor:pointer}.ub-more-btn:hover{background:#f1f5f9;border-color:#94a3b8}.ub-more-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-col__empty{text-align:center;padding:24px 12px;color:#64748b;font-size:12px;border:1.5px dashed #e2e8f0;border-radius:8px;margin:4px 0}.ub-card{position:relative;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;padding:11px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s,transform .12s}.ub-card[draggable=true]{cursor:grab}.ub-card[draggable=true]:active{cursor:grabbing}.ub-card:hover{border-color:#94a3b8;box-shadow:0 2px 8px #00000012}.ub-card:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-card--dragging{opacity:.4;transform:scale(.98);box-shadow:none}.ub-card--success{border-left:3px solid #22c55e}.ub-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:4px}.ub-card__title{font-size:13px;font-weight:600;color:#1e293b;line-height:1.35;flex:1;min-width:0;word-break:break-word}.ub-card:hover .ub-card__title{color:#2563eb}.ub-card__top-right{flex-shrink:0;margin-top:-2px}.ub-card__status-row{margin-bottom:5px}.ub-card__contact{font-size:12px;color:#475569;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__property{font-size:11px;color:#64748b;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__next-step{display:flex;align-items:flex-start;gap:4px;font-size:11px;color:#64748b;margin-bottom:6px;line-height:1.4}.ub-card__next-step svg{flex-shrink:0;margin-top:1px;color:#94a3b8}.ub-card__footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid #f1f5f9}.ub-card__value{font-size:12px;font-weight:700;color:#0f172a}.ub-card__activity{font-size:11px;color:#64748b}.ub-card__activity--stale{color:#b45309;font-weight:600}.ub-skeleton{display:flex;gap:12px;padding-bottom:16px}.ub-col-skeleton{flex:0 0 280px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.ub-col-skeleton__header,.ub-col-skeleton__card{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:ub-shimmer 1.4s infinite}.ub-col-skeleton__header{height:32px;border-radius:6px}.ub-col-skeleton__card{height:90px;border-radius:8px}@keyframes ub-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ub-col-skeleton__header,.ub-col-skeleton__card{animation:none}.ub-card,.ub-col{transition:none}.ub-card--dragging{transform:none}}@media(pointer:coarse){.ub-more-btn{min-height:44px}}.ub-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;color:#64748b;font-size:14px;text-align:center}.ub-message p{margin:0}.ub-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(max-width:640px){.ub-board{flex-direction:column;overflow-x:hidden;overflow-y:auto;height:auto;align-items:stretch}.ub-col{flex:none;min-width:0;max-width:100%;width:100%;max-height:none}.ub-skeleton{flex-direction:column}.ub-col-skeleton{flex:none;width:100%}}\n"]
|
|
34527
35959
|
}]
|
|
34528
35960
|
}],
|
|
35961
|
+
ctorParameters: () => [],
|
|
34529
35962
|
propDecorators: {
|
|
34530
35963
|
columns: [{
|
|
34531
35964
|
type: i0.Input,
|
|
@@ -34647,6 +36080,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34647
36080
|
required: false
|
|
34648
36081
|
}]
|
|
34649
36082
|
}],
|
|
36083
|
+
pageSize: [{
|
|
36084
|
+
type: i0.Input,
|
|
36085
|
+
args: [{
|
|
36086
|
+
isSignal: true,
|
|
36087
|
+
alias: "pageSize",
|
|
36088
|
+
required: false
|
|
36089
|
+
}]
|
|
36090
|
+
}],
|
|
34650
36091
|
cardClick: [{
|
|
34651
36092
|
type: i0.Output,
|
|
34652
36093
|
args: ["cardClick"]
|
|
@@ -36061,6 +37502,208 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
36061
37502
|
}]
|
|
36062
37503
|
}
|
|
36063
37504
|
});
|
|
37505
|
+
const CSS_LENGTH = /^(?:0|-?(?:\d+\.?\d*|\.\d+)(?:px|rem|em|%|vh|vw|ch)|(?:calc|var)\([^;{}]*\))$/i;
|
|
37506
|
+
function px(v, fallback) {
|
|
37507
|
+
if (v === null || v === void 0 || v === "") return fallback;
|
|
37508
|
+
const n = Number(v);
|
|
37509
|
+
return Number.isFinite(n) && n >= 0 ? n : fallback;
|
|
37510
|
+
}
|
|
37511
|
+
var SidebarLayoutComponent = class SidebarLayoutComponent {
|
|
37512
|
+
constructor() {
|
|
37513
|
+
this.sideWidth = input("320px", ...ngDevMode ? [{ debugName: "sideWidth" }] : /* istanbul ignore next */ []);
|
|
37514
|
+
this.sidePosition = input("end", ...ngDevMode ? [{ debugName: "sidePosition" }] : /* istanbul ignore next */ []);
|
|
37515
|
+
this.gap = input("md", ...ngDevMode ? [{ debugName: "gap" }] : /* istanbul ignore next */ []);
|
|
37516
|
+
this.stickySide = input(true, ...ngDevMode ? [{ debugName: "stickySide" }] : /* istanbul ignore next */ []);
|
|
37517
|
+
this.stickyTop = input(16, ...ngDevMode ? [{ debugName: "stickyTop" }] : /* istanbul ignore next */ []);
|
|
37518
|
+
this.stickyOffset = input(32, ...ngDevMode ? [{ debugName: "stickyOffset" }] : /* istanbul ignore next */ []);
|
|
37519
|
+
this.collapseAt = input("md", ...ngDevMode ? [{ debugName: "collapseAt" }] : /* istanbul ignore next */ []);
|
|
37520
|
+
this.sideFirstWhenCollapsed = input(true, ...ngDevMode ? [{ debugName: "sideFirstWhenCollapsed" }] : /* istanbul ignore next */ []);
|
|
37521
|
+
this.position = computed(() => this.sidePosition() === "start" ? "start" : "end", ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
|
|
37522
|
+
this.sideCss = computed(() => {
|
|
37523
|
+
const v = String(this.sideWidth() ?? "").trim();
|
|
37524
|
+
return v && CSS_LENGTH.test(v) ? v : "320px";
|
|
37525
|
+
}, ...ngDevMode ? [{ debugName: "sideCss" }] : /* istanbul ignore next */ []);
|
|
37526
|
+
this.gapCss = computed(() => resolveLayoutGap(this.gap(), "md"), ...ngDevMode ? [{ debugName: "gapCss" }] : /* istanbul ignore next */ []);
|
|
37527
|
+
this.topCss = computed(() => `${px(this.stickyTop(), 16)}px`, ...ngDevMode ? [{ debugName: "topCss" }] : /* istanbul ignore next */ []);
|
|
37528
|
+
this.offCss = computed(() => `${px(this.stickyOffset(), 32)}px`, ...ngDevMode ? [{ debugName: "offCss" }] : /* istanbul ignore next */ []);
|
|
37529
|
+
this.rootClass = computed(() => {
|
|
37530
|
+
const c = this.collapseAt();
|
|
37531
|
+
const collapse = c === "never" ? "" : c === "sm" || c === "lg" ? `sl-c-${c}` : "sl-c-md";
|
|
37532
|
+
return [
|
|
37533
|
+
this.position() === "start" ? "sl-start" : "",
|
|
37534
|
+
this.stickySide() ? "sl-sticky" : "",
|
|
37535
|
+
collapse,
|
|
37536
|
+
collapse && this.sideFirstWhenCollapsed() ? "sl-first" : ""
|
|
37537
|
+
].filter(Boolean).join(" ");
|
|
37538
|
+
}, ...ngDevMode ? [{ debugName: "rootClass" }] : /* istanbul ignore next */ []);
|
|
37539
|
+
}
|
|
37540
|
+
static {
|
|
37541
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
37542
|
+
minVersion: "12.0.0",
|
|
37543
|
+
version: "22.2.2",
|
|
37544
|
+
ngImport: i0,
|
|
37545
|
+
type: SidebarLayoutComponent,
|
|
37546
|
+
deps: [],
|
|
37547
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
37548
|
+
});
|
|
37549
|
+
}
|
|
37550
|
+
static {
|
|
37551
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
37552
|
+
minVersion: "17.1.0",
|
|
37553
|
+
version: "22.2.2",
|
|
37554
|
+
type: SidebarLayoutComponent,
|
|
37555
|
+
isStandalone: true,
|
|
37556
|
+
selector: "ui-sidebar-layout",
|
|
37557
|
+
inputs: {
|
|
37558
|
+
sideWidth: {
|
|
37559
|
+
classPropertyName: "sideWidth",
|
|
37560
|
+
publicName: "sideWidth",
|
|
37561
|
+
isSignal: true,
|
|
37562
|
+
isRequired: false,
|
|
37563
|
+
transformFunction: null
|
|
37564
|
+
},
|
|
37565
|
+
sidePosition: {
|
|
37566
|
+
classPropertyName: "sidePosition",
|
|
37567
|
+
publicName: "sidePosition",
|
|
37568
|
+
isSignal: true,
|
|
37569
|
+
isRequired: false,
|
|
37570
|
+
transformFunction: null
|
|
37571
|
+
},
|
|
37572
|
+
gap: {
|
|
37573
|
+
classPropertyName: "gap",
|
|
37574
|
+
publicName: "gap",
|
|
37575
|
+
isSignal: true,
|
|
37576
|
+
isRequired: false,
|
|
37577
|
+
transformFunction: null
|
|
37578
|
+
},
|
|
37579
|
+
stickySide: {
|
|
37580
|
+
classPropertyName: "stickySide",
|
|
37581
|
+
publicName: "stickySide",
|
|
37582
|
+
isSignal: true,
|
|
37583
|
+
isRequired: false,
|
|
37584
|
+
transformFunction: null
|
|
37585
|
+
},
|
|
37586
|
+
stickyTop: {
|
|
37587
|
+
classPropertyName: "stickyTop",
|
|
37588
|
+
publicName: "stickyTop",
|
|
37589
|
+
isSignal: true,
|
|
37590
|
+
isRequired: false,
|
|
37591
|
+
transformFunction: null
|
|
37592
|
+
},
|
|
37593
|
+
stickyOffset: {
|
|
37594
|
+
classPropertyName: "stickyOffset",
|
|
37595
|
+
publicName: "stickyOffset",
|
|
37596
|
+
isSignal: true,
|
|
37597
|
+
isRequired: false,
|
|
37598
|
+
transformFunction: null
|
|
37599
|
+
},
|
|
37600
|
+
collapseAt: {
|
|
37601
|
+
classPropertyName: "collapseAt",
|
|
37602
|
+
publicName: "collapseAt",
|
|
37603
|
+
isSignal: true,
|
|
37604
|
+
isRequired: false,
|
|
37605
|
+
transformFunction: null
|
|
37606
|
+
},
|
|
37607
|
+
sideFirstWhenCollapsed: {
|
|
37608
|
+
classPropertyName: "sideFirstWhenCollapsed",
|
|
37609
|
+
publicName: "sideFirstWhenCollapsed",
|
|
37610
|
+
isSignal: true,
|
|
37611
|
+
isRequired: false,
|
|
37612
|
+
transformFunction: null
|
|
37613
|
+
}
|
|
37614
|
+
},
|
|
37615
|
+
host: { properties: { "attr.data-side-position": "position()" } },
|
|
37616
|
+
ngImport: i0,
|
|
37617
|
+
template: `<div class="sl" [class]="rootClass()" [style.--sl-side-w]="sideCss()" [style.--sl-gap]="gapCss()" [style.--sl-top]="topCss()" [style.--sl-off]="offCss()" [style.row-gap]="gapCss()"><div class="sl-main"><ng-content select="[layout-main]" /></div><div class="sl-side"><ng-content select="[layout-side]" /></div></div>`,
|
|
37618
|
+
isInline: true,
|
|
37619
|
+
styles: [":host{display:block}.sl{display:grid;grid-template-columns:minmax(0,1fr) auto}.sl-main{grid-column:1;grid-row:1;min-width:0}.sl-side{grid-column:2;grid-row:1;box-sizing:border-box;width:var(--sl-side-w, 320px);max-width:100%;min-width:0;margin-inline-start:var(--sl-gap, 16px)}.sl-side:empty{display:none}.sl.sl-start{grid-template-columns:auto minmax(0,1fr)}.sl.sl-start .sl-main{grid-column:2}.sl.sl-start .sl-side{grid-column:1;margin-inline-start:0;margin-inline-end:var(--sl-gap, 16px)}.sl.sl-sticky .sl-side{position:-webkit-sticky;position:sticky;top:var(--sl-top, 16px);align-self:start;max-height:calc(100vh - (var(--sl-top, 16px) + var(--sl-off, 32px)));max-height:calc(100dvh - (var(--sl-top, 16px) + var(--sl-off, 32px)));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}@media(max-width:640px){.sl.sl-c-sm{grid-template-columns:minmax(0,1fr)}.sl.sl-c-sm .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-sm .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-sm.sl-first .sl-side{order:-1}}@media(max-width:900px){.sl.sl-c-md{grid-template-columns:minmax(0,1fr)}.sl.sl-c-md .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-md .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-md.sl-first .sl-side{order:-1}}@media(max-width:1200px){.sl.sl-c-lg{grid-template-columns:minmax(0,1fr)}.sl.sl-c-lg .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-lg .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-lg.sl-first .sl-side{order:-1}}\n"],
|
|
37620
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
37621
|
+
});
|
|
37622
|
+
}
|
|
37623
|
+
};
|
|
37624
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
37625
|
+
minVersion: "12.0.0",
|
|
37626
|
+
version: "22.2.2",
|
|
37627
|
+
ngImport: i0,
|
|
37628
|
+
type: SidebarLayoutComponent,
|
|
37629
|
+
decorators: [{
|
|
37630
|
+
type: Component,
|
|
37631
|
+
args: [{
|
|
37632
|
+
selector: "ui-sidebar-layout",
|
|
37633
|
+
standalone: true,
|
|
37634
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
37635
|
+
host: { "[attr.data-side-position]": "position()" },
|
|
37636
|
+
template: `<div class="sl" [class]="rootClass()" [style.--sl-side-w]="sideCss()" [style.--sl-gap]="gapCss()" [style.--sl-top]="topCss()" [style.--sl-off]="offCss()" [style.row-gap]="gapCss()"><div class="sl-main"><ng-content select="[layout-main]" /></div><div class="sl-side"><ng-content select="[layout-side]" /></div></div>`,
|
|
37637
|
+
styles: [":host{display:block}.sl{display:grid;grid-template-columns:minmax(0,1fr) auto}.sl-main{grid-column:1;grid-row:1;min-width:0}.sl-side{grid-column:2;grid-row:1;box-sizing:border-box;width:var(--sl-side-w, 320px);max-width:100%;min-width:0;margin-inline-start:var(--sl-gap, 16px)}.sl-side:empty{display:none}.sl.sl-start{grid-template-columns:auto minmax(0,1fr)}.sl.sl-start .sl-main{grid-column:2}.sl.sl-start .sl-side{grid-column:1;margin-inline-start:0;margin-inline-end:var(--sl-gap, 16px)}.sl.sl-sticky .sl-side{position:-webkit-sticky;position:sticky;top:var(--sl-top, 16px);align-self:start;max-height:calc(100vh - (var(--sl-top, 16px) + var(--sl-off, 32px)));max-height:calc(100dvh - (var(--sl-top, 16px) + var(--sl-off, 32px)));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}@media(max-width:640px){.sl.sl-c-sm{grid-template-columns:minmax(0,1fr)}.sl.sl-c-sm .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-sm .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-sm.sl-first .sl-side{order:-1}}@media(max-width:900px){.sl.sl-c-md{grid-template-columns:minmax(0,1fr)}.sl.sl-c-md .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-md .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-md.sl-first .sl-side{order:-1}}@media(max-width:1200px){.sl.sl-c-lg{grid-template-columns:minmax(0,1fr)}.sl.sl-c-lg .sl-main{grid-column:1;grid-row:auto}.sl.sl-c-lg .sl-side{grid-column:1;grid-row:auto;width:auto;margin-inline-start:0;margin-inline-end:0;position:static;top:auto;align-self:auto;max-height:none;overflow-y:visible}.sl.sl-c-lg.sl-first .sl-side{order:-1}}\n"]
|
|
37638
|
+
}]
|
|
37639
|
+
}],
|
|
37640
|
+
propDecorators: {
|
|
37641
|
+
sideWidth: [{
|
|
37642
|
+
type: i0.Input,
|
|
37643
|
+
args: [{
|
|
37644
|
+
isSignal: true,
|
|
37645
|
+
alias: "sideWidth",
|
|
37646
|
+
required: false
|
|
37647
|
+
}]
|
|
37648
|
+
}],
|
|
37649
|
+
sidePosition: [{
|
|
37650
|
+
type: i0.Input,
|
|
37651
|
+
args: [{
|
|
37652
|
+
isSignal: true,
|
|
37653
|
+
alias: "sidePosition",
|
|
37654
|
+
required: false
|
|
37655
|
+
}]
|
|
37656
|
+
}],
|
|
37657
|
+
gap: [{
|
|
37658
|
+
type: i0.Input,
|
|
37659
|
+
args: [{
|
|
37660
|
+
isSignal: true,
|
|
37661
|
+
alias: "gap",
|
|
37662
|
+
required: false
|
|
37663
|
+
}]
|
|
37664
|
+
}],
|
|
37665
|
+
stickySide: [{
|
|
37666
|
+
type: i0.Input,
|
|
37667
|
+
args: [{
|
|
37668
|
+
isSignal: true,
|
|
37669
|
+
alias: "stickySide",
|
|
37670
|
+
required: false
|
|
37671
|
+
}]
|
|
37672
|
+
}],
|
|
37673
|
+
stickyTop: [{
|
|
37674
|
+
type: i0.Input,
|
|
37675
|
+
args: [{
|
|
37676
|
+
isSignal: true,
|
|
37677
|
+
alias: "stickyTop",
|
|
37678
|
+
required: false
|
|
37679
|
+
}]
|
|
37680
|
+
}],
|
|
37681
|
+
stickyOffset: [{
|
|
37682
|
+
type: i0.Input,
|
|
37683
|
+
args: [{
|
|
37684
|
+
isSignal: true,
|
|
37685
|
+
alias: "stickyOffset",
|
|
37686
|
+
required: false
|
|
37687
|
+
}]
|
|
37688
|
+
}],
|
|
37689
|
+
collapseAt: [{
|
|
37690
|
+
type: i0.Input,
|
|
37691
|
+
args: [{
|
|
37692
|
+
isSignal: true,
|
|
37693
|
+
alias: "collapseAt",
|
|
37694
|
+
required: false
|
|
37695
|
+
}]
|
|
37696
|
+
}],
|
|
37697
|
+
sideFirstWhenCollapsed: [{
|
|
37698
|
+
type: i0.Input,
|
|
37699
|
+
args: [{
|
|
37700
|
+
isSignal: true,
|
|
37701
|
+
alias: "sideFirstWhenCollapsed",
|
|
37702
|
+
required: false
|
|
37703
|
+
}]
|
|
37704
|
+
}]
|
|
37705
|
+
}
|
|
37706
|
+
});
|
|
36064
37707
|
const JUSTIFY = {
|
|
36065
37708
|
start: "flex-start",
|
|
36066
37709
|
center: "center",
|
|
@@ -38499,6 +40142,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
38499
40142
|
}]
|
|
38500
40143
|
}
|
|
38501
40144
|
});
|
|
38502
|
-
export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BoardCardDirective, BoardComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PasswordRequirementsComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
|
|
40145
|
+
export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BoardCardDirective, BoardComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CardListItemComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, NOTES_MAX_LENGTH, NotesComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PasswordRequirementsComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SidebarLayoutComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
|
|
38503
40146
|
|
|
38504
40147
|
//# sourceMappingURL=forgeroute-ui.mjs.map
|