@forgeroute/ui 0.4.19 → 0.4.21
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-messaging.mjs +4 -0
- package/fesm2022/forgeroute-ui-messaging.mjs.map +1 -1
- package/fesm2022/forgeroute-ui-stripe.mjs +1 -0
- package/fesm2022/forgeroute-ui-stripe.mjs.map +1 -1
- package/fesm2022/forgeroute-ui.mjs +1779 -132
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui.d.ts +454 -5
|
@@ -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"]
|
|
@@ -4316,6 +4338,9 @@ const EXTRA_ICONS = {
|
|
|
4316
4338
|
"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
4339
|
"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
4340
|
"refund": "M3 10h10a8 8 0 0 1 8 8v2 M3 10l6 6 M3 10l6-6",
|
|
4341
|
+
"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",
|
|
4342
|
+
"chart": "M18 20V10 M12 20V4 M6 20v-6",
|
|
4343
|
+
"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
4344
|
"bank": "M3 21h18 M3 10h18 M5 6l7-3 7 3 M4 10v11 M20 10v11 M8 14v3 M12 14v3 M16 14v3"
|
|
4320
4345
|
};
|
|
4321
4346
|
function iconPath(name) {
|
|
@@ -4742,6 +4767,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4742
4767
|
constructor() {
|
|
4743
4768
|
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
4744
4769
|
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
4770
|
+
this.inputTestId = input("", ...ngDevMode ? [{ debugName: "inputTestId" }] : /* istanbul ignore next */ []);
|
|
4745
4771
|
this.placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
|
|
4746
4772
|
this.prefix = input("", ...ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []);
|
|
4747
4773
|
this.revealable = input(false, ...ngDevMode ? [{ debugName: "revealable" }] : /* istanbul ignore next */ []);
|
|
@@ -4973,6 +4999,13 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4973
4999
|
isRequired: false,
|
|
4974
5000
|
transformFunction: null
|
|
4975
5001
|
},
|
|
5002
|
+
inputTestId: {
|
|
5003
|
+
classPropertyName: "inputTestId",
|
|
5004
|
+
publicName: "inputTestId",
|
|
5005
|
+
isSignal: true,
|
|
5006
|
+
isRequired: false,
|
|
5007
|
+
transformFunction: null
|
|
5008
|
+
},
|
|
4976
5009
|
placeholder: {
|
|
4977
5010
|
classPropertyName: "placeholder",
|
|
4978
5011
|
publicName: "placeholder",
|
|
@@ -5163,16 +5196,20 @@ var TextInputComponent = class TextInputComponent {
|
|
|
5163
5196
|
<div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
|
|
5164
5197
|
[class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
|
|
5165
5198
|
@if (label()) {
|
|
5166
|
-
<
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5199
|
+
<div class="ti-label-row">
|
|
5200
|
+
<label class="ti-label" [for]="_inputId">
|
|
5201
|
+
{{ label() }}
|
|
5202
|
+
@if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
|
|
5203
|
+
</label>
|
|
5204
|
+
<ng-content select="[uiLabelEnd]" />
|
|
5205
|
+
</div>
|
|
5170
5206
|
}
|
|
5171
5207
|
<input
|
|
5172
5208
|
class="ti-input"
|
|
5173
5209
|
[style.padding-left]="_prefixPadding()"
|
|
5174
5210
|
[style.padding-right]="_revealable() ? '44px' : null"
|
|
5175
5211
|
[id]="_inputId"
|
|
5212
|
+
[attr.data-testid]="inputTestId() || null"
|
|
5176
5213
|
[type]="_inputType()"
|
|
5177
5214
|
[attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
|
|
5178
5215
|
[placeholder]="placeholder()"
|
|
@@ -5214,7 +5251,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
5214
5251
|
</div>
|
|
5215
5252
|
`,
|
|
5216
5253
|
isInline: true,
|
|
5217
|
-
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
|
|
5254
|
+
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
|
|
5218
5255
|
dependencies: [{
|
|
5219
5256
|
kind: "component",
|
|
5220
5257
|
type: PasswordRequirementsComponent,
|
|
@@ -5261,16 +5298,20 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5261
5298
|
<div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
|
|
5262
5299
|
[class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
|
|
5263
5300
|
@if (label()) {
|
|
5264
|
-
<
|
|
5265
|
-
|
|
5266
|
-
|
|
5267
|
-
|
|
5301
|
+
<div class="ti-label-row">
|
|
5302
|
+
<label class="ti-label" [for]="_inputId">
|
|
5303
|
+
{{ label() }}
|
|
5304
|
+
@if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
|
|
5305
|
+
</label>
|
|
5306
|
+
<ng-content select="[uiLabelEnd]" />
|
|
5307
|
+
</div>
|
|
5268
5308
|
}
|
|
5269
5309
|
<input
|
|
5270
5310
|
class="ti-input"
|
|
5271
5311
|
[style.padding-left]="_prefixPadding()"
|
|
5272
5312
|
[style.padding-right]="_revealable() ? '44px' : null"
|
|
5273
5313
|
[id]="_inputId"
|
|
5314
|
+
[attr.data-testid]="inputTestId() || null"
|
|
5274
5315
|
[type]="_inputType()"
|
|
5275
5316
|
[attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
|
|
5276
5317
|
[placeholder]="placeholder()"
|
|
@@ -5311,7 +5352,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5311
5352
|
}
|
|
5312
5353
|
</div>
|
|
5313
5354
|
`,
|
|
5314
|
-
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
|
|
5355
|
+
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
|
|
5315
5356
|
}]
|
|
5316
5357
|
}],
|
|
5317
5358
|
ctorParameters: () => [],
|
|
@@ -5332,6 +5373,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5332
5373
|
required: false
|
|
5333
5374
|
}]
|
|
5334
5375
|
}],
|
|
5376
|
+
inputTestId: [{
|
|
5377
|
+
type: i0.Input,
|
|
5378
|
+
args: [{
|
|
5379
|
+
isSignal: true,
|
|
5380
|
+
alias: "inputTestId",
|
|
5381
|
+
required: false
|
|
5382
|
+
}]
|
|
5383
|
+
}],
|
|
5335
5384
|
placeholder: [{
|
|
5336
5385
|
type: i0.Input,
|
|
5337
5386
|
args: [{
|
|
@@ -5987,6 +6036,7 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
5987
6036
|
inputs: [
|
|
5988
6037
|
"label",
|
|
5989
6038
|
"ariaLabel",
|
|
6039
|
+
"inputTestId",
|
|
5990
6040
|
"placeholder",
|
|
5991
6041
|
"prefix",
|
|
5992
6042
|
"revealable",
|
|
@@ -7308,7 +7358,7 @@ var SelectComponent = class SelectComponent {
|
|
|
7308
7358
|
<option value="" [disabled]="true" [selected]="_value() === ''">{{ placeholder() }}</option>
|
|
7309
7359
|
}
|
|
7310
7360
|
@for (opt of options(); track opt.value; let i = $index) {
|
|
7311
|
-
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7361
|
+
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [disabled]="!!opt.disabled" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7312
7362
|
}
|
|
7313
7363
|
</select>
|
|
7314
7364
|
<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>
|
|
@@ -7379,7 +7429,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
7379
7429
|
<option value="" [disabled]="true" [selected]="_value() === ''">{{ placeholder() }}</option>
|
|
7380
7430
|
}
|
|
7381
7431
|
@for (opt of options(); track opt.value; let i = $index) {
|
|
7382
|
-
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7432
|
+
<option [value]="_key(opt)" [selected]="i === _selectedIndex()" [disabled]="!!opt.disabled" [attr.title]="opt.description || null">{{ opt.badge ? opt.label + ' — ' + opt.badge : opt.label }}</option>
|
|
7383
7433
|
}
|
|
7384
7434
|
</select>
|
|
7385
7435
|
<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>
|
|
@@ -9960,7 +10010,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
9960
10010
|
this.showMoreActions = input(true, ...ngDevMode ? [{ debugName: "showMoreActions" }] : /* istanbul ignore next */ []);
|
|
9961
10011
|
this.showSearch = input(true, ...ngDevMode ? [{ debugName: "showSearch" }] : /* istanbul ignore next */ []);
|
|
9962
10012
|
this.showQuickTabs = input(true, ...ngDevMode ? [{ debugName: "showQuickTabs" }] : /* istanbul ignore next */ []);
|
|
9963
|
-
this.
|
|
10013
|
+
this.tableTitle = input("", ...ngDevMode ? [{ debugName: "tableTitle" }] : /* istanbul ignore next */ []);
|
|
10014
|
+
this._showHeader = computed(() => !!this.tableTitle() || this.showSearch() || this.showToolbar() || this._effectiveTabs().length > 0, ...ngDevMode ? [{ debugName: "_showHeader" }] : /* istanbul ignore next */ []);
|
|
9964
10015
|
this.countsEndpoint = input("", ...ngDevMode ? [{ debugName: "countsEndpoint" }] : /* istanbul ignore next */ []);
|
|
9965
10016
|
this.params = input(null, ...ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []);
|
|
9966
10017
|
this.tableButtons = input([], ...ngDevMode ? [{ debugName: "tableButtons" }] : /* istanbul ignore next */ []);
|
|
@@ -10939,6 +10990,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10939
10990
|
isRequired: false,
|
|
10940
10991
|
transformFunction: null
|
|
10941
10992
|
},
|
|
10993
|
+
tableTitle: {
|
|
10994
|
+
classPropertyName: "tableTitle",
|
|
10995
|
+
publicName: "tableTitle",
|
|
10996
|
+
isSignal: true,
|
|
10997
|
+
isRequired: false,
|
|
10998
|
+
transformFunction: null
|
|
10999
|
+
},
|
|
10942
11000
|
countsEndpoint: {
|
|
10943
11001
|
classPropertyName: "countsEndpoint",
|
|
10944
11002
|
publicName: "countsEndpoint",
|
|
@@ -11074,6 +11132,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11074
11132
|
@if (_showHeader()) {
|
|
11075
11133
|
<div class="dt-sk-toolbar">
|
|
11076
11134
|
<div class="dt-sk-toolbar-left">
|
|
11135
|
+
@if (tableTitle()) {
|
|
11136
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
11137
|
+
}
|
|
11077
11138
|
@if (showSearch()) {
|
|
11078
11139
|
<div class="dt-sk-search">
|
|
11079
11140
|
<div class="dt-sk-shimmer dt-sk-search-icon"></div>
|
|
@@ -11099,6 +11160,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11099
11160
|
} @else if (_showHeader()) {
|
|
11100
11161
|
<div class="dt-header alive-header">
|
|
11101
11162
|
<div class="dt-header-left">
|
|
11163
|
+
@if (tableTitle()) {
|
|
11164
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
11165
|
+
}
|
|
11102
11166
|
@if (showSearch() && !_emptyUnfiltered()) {
|
|
11103
11167
|
<ui-search-input
|
|
11104
11168
|
[value]="_search()"
|
|
@@ -11742,7 +11806,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11742
11806
|
</div>
|
|
11743
11807
|
`,
|
|
11744
11808
|
isInline: true,
|
|
11745
|
-
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"],
|
|
11809
|
+
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"],
|
|
11746
11810
|
dependencies: [
|
|
11747
11811
|
{
|
|
11748
11812
|
kind: "directive",
|
|
@@ -11780,7 +11844,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
11780
11844
|
"page",
|
|
11781
11845
|
"pageSize",
|
|
11782
11846
|
"totalItems",
|
|
11783
|
-
"detached"
|
|
11847
|
+
"detached",
|
|
11848
|
+
"embedded"
|
|
11784
11849
|
],
|
|
11785
11850
|
outputs: ["pageChange"]
|
|
11786
11851
|
},
|
|
@@ -12128,6 +12193,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12128
12193
|
@if (_showHeader()) {
|
|
12129
12194
|
<div class="dt-sk-toolbar">
|
|
12130
12195
|
<div class="dt-sk-toolbar-left">
|
|
12196
|
+
@if (tableTitle()) {
|
|
12197
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
12198
|
+
}
|
|
12131
12199
|
@if (showSearch()) {
|
|
12132
12200
|
<div class="dt-sk-search">
|
|
12133
12201
|
<div class="dt-sk-shimmer dt-sk-search-icon"></div>
|
|
@@ -12153,6 +12221,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12153
12221
|
} @else if (_showHeader()) {
|
|
12154
12222
|
<div class="dt-header alive-header">
|
|
12155
12223
|
<div class="dt-header-left">
|
|
12224
|
+
@if (tableTitle()) {
|
|
12225
|
+
<h3 class="dt-title">{{ tableTitle() }}</h3>
|
|
12226
|
+
}
|
|
12156
12227
|
@if (showSearch() && !_emptyUnfiltered()) {
|
|
12157
12228
|
<ui-search-input
|
|
12158
12229
|
[value]="_search()"
|
|
@@ -12795,7 +12866,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12795
12866
|
}
|
|
12796
12867
|
</div>
|
|
12797
12868
|
`,
|
|
12798
|
-
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"]
|
|
12869
|
+
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"]
|
|
12799
12870
|
}]
|
|
12800
12871
|
}],
|
|
12801
12872
|
ctorParameters: () => [],
|
|
@@ -12912,6 +12983,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12912
12983
|
required: false
|
|
12913
12984
|
}]
|
|
12914
12985
|
}],
|
|
12986
|
+
tableTitle: [{
|
|
12987
|
+
type: i0.Input,
|
|
12988
|
+
args: [{
|
|
12989
|
+
isSignal: true,
|
|
12990
|
+
alias: "tableTitle",
|
|
12991
|
+
required: false
|
|
12992
|
+
}]
|
|
12993
|
+
}],
|
|
12915
12994
|
countsEndpoint: [{
|
|
12916
12995
|
type: i0.Input,
|
|
12917
12996
|
args: [{
|
|
@@ -17205,6 +17284,7 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
|
|
|
17205
17284
|
inputs: [
|
|
17206
17285
|
"label",
|
|
17207
17286
|
"ariaLabel",
|
|
17287
|
+
"inputTestId",
|
|
17208
17288
|
"placeholder",
|
|
17209
17289
|
"prefix",
|
|
17210
17290
|
"revealable",
|
|
@@ -19349,6 +19429,7 @@ var BulkMessagePanelComponent = class BulkMessagePanelComponent {
|
|
|
19349
19429
|
inputs: [
|
|
19350
19430
|
"label",
|
|
19351
19431
|
"ariaLabel",
|
|
19432
|
+
"inputTestId",
|
|
19352
19433
|
"placeholder",
|
|
19353
19434
|
"prefix",
|
|
19354
19435
|
"revealable",
|
|
@@ -24562,7 +24643,7 @@ var ListItemComponent = class ListItemComponent {
|
|
|
24562
24643
|
</div>
|
|
24563
24644
|
`,
|
|
24564
24645
|
isInline: true,
|
|
24565
|
-
styles: ["ui-list-item{display:block}ui-list-item
|
|
24646
|
+
styles: ["ui-list-item{display:block}ui-list-item.li-bordered{border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);box-shadow:0 1px 2px #0f172a0a;margin-bottom:8px;transition:border-color .15s ease,box-shadow .15s ease}ui-list-item.li-bordered:last-child{margin-bottom:0}ui-list-item.li-bordered:hover{border-color:#cbd5e1;box-shadow:0 2px 6px #0f172a12}@media(prefers-reduced-motion:reduce){ui-list-item.li-bordered{transition:none}}.li-row{display:flex;align-items:flex-start;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}ui-list-item.li-bordered .li-row{border-bottom:none;padding:14px 16px}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row [list-item-action],.li-row [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px}.li-icon--slate{background:#f1f5f9;color:#475569}.li-icon--amber{background:#fef3c7;color:#b45309}.li-icon--orange{background:#ffedd5;color:#c2410c}.li-icon--red{background:#fee2e2;color:#b91c1c}.li-icon--blue{background:#dbeafe;color:#1d4ed8}.li-icon--green{background:#dcfce7;color:#15803d}.li-icon--purple{background:#f3e8ff;color:#7e22ce}.li-icon--teal{background:#ccfbf1;color:#0f766e}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:6px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.4;letter-spacing:-.005em;color:var(--text-primary, #0f172a)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-direction:column;gap:3px;font-size:.8125rem;line-height:1.4;color:var(--text-secondary, #64748b)}.li-detail{display:flex;align-items:center;gap:6px;min-width:0}.li-detail-icon{flex:0 0 auto;color:#94a3b8}.li-detail--warning,.li-detail--warning .li-detail-icon{color:#b45309}.li-detail--danger,.li-detail--danger .li-detail-icon{color:#b91c1c}.li-row--wrap .li-detail-text{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"],
|
|
24566
24647
|
dependencies: [{
|
|
24567
24648
|
kind: "component",
|
|
24568
24649
|
type: BadgeComponent,
|
|
@@ -24662,7 +24743,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
24662
24743
|
|
|
24663
24744
|
</div>
|
|
24664
24745
|
`,
|
|
24665
|
-
styles: ["ui-list-item{display:block}ui-list-item
|
|
24746
|
+
styles: ["ui-list-item{display:block}ui-list-item.li-bordered{border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);box-shadow:0 1px 2px #0f172a0a;margin-bottom:8px;transition:border-color .15s ease,box-shadow .15s ease}ui-list-item.li-bordered:last-child{margin-bottom:0}ui-list-item.li-bordered:hover{border-color:#cbd5e1;box-shadow:0 2px 6px #0f172a12}@media(prefers-reduced-motion:reduce){ui-list-item.li-bordered{transition:none}}.li-row{display:flex;align-items:flex-start;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}ui-list-item.li-bordered .li-row{border-bottom:none;padding:14px 16px}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row [list-item-action],.li-row [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px}.li-icon--slate{background:#f1f5f9;color:#475569}.li-icon--amber{background:#fef3c7;color:#b45309}.li-icon--orange{background:#ffedd5;color:#c2410c}.li-icon--red{background:#fee2e2;color:#b91c1c}.li-icon--blue{background:#dbeafe;color:#1d4ed8}.li-icon--green{background:#dcfce7;color:#15803d}.li-icon--purple{background:#f3e8ff;color:#7e22ce}.li-icon--teal{background:#ccfbf1;color:#0f766e}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:6px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.4;letter-spacing:-.005em;color:var(--text-primary, #0f172a)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-direction:column;gap:3px;font-size:.8125rem;line-height:1.4;color:var(--text-secondary, #64748b)}.li-detail{display:flex;align-items:center;gap:6px;min-width:0}.li-detail-icon{flex:0 0 auto;color:#94a3b8}.li-detail--warning,.li-detail--warning .li-detail-icon{color:#b45309}.li-detail--danger,.li-detail--danger .li-detail-icon{color:#b91c1c}.li-row--wrap .li-detail-text{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"]
|
|
24666
24747
|
}]
|
|
24667
24748
|
}],
|
|
24668
24749
|
propDecorators: {
|
|
@@ -24796,6 +24877,954 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
24796
24877
|
}]
|
|
24797
24878
|
}
|
|
24798
24879
|
});
|
|
24880
|
+
const ICON_PATHS = {
|
|
24881
|
+
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",
|
|
24882
|
+
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",
|
|
24883
|
+
sms: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
|
|
24884
|
+
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",
|
|
24885
|
+
doc: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6",
|
|
24886
|
+
money: "M12 1v22 M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",
|
|
24887
|
+
deal: "M22 7l-8.5 8.5-5-5L2 17 M16 7h6v6",
|
|
24888
|
+
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",
|
|
24889
|
+
property: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z M9 22V12h6v10",
|
|
24890
|
+
search: "M11 3a8 8 0 1 0 0 16 8 8 0 0 0 0-16z M21 21l-4.35-4.35",
|
|
24891
|
+
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",
|
|
24892
|
+
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",
|
|
24893
|
+
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"
|
|
24894
|
+
};
|
|
24895
|
+
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";
|
|
24896
|
+
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";
|
|
24897
|
+
const INDICATOR_LABEL = {
|
|
24898
|
+
high: "High priority",
|
|
24899
|
+
medium: "Medium priority",
|
|
24900
|
+
low: "Low priority"
|
|
24901
|
+
};
|
|
24902
|
+
var CardListItemComponent = class CardListItemComponent {
|
|
24903
|
+
constructor() {
|
|
24904
|
+
this.title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
24905
|
+
this.description = input(void 0, ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
|
|
24906
|
+
this.date = input(void 0, ...ngDevMode ? [{ debugName: "date" }] : /* istanbul ignore next */ []);
|
|
24907
|
+
this.type = input(void 0, ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
24908
|
+
this.typeVariant = input("gray", ...ngDevMode ? [{ debugName: "typeVariant" }] : /* istanbul ignore next */ []);
|
|
24909
|
+
this.status = input(void 0, ...ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []);
|
|
24910
|
+
this.statusVariant = input(void 0, ...ngDevMode ? [{ debugName: "statusVariant" }] : /* istanbul ignore next */ []);
|
|
24911
|
+
this.indicator = input("none", ...ngDevMode ? [{ debugName: "indicator" }] : /* istanbul ignore next */ []);
|
|
24912
|
+
this.icon = input(void 0, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
24913
|
+
this.editButton = input(false, ...ngDevMode ? [{ debugName: "editButton" }] : /* istanbul ignore next */ []);
|
|
24914
|
+
this.viewButton = input(false, ...ngDevMode ? [{ debugName: "viewButton" }] : /* istanbul ignore next */ []);
|
|
24915
|
+
this.editAriaLabel = input("", ...ngDevMode ? [{ debugName: "editAriaLabel" }] : /* istanbul ignore next */ []);
|
|
24916
|
+
this.viewAriaLabel = input("", ...ngDevMode ? [{ debugName: "viewAriaLabel" }] : /* istanbul ignore next */ []);
|
|
24917
|
+
this.editClick = output();
|
|
24918
|
+
this.viewClick = output();
|
|
24919
|
+
this.calendarPath = CALENDAR_PATH;
|
|
24920
|
+
this.editPath = EDIT_PATH;
|
|
24921
|
+
this.iconPath = computed(() => {
|
|
24922
|
+
const i = this.icon();
|
|
24923
|
+
return i ? ICON_PATHS[i] ?? null : null;
|
|
24924
|
+
}, ...ngDevMode ? [{ debugName: "iconPath" }] : /* istanbul ignore next */ []);
|
|
24925
|
+
this.indicatorLabel = computed(() => INDICATOR_LABEL[this.indicator()] ?? "", ...ngDevMode ? [{ debugName: "indicatorLabel" }] : /* istanbul ignore next */ []);
|
|
24926
|
+
}
|
|
24927
|
+
static {
|
|
24928
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
24929
|
+
minVersion: "12.0.0",
|
|
24930
|
+
version: "22.2.2",
|
|
24931
|
+
ngImport: i0,
|
|
24932
|
+
type: CardListItemComponent,
|
|
24933
|
+
deps: [],
|
|
24934
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
24935
|
+
});
|
|
24936
|
+
}
|
|
24937
|
+
static {
|
|
24938
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
24939
|
+
minVersion: "17.0.0",
|
|
24940
|
+
version: "22.2.2",
|
|
24941
|
+
type: CardListItemComponent,
|
|
24942
|
+
isStandalone: true,
|
|
24943
|
+
selector: "ui-card-list-item",
|
|
24944
|
+
inputs: {
|
|
24945
|
+
title: {
|
|
24946
|
+
classPropertyName: "title",
|
|
24947
|
+
publicName: "title",
|
|
24948
|
+
isSignal: true,
|
|
24949
|
+
isRequired: false,
|
|
24950
|
+
transformFunction: null
|
|
24951
|
+
},
|
|
24952
|
+
description: {
|
|
24953
|
+
classPropertyName: "description",
|
|
24954
|
+
publicName: "description",
|
|
24955
|
+
isSignal: true,
|
|
24956
|
+
isRequired: false,
|
|
24957
|
+
transformFunction: null
|
|
24958
|
+
},
|
|
24959
|
+
date: {
|
|
24960
|
+
classPropertyName: "date",
|
|
24961
|
+
publicName: "date",
|
|
24962
|
+
isSignal: true,
|
|
24963
|
+
isRequired: false,
|
|
24964
|
+
transformFunction: null
|
|
24965
|
+
},
|
|
24966
|
+
type: {
|
|
24967
|
+
classPropertyName: "type",
|
|
24968
|
+
publicName: "type",
|
|
24969
|
+
isSignal: true,
|
|
24970
|
+
isRequired: false,
|
|
24971
|
+
transformFunction: null
|
|
24972
|
+
},
|
|
24973
|
+
typeVariant: {
|
|
24974
|
+
classPropertyName: "typeVariant",
|
|
24975
|
+
publicName: "typeVariant",
|
|
24976
|
+
isSignal: true,
|
|
24977
|
+
isRequired: false,
|
|
24978
|
+
transformFunction: null
|
|
24979
|
+
},
|
|
24980
|
+
status: {
|
|
24981
|
+
classPropertyName: "status",
|
|
24982
|
+
publicName: "status",
|
|
24983
|
+
isSignal: true,
|
|
24984
|
+
isRequired: false,
|
|
24985
|
+
transformFunction: null
|
|
24986
|
+
},
|
|
24987
|
+
statusVariant: {
|
|
24988
|
+
classPropertyName: "statusVariant",
|
|
24989
|
+
publicName: "statusVariant",
|
|
24990
|
+
isSignal: true,
|
|
24991
|
+
isRequired: false,
|
|
24992
|
+
transformFunction: null
|
|
24993
|
+
},
|
|
24994
|
+
indicator: {
|
|
24995
|
+
classPropertyName: "indicator",
|
|
24996
|
+
publicName: "indicator",
|
|
24997
|
+
isSignal: true,
|
|
24998
|
+
isRequired: false,
|
|
24999
|
+
transformFunction: null
|
|
25000
|
+
},
|
|
25001
|
+
icon: {
|
|
25002
|
+
classPropertyName: "icon",
|
|
25003
|
+
publicName: "icon",
|
|
25004
|
+
isSignal: true,
|
|
25005
|
+
isRequired: false,
|
|
25006
|
+
transformFunction: null
|
|
25007
|
+
},
|
|
25008
|
+
editButton: {
|
|
25009
|
+
classPropertyName: "editButton",
|
|
25010
|
+
publicName: "editButton",
|
|
25011
|
+
isSignal: true,
|
|
25012
|
+
isRequired: false,
|
|
25013
|
+
transformFunction: null
|
|
25014
|
+
},
|
|
25015
|
+
viewButton: {
|
|
25016
|
+
classPropertyName: "viewButton",
|
|
25017
|
+
publicName: "viewButton",
|
|
25018
|
+
isSignal: true,
|
|
25019
|
+
isRequired: false,
|
|
25020
|
+
transformFunction: null
|
|
25021
|
+
},
|
|
25022
|
+
editAriaLabel: {
|
|
25023
|
+
classPropertyName: "editAriaLabel",
|
|
25024
|
+
publicName: "editAriaLabel",
|
|
25025
|
+
isSignal: true,
|
|
25026
|
+
isRequired: false,
|
|
25027
|
+
transformFunction: null
|
|
25028
|
+
},
|
|
25029
|
+
viewAriaLabel: {
|
|
25030
|
+
classPropertyName: "viewAriaLabel",
|
|
25031
|
+
publicName: "viewAriaLabel",
|
|
25032
|
+
isSignal: true,
|
|
25033
|
+
isRequired: false,
|
|
25034
|
+
transformFunction: null
|
|
25035
|
+
}
|
|
25036
|
+
},
|
|
25037
|
+
outputs: {
|
|
25038
|
+
editClick: "editClick",
|
|
25039
|
+
viewClick: "viewClick"
|
|
25040
|
+
},
|
|
25041
|
+
ngImport: i0,
|
|
25042
|
+
template: `
|
|
25043
|
+
<div class="cli-row">
|
|
25044
|
+
@if (iconPath(); as d) {
|
|
25045
|
+
<div class="cli-icon-circle" [class]="'cli-icon-circle cli-icon-circle--' + icon()" aria-hidden="true">
|
|
25046
|
+
<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>
|
|
25047
|
+
</div>
|
|
25048
|
+
} @else if (indicator() !== 'none') {
|
|
25049
|
+
@if (indicatorLabel(); as label) {
|
|
25050
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" [uiTooltip]="label" tabindex="0" role="img" [attr.aria-label]="label"></div>
|
|
25051
|
+
} @else {
|
|
25052
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" aria-hidden="true"></div>
|
|
25053
|
+
}
|
|
25054
|
+
}
|
|
25055
|
+
|
|
25056
|
+
<div class="cli-body">
|
|
25057
|
+
<div class="cli-title-row">
|
|
25058
|
+
<span class="cli-title">{{ title() }}</span>
|
|
25059
|
+
@if (type()) { <ui-badge [label]="type()!" [variant]="typeVariant()" /> }
|
|
25060
|
+
@if (status() && statusVariant()) { <ui-badge [label]="status()!" [variant]="statusVariant()!" /> }
|
|
25061
|
+
</div>
|
|
25062
|
+
<div class="cli-desc-row">
|
|
25063
|
+
@if (description()) { <span class="cli-description">{{ description() }}</span> }
|
|
25064
|
+
<ng-content select="[card-list-inline]" />
|
|
25065
|
+
</div>
|
|
25066
|
+
@if (date()) {
|
|
25067
|
+
<span class="cli-date">
|
|
25068
|
+
<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>
|
|
25069
|
+
{{ date() }}
|
|
25070
|
+
</span>
|
|
25071
|
+
}
|
|
25072
|
+
</div>
|
|
25073
|
+
|
|
25074
|
+
@if (editButton()) {
|
|
25075
|
+
<button class="cli-chip cli-chip--edit" type="button" [attr.aria-label]="editAriaLabel() || null" (click)="editClick.emit()">
|
|
25076
|
+
<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>
|
|
25077
|
+
Edit
|
|
25078
|
+
</button>
|
|
25079
|
+
}
|
|
25080
|
+
@if (viewButton()) {
|
|
25081
|
+
<button class="cli-chip cli-chip--view" type="button" [attr.aria-label]="viewAriaLabel() || null" (click)="viewClick.emit()">View</button>
|
|
25082
|
+
}
|
|
25083
|
+
<ng-content select="[card-list-action]" />
|
|
25084
|
+
<ng-content />
|
|
25085
|
+
</div>
|
|
25086
|
+
<ng-content select="[card-stats]" />
|
|
25087
|
+
<ng-content select="[card-detail]" />
|
|
25088
|
+
`,
|
|
25089
|
+
isInline: true,
|
|
25090
|
+
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"],
|
|
25091
|
+
dependencies: [{
|
|
25092
|
+
kind: "component",
|
|
25093
|
+
type: BadgeComponent,
|
|
25094
|
+
selector: "ui-badge",
|
|
25095
|
+
inputs: ["label", "variant"]
|
|
25096
|
+
}, {
|
|
25097
|
+
kind: "directive",
|
|
25098
|
+
type: TooltipDirective,
|
|
25099
|
+
selector: "[uiTooltip]",
|
|
25100
|
+
inputs: ["uiTooltip", "tooltipPosition"]
|
|
25101
|
+
}],
|
|
25102
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
25103
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
25104
|
+
});
|
|
25105
|
+
}
|
|
25106
|
+
};
|
|
25107
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
25108
|
+
minVersion: "12.0.0",
|
|
25109
|
+
version: "22.2.2",
|
|
25110
|
+
ngImport: i0,
|
|
25111
|
+
type: CardListItemComponent,
|
|
25112
|
+
decorators: [{
|
|
25113
|
+
type: Component,
|
|
25114
|
+
args: [{
|
|
25115
|
+
selector: "ui-card-list-item",
|
|
25116
|
+
standalone: true,
|
|
25117
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25118
|
+
encapsulation: ViewEncapsulation.None,
|
|
25119
|
+
imports: [BadgeComponent, TooltipDirective],
|
|
25120
|
+
template: `
|
|
25121
|
+
<div class="cli-row">
|
|
25122
|
+
@if (iconPath(); as d) {
|
|
25123
|
+
<div class="cli-icon-circle" [class]="'cli-icon-circle cli-icon-circle--' + icon()" aria-hidden="true">
|
|
25124
|
+
<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>
|
|
25125
|
+
</div>
|
|
25126
|
+
} @else if (indicator() !== 'none') {
|
|
25127
|
+
@if (indicatorLabel(); as label) {
|
|
25128
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" [uiTooltip]="label" tabindex="0" role="img" [attr.aria-label]="label"></div>
|
|
25129
|
+
} @else {
|
|
25130
|
+
<div class="cli-dot" [class]="'cli-dot cli-dot--' + indicator()" aria-hidden="true"></div>
|
|
25131
|
+
}
|
|
25132
|
+
}
|
|
25133
|
+
|
|
25134
|
+
<div class="cli-body">
|
|
25135
|
+
<div class="cli-title-row">
|
|
25136
|
+
<span class="cli-title">{{ title() }}</span>
|
|
25137
|
+
@if (type()) { <ui-badge [label]="type()!" [variant]="typeVariant()" /> }
|
|
25138
|
+
@if (status() && statusVariant()) { <ui-badge [label]="status()!" [variant]="statusVariant()!" /> }
|
|
25139
|
+
</div>
|
|
25140
|
+
<div class="cli-desc-row">
|
|
25141
|
+
@if (description()) { <span class="cli-description">{{ description() }}</span> }
|
|
25142
|
+
<ng-content select="[card-list-inline]" />
|
|
25143
|
+
</div>
|
|
25144
|
+
@if (date()) {
|
|
25145
|
+
<span class="cli-date">
|
|
25146
|
+
<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>
|
|
25147
|
+
{{ date() }}
|
|
25148
|
+
</span>
|
|
25149
|
+
}
|
|
25150
|
+
</div>
|
|
25151
|
+
|
|
25152
|
+
@if (editButton()) {
|
|
25153
|
+
<button class="cli-chip cli-chip--edit" type="button" [attr.aria-label]="editAriaLabel() || null" (click)="editClick.emit()">
|
|
25154
|
+
<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>
|
|
25155
|
+
Edit
|
|
25156
|
+
</button>
|
|
25157
|
+
}
|
|
25158
|
+
@if (viewButton()) {
|
|
25159
|
+
<button class="cli-chip cli-chip--view" type="button" [attr.aria-label]="viewAriaLabel() || null" (click)="viewClick.emit()">View</button>
|
|
25160
|
+
}
|
|
25161
|
+
<ng-content select="[card-list-action]" />
|
|
25162
|
+
<ng-content />
|
|
25163
|
+
</div>
|
|
25164
|
+
<ng-content select="[card-stats]" />
|
|
25165
|
+
<ng-content select="[card-detail]" />
|
|
25166
|
+
`,
|
|
25167
|
+
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"]
|
|
25168
|
+
}]
|
|
25169
|
+
}],
|
|
25170
|
+
propDecorators: {
|
|
25171
|
+
title: [{
|
|
25172
|
+
type: i0.Input,
|
|
25173
|
+
args: [{
|
|
25174
|
+
isSignal: true,
|
|
25175
|
+
alias: "title",
|
|
25176
|
+
required: false
|
|
25177
|
+
}]
|
|
25178
|
+
}],
|
|
25179
|
+
description: [{
|
|
25180
|
+
type: i0.Input,
|
|
25181
|
+
args: [{
|
|
25182
|
+
isSignal: true,
|
|
25183
|
+
alias: "description",
|
|
25184
|
+
required: false
|
|
25185
|
+
}]
|
|
25186
|
+
}],
|
|
25187
|
+
date: [{
|
|
25188
|
+
type: i0.Input,
|
|
25189
|
+
args: [{
|
|
25190
|
+
isSignal: true,
|
|
25191
|
+
alias: "date",
|
|
25192
|
+
required: false
|
|
25193
|
+
}]
|
|
25194
|
+
}],
|
|
25195
|
+
type: [{
|
|
25196
|
+
type: i0.Input,
|
|
25197
|
+
args: [{
|
|
25198
|
+
isSignal: true,
|
|
25199
|
+
alias: "type",
|
|
25200
|
+
required: false
|
|
25201
|
+
}]
|
|
25202
|
+
}],
|
|
25203
|
+
typeVariant: [{
|
|
25204
|
+
type: i0.Input,
|
|
25205
|
+
args: [{
|
|
25206
|
+
isSignal: true,
|
|
25207
|
+
alias: "typeVariant",
|
|
25208
|
+
required: false
|
|
25209
|
+
}]
|
|
25210
|
+
}],
|
|
25211
|
+
status: [{
|
|
25212
|
+
type: i0.Input,
|
|
25213
|
+
args: [{
|
|
25214
|
+
isSignal: true,
|
|
25215
|
+
alias: "status",
|
|
25216
|
+
required: false
|
|
25217
|
+
}]
|
|
25218
|
+
}],
|
|
25219
|
+
statusVariant: [{
|
|
25220
|
+
type: i0.Input,
|
|
25221
|
+
args: [{
|
|
25222
|
+
isSignal: true,
|
|
25223
|
+
alias: "statusVariant",
|
|
25224
|
+
required: false
|
|
25225
|
+
}]
|
|
25226
|
+
}],
|
|
25227
|
+
indicator: [{
|
|
25228
|
+
type: i0.Input,
|
|
25229
|
+
args: [{
|
|
25230
|
+
isSignal: true,
|
|
25231
|
+
alias: "indicator",
|
|
25232
|
+
required: false
|
|
25233
|
+
}]
|
|
25234
|
+
}],
|
|
25235
|
+
icon: [{
|
|
25236
|
+
type: i0.Input,
|
|
25237
|
+
args: [{
|
|
25238
|
+
isSignal: true,
|
|
25239
|
+
alias: "icon",
|
|
25240
|
+
required: false
|
|
25241
|
+
}]
|
|
25242
|
+
}],
|
|
25243
|
+
editButton: [{
|
|
25244
|
+
type: i0.Input,
|
|
25245
|
+
args: [{
|
|
25246
|
+
isSignal: true,
|
|
25247
|
+
alias: "editButton",
|
|
25248
|
+
required: false
|
|
25249
|
+
}]
|
|
25250
|
+
}],
|
|
25251
|
+
viewButton: [{
|
|
25252
|
+
type: i0.Input,
|
|
25253
|
+
args: [{
|
|
25254
|
+
isSignal: true,
|
|
25255
|
+
alias: "viewButton",
|
|
25256
|
+
required: false
|
|
25257
|
+
}]
|
|
25258
|
+
}],
|
|
25259
|
+
editAriaLabel: [{
|
|
25260
|
+
type: i0.Input,
|
|
25261
|
+
args: [{
|
|
25262
|
+
isSignal: true,
|
|
25263
|
+
alias: "editAriaLabel",
|
|
25264
|
+
required: false
|
|
25265
|
+
}]
|
|
25266
|
+
}],
|
|
25267
|
+
viewAriaLabel: [{
|
|
25268
|
+
type: i0.Input,
|
|
25269
|
+
args: [{
|
|
25270
|
+
isSignal: true,
|
|
25271
|
+
alias: "viewAriaLabel",
|
|
25272
|
+
required: false
|
|
25273
|
+
}]
|
|
25274
|
+
}],
|
|
25275
|
+
editClick: [{
|
|
25276
|
+
type: i0.Output,
|
|
25277
|
+
args: ["editClick"]
|
|
25278
|
+
}],
|
|
25279
|
+
viewClick: [{
|
|
25280
|
+
type: i0.Output,
|
|
25281
|
+
args: ["viewClick"]
|
|
25282
|
+
}]
|
|
25283
|
+
}
|
|
25284
|
+
});
|
|
25285
|
+
const ACTION_VERB = {
|
|
25286
|
+
load: "loading",
|
|
25287
|
+
save: "saving",
|
|
25288
|
+
create: "creating",
|
|
25289
|
+
update: "updating",
|
|
25290
|
+
delete: "deleting",
|
|
25291
|
+
send: "sending",
|
|
25292
|
+
export: "exporting",
|
|
25293
|
+
import: "importing",
|
|
25294
|
+
upload: "uploading",
|
|
25295
|
+
download: "downloading"
|
|
25296
|
+
};
|
|
25297
|
+
const ACTION_PERMISSION_VERB = {
|
|
25298
|
+
load: "access",
|
|
25299
|
+
save: "save",
|
|
25300
|
+
create: "create",
|
|
25301
|
+
update: "update",
|
|
25302
|
+
delete: "delete",
|
|
25303
|
+
send: "send",
|
|
25304
|
+
export: "export",
|
|
25305
|
+
import: "import",
|
|
25306
|
+
upload: "upload",
|
|
25307
|
+
download: "download"
|
|
25308
|
+
};
|
|
25309
|
+
const REQUEST_METHOD = "__forgerouteRequestMethod";
|
|
25310
|
+
const errorContextInterceptor = (req, next) => next(req).pipe(catchError$1((err) => {
|
|
25311
|
+
if (err instanceof HttpErrorResponse && !(REQUEST_METHOD in err)) Object.defineProperty(err, REQUEST_METHOD, {
|
|
25312
|
+
value: req.method.toUpperCase(),
|
|
25313
|
+
enumerable: false
|
|
25314
|
+
});
|
|
25315
|
+
return throwError(() => err);
|
|
25316
|
+
}));
|
|
25317
|
+
function actionFromMethod(error) {
|
|
25318
|
+
switch (error[REQUEST_METHOD]) {
|
|
25319
|
+
case "POST":
|
|
25320
|
+
case "PUT":
|
|
25321
|
+
case "PATCH": return "save";
|
|
25322
|
+
case "DELETE": return "delete";
|
|
25323
|
+
default: return "load";
|
|
25324
|
+
}
|
|
25325
|
+
}
|
|
25326
|
+
function withoutLeadingArticle(ctx) {
|
|
25327
|
+
return ctx.replace(/^(?:the|an?)\s+/i, "") || ctx;
|
|
25328
|
+
}
|
|
25329
|
+
function getErrorMessage(error, fallbackContext, action) {
|
|
25330
|
+
const ctx = fallbackContext?.trim() || "data";
|
|
25331
|
+
const act = action ?? (error instanceof HttpErrorResponse ? actionFromMethod(error) : "load");
|
|
25332
|
+
const failed = `There was an error ${ACTION_VERB[act]} ${ctx}.`;
|
|
25333
|
+
if (error instanceof HttpErrorResponse) {
|
|
25334
|
+
if (error.error?.message) return error.error.message;
|
|
25335
|
+
if (typeof error.error === "string" && error.error.length < 200) return error.error;
|
|
25336
|
+
switch (error.status) {
|
|
25337
|
+
case 0: return `${failed} Please check your connection and try again.`;
|
|
25338
|
+
case 401: return "Your session has expired. Please log in again.";
|
|
25339
|
+
case 403: return `You don't have permission to ${ACTION_PERMISSION_VERB[act]} ${ctx}.`;
|
|
25340
|
+
case 404: return `The ${withoutLeadingArticle(ctx)} you're looking for could not be found.`;
|
|
25341
|
+
case 408: return `${failed} The request timed out — please try again.`;
|
|
25342
|
+
case 422: return "The data you submitted is invalid. Please check your input and try again.";
|
|
25343
|
+
case 429: return `${failed} Too many requests — please wait a moment and try again.`;
|
|
25344
|
+
case 502:
|
|
25345
|
+
case 503:
|
|
25346
|
+
case 504: return `${failed} Please try again in a few minutes.`;
|
|
25347
|
+
default: return `${failed} Please try again.`;
|
|
25348
|
+
}
|
|
25349
|
+
}
|
|
25350
|
+
if (error instanceof Error) return error.message;
|
|
25351
|
+
if (typeof error === "string") return error;
|
|
25352
|
+
return `${failed} Please try again.`;
|
|
25353
|
+
}
|
|
25354
|
+
const NOTES_PAGE_SIZE = 5;
|
|
25355
|
+
var NotesComponent = class NotesComponent {
|
|
25356
|
+
initials(name) {
|
|
25357
|
+
const parts = (name || "You").trim().split(/\s+/).filter(Boolean);
|
|
25358
|
+
return ((parts[0]?.[0] ?? "") + (parts.length > 1 ? parts[parts.length - 1][0] : "")).toUpperCase();
|
|
25359
|
+
}
|
|
25360
|
+
get listUrl() {
|
|
25361
|
+
return `${this.apiBase}/notes/${this.resourceType()}/${this.resourceId()}`;
|
|
25362
|
+
}
|
|
25363
|
+
constructor() {
|
|
25364
|
+
this.resourceType = input("", ...ngDevMode ? [{ debugName: "resourceType" }] : /* istanbul ignore next */ []);
|
|
25365
|
+
this.resourceId = input("", ...ngDevMode ? [{ debugName: "resourceId" }] : /* istanbul ignore next */ []);
|
|
25366
|
+
this.readOnly = input(false, ...ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []);
|
|
25367
|
+
this.totalChange = output();
|
|
25368
|
+
this.http = inject(HttpClient);
|
|
25369
|
+
this.toast = inject(ToastService);
|
|
25370
|
+
this.destroyRef = inject(DestroyRef);
|
|
25371
|
+
this.apiBase = inject(FORGEROUTE_CONFIG, { optional: true })?.baseUrl ?? "/api";
|
|
25372
|
+
this.pageSize = NOTES_PAGE_SIZE;
|
|
25373
|
+
this.notes = signal([], ...ngDevMode ? [{ debugName: "notes" }] : /* istanbul ignore next */ []);
|
|
25374
|
+
this.loading = signal(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
25375
|
+
this.saving = signal(false, ...ngDevMode ? [{ debugName: "saving" }] : /* istanbul ignore next */ []);
|
|
25376
|
+
this.page = signal(0, ...ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []);
|
|
25377
|
+
this.totalElements = signal(0, ...ngDevMode ? [{ debugName: "totalElements" }] : /* istanbul ignore next */ []);
|
|
25378
|
+
this.editingId = signal(null, ...ngDevMode ? [{ debugName: "editingId" }] : /* istanbul ignore next */ []);
|
|
25379
|
+
this.deletingId = signal(null, ...ngDevMode ? [{ debugName: "deletingId" }] : /* istanbul ignore next */ []);
|
|
25380
|
+
this.newBody = "";
|
|
25381
|
+
this.editBody = "";
|
|
25382
|
+
effect(() => {
|
|
25383
|
+
const id = this.resourceId();
|
|
25384
|
+
const type = this.resourceType();
|
|
25385
|
+
if (id && type) untracked(() => this.loadPage(0));
|
|
25386
|
+
});
|
|
25387
|
+
}
|
|
25388
|
+
loadPage(p) {
|
|
25389
|
+
if (!this.resourceType() || !this.resourceId()) return;
|
|
25390
|
+
this.loading.set(true);
|
|
25391
|
+
this.http.get(`${this.listUrl}?page=${p}&size=${this.pageSize}`).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25392
|
+
next: (res) => {
|
|
25393
|
+
this.notes.set(res.content);
|
|
25394
|
+
this.page.set(res.page);
|
|
25395
|
+
this.totalElements.set(res.totalElements);
|
|
25396
|
+
this.loading.set(false);
|
|
25397
|
+
this.totalChange.emit(res.totalElements);
|
|
25398
|
+
},
|
|
25399
|
+
error: (err) => {
|
|
25400
|
+
this.loading.set(false);
|
|
25401
|
+
this.toast.error(getErrorMessage(err, "notes"));
|
|
25402
|
+
}
|
|
25403
|
+
});
|
|
25404
|
+
}
|
|
25405
|
+
addNote() {
|
|
25406
|
+
if (this.readOnly() || !this.newBody.trim() || this.saving()) return;
|
|
25407
|
+
this.saving.set(true);
|
|
25408
|
+
this.http.post(this.listUrl, { body: this.newBody.trim() }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25409
|
+
next: () => {
|
|
25410
|
+
this.newBody = "";
|
|
25411
|
+
this.saving.set(false);
|
|
25412
|
+
this.loadPage(0);
|
|
25413
|
+
},
|
|
25414
|
+
error: (err) => {
|
|
25415
|
+
this.saving.set(false);
|
|
25416
|
+
this.toast.error(getErrorMessage(err, "note", "create"));
|
|
25417
|
+
}
|
|
25418
|
+
});
|
|
25419
|
+
}
|
|
25420
|
+
startEdit(note) {
|
|
25421
|
+
if (this.readOnly()) return;
|
|
25422
|
+
this.editingId.set(note.id);
|
|
25423
|
+
this.editBody = note.body;
|
|
25424
|
+
}
|
|
25425
|
+
cancelEdit() {
|
|
25426
|
+
this.editingId.set(null);
|
|
25427
|
+
this.editBody = "";
|
|
25428
|
+
}
|
|
25429
|
+
saveEdit(noteId) {
|
|
25430
|
+
if (this.readOnly() || !this.editBody.trim() || this.saving()) return;
|
|
25431
|
+
this.saving.set(true);
|
|
25432
|
+
this.http.put(`${this.apiBase}/notes/${noteId}`, { body: this.editBody.trim() }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25433
|
+
next: (updated) => {
|
|
25434
|
+
this.notes.update((arr) => arr.map((n) => n.id === noteId ? updated : n));
|
|
25435
|
+
this.editingId.set(null);
|
|
25436
|
+
this.saving.set(false);
|
|
25437
|
+
},
|
|
25438
|
+
error: (err) => {
|
|
25439
|
+
this.saving.set(false);
|
|
25440
|
+
this.toast.error(getErrorMessage(err, "note", "update"));
|
|
25441
|
+
}
|
|
25442
|
+
});
|
|
25443
|
+
}
|
|
25444
|
+
confirmDelete(id) {
|
|
25445
|
+
if (this.readOnly()) return;
|
|
25446
|
+
this.deletingId.set(id);
|
|
25447
|
+
}
|
|
25448
|
+
deleteNote() {
|
|
25449
|
+
const id = this.deletingId();
|
|
25450
|
+
if (this.readOnly() || !id || this.saving()) return;
|
|
25451
|
+
this.saving.set(true);
|
|
25452
|
+
this.http.delete(`${this.apiBase}/notes/${id}`).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
25453
|
+
next: () => {
|
|
25454
|
+
this.deletingId.set(null);
|
|
25455
|
+
this.saving.set(false);
|
|
25456
|
+
this.loadPage(this.notes().length === 1 && this.page() > 0 ? this.page() - 1 : this.page());
|
|
25457
|
+
},
|
|
25458
|
+
error: (err) => {
|
|
25459
|
+
this.deletingId.set(null);
|
|
25460
|
+
this.saving.set(false);
|
|
25461
|
+
this.toast.error(getErrorMessage(err, "note", "delete"));
|
|
25462
|
+
}
|
|
25463
|
+
});
|
|
25464
|
+
}
|
|
25465
|
+
static {
|
|
25466
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
25467
|
+
minVersion: "12.0.0",
|
|
25468
|
+
version: "22.2.2",
|
|
25469
|
+
ngImport: i0,
|
|
25470
|
+
type: NotesComponent,
|
|
25471
|
+
deps: [],
|
|
25472
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
25473
|
+
});
|
|
25474
|
+
}
|
|
25475
|
+
static {
|
|
25476
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
25477
|
+
minVersion: "17.0.0",
|
|
25478
|
+
version: "22.2.2",
|
|
25479
|
+
type: NotesComponent,
|
|
25480
|
+
isStandalone: true,
|
|
25481
|
+
selector: "ui-notes",
|
|
25482
|
+
inputs: {
|
|
25483
|
+
resourceType: {
|
|
25484
|
+
classPropertyName: "resourceType",
|
|
25485
|
+
publicName: "resourceType",
|
|
25486
|
+
isSignal: true,
|
|
25487
|
+
isRequired: false,
|
|
25488
|
+
transformFunction: null
|
|
25489
|
+
},
|
|
25490
|
+
resourceId: {
|
|
25491
|
+
classPropertyName: "resourceId",
|
|
25492
|
+
publicName: "resourceId",
|
|
25493
|
+
isSignal: true,
|
|
25494
|
+
isRequired: false,
|
|
25495
|
+
transformFunction: null
|
|
25496
|
+
},
|
|
25497
|
+
readOnly: {
|
|
25498
|
+
classPropertyName: "readOnly",
|
|
25499
|
+
publicName: "readOnly",
|
|
25500
|
+
isSignal: true,
|
|
25501
|
+
isRequired: false,
|
|
25502
|
+
transformFunction: null
|
|
25503
|
+
}
|
|
25504
|
+
},
|
|
25505
|
+
outputs: { totalChange: "totalChange" },
|
|
25506
|
+
ngImport: i0,
|
|
25507
|
+
template: `
|
|
25508
|
+
@if (!readOnly()) {
|
|
25509
|
+
<div class="note-add">
|
|
25510
|
+
<ui-textarea-input ariaLabel="Add a note" placeholder="Add a note..." [rows]="3" [disabled]="saving()" [(ngModel)]="newBody"
|
|
25511
|
+
(keydown.meta.enter)="addNote()" (keydown.control.enter)="addNote()" />
|
|
25512
|
+
<div class="note-add-footer">
|
|
25513
|
+
<ui-button variant="primary" size="sm" data-testid="note-add-btn" [loading]="saving()" [disabled]="!newBody.trim()" (click)="addNote()">Add Note</ui-button>
|
|
25514
|
+
</div>
|
|
25515
|
+
</div>
|
|
25516
|
+
}
|
|
25517
|
+
|
|
25518
|
+
@if (loading() && notes().length === 0) {
|
|
25519
|
+
<div class="note-loading" role="status">Loading notes...</div>
|
|
25520
|
+
} @else if (notes().length === 0) {
|
|
25521
|
+
<ui-empty-state iconType="person" title="No notes yet" [message]="readOnly() ? 'No notes have been added.' : 'Add your first note above.'" />
|
|
25522
|
+
} @else {
|
|
25523
|
+
<ul class="note-list" aria-label="Notes">
|
|
25524
|
+
@for (note of notes(); track note.id) {
|
|
25525
|
+
<li class="note-item" [class.editing]="editingId() === note.id">
|
|
25526
|
+
<ui-avatar class="note-avatar" [initials]="initials(note.createdByName)" [name]="note.createdByName || 'You'" [size]="32" />
|
|
25527
|
+
<div class="note-main">
|
|
25528
|
+
<div class="note-head">
|
|
25529
|
+
<span class="note-author">{{ note.createdByName || 'You' }}</span>
|
|
25530
|
+
<span class="note-dot" aria-hidden="true">·</span>
|
|
25531
|
+
<time class="note-date" [attr.datetime]="note.createdAt">{{ note.createdAt | date:'MMM d, yyyy h:mm a' }}</time>
|
|
25532
|
+
@if (note.updatedAt !== note.createdAt) {
|
|
25533
|
+
<span class="note-edited">edited</span>
|
|
25534
|
+
}
|
|
25535
|
+
@if (!readOnly() && editingId() !== note.id) {
|
|
25536
|
+
<div class="note-actions">
|
|
25537
|
+
<ui-button variant="icon" size="xs" ariaLabel="Edit note" uiTooltip="Edit note" (click)="startEdit(note)">
|
|
25538
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
|
|
25539
|
+
</ui-button>
|
|
25540
|
+
<ui-button variant="icon-danger" size="xs" ariaLabel="Delete note" uiTooltip="Delete note" (click)="confirmDelete(note.id)">
|
|
25541
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="3 6 5 6 21 6"/><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/></svg>
|
|
25542
|
+
</ui-button>
|
|
25543
|
+
</div>
|
|
25544
|
+
}
|
|
25545
|
+
</div>
|
|
25546
|
+
@if (editingId() === note.id) {
|
|
25547
|
+
<ui-textarea-input ariaLabel="Edit note" [rows]="3" [disabled]="saving()" [(ngModel)]="editBody" />
|
|
25548
|
+
<div class="note-item-footer">
|
|
25549
|
+
<ui-button variant="secondary" size="sm" (click)="cancelEdit()">Cancel</ui-button>
|
|
25550
|
+
<ui-button variant="primary" size="sm" [loading]="saving()" [disabled]="!editBody.trim()" (click)="saveEdit(note.id)">Save</ui-button>
|
|
25551
|
+
</div>
|
|
25552
|
+
} @else {
|
|
25553
|
+
<p class="note-body">{{ note.body }}</p>
|
|
25554
|
+
}
|
|
25555
|
+
</div>
|
|
25556
|
+
</li>
|
|
25557
|
+
}
|
|
25558
|
+
</ul>
|
|
25559
|
+
<ui-pagination [page]="page() + 1" [pageSize]="pageSize" [totalItems]="totalElements()" (pageChange)="loadPage($event - 1)" />
|
|
25560
|
+
}
|
|
25561
|
+
|
|
25562
|
+
<ui-modal [open]="!!deletingId()" title="Delete Note" maxWidth="420px" dialogTestId="delete-note-modal" (close)="deletingId.set(null)">
|
|
25563
|
+
<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>
|
|
25564
|
+
<ui-button modal-footer-left variant="secondary" size="sm" data-testid="delete-note-cancel" (click)="deletingId.set(null)">Cancel</ui-button>
|
|
25565
|
+
<ui-button modal-footer-right variant="danger" size="sm" data-testid="delete-note-confirm" [loading]="saving()" (click)="deleteNote()">Delete Note</ui-button>
|
|
25566
|
+
</ui-modal>
|
|
25567
|
+
`,
|
|
25568
|
+
isInline: true,
|
|
25569
|
+
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"],
|
|
25570
|
+
dependencies: [
|
|
25571
|
+
{
|
|
25572
|
+
kind: "ngmodule",
|
|
25573
|
+
type: FormsModule
|
|
25574
|
+
},
|
|
25575
|
+
{
|
|
25576
|
+
kind: "directive",
|
|
25577
|
+
type: i1.NgControlStatus,
|
|
25578
|
+
selector: "[formControlName],[ngModel],[formControl]"
|
|
25579
|
+
},
|
|
25580
|
+
{
|
|
25581
|
+
kind: "directive",
|
|
25582
|
+
type: i1.NgModel,
|
|
25583
|
+
selector: "[ngModel]:not([formControlName]):not([formControl])",
|
|
25584
|
+
inputs: [
|
|
25585
|
+
"name",
|
|
25586
|
+
"disabled",
|
|
25587
|
+
"ngModel",
|
|
25588
|
+
"ngModelOptions"
|
|
25589
|
+
],
|
|
25590
|
+
outputs: ["ngModelChange"],
|
|
25591
|
+
exportAs: ["ngModel"]
|
|
25592
|
+
},
|
|
25593
|
+
{
|
|
25594
|
+
kind: "component",
|
|
25595
|
+
type: ButtonComponent,
|
|
25596
|
+
selector: "ui-button",
|
|
25597
|
+
inputs: [
|
|
25598
|
+
"variant",
|
|
25599
|
+
"routerLink",
|
|
25600
|
+
"queryParams",
|
|
25601
|
+
"fragment",
|
|
25602
|
+
"state",
|
|
25603
|
+
"href",
|
|
25604
|
+
"target",
|
|
25605
|
+
"rel",
|
|
25606
|
+
"shortLabel",
|
|
25607
|
+
"shortBelow",
|
|
25608
|
+
"color",
|
|
25609
|
+
"active",
|
|
25610
|
+
"size",
|
|
25611
|
+
"type",
|
|
25612
|
+
"disabled",
|
|
25613
|
+
"loading",
|
|
25614
|
+
"fullWidth",
|
|
25615
|
+
"ariaLabel",
|
|
25616
|
+
"ariaExpanded",
|
|
25617
|
+
"ariaPressed",
|
|
25618
|
+
"ariaDescribedBy",
|
|
25619
|
+
"modal-footer-left",
|
|
25620
|
+
"modal-footer-right"
|
|
25621
|
+
]
|
|
25622
|
+
},
|
|
25623
|
+
{
|
|
25624
|
+
kind: "component",
|
|
25625
|
+
type: ModalComponent,
|
|
25626
|
+
selector: "ui-modal",
|
|
25627
|
+
inputs: [
|
|
25628
|
+
"open",
|
|
25629
|
+
"title",
|
|
25630
|
+
"description",
|
|
25631
|
+
"maxWidth",
|
|
25632
|
+
"bodyOverflow",
|
|
25633
|
+
"dialogTestId",
|
|
25634
|
+
"hideClose",
|
|
25635
|
+
"closable",
|
|
25636
|
+
"returnFocusTo"
|
|
25637
|
+
],
|
|
25638
|
+
outputs: ["close"]
|
|
25639
|
+
},
|
|
25640
|
+
{
|
|
25641
|
+
kind: "component",
|
|
25642
|
+
type: EmptyStateComponent,
|
|
25643
|
+
selector: "ui-empty-state",
|
|
25644
|
+
inputs: [
|
|
25645
|
+
"message",
|
|
25646
|
+
"title",
|
|
25647
|
+
"iconType"
|
|
25648
|
+
]
|
|
25649
|
+
},
|
|
25650
|
+
{
|
|
25651
|
+
kind: "component",
|
|
25652
|
+
type: PaginationComponent,
|
|
25653
|
+
selector: "ui-pagination",
|
|
25654
|
+
inputs: [
|
|
25655
|
+
"page",
|
|
25656
|
+
"pageSize",
|
|
25657
|
+
"totalItems",
|
|
25658
|
+
"detached",
|
|
25659
|
+
"embedded"
|
|
25660
|
+
],
|
|
25661
|
+
outputs: ["pageChange"]
|
|
25662
|
+
},
|
|
25663
|
+
{
|
|
25664
|
+
kind: "component",
|
|
25665
|
+
type: TextareaInputComponent,
|
|
25666
|
+
selector: "ui-textarea-input",
|
|
25667
|
+
inputs: [
|
|
25668
|
+
"label",
|
|
25669
|
+
"ariaLabel",
|
|
25670
|
+
"placeholder",
|
|
25671
|
+
"rows",
|
|
25672
|
+
"maxlength",
|
|
25673
|
+
"required",
|
|
25674
|
+
"readonly",
|
|
25675
|
+
"hint",
|
|
25676
|
+
"hintAsDescription",
|
|
25677
|
+
"error",
|
|
25678
|
+
"monospace",
|
|
25679
|
+
"showErrors",
|
|
25680
|
+
"disabled"
|
|
25681
|
+
],
|
|
25682
|
+
outputs: ["invalidChange"]
|
|
25683
|
+
},
|
|
25684
|
+
{
|
|
25685
|
+
kind: "directive",
|
|
25686
|
+
type: TooltipDirective,
|
|
25687
|
+
selector: "[uiTooltip]",
|
|
25688
|
+
inputs: ["uiTooltip", "tooltipPosition"]
|
|
25689
|
+
},
|
|
25690
|
+
{
|
|
25691
|
+
kind: "component",
|
|
25692
|
+
type: AvatarComponent,
|
|
25693
|
+
selector: "ui-avatar",
|
|
25694
|
+
inputs: [
|
|
25695
|
+
"initials",
|
|
25696
|
+
"name",
|
|
25697
|
+
"size"
|
|
25698
|
+
]
|
|
25699
|
+
},
|
|
25700
|
+
{
|
|
25701
|
+
kind: "pipe",
|
|
25702
|
+
type: DatePipe,
|
|
25703
|
+
name: "date"
|
|
25704
|
+
}
|
|
25705
|
+
],
|
|
25706
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
25707
|
+
});
|
|
25708
|
+
}
|
|
25709
|
+
};
|
|
25710
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
25711
|
+
minVersion: "12.0.0",
|
|
25712
|
+
version: "22.2.2",
|
|
25713
|
+
ngImport: i0,
|
|
25714
|
+
type: NotesComponent,
|
|
25715
|
+
decorators: [{
|
|
25716
|
+
type: Component,
|
|
25717
|
+
args: [{
|
|
25718
|
+
selector: "ui-notes",
|
|
25719
|
+
standalone: true,
|
|
25720
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25721
|
+
imports: [
|
|
25722
|
+
DatePipe,
|
|
25723
|
+
FormsModule,
|
|
25724
|
+
ButtonComponent,
|
|
25725
|
+
ModalComponent,
|
|
25726
|
+
EmptyStateComponent,
|
|
25727
|
+
PaginationComponent,
|
|
25728
|
+
TextareaInputComponent,
|
|
25729
|
+
TooltipDirective,
|
|
25730
|
+
AvatarComponent
|
|
25731
|
+
],
|
|
25732
|
+
template: `
|
|
25733
|
+
@if (!readOnly()) {
|
|
25734
|
+
<div class="note-add">
|
|
25735
|
+
<ui-textarea-input ariaLabel="Add a note" placeholder="Add a note..." [rows]="3" [disabled]="saving()" [(ngModel)]="newBody"
|
|
25736
|
+
(keydown.meta.enter)="addNote()" (keydown.control.enter)="addNote()" />
|
|
25737
|
+
<div class="note-add-footer">
|
|
25738
|
+
<ui-button variant="primary" size="sm" data-testid="note-add-btn" [loading]="saving()" [disabled]="!newBody.trim()" (click)="addNote()">Add Note</ui-button>
|
|
25739
|
+
</div>
|
|
25740
|
+
</div>
|
|
25741
|
+
}
|
|
25742
|
+
|
|
25743
|
+
@if (loading() && notes().length === 0) {
|
|
25744
|
+
<div class="note-loading" role="status">Loading notes...</div>
|
|
25745
|
+
} @else if (notes().length === 0) {
|
|
25746
|
+
<ui-empty-state iconType="person" title="No notes yet" [message]="readOnly() ? 'No notes have been added.' : 'Add your first note above.'" />
|
|
25747
|
+
} @else {
|
|
25748
|
+
<ul class="note-list" aria-label="Notes">
|
|
25749
|
+
@for (note of notes(); track note.id) {
|
|
25750
|
+
<li class="note-item" [class.editing]="editingId() === note.id">
|
|
25751
|
+
<ui-avatar class="note-avatar" [initials]="initials(note.createdByName)" [name]="note.createdByName || 'You'" [size]="32" />
|
|
25752
|
+
<div class="note-main">
|
|
25753
|
+
<div class="note-head">
|
|
25754
|
+
<span class="note-author">{{ note.createdByName || 'You' }}</span>
|
|
25755
|
+
<span class="note-dot" aria-hidden="true">·</span>
|
|
25756
|
+
<time class="note-date" [attr.datetime]="note.createdAt">{{ note.createdAt | date:'MMM d, yyyy h:mm a' }}</time>
|
|
25757
|
+
@if (note.updatedAt !== note.createdAt) {
|
|
25758
|
+
<span class="note-edited">edited</span>
|
|
25759
|
+
}
|
|
25760
|
+
@if (!readOnly() && editingId() !== note.id) {
|
|
25761
|
+
<div class="note-actions">
|
|
25762
|
+
<ui-button variant="icon" size="xs" ariaLabel="Edit note" uiTooltip="Edit note" (click)="startEdit(note)">
|
|
25763
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
|
|
25764
|
+
</ui-button>
|
|
25765
|
+
<ui-button variant="icon-danger" size="xs" ariaLabel="Delete note" uiTooltip="Delete note" (click)="confirmDelete(note.id)">
|
|
25766
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><polyline points="3 6 5 6 21 6"/><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/></svg>
|
|
25767
|
+
</ui-button>
|
|
25768
|
+
</div>
|
|
25769
|
+
}
|
|
25770
|
+
</div>
|
|
25771
|
+
@if (editingId() === note.id) {
|
|
25772
|
+
<ui-textarea-input ariaLabel="Edit note" [rows]="3" [disabled]="saving()" [(ngModel)]="editBody" />
|
|
25773
|
+
<div class="note-item-footer">
|
|
25774
|
+
<ui-button variant="secondary" size="sm" (click)="cancelEdit()">Cancel</ui-button>
|
|
25775
|
+
<ui-button variant="primary" size="sm" [loading]="saving()" [disabled]="!editBody.trim()" (click)="saveEdit(note.id)">Save</ui-button>
|
|
25776
|
+
</div>
|
|
25777
|
+
} @else {
|
|
25778
|
+
<p class="note-body">{{ note.body }}</p>
|
|
25779
|
+
}
|
|
25780
|
+
</div>
|
|
25781
|
+
</li>
|
|
25782
|
+
}
|
|
25783
|
+
</ul>
|
|
25784
|
+
<ui-pagination [page]="page() + 1" [pageSize]="pageSize" [totalItems]="totalElements()" (pageChange)="loadPage($event - 1)" />
|
|
25785
|
+
}
|
|
25786
|
+
|
|
25787
|
+
<ui-modal [open]="!!deletingId()" title="Delete Note" maxWidth="420px" dialogTestId="delete-note-modal" (close)="deletingId.set(null)">
|
|
25788
|
+
<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>
|
|
25789
|
+
<ui-button modal-footer-left variant="secondary" size="sm" data-testid="delete-note-cancel" (click)="deletingId.set(null)">Cancel</ui-button>
|
|
25790
|
+
<ui-button modal-footer-right variant="danger" size="sm" data-testid="delete-note-confirm" [loading]="saving()" (click)="deleteNote()">Delete Note</ui-button>
|
|
25791
|
+
</ui-modal>
|
|
25792
|
+
`,
|
|
25793
|
+
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"]
|
|
25794
|
+
}]
|
|
25795
|
+
}],
|
|
25796
|
+
ctorParameters: () => [],
|
|
25797
|
+
propDecorators: {
|
|
25798
|
+
resourceType: [{
|
|
25799
|
+
type: i0.Input,
|
|
25800
|
+
args: [{
|
|
25801
|
+
isSignal: true,
|
|
25802
|
+
alias: "resourceType",
|
|
25803
|
+
required: false
|
|
25804
|
+
}]
|
|
25805
|
+
}],
|
|
25806
|
+
resourceId: [{
|
|
25807
|
+
type: i0.Input,
|
|
25808
|
+
args: [{
|
|
25809
|
+
isSignal: true,
|
|
25810
|
+
alias: "resourceId",
|
|
25811
|
+
required: false
|
|
25812
|
+
}]
|
|
25813
|
+
}],
|
|
25814
|
+
readOnly: [{
|
|
25815
|
+
type: i0.Input,
|
|
25816
|
+
args: [{
|
|
25817
|
+
isSignal: true,
|
|
25818
|
+
alias: "readOnly",
|
|
25819
|
+
required: false
|
|
25820
|
+
}]
|
|
25821
|
+
}],
|
|
25822
|
+
totalChange: [{
|
|
25823
|
+
type: i0.Output,
|
|
25824
|
+
args: ["totalChange"]
|
|
25825
|
+
}]
|
|
25826
|
+
}
|
|
25827
|
+
});
|
|
24799
25828
|
function provideForgerouteToast(options = {}) {
|
|
24800
25829
|
return makeEnvironmentProviders([provideEnvironmentInitializer(() => {
|
|
24801
25830
|
if (options.dismissible) inject(ToastService).dismissible.set(true);
|
|
@@ -25346,7 +26375,7 @@ var ListComponent = class ListComponent {
|
|
|
25346
26375
|
}
|
|
25347
26376
|
`,
|
|
25348
26377
|
isInline: true,
|
|
25349
|
-
styles: ["ui-list{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav>.ul-row{padding-inline-end:
|
|
26378
|
+
styles: ["ui-list{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav:hover:has(>.ul-row>.ul-content>ui-list-item.li-bordered){background:transparent}.ul-item--nav>.ul-row{padding-inline-end:8px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(2px)}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .15s ease,transform .15s ease}@media(prefers-reduced-motion:reduce){.ul-chevron{transition:none;transform:none!important}}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}ui-list .ul-item--draggable img,ui-list .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"],
|
|
25350
26379
|
dependencies: [{
|
|
25351
26380
|
kind: "directive",
|
|
25352
26381
|
type: NgTemplateOutlet,
|
|
@@ -25474,7 +26503,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
25474
26503
|
<div class="ul-sr" role="status" aria-live="polite" aria-atomic="true">{{ announcement() }}</div>
|
|
25475
26504
|
}
|
|
25476
26505
|
`,
|
|
25477
|
-
styles: ["ui-list{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav>.ul-row{padding-inline-end:
|
|
26506
|
+
styles: ["ui-list{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav:hover:has(>.ul-row>.ul-content>ui-list-item.li-bordered){background:transparent}.ul-item--nav>.ul-row{padding-inline-end:8px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(2px)}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .15s ease,transform .15s ease}@media(prefers-reduced-motion:reduce){.ul-chevron{transition:none;transform:none!important}}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}ui-list .ul-item--draggable img,ui-list .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"]
|
|
25478
26507
|
}]
|
|
25479
26508
|
}],
|
|
25480
26509
|
propDecorators: {
|
|
@@ -26942,11 +27971,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26942
27971
|
<span [class.pil-muted]="item.muted" [class.pil-danger]="item.danger" [class.pil-multiline]="item.multiline">{{ item.value || '—' }}</span>
|
|
26943
27972
|
}
|
|
26944
27973
|
@if (item.editAction) {
|
|
26945
|
-
<ui-
|
|
26946
|
-
[ariaLabel]="item.editTooltip ?? 'Edit'" [attr.title]="item.editTooltip ?? 'Edit'"
|
|
26947
|
-
(click)="item.editAction!()">
|
|
26948
|
-
<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>
|
|
26949
|
-
</ui-button>
|
|
27974
|
+
<ui-icon class="pil-edit-btn" name="edit" [size]="14" [tooltip]="item.editTooltip ?? 'Edit'" (iconClick)="item.editAction!()" />
|
|
26950
27975
|
}
|
|
26951
27976
|
</span>
|
|
26952
27977
|
</div>
|
|
@@ -26995,33 +28020,19 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
26995
28020
|
},
|
|
26996
28021
|
{
|
|
26997
28022
|
kind: "component",
|
|
26998
|
-
type:
|
|
26999
|
-
selector: "ui-
|
|
28023
|
+
type: IconComponent,
|
|
28024
|
+
selector: "ui-icon",
|
|
27000
28025
|
inputs: [
|
|
27001
|
-
"
|
|
27002
|
-
"
|
|
27003
|
-
"
|
|
27004
|
-
"fragment",
|
|
27005
|
-
"state",
|
|
27006
|
-
"href",
|
|
27007
|
-
"target",
|
|
27008
|
-
"rel",
|
|
27009
|
-
"shortLabel",
|
|
27010
|
-
"shortBelow",
|
|
27011
|
-
"color",
|
|
27012
|
-
"active",
|
|
28026
|
+
"name",
|
|
28027
|
+
"tooltip",
|
|
28028
|
+
"ariaLabel",
|
|
27013
28029
|
"size",
|
|
27014
|
-
"
|
|
28030
|
+
"variant",
|
|
27015
28031
|
"disabled",
|
|
27016
28032
|
"loading",
|
|
27017
|
-
"
|
|
27018
|
-
|
|
27019
|
-
|
|
27020
|
-
"ariaPressed",
|
|
27021
|
-
"ariaDescribedBy",
|
|
27022
|
-
"modal-footer-left",
|
|
27023
|
-
"modal-footer-right"
|
|
27024
|
-
]
|
|
28033
|
+
"interactive"
|
|
28034
|
+
],
|
|
28035
|
+
outputs: ["iconClick"]
|
|
27025
28036
|
}
|
|
27026
28037
|
],
|
|
27027
28038
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
@@ -27043,7 +28054,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27043
28054
|
BadgeComponent,
|
|
27044
28055
|
RouterLink,
|
|
27045
28056
|
EmptyStateComponent,
|
|
27046
|
-
|
|
28057
|
+
IconComponent
|
|
27047
28058
|
],
|
|
27048
28059
|
template: `
|
|
27049
28060
|
@for (section of displaySections(); track section.title ?? $index) {
|
|
@@ -27101,11 +28112,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27101
28112
|
<span [class.pil-muted]="item.muted" [class.pil-danger]="item.danger" [class.pil-multiline]="item.multiline">{{ item.value || '—' }}</span>
|
|
27102
28113
|
}
|
|
27103
28114
|
@if (item.editAction) {
|
|
27104
|
-
<ui-
|
|
27105
|
-
[ariaLabel]="item.editTooltip ?? 'Edit'" [attr.title]="item.editTooltip ?? 'Edit'"
|
|
27106
|
-
(click)="item.editAction!()">
|
|
27107
|
-
<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>
|
|
27108
|
-
</ui-button>
|
|
28115
|
+
<ui-icon class="pil-edit-btn" name="edit" [size]="14" [tooltip]="item.editTooltip ?? 'Edit'" (iconClick)="item.editAction!()" />
|
|
27109
28116
|
}
|
|
27110
28117
|
</span>
|
|
27111
28118
|
</div>
|
|
@@ -27271,75 +28278,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27271
28278
|
}]
|
|
27272
28279
|
}
|
|
27273
28280
|
});
|
|
27274
|
-
const ACTION_VERB = {
|
|
27275
|
-
load: "loading",
|
|
27276
|
-
save: "saving",
|
|
27277
|
-
create: "creating",
|
|
27278
|
-
update: "updating",
|
|
27279
|
-
delete: "deleting",
|
|
27280
|
-
send: "sending",
|
|
27281
|
-
export: "exporting",
|
|
27282
|
-
import: "importing",
|
|
27283
|
-
upload: "uploading",
|
|
27284
|
-
download: "downloading"
|
|
27285
|
-
};
|
|
27286
|
-
const ACTION_PERMISSION_VERB = {
|
|
27287
|
-
load: "access",
|
|
27288
|
-
save: "save",
|
|
27289
|
-
create: "create",
|
|
27290
|
-
update: "update",
|
|
27291
|
-
delete: "delete",
|
|
27292
|
-
send: "send",
|
|
27293
|
-
export: "export",
|
|
27294
|
-
import: "import",
|
|
27295
|
-
upload: "upload",
|
|
27296
|
-
download: "download"
|
|
27297
|
-
};
|
|
27298
|
-
const REQUEST_METHOD = "__forgerouteRequestMethod";
|
|
27299
|
-
const errorContextInterceptor = (req, next) => next(req).pipe(catchError$1((err) => {
|
|
27300
|
-
if (err instanceof HttpErrorResponse && !(REQUEST_METHOD in err)) Object.defineProperty(err, REQUEST_METHOD, {
|
|
27301
|
-
value: req.method.toUpperCase(),
|
|
27302
|
-
enumerable: false
|
|
27303
|
-
});
|
|
27304
|
-
return throwError(() => err);
|
|
27305
|
-
}));
|
|
27306
|
-
function actionFromMethod(error) {
|
|
27307
|
-
switch (error[REQUEST_METHOD]) {
|
|
27308
|
-
case "POST":
|
|
27309
|
-
case "PUT":
|
|
27310
|
-
case "PATCH": return "save";
|
|
27311
|
-
case "DELETE": return "delete";
|
|
27312
|
-
default: return "load";
|
|
27313
|
-
}
|
|
27314
|
-
}
|
|
27315
|
-
function withoutLeadingArticle(ctx) {
|
|
27316
|
-
return ctx.replace(/^(?:the|an?)\s+/i, "") || ctx;
|
|
27317
|
-
}
|
|
27318
|
-
function getErrorMessage(error, fallbackContext, action) {
|
|
27319
|
-
const ctx = fallbackContext?.trim() || "data";
|
|
27320
|
-
const act = action ?? (error instanceof HttpErrorResponse ? actionFromMethod(error) : "load");
|
|
27321
|
-
const failed = `There was an error ${ACTION_VERB[act]} ${ctx}.`;
|
|
27322
|
-
if (error instanceof HttpErrorResponse) {
|
|
27323
|
-
if (error.error?.message) return error.error.message;
|
|
27324
|
-
if (typeof error.error === "string" && error.error.length < 200) return error.error;
|
|
27325
|
-
switch (error.status) {
|
|
27326
|
-
case 0: return `${failed} Please check your connection and try again.`;
|
|
27327
|
-
case 401: return "Your session has expired. Please log in again.";
|
|
27328
|
-
case 403: return `You don't have permission to ${ACTION_PERMISSION_VERB[act]} ${ctx}.`;
|
|
27329
|
-
case 404: return `The ${withoutLeadingArticle(ctx)} you're looking for could not be found.`;
|
|
27330
|
-
case 408: return `${failed} The request timed out — please try again.`;
|
|
27331
|
-
case 422: return "The data you submitted is invalid. Please check your input and try again.";
|
|
27332
|
-
case 429: return `${failed} Too many requests — please wait a moment and try again.`;
|
|
27333
|
-
case 502:
|
|
27334
|
-
case 503:
|
|
27335
|
-
case 504: return `${failed} Please try again in a few minutes.`;
|
|
27336
|
-
default: return `${failed} Please try again.`;
|
|
27337
|
-
}
|
|
27338
|
-
}
|
|
27339
|
-
if (error instanceof Error) return error.message;
|
|
27340
|
-
if (typeof error === "string") return error;
|
|
27341
|
-
return `${failed} Please try again.`;
|
|
27342
|
-
}
|
|
27343
28281
|
const US_STATES = [
|
|
27344
28282
|
{
|
|
27345
28283
|
value: "AL",
|
|
@@ -33278,6 +34216,7 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33278
34216
|
this.subtitle = input("", ...ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []);
|
|
33279
34217
|
this.background = input("", ...ngDevMode ? [{ debugName: "background" }] : /* istanbul ignore next */ []);
|
|
33280
34218
|
this.headerBackground = input("", ...ngDevMode ? [{ debugName: "headerBackground" }] : /* istanbul ignore next */ []);
|
|
34219
|
+
this.footerBackground = input("", ...ngDevMode ? [{ debugName: "footerBackground" }] : /* istanbul ignore next */ []);
|
|
33281
34220
|
this.textColor = input("", ...ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []);
|
|
33282
34221
|
this.showHeader = input(true, ...ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []);
|
|
33283
34222
|
this.collapsible = input(true, ...ngDevMode ? [{ debugName: "collapsible" }] : /* istanbul ignore next */ []);
|
|
@@ -33394,6 +34333,13 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33394
34333
|
isRequired: false,
|
|
33395
34334
|
transformFunction: null
|
|
33396
34335
|
},
|
|
34336
|
+
footerBackground: {
|
|
34337
|
+
classPropertyName: "footerBackground",
|
|
34338
|
+
publicName: "footerBackground",
|
|
34339
|
+
isSignal: true,
|
|
34340
|
+
isRequired: false,
|
|
34341
|
+
transformFunction: null
|
|
34342
|
+
},
|
|
33397
34343
|
textColor: {
|
|
33398
34344
|
classPropertyName: "textColor",
|
|
33399
34345
|
publicName: "textColor",
|
|
@@ -33509,7 +34455,7 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33509
34455
|
},
|
|
33510
34456
|
ngImport: i0,
|
|
33511
34457
|
template: `
|
|
33512
|
-
<div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
|
|
34458
|
+
<div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-has-bg]="!!((selectable() && selected() && selectedBackground()) || background())" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
|
|
33513
34459
|
[style.outline-color]="selectable() && selected() ? selectedColor() : null"
|
|
33514
34460
|
[style.background]="(selectable() && selected() && selectedBackground()) || background() || null" (click)="onCardClick($event)"
|
|
33515
34461
|
[style.color]="textColor() || null" [style.--dc-text]="textColor() || null">
|
|
@@ -33551,10 +34497,11 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
33551
34497
|
<ng-content />
|
|
33552
34498
|
</div>
|
|
33553
34499
|
</div>
|
|
34500
|
+
<div class="dc-footer" [class.dc-footer--hidden]="!isOpen()" [style.background]="footerBackground() || null"><ng-content select="[card-footer]" /></div>
|
|
33554
34501
|
</div>
|
|
33555
34502
|
`,
|
|
33556
34503
|
isInline: true,
|
|
33557
|
-
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-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:.
|
|
34504
|
+
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"],
|
|
33558
34505
|
dependencies: [{
|
|
33559
34506
|
kind: "component",
|
|
33560
34507
|
type: ButtonComponent,
|
|
@@ -33609,7 +34556,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33609
34556
|
"[attr.aria-label]": "groupLabel()"
|
|
33610
34557
|
},
|
|
33611
34558
|
template: `
|
|
33612
|
-
<div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
|
|
34559
|
+
<div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-has-bg]="!!((selectable() && selected() && selectedBackground()) || background())" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
|
|
33613
34560
|
[style.outline-color]="selectable() && selected() ? selectedColor() : null"
|
|
33614
34561
|
[style.background]="(selectable() && selected() && selectedBackground()) || background() || null" (click)="onCardClick($event)"
|
|
33615
34562
|
[style.color]="textColor() || null" [style.--dc-text]="textColor() || null">
|
|
@@ -33651,9 +34598,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33651
34598
|
<ng-content />
|
|
33652
34599
|
</div>
|
|
33653
34600
|
</div>
|
|
34601
|
+
<div class="dc-footer" [class.dc-footer--hidden]="!isOpen()" [style.background]="footerBackground() || null"><ng-content select="[card-footer]" /></div>
|
|
33654
34602
|
</div>
|
|
33655
34603
|
`,
|
|
33656
|
-
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-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:.
|
|
34604
|
+
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"]
|
|
33657
34605
|
}]
|
|
33658
34606
|
}],
|
|
33659
34607
|
propDecorators: {
|
|
@@ -33721,6 +34669,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33721
34669
|
required: false
|
|
33722
34670
|
}]
|
|
33723
34671
|
}],
|
|
34672
|
+
footerBackground: [{
|
|
34673
|
+
type: i0.Input,
|
|
34674
|
+
args: [{
|
|
34675
|
+
isSignal: true,
|
|
34676
|
+
alias: "footerBackground",
|
|
34677
|
+
required: false
|
|
34678
|
+
}]
|
|
34679
|
+
}],
|
|
33724
34680
|
textColor: [{
|
|
33725
34681
|
type: i0.Input,
|
|
33726
34682
|
args: [{
|
|
@@ -33951,6 +34907,697 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
33951
34907
|
}]
|
|
33952
34908
|
}
|
|
33953
34909
|
});
|
|
34910
|
+
var BoardCardDirective = class BoardCardDirective {
|
|
34911
|
+
constructor() {
|
|
34912
|
+
this.template = inject(TemplateRef);
|
|
34913
|
+
}
|
|
34914
|
+
static ngTemplateContextGuard(_dir, _ctx) {
|
|
34915
|
+
return true;
|
|
34916
|
+
}
|
|
34917
|
+
static {
|
|
34918
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
34919
|
+
minVersion: "12.0.0",
|
|
34920
|
+
version: "22.2.2",
|
|
34921
|
+
ngImport: i0,
|
|
34922
|
+
type: BoardCardDirective,
|
|
34923
|
+
deps: [],
|
|
34924
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
34925
|
+
});
|
|
34926
|
+
}
|
|
34927
|
+
static {
|
|
34928
|
+
this.ɵdir = i0.ɵɵngDeclareDirective({
|
|
34929
|
+
minVersion: "14.0.0",
|
|
34930
|
+
version: "22.2.2",
|
|
34931
|
+
type: BoardCardDirective,
|
|
34932
|
+
isStandalone: true,
|
|
34933
|
+
selector: "ng-template[uiBoardCard]",
|
|
34934
|
+
ngImport: i0
|
|
34935
|
+
});
|
|
34936
|
+
}
|
|
34937
|
+
};
|
|
34938
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
34939
|
+
minVersion: "12.0.0",
|
|
34940
|
+
version: "22.2.2",
|
|
34941
|
+
ngImport: i0,
|
|
34942
|
+
type: BoardCardDirective,
|
|
34943
|
+
decorators: [{
|
|
34944
|
+
type: Directive,
|
|
34945
|
+
args: [{
|
|
34946
|
+
selector: "ng-template[uiBoardCard]",
|
|
34947
|
+
standalone: true
|
|
34948
|
+
}]
|
|
34949
|
+
}]
|
|
34950
|
+
});
|
|
34951
|
+
const DOT_COLORS = {
|
|
34952
|
+
blue: "#3b82f6",
|
|
34953
|
+
cyan: "#06b6d4",
|
|
34954
|
+
green: "#22c55e",
|
|
34955
|
+
teal: "#14b8a6",
|
|
34956
|
+
amber: "#f59e0b",
|
|
34957
|
+
orange: "#f97316",
|
|
34958
|
+
red: "#ef4444",
|
|
34959
|
+
pink: "#ec4899",
|
|
34960
|
+
slate: "#64748b",
|
|
34961
|
+
gray: "#6b7280"
|
|
34962
|
+
};
|
|
34963
|
+
var BoardComponent = class BoardComponent {
|
|
34964
|
+
constructor() {
|
|
34965
|
+
this.columns = input.required(...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
|
|
34966
|
+
this.itemKey = input.required(...ngDevMode ? [{ debugName: "itemKey" }] : /* istanbul ignore next */ []);
|
|
34967
|
+
this.itemLabel = input.required(...ngDevMode ? [{ debugName: "itemLabel" }] : /* istanbul ignore next */ []);
|
|
34968
|
+
this.cardActions = input([], ...ngDevMode ? [{ debugName: "cardActions" }] : /* istanbul ignore next */ []);
|
|
34969
|
+
this.loading = input(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
34970
|
+
this.error = input(null, ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
|
|
34971
|
+
this.readOnly = input(false, ...ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []);
|
|
34972
|
+
this.moveDisabled = input(false, ...ngDevMode ? [{ debugName: "moveDisabled" }] : /* istanbul ignore next */ []);
|
|
34973
|
+
this.canMove = input(null, ...ngDevMode ? [{ debugName: "canMove" }] : /* istanbul ignore next */ []);
|
|
34974
|
+
this.ariaLabel = input("Board", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
34975
|
+
this.emptyMessage = input("Nothing to show.", ...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
|
|
34976
|
+
this.emptyColumnText = input("Nothing here yet", ...ngDevMode ? [{ debugName: "emptyColumnText" }] : /* istanbul ignore next */ []);
|
|
34977
|
+
this.itemNoun = input("item", ...ngDevMode ? [{ debugName: "itemNoun" }] : /* istanbul ignore next */ []);
|
|
34978
|
+
this.itemNounPlural = input("items", ...ngDevMode ? [{ debugName: "itemNounPlural" }] : /* istanbul ignore next */ []);
|
|
34979
|
+
this.retryLabel = input("Retry", ...ngDevMode ? [{ debugName: "retryLabel" }] : /* istanbul ignore next */ []);
|
|
34980
|
+
this.cardClick = output();
|
|
34981
|
+
this.cardAction = output();
|
|
34982
|
+
this.itemMove = output();
|
|
34983
|
+
this.retry = output();
|
|
34984
|
+
this.card = contentChild(BoardCardDirective, ...ngDevMode ? [{ debugName: "card" }] : /* istanbul ignore next */ []);
|
|
34985
|
+
this.cols = linkedSignal(() => this.columns(), ...ngDevMode ? [{ debugName: "cols" }] : /* istanbul ignore next */ []);
|
|
34986
|
+
this.overKey = signal(null, ...ngDevMode ? [{ debugName: "overKey" }] : /* istanbul ignore next */ []);
|
|
34987
|
+
this.draggingKey = signal(null, ...ngDevMode ? [{ debugName: "draggingKey" }] : /* istanbul ignore next */ []);
|
|
34988
|
+
this.announcement = signal("", ...ngDevMode ? [{ debugName: "announcement" }] : /* istanbul ignore next */ []);
|
|
34989
|
+
this.host = inject(ElementRef);
|
|
34990
|
+
this.drag = null;
|
|
34991
|
+
this.skeletonColumns = computed(() => Array.from({ length: Math.max(this.columns().length, 4) }, (_, i) => i), ...ngDevMode ? [{ debugName: "skeletonColumns" }] : /* istanbul ignore next */ []);
|
|
34992
|
+
this.canDrag = computed(() => !this.readOnly() && !this.moveDisabled(), ...ngDevMode ? [{ debugName: "canDrag" }] : /* istanbul ignore next */ []);
|
|
34993
|
+
this.canMoveAny = this.canDrag;
|
|
34994
|
+
}
|
|
34995
|
+
dot(color) {
|
|
34996
|
+
return color && DOT_COLORS[color] || color || "#3b82f6";
|
|
34997
|
+
}
|
|
34998
|
+
onDragStart(event, item, col) {
|
|
34999
|
+
if (!this.canDrag()) {
|
|
35000
|
+
event.preventDefault();
|
|
35001
|
+
return;
|
|
35002
|
+
}
|
|
35003
|
+
this.drag = {
|
|
35004
|
+
item,
|
|
35005
|
+
from: col.key
|
|
35006
|
+
};
|
|
35007
|
+
this.draggingKey.set(this.itemKey()(item));
|
|
35008
|
+
if (event.dataTransfer) {
|
|
35009
|
+
event.dataTransfer.effectAllowed = "move";
|
|
35010
|
+
event.dataTransfer.setData("text/plain", this.itemKey()(item));
|
|
35011
|
+
}
|
|
35012
|
+
}
|
|
35013
|
+
onDragEnd() {
|
|
35014
|
+
this.drag = null;
|
|
35015
|
+
this.draggingKey.set(null);
|
|
35016
|
+
this.overKey.set(null);
|
|
35017
|
+
}
|
|
35018
|
+
onDragOver(event, col) {
|
|
35019
|
+
if (!this.drag || !this.accepts(this.drag.item, this.drag.from, col)) {
|
|
35020
|
+
if (event.dataTransfer) event.dataTransfer.dropEffect = "none";
|
|
35021
|
+
return;
|
|
35022
|
+
}
|
|
35023
|
+
event.preventDefault();
|
|
35024
|
+
if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
|
|
35025
|
+
if (this.overKey() !== col.key) this.overKey.set(col.key);
|
|
35026
|
+
}
|
|
35027
|
+
onDragLeave(event, col) {
|
|
35028
|
+
const related = event.relatedTarget;
|
|
35029
|
+
if ((!related || !event.currentTarget.contains(related)) && this.overKey() === col.key) this.overKey.set(null);
|
|
35030
|
+
}
|
|
35031
|
+
onDrop(event, col) {
|
|
35032
|
+
event.preventDefault();
|
|
35033
|
+
const drag = this.drag;
|
|
35034
|
+
this.onDragEnd();
|
|
35035
|
+
if (drag && this.accepts(drag.item, drag.from, col)) this.move(drag.item, drag.from, col.key);
|
|
35036
|
+
}
|
|
35037
|
+
onCardKey(event, item, col) {
|
|
35038
|
+
if (event.target !== event.currentTarget) return;
|
|
35039
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
35040
|
+
event.preventDefault();
|
|
35041
|
+
this.cardClick.emit(item);
|
|
35042
|
+
return;
|
|
35043
|
+
}
|
|
35044
|
+
if (!event.shiftKey || event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
|
|
35045
|
+
event.preventDefault();
|
|
35046
|
+
if (!this.canDrag()) return;
|
|
35047
|
+
const cols = this.cols();
|
|
35048
|
+
const step = event.key === "ArrowRight" ? 1 : -1;
|
|
35049
|
+
for (let i = cols.findIndex((c) => c.key === col.key) + step; i >= 0 && i < cols.length; i += step) if (this.accepts(item, col.key, cols[i])) {
|
|
35050
|
+
this.move(item, col.key, cols[i].key);
|
|
35051
|
+
this.announcement.set(`${this.itemLabel()(item)} moved to ${cols[i].label}`);
|
|
35052
|
+
const key = this.itemKey()(item);
|
|
35053
|
+
setTimeout(() => {
|
|
35054
|
+
const cards = this.host.nativeElement.querySelectorAll(".ub-card");
|
|
35055
|
+
Array.from(cards).find((c) => c.dataset["boardKey"] === key)?.focus();
|
|
35056
|
+
});
|
|
35057
|
+
return;
|
|
35058
|
+
}
|
|
35059
|
+
}
|
|
35060
|
+
accepts(item, from, to) {
|
|
35061
|
+
if (from === to.key || to.dropDisabled || this.moveDisabled() || this.readOnly()) return false;
|
|
35062
|
+
const rule = this.canMove();
|
|
35063
|
+
return !rule || rule(item, from, to.key);
|
|
35064
|
+
}
|
|
35065
|
+
move(item, from, to) {
|
|
35066
|
+
const before = this.cols();
|
|
35067
|
+
const key = this.itemKey()(item);
|
|
35068
|
+
this.cols.set(before.map((c) => {
|
|
35069
|
+
if (c.key === from) return {
|
|
35070
|
+
...c,
|
|
35071
|
+
items: c.items.filter((i) => this.itemKey()(i) !== key)
|
|
35072
|
+
};
|
|
35073
|
+
if (c.key === to) return {
|
|
35074
|
+
...c,
|
|
35075
|
+
items: [item, ...c.items]
|
|
35076
|
+
};
|
|
35077
|
+
return c;
|
|
35078
|
+
}));
|
|
35079
|
+
this.itemMove.emit({
|
|
35080
|
+
item,
|
|
35081
|
+
from,
|
|
35082
|
+
to,
|
|
35083
|
+
revert: () => this.cols.set(before)
|
|
35084
|
+
});
|
|
35085
|
+
}
|
|
35086
|
+
static {
|
|
35087
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
35088
|
+
minVersion: "12.0.0",
|
|
35089
|
+
version: "22.2.2",
|
|
35090
|
+
ngImport: i0,
|
|
35091
|
+
type: BoardComponent,
|
|
35092
|
+
deps: [],
|
|
35093
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
35094
|
+
});
|
|
35095
|
+
}
|
|
35096
|
+
static {
|
|
35097
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
35098
|
+
minVersion: "17.0.0",
|
|
35099
|
+
version: "22.2.2",
|
|
35100
|
+
type: BoardComponent,
|
|
35101
|
+
isStandalone: true,
|
|
35102
|
+
selector: "ui-board",
|
|
35103
|
+
inputs: {
|
|
35104
|
+
columns: {
|
|
35105
|
+
classPropertyName: "columns",
|
|
35106
|
+
publicName: "columns",
|
|
35107
|
+
isSignal: true,
|
|
35108
|
+
isRequired: true,
|
|
35109
|
+
transformFunction: null
|
|
35110
|
+
},
|
|
35111
|
+
itemKey: {
|
|
35112
|
+
classPropertyName: "itemKey",
|
|
35113
|
+
publicName: "itemKey",
|
|
35114
|
+
isSignal: true,
|
|
35115
|
+
isRequired: true,
|
|
35116
|
+
transformFunction: null
|
|
35117
|
+
},
|
|
35118
|
+
itemLabel: {
|
|
35119
|
+
classPropertyName: "itemLabel",
|
|
35120
|
+
publicName: "itemLabel",
|
|
35121
|
+
isSignal: true,
|
|
35122
|
+
isRequired: true,
|
|
35123
|
+
transformFunction: null
|
|
35124
|
+
},
|
|
35125
|
+
cardActions: {
|
|
35126
|
+
classPropertyName: "cardActions",
|
|
35127
|
+
publicName: "cardActions",
|
|
35128
|
+
isSignal: true,
|
|
35129
|
+
isRequired: false,
|
|
35130
|
+
transformFunction: null
|
|
35131
|
+
},
|
|
35132
|
+
loading: {
|
|
35133
|
+
classPropertyName: "loading",
|
|
35134
|
+
publicName: "loading",
|
|
35135
|
+
isSignal: true,
|
|
35136
|
+
isRequired: false,
|
|
35137
|
+
transformFunction: null
|
|
35138
|
+
},
|
|
35139
|
+
error: {
|
|
35140
|
+
classPropertyName: "error",
|
|
35141
|
+
publicName: "error",
|
|
35142
|
+
isSignal: true,
|
|
35143
|
+
isRequired: false,
|
|
35144
|
+
transformFunction: null
|
|
35145
|
+
},
|
|
35146
|
+
readOnly: {
|
|
35147
|
+
classPropertyName: "readOnly",
|
|
35148
|
+
publicName: "readOnly",
|
|
35149
|
+
isSignal: true,
|
|
35150
|
+
isRequired: false,
|
|
35151
|
+
transformFunction: null
|
|
35152
|
+
},
|
|
35153
|
+
moveDisabled: {
|
|
35154
|
+
classPropertyName: "moveDisabled",
|
|
35155
|
+
publicName: "moveDisabled",
|
|
35156
|
+
isSignal: true,
|
|
35157
|
+
isRequired: false,
|
|
35158
|
+
transformFunction: null
|
|
35159
|
+
},
|
|
35160
|
+
canMove: {
|
|
35161
|
+
classPropertyName: "canMove",
|
|
35162
|
+
publicName: "canMove",
|
|
35163
|
+
isSignal: true,
|
|
35164
|
+
isRequired: false,
|
|
35165
|
+
transformFunction: null
|
|
35166
|
+
},
|
|
35167
|
+
ariaLabel: {
|
|
35168
|
+
classPropertyName: "ariaLabel",
|
|
35169
|
+
publicName: "ariaLabel",
|
|
35170
|
+
isSignal: true,
|
|
35171
|
+
isRequired: false,
|
|
35172
|
+
transformFunction: null
|
|
35173
|
+
},
|
|
35174
|
+
emptyMessage: {
|
|
35175
|
+
classPropertyName: "emptyMessage",
|
|
35176
|
+
publicName: "emptyMessage",
|
|
35177
|
+
isSignal: true,
|
|
35178
|
+
isRequired: false,
|
|
35179
|
+
transformFunction: null
|
|
35180
|
+
},
|
|
35181
|
+
emptyColumnText: {
|
|
35182
|
+
classPropertyName: "emptyColumnText",
|
|
35183
|
+
publicName: "emptyColumnText",
|
|
35184
|
+
isSignal: true,
|
|
35185
|
+
isRequired: false,
|
|
35186
|
+
transformFunction: null
|
|
35187
|
+
},
|
|
35188
|
+
itemNoun: {
|
|
35189
|
+
classPropertyName: "itemNoun",
|
|
35190
|
+
publicName: "itemNoun",
|
|
35191
|
+
isSignal: true,
|
|
35192
|
+
isRequired: false,
|
|
35193
|
+
transformFunction: null
|
|
35194
|
+
},
|
|
35195
|
+
itemNounPlural: {
|
|
35196
|
+
classPropertyName: "itemNounPlural",
|
|
35197
|
+
publicName: "itemNounPlural",
|
|
35198
|
+
isSignal: true,
|
|
35199
|
+
isRequired: false,
|
|
35200
|
+
transformFunction: null
|
|
35201
|
+
},
|
|
35202
|
+
retryLabel: {
|
|
35203
|
+
classPropertyName: "retryLabel",
|
|
35204
|
+
publicName: "retryLabel",
|
|
35205
|
+
isSignal: true,
|
|
35206
|
+
isRequired: false,
|
|
35207
|
+
transformFunction: null
|
|
35208
|
+
}
|
|
35209
|
+
},
|
|
35210
|
+
outputs: {
|
|
35211
|
+
cardClick: "cardClick",
|
|
35212
|
+
cardAction: "cardAction",
|
|
35213
|
+
itemMove: "itemMove",
|
|
35214
|
+
retry: "retry"
|
|
35215
|
+
},
|
|
35216
|
+
queries: [{
|
|
35217
|
+
propertyName: "card",
|
|
35218
|
+
first: true,
|
|
35219
|
+
predicate: BoardCardDirective,
|
|
35220
|
+
descendants: true,
|
|
35221
|
+
isSignal: true
|
|
35222
|
+
}],
|
|
35223
|
+
ngImport: i0,
|
|
35224
|
+
template: `
|
|
35225
|
+
<!-- The card's "⋮" menu. Place it in the card's top row: <ng-container [ngTemplateOutlet]="menu" [ngTemplateOutletContext]="{ $implicit: item }" /> -->
|
|
35226
|
+
<ng-template #menuTpl let-item>
|
|
35227
|
+
@if (cardActions().length) {
|
|
35228
|
+
<div class="ub-card__top-right" (click)="$event.stopPropagation()" (keydown)="$event.stopPropagation()">
|
|
35229
|
+
<ui-more-menu [actions]="cardActions()" [ariaLabel]="'Actions for ' + itemLabel()(item)"
|
|
35230
|
+
(actionClick)="cardAction.emit({ type: $event, item })" />
|
|
35231
|
+
</div>
|
|
35232
|
+
}
|
|
35233
|
+
</ng-template>
|
|
35234
|
+
<div class="ub-wrap">
|
|
35235
|
+
@if (loading()) {
|
|
35236
|
+
<div class="ub-skeleton" role="status" [attr.aria-label]="'Loading ' + ariaLabel()">
|
|
35237
|
+
@for (n of skeletonColumns(); track n) {
|
|
35238
|
+
<div class="ub-col-skeleton" aria-hidden="true">
|
|
35239
|
+
<div class="ub-col-skeleton__header"></div>
|
|
35240
|
+
@for (c of [1, 2, 3]; track c) { <div class="ub-col-skeleton__card"></div> }
|
|
35241
|
+
</div>
|
|
35242
|
+
}
|
|
35243
|
+
</div>
|
|
35244
|
+
} @else if (error()) {
|
|
35245
|
+
<div class="ub-message" role="alert">
|
|
35246
|
+
<p>{{ error() }}</p>
|
|
35247
|
+
<ui-button variant="secondary" size="sm" (click)="retry.emit()">{{ retryLabel() }}</ui-button>
|
|
35248
|
+
</div>
|
|
35249
|
+
} @else if (cols().length === 0) {
|
|
35250
|
+
<div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
|
|
35251
|
+
} @else {
|
|
35252
|
+
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
|
|
35253
|
+
@for (col of cols(); track col.key) {
|
|
35254
|
+
<div class="ub-col"
|
|
35255
|
+
[class.ub-col--over]="overKey() === col.key"
|
|
35256
|
+
[class.ub-col--success]="col.tone === 'success'"
|
|
35257
|
+
role="group"
|
|
35258
|
+
[attr.aria-label]="col.label + ' — ' + col.items.length + ' ' + (col.items.length === 1 ? itemNoun() : itemNounPlural())"
|
|
35259
|
+
(dragover)="onDragOver($event, col)"
|
|
35260
|
+
(dragleave)="onDragLeave($event, col)"
|
|
35261
|
+
(drop)="onDrop($event, col)">
|
|
35262
|
+
<div class="ub-col__header">
|
|
35263
|
+
<div class="ub-col__title">
|
|
35264
|
+
<span class="ub-col__dot" [style.background]="dot(col.color)" aria-hidden="true"></span>
|
|
35265
|
+
<span class="ub-col__label">{{ col.label }}</span>
|
|
35266
|
+
<span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
|
|
35267
|
+
</div>
|
|
35268
|
+
@if (col.summary) {
|
|
35269
|
+
<div class="ub-col__summary" [attr.aria-label]="col.summaryLabel || col.summary">{{ col.summary }}</div>
|
|
35270
|
+
}
|
|
35271
|
+
</div>
|
|
35272
|
+
<div class="ub-col__cards" role="list">
|
|
35273
|
+
@for (item of col.items; track itemKey()(item)) {
|
|
35274
|
+
<div class="ub-card"
|
|
35275
|
+
[class.ub-card--success]="col.tone === 'success'"
|
|
35276
|
+
[class.ub-card--dragging]="draggingKey() === itemKey()(item)"
|
|
35277
|
+
role="listitem"
|
|
35278
|
+
tabindex="0"
|
|
35279
|
+
[attr.data-board-key]="itemKey()(item)"
|
|
35280
|
+
[attr.aria-label]="itemLabel()(item)"
|
|
35281
|
+
[attr.aria-keyshortcuts]="canMoveAny() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
|
|
35282
|
+
[attr.draggable]="canDrag() ? 'true' : null"
|
|
35283
|
+
(dragstart)="onDragStart($event, item, col)"
|
|
35284
|
+
(dragend)="onDragEnd()"
|
|
35285
|
+
(click)="cardClick.emit(item)"
|
|
35286
|
+
(keydown)="onCardKey($event, item, col)">
|
|
35287
|
+
@if (card(); as tpl) {
|
|
35288
|
+
<ng-container [ngTemplateOutlet]="tpl.template" [ngTemplateOutletContext]="{ $implicit: item, column: col, menu: menuTpl }" />
|
|
35289
|
+
}
|
|
35290
|
+
</div>
|
|
35291
|
+
}
|
|
35292
|
+
@if (col.items.length === 0) {
|
|
35293
|
+
<div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
|
|
35294
|
+
}
|
|
35295
|
+
</div>
|
|
35296
|
+
</div>
|
|
35297
|
+
}
|
|
35298
|
+
</div>
|
|
35299
|
+
<div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
|
|
35300
|
+
}
|
|
35301
|
+
</div>
|
|
35302
|
+
`,
|
|
35303
|
+
isInline: true,
|
|
35304
|
+
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:flex-start}.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;max-height:calc(100vh - 200px);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:#94a3b8;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__empty{text-align:center;padding:24px 12px;color:#94a3b8;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:#94a3b8;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:#94a3b8}.ub-card__activity--stale{color:#d97706;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-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"],
|
|
35305
|
+
dependencies: [
|
|
35306
|
+
{
|
|
35307
|
+
kind: "directive",
|
|
35308
|
+
type: NgTemplateOutlet,
|
|
35309
|
+
selector: "[ngTemplateOutlet]",
|
|
35310
|
+
inputs: [
|
|
35311
|
+
"ngTemplateOutletContext",
|
|
35312
|
+
"ngTemplateOutlet",
|
|
35313
|
+
"ngTemplateOutletInjector"
|
|
35314
|
+
]
|
|
35315
|
+
},
|
|
35316
|
+
{
|
|
35317
|
+
kind: "component",
|
|
35318
|
+
type: ButtonComponent,
|
|
35319
|
+
selector: "ui-button",
|
|
35320
|
+
inputs: [
|
|
35321
|
+
"variant",
|
|
35322
|
+
"routerLink",
|
|
35323
|
+
"queryParams",
|
|
35324
|
+
"fragment",
|
|
35325
|
+
"state",
|
|
35326
|
+
"href",
|
|
35327
|
+
"target",
|
|
35328
|
+
"rel",
|
|
35329
|
+
"shortLabel",
|
|
35330
|
+
"shortBelow",
|
|
35331
|
+
"color",
|
|
35332
|
+
"active",
|
|
35333
|
+
"size",
|
|
35334
|
+
"type",
|
|
35335
|
+
"disabled",
|
|
35336
|
+
"loading",
|
|
35337
|
+
"fullWidth",
|
|
35338
|
+
"ariaLabel",
|
|
35339
|
+
"ariaExpanded",
|
|
35340
|
+
"ariaPressed",
|
|
35341
|
+
"ariaDescribedBy",
|
|
35342
|
+
"modal-footer-left",
|
|
35343
|
+
"modal-footer-right"
|
|
35344
|
+
]
|
|
35345
|
+
},
|
|
35346
|
+
{
|
|
35347
|
+
kind: "component",
|
|
35348
|
+
type: MoreMenuComponent,
|
|
35349
|
+
selector: "ui-more-menu",
|
|
35350
|
+
inputs: ["ariaLabel", "actions"],
|
|
35351
|
+
outputs: ["actionClick"]
|
|
35352
|
+
}
|
|
35353
|
+
],
|
|
35354
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
35355
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
35356
|
+
});
|
|
35357
|
+
}
|
|
35358
|
+
};
|
|
35359
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
35360
|
+
minVersion: "12.0.0",
|
|
35361
|
+
version: "22.2.2",
|
|
35362
|
+
ngImport: i0,
|
|
35363
|
+
type: BoardComponent,
|
|
35364
|
+
decorators: [{
|
|
35365
|
+
type: Component,
|
|
35366
|
+
args: [{
|
|
35367
|
+
selector: "ui-board",
|
|
35368
|
+
standalone: true,
|
|
35369
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35370
|
+
encapsulation: ViewEncapsulation.None,
|
|
35371
|
+
imports: [
|
|
35372
|
+
NgTemplateOutlet,
|
|
35373
|
+
ButtonComponent,
|
|
35374
|
+
MoreMenuComponent
|
|
35375
|
+
],
|
|
35376
|
+
template: `
|
|
35377
|
+
<!-- The card's "⋮" menu. Place it in the card's top row: <ng-container [ngTemplateOutlet]="menu" [ngTemplateOutletContext]="{ $implicit: item }" /> -->
|
|
35378
|
+
<ng-template #menuTpl let-item>
|
|
35379
|
+
@if (cardActions().length) {
|
|
35380
|
+
<div class="ub-card__top-right" (click)="$event.stopPropagation()" (keydown)="$event.stopPropagation()">
|
|
35381
|
+
<ui-more-menu [actions]="cardActions()" [ariaLabel]="'Actions for ' + itemLabel()(item)"
|
|
35382
|
+
(actionClick)="cardAction.emit({ type: $event, item })" />
|
|
35383
|
+
</div>
|
|
35384
|
+
}
|
|
35385
|
+
</ng-template>
|
|
35386
|
+
<div class="ub-wrap">
|
|
35387
|
+
@if (loading()) {
|
|
35388
|
+
<div class="ub-skeleton" role="status" [attr.aria-label]="'Loading ' + ariaLabel()">
|
|
35389
|
+
@for (n of skeletonColumns(); track n) {
|
|
35390
|
+
<div class="ub-col-skeleton" aria-hidden="true">
|
|
35391
|
+
<div class="ub-col-skeleton__header"></div>
|
|
35392
|
+
@for (c of [1, 2, 3]; track c) { <div class="ub-col-skeleton__card"></div> }
|
|
35393
|
+
</div>
|
|
35394
|
+
}
|
|
35395
|
+
</div>
|
|
35396
|
+
} @else if (error()) {
|
|
35397
|
+
<div class="ub-message" role="alert">
|
|
35398
|
+
<p>{{ error() }}</p>
|
|
35399
|
+
<ui-button variant="secondary" size="sm" (click)="retry.emit()">{{ retryLabel() }}</ui-button>
|
|
35400
|
+
</div>
|
|
35401
|
+
} @else if (cols().length === 0) {
|
|
35402
|
+
<div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
|
|
35403
|
+
} @else {
|
|
35404
|
+
<div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
|
|
35405
|
+
@for (col of cols(); track col.key) {
|
|
35406
|
+
<div class="ub-col"
|
|
35407
|
+
[class.ub-col--over]="overKey() === col.key"
|
|
35408
|
+
[class.ub-col--success]="col.tone === 'success'"
|
|
35409
|
+
role="group"
|
|
35410
|
+
[attr.aria-label]="col.label + ' — ' + col.items.length + ' ' + (col.items.length === 1 ? itemNoun() : itemNounPlural())"
|
|
35411
|
+
(dragover)="onDragOver($event, col)"
|
|
35412
|
+
(dragleave)="onDragLeave($event, col)"
|
|
35413
|
+
(drop)="onDrop($event, col)">
|
|
35414
|
+
<div class="ub-col__header">
|
|
35415
|
+
<div class="ub-col__title">
|
|
35416
|
+
<span class="ub-col__dot" [style.background]="dot(col.color)" aria-hidden="true"></span>
|
|
35417
|
+
<span class="ub-col__label">{{ col.label }}</span>
|
|
35418
|
+
<span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
|
|
35419
|
+
</div>
|
|
35420
|
+
@if (col.summary) {
|
|
35421
|
+
<div class="ub-col__summary" [attr.aria-label]="col.summaryLabel || col.summary">{{ col.summary }}</div>
|
|
35422
|
+
}
|
|
35423
|
+
</div>
|
|
35424
|
+
<div class="ub-col__cards" role="list">
|
|
35425
|
+
@for (item of col.items; track itemKey()(item)) {
|
|
35426
|
+
<div class="ub-card"
|
|
35427
|
+
[class.ub-card--success]="col.tone === 'success'"
|
|
35428
|
+
[class.ub-card--dragging]="draggingKey() === itemKey()(item)"
|
|
35429
|
+
role="listitem"
|
|
35430
|
+
tabindex="0"
|
|
35431
|
+
[attr.data-board-key]="itemKey()(item)"
|
|
35432
|
+
[attr.aria-label]="itemLabel()(item)"
|
|
35433
|
+
[attr.aria-keyshortcuts]="canMoveAny() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
|
|
35434
|
+
[attr.draggable]="canDrag() ? 'true' : null"
|
|
35435
|
+
(dragstart)="onDragStart($event, item, col)"
|
|
35436
|
+
(dragend)="onDragEnd()"
|
|
35437
|
+
(click)="cardClick.emit(item)"
|
|
35438
|
+
(keydown)="onCardKey($event, item, col)">
|
|
35439
|
+
@if (card(); as tpl) {
|
|
35440
|
+
<ng-container [ngTemplateOutlet]="tpl.template" [ngTemplateOutletContext]="{ $implicit: item, column: col, menu: menuTpl }" />
|
|
35441
|
+
}
|
|
35442
|
+
</div>
|
|
35443
|
+
}
|
|
35444
|
+
@if (col.items.length === 0) {
|
|
35445
|
+
<div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
|
|
35446
|
+
}
|
|
35447
|
+
</div>
|
|
35448
|
+
</div>
|
|
35449
|
+
}
|
|
35450
|
+
</div>
|
|
35451
|
+
<div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
|
|
35452
|
+
}
|
|
35453
|
+
</div>
|
|
35454
|
+
`,
|
|
35455
|
+
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:flex-start}.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;max-height:calc(100vh - 200px);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:#94a3b8;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__empty{text-align:center;padding:24px 12px;color:#94a3b8;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:#94a3b8;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:#94a3b8}.ub-card__activity--stale{color:#d97706;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-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"]
|
|
35456
|
+
}]
|
|
35457
|
+
}],
|
|
35458
|
+
propDecorators: {
|
|
35459
|
+
columns: [{
|
|
35460
|
+
type: i0.Input,
|
|
35461
|
+
args: [{
|
|
35462
|
+
isSignal: true,
|
|
35463
|
+
alias: "columns",
|
|
35464
|
+
required: true
|
|
35465
|
+
}]
|
|
35466
|
+
}],
|
|
35467
|
+
itemKey: [{
|
|
35468
|
+
type: i0.Input,
|
|
35469
|
+
args: [{
|
|
35470
|
+
isSignal: true,
|
|
35471
|
+
alias: "itemKey",
|
|
35472
|
+
required: true
|
|
35473
|
+
}]
|
|
35474
|
+
}],
|
|
35475
|
+
itemLabel: [{
|
|
35476
|
+
type: i0.Input,
|
|
35477
|
+
args: [{
|
|
35478
|
+
isSignal: true,
|
|
35479
|
+
alias: "itemLabel",
|
|
35480
|
+
required: true
|
|
35481
|
+
}]
|
|
35482
|
+
}],
|
|
35483
|
+
cardActions: [{
|
|
35484
|
+
type: i0.Input,
|
|
35485
|
+
args: [{
|
|
35486
|
+
isSignal: true,
|
|
35487
|
+
alias: "cardActions",
|
|
35488
|
+
required: false
|
|
35489
|
+
}]
|
|
35490
|
+
}],
|
|
35491
|
+
loading: [{
|
|
35492
|
+
type: i0.Input,
|
|
35493
|
+
args: [{
|
|
35494
|
+
isSignal: true,
|
|
35495
|
+
alias: "loading",
|
|
35496
|
+
required: false
|
|
35497
|
+
}]
|
|
35498
|
+
}],
|
|
35499
|
+
error: [{
|
|
35500
|
+
type: i0.Input,
|
|
35501
|
+
args: [{
|
|
35502
|
+
isSignal: true,
|
|
35503
|
+
alias: "error",
|
|
35504
|
+
required: false
|
|
35505
|
+
}]
|
|
35506
|
+
}],
|
|
35507
|
+
readOnly: [{
|
|
35508
|
+
type: i0.Input,
|
|
35509
|
+
args: [{
|
|
35510
|
+
isSignal: true,
|
|
35511
|
+
alias: "readOnly",
|
|
35512
|
+
required: false
|
|
35513
|
+
}]
|
|
35514
|
+
}],
|
|
35515
|
+
moveDisabled: [{
|
|
35516
|
+
type: i0.Input,
|
|
35517
|
+
args: [{
|
|
35518
|
+
isSignal: true,
|
|
35519
|
+
alias: "moveDisabled",
|
|
35520
|
+
required: false
|
|
35521
|
+
}]
|
|
35522
|
+
}],
|
|
35523
|
+
canMove: [{
|
|
35524
|
+
type: i0.Input,
|
|
35525
|
+
args: [{
|
|
35526
|
+
isSignal: true,
|
|
35527
|
+
alias: "canMove",
|
|
35528
|
+
required: false
|
|
35529
|
+
}]
|
|
35530
|
+
}],
|
|
35531
|
+
ariaLabel: [{
|
|
35532
|
+
type: i0.Input,
|
|
35533
|
+
args: [{
|
|
35534
|
+
isSignal: true,
|
|
35535
|
+
alias: "ariaLabel",
|
|
35536
|
+
required: false
|
|
35537
|
+
}]
|
|
35538
|
+
}],
|
|
35539
|
+
emptyMessage: [{
|
|
35540
|
+
type: i0.Input,
|
|
35541
|
+
args: [{
|
|
35542
|
+
isSignal: true,
|
|
35543
|
+
alias: "emptyMessage",
|
|
35544
|
+
required: false
|
|
35545
|
+
}]
|
|
35546
|
+
}],
|
|
35547
|
+
emptyColumnText: [{
|
|
35548
|
+
type: i0.Input,
|
|
35549
|
+
args: [{
|
|
35550
|
+
isSignal: true,
|
|
35551
|
+
alias: "emptyColumnText",
|
|
35552
|
+
required: false
|
|
35553
|
+
}]
|
|
35554
|
+
}],
|
|
35555
|
+
itemNoun: [{
|
|
35556
|
+
type: i0.Input,
|
|
35557
|
+
args: [{
|
|
35558
|
+
isSignal: true,
|
|
35559
|
+
alias: "itemNoun",
|
|
35560
|
+
required: false
|
|
35561
|
+
}]
|
|
35562
|
+
}],
|
|
35563
|
+
itemNounPlural: [{
|
|
35564
|
+
type: i0.Input,
|
|
35565
|
+
args: [{
|
|
35566
|
+
isSignal: true,
|
|
35567
|
+
alias: "itemNounPlural",
|
|
35568
|
+
required: false
|
|
35569
|
+
}]
|
|
35570
|
+
}],
|
|
35571
|
+
retryLabel: [{
|
|
35572
|
+
type: i0.Input,
|
|
35573
|
+
args: [{
|
|
35574
|
+
isSignal: true,
|
|
35575
|
+
alias: "retryLabel",
|
|
35576
|
+
required: false
|
|
35577
|
+
}]
|
|
35578
|
+
}],
|
|
35579
|
+
cardClick: [{
|
|
35580
|
+
type: i0.Output,
|
|
35581
|
+
args: ["cardClick"]
|
|
35582
|
+
}],
|
|
35583
|
+
cardAction: [{
|
|
35584
|
+
type: i0.Output,
|
|
35585
|
+
args: ["cardAction"]
|
|
35586
|
+
}],
|
|
35587
|
+
itemMove: [{
|
|
35588
|
+
type: i0.Output,
|
|
35589
|
+
args: ["itemMove"]
|
|
35590
|
+
}],
|
|
35591
|
+
retry: [{
|
|
35592
|
+
type: i0.Output,
|
|
35593
|
+
args: ["retry"]
|
|
35594
|
+
}],
|
|
35595
|
+
card: [{
|
|
35596
|
+
type: i0.ContentChild,
|
|
35597
|
+
args: [i0.forwardRef(() => BoardCardDirective), { isSignal: true }]
|
|
35598
|
+
}]
|
|
35599
|
+
}
|
|
35600
|
+
});
|
|
33954
35601
|
let nextId = 0;
|
|
33955
35602
|
var ReadonlyFieldsetComponent = class ReadonlyFieldsetComponent {
|
|
33956
35603
|
constructor() {
|
|
@@ -37781,6 +39428,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
37781
39428
|
}]
|
|
37782
39429
|
}
|
|
37783
39430
|
});
|
|
37784
|
-
export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, 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 };
|
|
39431
|
+
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, 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, 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 };
|
|
37785
39432
|
|
|
37786
39433
|
//# sourceMappingURL=forgeroute-ui.mjs.map
|