@forgeroute/ui 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/forgeroute-ui.mjs +2660 -210
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui.d.ts +767 -17
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, HostBinding, HostListener, Injectable, InjectionToken, Injector, Input, Renderer2, afterNextRender, computed, effect, forwardRef, inject, input, linkedSignal, model, output, signal, untracked, viewChild } from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Directive, ElementRef, HostBinding, HostListener, Injectable, InjectionToken, Injector, Input, Renderer2, afterNextRender, computed, effect, forwardRef, inject, input, linkedSignal, model, output, signal, untracked, viewChild } from "@angular/core";
|
|
3
3
|
import { HttpClient, HttpErrorResponse, HttpParams } from "@angular/common/http";
|
|
4
4
|
import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop";
|
|
5
5
|
import { catchError, debounceTime, distinctUntilChanged, skip, switchMap } from "rxjs/operators";
|
|
@@ -1200,7 +1200,7 @@ var ColumnFilterComponent = class ColumnFilterComponent {
|
|
|
1200
1200
|
</div>
|
|
1201
1201
|
`,
|
|
1202
1202
|
isInline: true,
|
|
1203
|
-
styles: [":host{display:inline-block;position:relative}.cf-wrapper{position:relative}.cf-trigger{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:#94a3b8;padding:2px 4px;border-radius:4px;font-family:inherit;font-size:.75rem;transition:color .15s}.cf-trigger:hover{color:#1e293b}.cf-trigger.cf-active{color:#3b82f6}.cf-trigger:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@media(max-width:640px),(pointer:coarse){.cf-trigger{position:relative}.cf-trigger:after{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}}.cf-active-label{font-size:.75rem;font-weight:500;color:#3b82f6}.cf-trigger--chip{min-height:44px;padding:0 14px;gap:6px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#334155;font-size:.8125rem;font-weight:500}.cf-trigger--chip.cf-active{border-color:#bfdbfe;background:#eff6ff}.cf-trigger--chip:after{display:none}.cf-chip-label{white-space:nowrap}.cf-dropdown{position:fixed;display:flex;flex-direction:column;max-height:calc(100vh - 16px);z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;min-width:220px;animation:cf-drop .16s cubic-bezier(.16,1,.3,1)}.cf-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 10px 16px;border-bottom:1px solid #f1f5f9}.cf-header-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b}.cf-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:none;border:none;cursor:pointer;color:#94a3b8;flex-shrink:0;transition:background .13s,color .13s}.cf-close:hover{background:#f1f5f9;color:#1e293b}.cf-options{padding:6px 8px;overflow-y:auto;min-height:0}.cf-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px;background:none;border:none;border-bottom:1px solid #e2e8f0;cursor:pointer;font-size:.875rem;color:#1e293b;font-family:inherit;text-align:left;border-radius:0;transition:background .12s}.cf-option:last-child{border-bottom:none}.cf-option:hover{background:#f8fafc}.cf-option.cf-selected{background:#eff6ff;color:#1d4ed8;font-weight:500}.cf-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.cf-checkbox{flex-shrink:0;width:16px;height:16px;border-radius:4px;border:1.5px solid #d1d5db;display:flex;align-items:center;justify-content:center;background:#fff;transition:background .12s,border-color .12s}.cf-checkbox.cf-checkbox--checked{background:#3b82f6;border-color:#3b82f6;color:#fff}.cf-count{margin-left:auto;font-size:.7rem;font-weight:600;line-height:1;background:#f1f5f9;color:#64748b;border-radius:999px;padding:2px 7px;min-width:22px;text-align:center}.cf-option.cf-selected .cf-count{background:#dbeafe;color:#2563eb}.cf-footer{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid #f1f5f9}.cf-clear{flex:1;padding:8px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;color:#64748b;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,color .12s}.cf-clear:hover{background:#f8fafc;color:#1e293b}.cf-apply{flex:1;padding:8px;border-radius:8px;border:none;background:#0f172a;color:#fff;font-size:.8125rem;cursor:pointer;font-family:inherit;font-weight:600;transition:background .12s}.cf-apply:hover{background:#1e293b}@keyframes cf-drop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.cf-trigger{padding:6px 8px}.cf-option{padding:11px 10px;min-height:40px}.cf-clear,.cf-apply{padding:10px}}@media(max-width:640px){.cf-dropdown{min-width:200px;max-width:calc(100vw - 16px)}.cf-option{padding:12px 10px;min-height:44px}.cf-clear,.cf-apply{padding:11px}}\n"],
|
|
1203
|
+
styles: [":host{display:inline-block;position:relative}.cf-wrapper{position:relative}.cf-trigger{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:#94a3b8;padding:2px 4px;border-radius:4px;font-family:inherit;font-size:.75rem;transition:color .15s}.cf-trigger:hover{color:#1e293b}.cf-trigger.cf-active{color:#3b82f6}.cf-trigger:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@media(max-width:640px),(pointer:coarse){.cf-trigger{position:relative}.cf-trigger:after{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}}.cf-active-label{font-size:.75rem;font-weight:500;color:#3b82f6}.cf-trigger--chip{min-height:44px;padding:0 14px;gap:6px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#334155;font-size:.8125rem;font-weight:500}.cf-trigger--chip.cf-active{border-color:#bfdbfe;background:#eff6ff}.cf-trigger--chip:after{display:none}.cf-chip-label{white-space:nowrap}.cf-dropdown{position:fixed;display:flex;flex-direction:column;max-height:calc(100vh - 16px);z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;min-width:220px;animation:cf-drop .16s cubic-bezier(.16,1,.3,1)}.cf-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 10px 16px;border-bottom:1px solid #f1f5f9}.cf-header-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b}.cf-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:none;border:none;cursor:pointer;color:#94a3b8;flex-shrink:0;transition:background .13s,color .13s}.cf-close:hover{background:#f1f5f9;color:#1e293b}@media(max-width:640px),(pointer:coarse){.cf-close{position:relative}.cf-close:after{content:\"\";position:absolute;inset:-10px}}.cf-options{padding:6px 8px;overflow-y:auto;min-height:0}.cf-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px;background:none;border:none;border-bottom:1px solid #e2e8f0;cursor:pointer;font-size:.875rem;color:#1e293b;font-family:inherit;text-align:left;border-radius:0;transition:background .12s}.cf-option:last-child{border-bottom:none}.cf-option:hover{background:#f8fafc}.cf-option.cf-selected{background:#eff6ff;color:#1d4ed8;font-weight:500}.cf-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.cf-checkbox{flex-shrink:0;width:16px;height:16px;border-radius:4px;border:1.5px solid #d1d5db;display:flex;align-items:center;justify-content:center;background:#fff;transition:background .12s,border-color .12s}.cf-checkbox.cf-checkbox--checked{background:#3b82f6;border-color:#3b82f6;color:#fff}.cf-count{margin-left:auto;font-size:.7rem;font-weight:600;line-height:1;background:#f1f5f9;color:#64748b;border-radius:999px;padding:2px 7px;min-width:22px;text-align:center}.cf-option.cf-selected .cf-count{background:#dbeafe;color:#2563eb}.cf-footer{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid #f1f5f9}.cf-clear{flex:1;padding:8px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;color:#64748b;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,color .12s}.cf-clear:hover{background:#f8fafc;color:#1e293b}.cf-apply{flex:1;padding:8px;border-radius:8px;border:none;background:#0f172a;color:#fff;font-size:.8125rem;cursor:pointer;font-family:inherit;font-weight:600;transition:background .12s}.cf-apply:hover{background:#1e293b}@keyframes cf-drop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.cf-trigger{padding:6px 8px}.cf-option{padding:11px 10px;min-height:40px}.cf-clear,.cf-apply{padding:10px}}@media(max-width:640px){.cf-dropdown{min-width:200px;max-width:calc(100vw - 16px)}.cf-option{padding:12px 10px;min-height:44px}.cf-clear,.cf-apply{padding:11px}}\n"],
|
|
1204
1204
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
1205
1205
|
});
|
|
1206
1206
|
}
|
|
@@ -1290,7 +1290,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1290
1290
|
}
|
|
1291
1291
|
</div>
|
|
1292
1292
|
`,
|
|
1293
|
-
styles: [":host{display:inline-block;position:relative}.cf-wrapper{position:relative}.cf-trigger{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:#94a3b8;padding:2px 4px;border-radius:4px;font-family:inherit;font-size:.75rem;transition:color .15s}.cf-trigger:hover{color:#1e293b}.cf-trigger.cf-active{color:#3b82f6}.cf-trigger:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@media(max-width:640px),(pointer:coarse){.cf-trigger{position:relative}.cf-trigger:after{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}}.cf-active-label{font-size:.75rem;font-weight:500;color:#3b82f6}.cf-trigger--chip{min-height:44px;padding:0 14px;gap:6px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#334155;font-size:.8125rem;font-weight:500}.cf-trigger--chip.cf-active{border-color:#bfdbfe;background:#eff6ff}.cf-trigger--chip:after{display:none}.cf-chip-label{white-space:nowrap}.cf-dropdown{position:fixed;display:flex;flex-direction:column;max-height:calc(100vh - 16px);z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;min-width:220px;animation:cf-drop .16s cubic-bezier(.16,1,.3,1)}.cf-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 10px 16px;border-bottom:1px solid #f1f5f9}.cf-header-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b}.cf-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:none;border:none;cursor:pointer;color:#94a3b8;flex-shrink:0;transition:background .13s,color .13s}.cf-close:hover{background:#f1f5f9;color:#1e293b}.cf-options{padding:6px 8px;overflow-y:auto;min-height:0}.cf-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px;background:none;border:none;border-bottom:1px solid #e2e8f0;cursor:pointer;font-size:.875rem;color:#1e293b;font-family:inherit;text-align:left;border-radius:0;transition:background .12s}.cf-option:last-child{border-bottom:none}.cf-option:hover{background:#f8fafc}.cf-option.cf-selected{background:#eff6ff;color:#1d4ed8;font-weight:500}.cf-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.cf-checkbox{flex-shrink:0;width:16px;height:16px;border-radius:4px;border:1.5px solid #d1d5db;display:flex;align-items:center;justify-content:center;background:#fff;transition:background .12s,border-color .12s}.cf-checkbox.cf-checkbox--checked{background:#3b82f6;border-color:#3b82f6;color:#fff}.cf-count{margin-left:auto;font-size:.7rem;font-weight:600;line-height:1;background:#f1f5f9;color:#64748b;border-radius:999px;padding:2px 7px;min-width:22px;text-align:center}.cf-option.cf-selected .cf-count{background:#dbeafe;color:#2563eb}.cf-footer{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid #f1f5f9}.cf-clear{flex:1;padding:8px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;color:#64748b;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,color .12s}.cf-clear:hover{background:#f8fafc;color:#1e293b}.cf-apply{flex:1;padding:8px;border-radius:8px;border:none;background:#0f172a;color:#fff;font-size:.8125rem;cursor:pointer;font-family:inherit;font-weight:600;transition:background .12s}.cf-apply:hover{background:#1e293b}@keyframes cf-drop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.cf-trigger{padding:6px 8px}.cf-option{padding:11px 10px;min-height:40px}.cf-clear,.cf-apply{padding:10px}}@media(max-width:640px){.cf-dropdown{min-width:200px;max-width:calc(100vw - 16px)}.cf-option{padding:12px 10px;min-height:44px}.cf-clear,.cf-apply{padding:11px}}\n"]
|
|
1293
|
+
styles: [":host{display:inline-block;position:relative}.cf-wrapper{position:relative}.cf-trigger{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:#94a3b8;padding:2px 4px;border-radius:4px;font-family:inherit;font-size:.75rem;transition:color .15s}.cf-trigger:hover{color:#1e293b}.cf-trigger.cf-active{color:#3b82f6}.cf-trigger:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@media(max-width:640px),(pointer:coarse){.cf-trigger{position:relative}.cf-trigger:after{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}}.cf-active-label{font-size:.75rem;font-weight:500;color:#3b82f6}.cf-trigger--chip{min-height:44px;padding:0 14px;gap:6px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#334155;font-size:.8125rem;font-weight:500}.cf-trigger--chip.cf-active{border-color:#bfdbfe;background:#eff6ff}.cf-trigger--chip:after{display:none}.cf-chip-label{white-space:nowrap}.cf-dropdown{position:fixed;display:flex;flex-direction:column;max-height:calc(100vh - 16px);z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;min-width:220px;animation:cf-drop .16s cubic-bezier(.16,1,.3,1)}.cf-header{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 10px 16px;border-bottom:1px solid #f1f5f9}.cf-header-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#64748b}.cf-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:none;border:none;cursor:pointer;color:#94a3b8;flex-shrink:0;transition:background .13s,color .13s}.cf-close:hover{background:#f1f5f9;color:#1e293b}@media(max-width:640px),(pointer:coarse){.cf-close{position:relative}.cf-close:after{content:\"\";position:absolute;inset:-10px}}.cf-options{padding:6px 8px;overflow-y:auto;min-height:0}.cf-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px;background:none;border:none;border-bottom:1px solid #e2e8f0;cursor:pointer;font-size:.875rem;color:#1e293b;font-family:inherit;text-align:left;border-radius:0;transition:background .12s}.cf-option:last-child{border-bottom:none}.cf-option:hover{background:#f8fafc}.cf-option.cf-selected{background:#eff6ff;color:#1d4ed8;font-weight:500}.cf-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.cf-checkbox{flex-shrink:0;width:16px;height:16px;border-radius:4px;border:1.5px solid #d1d5db;display:flex;align-items:center;justify-content:center;background:#fff;transition:background .12s,border-color .12s}.cf-checkbox.cf-checkbox--checked{background:#3b82f6;border-color:#3b82f6;color:#fff}.cf-count{margin-left:auto;font-size:.7rem;font-weight:600;line-height:1;background:#f1f5f9;color:#64748b;border-radius:999px;padding:2px 7px;min-width:22px;text-align:center}.cf-option.cf-selected .cf-count{background:#dbeafe;color:#2563eb}.cf-footer{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid #f1f5f9}.cf-clear{flex:1;padding:8px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;color:#64748b;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s,color .12s}.cf-clear:hover{background:#f8fafc;color:#1e293b}.cf-apply{flex:1;padding:8px;border-radius:8px;border:none;background:#0f172a;color:#fff;font-size:.8125rem;cursor:pointer;font-family:inherit;font-weight:600;transition:background .12s}.cf-apply:hover{background:#1e293b}@keyframes cf-drop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.cf-trigger{padding:6px 8px}.cf-option{padding:11px 10px;min-height:40px}.cf-clear,.cf-apply{padding:10px}}@media(max-width:640px){.cf-dropdown{min-width:200px;max-width:calc(100vw - 16px)}.cf-option{padding:12px 10px;min-height:44px}.cf-clear,.cf-apply{padding:11px}}\n"]
|
|
1294
1294
|
}]
|
|
1295
1295
|
}],
|
|
1296
1296
|
ctorParameters: () => [],
|
|
@@ -2143,7 +2143,7 @@ var ModalComponent = class ModalComponent {
|
|
|
2143
2143
|
}
|
|
2144
2144
|
`,
|
|
2145
2145
|
isInline: true,
|
|
2146
|
-
styles: [".m-backdrop{position:fixed;inset:0;background:#02081773;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;animation:m-fade .18s ease}.m-modal:focus{outline:none}.m-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.07);z-index:201;width:calc(100% - 32px);box-shadow:0 4px 6px #0000000a,0 16px 32px #0000001f,0 48px 96px #0000001a;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:m-scale .22s cubic-bezier(.16,1,.3,1)}.m-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:16px 16px 0 0;flex-shrink:0}.m-header-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.m-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;letter-spacing:-.02em;line-height:1.3}.m-description{font-size:.8125rem;color:#64748b;margin:0;line-height:1.4}.m-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:none;background:none;cursor:pointer;color:#94a3b8;flex-shrink:0;margin-left:12px;transition:background .13s,color .13s}.m-close:hover{background:#f1f5f9;color:#1e293b}.m-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.m-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0;font-size:.9rem;color:#475569;line-height:1.65}.m-footer{padding:14px 24px 18px;background:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 16px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.m-footer:not(:has(*)){display:none}.m-footer-left{display:flex;align-items:center;gap:8px}.m-footer-right{display:flex;align-items:center;gap:8px;margin-left:auto}@media(max-width:480px){.m-modal{top:auto;bottom:var(--ui-kb, 0px);left:0;right:0;transform:none;width:100vw;max-width:none!important;max-height:min(85dvh,var(--ui-vvh, 100dvh));border-radius:20px 20px 0 0;animation:m-up .24s cubic-bezier(.16,1,.3,1)}.m-footer{border-radius:0;flex-direction:column-reverse;align-items:stretch;padding-bottom:max(18px,env(safe-area-inset-bottom))}}@keyframes m-fade{0%{opacity:0}to{opacity:1}}@keyframes m-scale{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes m-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"],
|
|
2146
|
+
styles: [".m-backdrop{position:fixed;inset:0;background:#02081773;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;animation:m-fade .18s ease}.m-modal:focus{outline:none}.m-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.07);z-index:201;width:calc(100% - 32px);box-shadow:0 4px 6px #0000000a,0 16px 32px #0000001f,0 48px 96px #0000001a;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:m-scale .22s cubic-bezier(.16,1,.3,1)}.m-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:16px 16px 0 0;flex-shrink:0}.m-header-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.m-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;letter-spacing:-.02em;line-height:1.3}.m-description{font-size:.8125rem;color:#64748b;margin:0;line-height:1.4}.m-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:none;background:none;cursor:pointer;color:#94a3b8;flex-shrink:0;margin-left:12px;transition:background .13s,color .13s}.m-close:hover{background:#f1f5f9;color:#1e293b}.m-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.m-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0;font-size:.9rem;color:#475569;line-height:1.65}.m-footer{padding:14px 24px 18px;background:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 16px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.m-footer:not(:has(*)){display:none}.m-footer-left{display:flex;align-items:center;gap:8px}.m-footer-right{display:flex;align-items:center;gap:8px;margin-left:auto}@media(max-width:480px){.m-modal{top:auto;bottom:var(--ui-kb, 0px);left:0;right:0;transform:none;width:100vw;max-width:none!important;max-height:min(85dvh,var(--ui-vvh, 100dvh));border-radius:20px 20px 0 0;animation:m-up .24s cubic-bezier(.16,1,.3,1)}.m-footer{border-radius:0;flex-direction:column-reverse;align-items:stretch;padding-bottom:max(18px,env(safe-area-inset-bottom))}}@media(pointer:coarse),(max-width:480px){.m-close{position:relative}.m-close:after{content:\"\";position:absolute;inset:-7px}}@keyframes m-fade{0%{opacity:0}to{opacity:1}}@keyframes m-scale{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes m-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"],
|
|
2147
2147
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
2148
2148
|
});
|
|
2149
2149
|
}
|
|
@@ -2187,7 +2187,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2187
2187
|
</div>
|
|
2188
2188
|
}
|
|
2189
2189
|
`,
|
|
2190
|
-
styles: [".m-backdrop{position:fixed;inset:0;background:#02081773;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;animation:m-fade .18s ease}.m-modal:focus{outline:none}.m-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.07);z-index:201;width:calc(100% - 32px);box-shadow:0 4px 6px #0000000a,0 16px 32px #0000001f,0 48px 96px #0000001a;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:m-scale .22s cubic-bezier(.16,1,.3,1)}.m-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:16px 16px 0 0;flex-shrink:0}.m-header-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.m-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;letter-spacing:-.02em;line-height:1.3}.m-description{font-size:.8125rem;color:#64748b;margin:0;line-height:1.4}.m-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:none;background:none;cursor:pointer;color:#94a3b8;flex-shrink:0;margin-left:12px;transition:background .13s,color .13s}.m-close:hover{background:#f1f5f9;color:#1e293b}.m-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.m-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0;font-size:.9rem;color:#475569;line-height:1.65}.m-footer{padding:14px 24px 18px;background:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 16px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.m-footer:not(:has(*)){display:none}.m-footer-left{display:flex;align-items:center;gap:8px}.m-footer-right{display:flex;align-items:center;gap:8px;margin-left:auto}@media(max-width:480px){.m-modal{top:auto;bottom:var(--ui-kb, 0px);left:0;right:0;transform:none;width:100vw;max-width:none!important;max-height:min(85dvh,var(--ui-vvh, 100dvh));border-radius:20px 20px 0 0;animation:m-up .24s cubic-bezier(.16,1,.3,1)}.m-footer{border-radius:0;flex-direction:column-reverse;align-items:stretch;padding-bottom:max(18px,env(safe-area-inset-bottom))}}@keyframes m-fade{0%{opacity:0}to{opacity:1}}@keyframes m-scale{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes m-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"]
|
|
2190
|
+
styles: [".m-backdrop{position:fixed;inset:0;background:#02081773;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;animation:m-fade .18s ease}.m-modal:focus{outline:none}.m-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;border:1px solid rgba(0,0,0,.07);z-index:201;width:calc(100% - 32px);box-shadow:0 4px 6px #0000000a,0 16px 32px #0000001f,0 48px 96px #0000001a;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:m-scale .22s cubic-bezier(.16,1,.3,1)}.m-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:16px 16px 0 0;flex-shrink:0}.m-header-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.m-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;letter-spacing:-.02em;line-height:1.3}.m-description{font-size:.8125rem;color:#64748b;margin:0;line-height:1.4}.m-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:none;background:none;cursor:pointer;color:#94a3b8;flex-shrink:0;margin-left:12px;transition:background .13s,color .13s}.m-close:hover{background:#f1f5f9;color:#1e293b}.m-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.m-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0;font-size:.9rem;color:#475569;line-height:1.65}.m-footer{padding:14px 24px 18px;background:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 16px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.m-footer:not(:has(*)){display:none}.m-footer-left{display:flex;align-items:center;gap:8px}.m-footer-right{display:flex;align-items:center;gap:8px;margin-left:auto}@media(max-width:480px){.m-modal{top:auto;bottom:var(--ui-kb, 0px);left:0;right:0;transform:none;width:100vw;max-width:none!important;max-height:min(85dvh,var(--ui-vvh, 100dvh));border-radius:20px 20px 0 0;animation:m-up .24s cubic-bezier(.16,1,.3,1)}.m-footer{border-radius:0;flex-direction:column-reverse;align-items:stretch;padding-bottom:max(18px,env(safe-area-inset-bottom))}}@media(pointer:coarse),(max-width:480px){.m-close{position:relative}.m-close:after{content:\"\";position:absolute;inset:-7px}}@keyframes m-fade{0%{opacity:0}to{opacity:1}}@keyframes m-scale{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes m-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"]
|
|
2191
2191
|
}]
|
|
2192
2192
|
}],
|
|
2193
2193
|
ctorParameters: () => [],
|
|
@@ -2238,12 +2238,120 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2238
2238
|
}]
|
|
2239
2239
|
}
|
|
2240
2240
|
});
|
|
2241
|
+
var UiFieldValidity = class {};
|
|
2242
|
+
function issueToErrors(issue) {
|
|
2243
|
+
return issue ? { [issue.key]: issue.value ?? true } : null;
|
|
2244
|
+
}
|
|
2245
|
+
function requiredIssue(label) {
|
|
2246
|
+
return {
|
|
2247
|
+
key: "required",
|
|
2248
|
+
message: `${label.trim() || "This field"} is required.`
|
|
2249
|
+
};
|
|
2250
|
+
}
|
|
2251
|
+
function maxLengthIssue(text, max) {
|
|
2252
|
+
if (max == null || max < 0 || text.length <= max) return null;
|
|
2253
|
+
return {
|
|
2254
|
+
key: "maxlength",
|
|
2255
|
+
message: `Too long (max ${max} characters).`,
|
|
2256
|
+
value: {
|
|
2257
|
+
requiredLength: max,
|
|
2258
|
+
actualLength: text.length
|
|
2259
|
+
}
|
|
2260
|
+
};
|
|
2261
|
+
}
|
|
2262
|
+
function createFieldReveal(showErrors) {
|
|
2263
|
+
const touched = signal(false, ...ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []);
|
|
2264
|
+
let previous = false;
|
|
2265
|
+
effect(() => {
|
|
2266
|
+
const show = showErrors();
|
|
2267
|
+
if (previous && !show) touched.set(false);
|
|
2268
|
+
previous = show;
|
|
2269
|
+
});
|
|
2270
|
+
return {
|
|
2271
|
+
touched,
|
|
2272
|
+
revealed: computed(() => touched() || showErrors())
|
|
2273
|
+
};
|
|
2274
|
+
}
|
|
2275
|
+
const MONTHS = [
|
|
2276
|
+
"Jan",
|
|
2277
|
+
"Feb",
|
|
2278
|
+
"Mar",
|
|
2279
|
+
"Apr",
|
|
2280
|
+
"May",
|
|
2281
|
+
"Jun",
|
|
2282
|
+
"Jul",
|
|
2283
|
+
"Aug",
|
|
2284
|
+
"Sep",
|
|
2285
|
+
"Oct",
|
|
2286
|
+
"Nov",
|
|
2287
|
+
"Dec"
|
|
2288
|
+
];
|
|
2289
|
+
function parseIso(value, withTime) {
|
|
2290
|
+
if (typeof value !== "string") return null;
|
|
2291
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?)?$/.exec(value.trim());
|
|
2292
|
+
if (!m) return null;
|
|
2293
|
+
if (m[6] !== void 0 && Number(m[6]) > 59) return null;
|
|
2294
|
+
if (withTime && m[4] === void 0) return null;
|
|
2295
|
+
if (!withTime && m[4] !== void 0) return null;
|
|
2296
|
+
const y = Number(m[1]), mo = Number(m[2]), d = Number(m[3]);
|
|
2297
|
+
const h = m[4] === void 0 ? 0 : Number(m[4]);
|
|
2298
|
+
const mi = m[5] === void 0 ? 0 : Number(m[5]);
|
|
2299
|
+
if (mo < 1 || mo > 12 || d < 1 || d > new Date(Date.UTC(y, mo, 0)).getUTCDate()) return null;
|
|
2300
|
+
if (h > 23 || mi > 59) return null;
|
|
2301
|
+
return {
|
|
2302
|
+
y,
|
|
2303
|
+
mo,
|
|
2304
|
+
d,
|
|
2305
|
+
h,
|
|
2306
|
+
mi
|
|
2307
|
+
};
|
|
2308
|
+
}
|
|
2309
|
+
function formatIsoDate(value) {
|
|
2310
|
+
const p = parseIso(value, false);
|
|
2311
|
+
return p ? `${MONTHS[p.mo - 1]} ${p.d}, ${p.y}` : typeof value === "string" ? value : "";
|
|
2312
|
+
}
|
|
2313
|
+
function formatIsoDateTime(value) {
|
|
2314
|
+
const p = parseIso(value, true);
|
|
2315
|
+
if (!p) return typeof value === "string" ? value : "";
|
|
2316
|
+
const hour = p.h % 12 === 0 ? 12 : p.h % 12;
|
|
2317
|
+
return `${MONTHS[p.mo - 1]} ${p.d}, ${p.y}, ${hour}:${String(p.mi).padStart(2, "0")} ${p.h < 12 ? "AM" : "PM"}`;
|
|
2318
|
+
}
|
|
2319
|
+
function isoKey(p) {
|
|
2320
|
+
return (((p.y * 100 + p.mo) * 100 + p.d) * 100 + p.h) * 100 + p.mi;
|
|
2321
|
+
}
|
|
2322
|
+
function parseTime(value) {
|
|
2323
|
+
if (typeof value !== "string") return null;
|
|
2324
|
+
const m = /^(\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?$/.exec(value.trim());
|
|
2325
|
+
if (!m) return null;
|
|
2326
|
+
if (m[3] !== void 0 && Number(m[3]) > 59) return null;
|
|
2327
|
+
const h = Number(m[1]), mi = Number(m[2]);
|
|
2328
|
+
return h > 23 || mi > 59 ? null : h * 60 + mi;
|
|
2329
|
+
}
|
|
2330
|
+
function formatTime(value) {
|
|
2331
|
+
const t = parseTime(value);
|
|
2332
|
+
if (t == null) return typeof value === "string" ? value : "";
|
|
2333
|
+
const h = Math.floor(t / 60), mi = t % 60;
|
|
2334
|
+
return `${h % 12 === 0 ? 12 : h % 12}:${String(mi).padStart(2, "0")} ${h < 12 ? "AM" : "PM"}`;
|
|
2335
|
+
}
|
|
2241
2336
|
var CheckboxComponent = class CheckboxComponent {
|
|
2242
2337
|
constructor() {
|
|
2243
2338
|
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
2244
2339
|
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
2245
2340
|
this.indeterminate = input(false, ...ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []);
|
|
2246
2341
|
this.checked = model(false, ...ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []);
|
|
2342
|
+
this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
|
|
2343
|
+
this.requiredMessage = input("", ...ngDevMode ? [{ debugName: "requiredMessage" }] : /* istanbul ignore next */ []);
|
|
2344
|
+
this.hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
2345
|
+
this.error = input("", ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
|
|
2346
|
+
this.showErrors = input(false, ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
|
|
2347
|
+
this._descId = `cb-${Math.random().toString(36).slice(2, 8)}-desc`;
|
|
2348
|
+
this._reveal = createFieldReveal(this.showErrors);
|
|
2349
|
+
this._issue = computed(() => this._check(this.checked()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
2350
|
+
this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
2351
|
+
this.errorMessage = computed(() => this._issue()?.message ?? "", ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
|
|
2352
|
+
this.invalidChange = output();
|
|
2353
|
+
this._activeError = computed(() => this.error() || (this._reveal.revealed() ? this.errorMessage() : ""), ...ngDevMode ? [{ debugName: "_activeError" }] : /* istanbul ignore next */ []);
|
|
2354
|
+
this._onValidatorChange = () => {};
|
|
2247
2355
|
this._disabledInput = input(false, {
|
|
2248
2356
|
...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
|
|
2249
2357
|
alias: "disabled"
|
|
@@ -2252,6 +2360,26 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2252
2360
|
this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
2253
2361
|
this.onChange = (_) => {};
|
|
2254
2362
|
this.onTouched = () => {};
|
|
2363
|
+
effect(() => {
|
|
2364
|
+
this.invalidChange.emit(this.invalid());
|
|
2365
|
+
});
|
|
2366
|
+
}
|
|
2367
|
+
ngOnChanges() {
|
|
2368
|
+
this._onValidatorChange();
|
|
2369
|
+
}
|
|
2370
|
+
validate(control) {
|
|
2371
|
+
return issueToErrors(this._check(!!control.value));
|
|
2372
|
+
}
|
|
2373
|
+
registerOnValidatorChange(fn) {
|
|
2374
|
+
this._onValidatorChange = fn;
|
|
2375
|
+
}
|
|
2376
|
+
_check(checked) {
|
|
2377
|
+
if (this.disabled() || !this.required() || checked) return null;
|
|
2378
|
+
const rm = this.requiredMessage();
|
|
2379
|
+
return rm ? {
|
|
2380
|
+
key: "required",
|
|
2381
|
+
message: rm
|
|
2382
|
+
} : requiredIssue(this.label());
|
|
2255
2383
|
}
|
|
2256
2384
|
writeValue(val) {
|
|
2257
2385
|
this.checked.set(!!val);
|
|
@@ -2271,6 +2399,7 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2271
2399
|
this.checked.set(val);
|
|
2272
2400
|
this.onChange(val);
|
|
2273
2401
|
this.onTouched();
|
|
2402
|
+
this._reveal.touched.set(true);
|
|
2274
2403
|
}
|
|
2275
2404
|
static {
|
|
2276
2405
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -2318,6 +2447,41 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2318
2447
|
isRequired: false,
|
|
2319
2448
|
transformFunction: null
|
|
2320
2449
|
},
|
|
2450
|
+
required: {
|
|
2451
|
+
classPropertyName: "required",
|
|
2452
|
+
publicName: "required",
|
|
2453
|
+
isSignal: true,
|
|
2454
|
+
isRequired: false,
|
|
2455
|
+
transformFunction: null
|
|
2456
|
+
},
|
|
2457
|
+
requiredMessage: {
|
|
2458
|
+
classPropertyName: "requiredMessage",
|
|
2459
|
+
publicName: "requiredMessage",
|
|
2460
|
+
isSignal: true,
|
|
2461
|
+
isRequired: false,
|
|
2462
|
+
transformFunction: null
|
|
2463
|
+
},
|
|
2464
|
+
hint: {
|
|
2465
|
+
classPropertyName: "hint",
|
|
2466
|
+
publicName: "hint",
|
|
2467
|
+
isSignal: true,
|
|
2468
|
+
isRequired: false,
|
|
2469
|
+
transformFunction: null
|
|
2470
|
+
},
|
|
2471
|
+
error: {
|
|
2472
|
+
classPropertyName: "error",
|
|
2473
|
+
publicName: "error",
|
|
2474
|
+
isSignal: true,
|
|
2475
|
+
isRequired: false,
|
|
2476
|
+
transformFunction: null
|
|
2477
|
+
},
|
|
2478
|
+
showErrors: {
|
|
2479
|
+
classPropertyName: "showErrors",
|
|
2480
|
+
publicName: "showErrors",
|
|
2481
|
+
isSignal: true,
|
|
2482
|
+
isRequired: false,
|
|
2483
|
+
transformFunction: null
|
|
2484
|
+
},
|
|
2321
2485
|
_disabledInput: {
|
|
2322
2486
|
classPropertyName: "_disabledInput",
|
|
2323
2487
|
publicName: "disabled",
|
|
@@ -2326,14 +2490,30 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2326
2490
|
transformFunction: null
|
|
2327
2491
|
}
|
|
2328
2492
|
},
|
|
2329
|
-
outputs: {
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2493
|
+
outputs: {
|
|
2494
|
+
checked: "checkedChange",
|
|
2495
|
+
invalidChange: "invalidChange"
|
|
2496
|
+
},
|
|
2497
|
+
providers: [
|
|
2498
|
+
{
|
|
2499
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2500
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
2501
|
+
multi: true
|
|
2502
|
+
},
|
|
2503
|
+
{
|
|
2504
|
+
provide: NG_VALIDATORS,
|
|
2505
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
2506
|
+
multi: true
|
|
2507
|
+
},
|
|
2508
|
+
{
|
|
2509
|
+
provide: UiFieldValidity,
|
|
2510
|
+
useExisting: forwardRef(() => CheckboxComponent)
|
|
2511
|
+
}
|
|
2512
|
+
],
|
|
2513
|
+
usesOnChanges: true,
|
|
2335
2514
|
ngImport: i0,
|
|
2336
2515
|
template: `
|
|
2516
|
+
<div class="cb-field" [class.cb-error]="_activeError()">
|
|
2337
2517
|
<label class="cb-wrap" [class.cb-disabled]="disabled()">
|
|
2338
2518
|
<span class="cb-box" [class.cb-checked]="checked()" [class.cb-indeterminate]="indeterminate() && !checked()" [class.cb-disabled]="disabled()">
|
|
2339
2519
|
@if (checked()) {
|
|
@@ -2353,6 +2533,9 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2353
2533
|
[disabled]="disabled()"
|
|
2354
2534
|
[attr.aria-label]="ariaLabel() || null"
|
|
2355
2535
|
[attr.aria-checked]="indeterminate() && !checked() ? 'mixed' : null"
|
|
2536
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
2537
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
2538
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
2356
2539
|
(change)="onToggle($event)"
|
|
2357
2540
|
/>
|
|
2358
2541
|
@if (label()) {
|
|
@@ -2360,9 +2543,15 @@ var CheckboxComponent = class CheckboxComponent {
|
|
|
2360
2543
|
}
|
|
2361
2544
|
<ng-content />
|
|
2362
2545
|
</label>
|
|
2546
|
+
@if (_activeError()) {
|
|
2547
|
+
<p class="cb-desc cb-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
2548
|
+
} @else if (hint()) {
|
|
2549
|
+
<p class="cb-desc" [id]="_descId">{{ hint() }}</p>
|
|
2550
|
+
}
|
|
2551
|
+
</div>
|
|
2363
2552
|
`,
|
|
2364
2553
|
isInline: true,
|
|
2365
|
-
styles: [".cb-wrap{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #cbd5e1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"],
|
|
2554
|
+
styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#ef4444}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #cbd5e1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"],
|
|
2366
2555
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
2367
2556
|
});
|
|
2368
2557
|
}
|
|
@@ -2378,12 +2567,24 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2378
2567
|
selector: "ui-checkbox",
|
|
2379
2568
|
standalone: true,
|
|
2380
2569
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2381
|
-
providers: [
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2570
|
+
providers: [
|
|
2571
|
+
{
|
|
2572
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2573
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
2574
|
+
multi: true
|
|
2575
|
+
},
|
|
2576
|
+
{
|
|
2577
|
+
provide: NG_VALIDATORS,
|
|
2578
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
2579
|
+
multi: true
|
|
2580
|
+
},
|
|
2581
|
+
{
|
|
2582
|
+
provide: UiFieldValidity,
|
|
2583
|
+
useExisting: forwardRef(() => CheckboxComponent)
|
|
2584
|
+
}
|
|
2585
|
+
],
|
|
2386
2586
|
template: `
|
|
2587
|
+
<div class="cb-field" [class.cb-error]="_activeError()">
|
|
2387
2588
|
<label class="cb-wrap" [class.cb-disabled]="disabled()">
|
|
2388
2589
|
<span class="cb-box" [class.cb-checked]="checked()" [class.cb-indeterminate]="indeterminate() && !checked()" [class.cb-disabled]="disabled()">
|
|
2389
2590
|
@if (checked()) {
|
|
@@ -2403,6 +2604,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2403
2604
|
[disabled]="disabled()"
|
|
2404
2605
|
[attr.aria-label]="ariaLabel() || null"
|
|
2405
2606
|
[attr.aria-checked]="indeterminate() && !checked() ? 'mixed' : null"
|
|
2607
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
2608
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
2609
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
2406
2610
|
(change)="onToggle($event)"
|
|
2407
2611
|
/>
|
|
2408
2612
|
@if (label()) {
|
|
@@ -2410,10 +2614,17 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2410
2614
|
}
|
|
2411
2615
|
<ng-content />
|
|
2412
2616
|
</label>
|
|
2617
|
+
@if (_activeError()) {
|
|
2618
|
+
<p class="cb-desc cb-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
2619
|
+
} @else if (hint()) {
|
|
2620
|
+
<p class="cb-desc" [id]="_descId">{{ hint() }}</p>
|
|
2621
|
+
}
|
|
2622
|
+
</div>
|
|
2413
2623
|
`,
|
|
2414
|
-
styles: [".cb-wrap{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #cbd5e1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"]
|
|
2624
|
+
styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#ef4444}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #cbd5e1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"]
|
|
2415
2625
|
}]
|
|
2416
2626
|
}],
|
|
2627
|
+
ctorParameters: () => [],
|
|
2417
2628
|
propDecorators: {
|
|
2418
2629
|
label: [{
|
|
2419
2630
|
type: i0.Input,
|
|
@@ -2450,6 +2661,50 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2450
2661
|
type: i0.Output,
|
|
2451
2662
|
args: ["checkedChange"]
|
|
2452
2663
|
}],
|
|
2664
|
+
required: [{
|
|
2665
|
+
type: i0.Input,
|
|
2666
|
+
args: [{
|
|
2667
|
+
isSignal: true,
|
|
2668
|
+
alias: "required",
|
|
2669
|
+
required: false
|
|
2670
|
+
}]
|
|
2671
|
+
}],
|
|
2672
|
+
requiredMessage: [{
|
|
2673
|
+
type: i0.Input,
|
|
2674
|
+
args: [{
|
|
2675
|
+
isSignal: true,
|
|
2676
|
+
alias: "requiredMessage",
|
|
2677
|
+
required: false
|
|
2678
|
+
}]
|
|
2679
|
+
}],
|
|
2680
|
+
hint: [{
|
|
2681
|
+
type: i0.Input,
|
|
2682
|
+
args: [{
|
|
2683
|
+
isSignal: true,
|
|
2684
|
+
alias: "hint",
|
|
2685
|
+
required: false
|
|
2686
|
+
}]
|
|
2687
|
+
}],
|
|
2688
|
+
error: [{
|
|
2689
|
+
type: i0.Input,
|
|
2690
|
+
args: [{
|
|
2691
|
+
isSignal: true,
|
|
2692
|
+
alias: "error",
|
|
2693
|
+
required: false
|
|
2694
|
+
}]
|
|
2695
|
+
}],
|
|
2696
|
+
showErrors: [{
|
|
2697
|
+
type: i0.Input,
|
|
2698
|
+
args: [{
|
|
2699
|
+
isSignal: true,
|
|
2700
|
+
alias: "showErrors",
|
|
2701
|
+
required: false
|
|
2702
|
+
}]
|
|
2703
|
+
}],
|
|
2704
|
+
invalidChange: [{
|
|
2705
|
+
type: i0.Output,
|
|
2706
|
+
args: ["invalidChange"]
|
|
2707
|
+
}],
|
|
2453
2708
|
_disabledInput: [{
|
|
2454
2709
|
type: i0.Input,
|
|
2455
2710
|
args: [{
|
|
@@ -2473,6 +2728,7 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2473
2728
|
this.ariaLabel = input(void 0, ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
2474
2729
|
this.ariaExpanded = input(void 0, ...ngDevMode ? [{ debugName: "ariaExpanded" }] : /* istanbul ignore next */ []);
|
|
2475
2730
|
this.ariaPressed = input(void 0, ...ngDevMode ? [{ debugName: "ariaPressed" }] : /* istanbul ignore next */ []);
|
|
2731
|
+
this.ariaDescribedBy = input(void 0, ...ngDevMode ? [{ debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []);
|
|
2476
2732
|
}
|
|
2477
2733
|
static {
|
|
2478
2734
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -2569,6 +2825,13 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2569
2825
|
isRequired: false,
|
|
2570
2826
|
transformFunction: null
|
|
2571
2827
|
},
|
|
2828
|
+
ariaDescribedBy: {
|
|
2829
|
+
classPropertyName: "ariaDescribedBy",
|
|
2830
|
+
publicName: "ariaDescribedBy",
|
|
2831
|
+
isSignal: true,
|
|
2832
|
+
isRequired: false,
|
|
2833
|
+
transformFunction: null
|
|
2834
|
+
},
|
|
2572
2835
|
_footerLeft: {
|
|
2573
2836
|
classPropertyName: "_footerLeft",
|
|
2574
2837
|
publicName: "modal-footer-left",
|
|
@@ -2595,6 +2858,7 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2595
2858
|
[attr.aria-label]="ariaLabel()"
|
|
2596
2859
|
[attr.aria-expanded]="ariaExpanded()"
|
|
2597
2860
|
[attr.aria-pressed]="ariaPressed()"
|
|
2861
|
+
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2598
2862
|
[style.background]="color() || null"
|
|
2599
2863
|
[style.border-color]="color() || null"
|
|
2600
2864
|
>
|
|
@@ -2631,6 +2895,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2631
2895
|
[attr.aria-label]="ariaLabel()"
|
|
2632
2896
|
[attr.aria-expanded]="ariaExpanded()"
|
|
2633
2897
|
[attr.aria-pressed]="ariaPressed()"
|
|
2898
|
+
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2634
2899
|
[style.background]="color() || null"
|
|
2635
2900
|
[style.border-color]="color() || null"
|
|
2636
2901
|
>
|
|
@@ -2732,6 +2997,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2732
2997
|
required: false
|
|
2733
2998
|
}]
|
|
2734
2999
|
}],
|
|
3000
|
+
ariaDescribedBy: [{
|
|
3001
|
+
type: i0.Input,
|
|
3002
|
+
args: [{
|
|
3003
|
+
isSignal: true,
|
|
3004
|
+
alias: "ariaDescribedBy",
|
|
3005
|
+
required: false
|
|
3006
|
+
}]
|
|
3007
|
+
}],
|
|
2735
3008
|
_footerLeft: [{
|
|
2736
3009
|
type: Input,
|
|
2737
3010
|
args: ["modal-footer-left"]
|
|
@@ -2742,85 +3015,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2742
3015
|
}]
|
|
2743
3016
|
}
|
|
2744
3017
|
});
|
|
2745
|
-
var UiFieldValidity = class {};
|
|
2746
|
-
function issueToErrors(issue) {
|
|
2747
|
-
return issue ? { [issue.key]: issue.value ?? true } : null;
|
|
2748
|
-
}
|
|
2749
|
-
function requiredIssue(label) {
|
|
2750
|
-
return {
|
|
2751
|
-
key: "required",
|
|
2752
|
-
message: `${label.trim() || "This field"} is required.`
|
|
2753
|
-
};
|
|
2754
|
-
}
|
|
2755
|
-
function maxLengthIssue(text, max) {
|
|
2756
|
-
if (max == null || max < 0 || text.length <= max) return null;
|
|
2757
|
-
return {
|
|
2758
|
-
key: "maxlength",
|
|
2759
|
-
message: `Too long (max ${max} characters).`,
|
|
2760
|
-
value: {
|
|
2761
|
-
requiredLength: max,
|
|
2762
|
-
actualLength: text.length
|
|
2763
|
-
}
|
|
2764
|
-
};
|
|
2765
|
-
}
|
|
2766
|
-
function createFieldReveal(showErrors) {
|
|
2767
|
-
const touched = signal(false, ...ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []);
|
|
2768
|
-
let previous = false;
|
|
2769
|
-
effect(() => {
|
|
2770
|
-
const show = showErrors();
|
|
2771
|
-
if (previous && !show) touched.set(false);
|
|
2772
|
-
previous = show;
|
|
2773
|
-
});
|
|
2774
|
-
return {
|
|
2775
|
-
touched,
|
|
2776
|
-
revealed: computed(() => touched() || showErrors())
|
|
2777
|
-
};
|
|
2778
|
-
}
|
|
2779
|
-
const MONTHS = [
|
|
2780
|
-
"Jan",
|
|
2781
|
-
"Feb",
|
|
2782
|
-
"Mar",
|
|
2783
|
-
"Apr",
|
|
2784
|
-
"May",
|
|
2785
|
-
"Jun",
|
|
2786
|
-
"Jul",
|
|
2787
|
-
"Aug",
|
|
2788
|
-
"Sep",
|
|
2789
|
-
"Oct",
|
|
2790
|
-
"Nov",
|
|
2791
|
-
"Dec"
|
|
2792
|
-
];
|
|
2793
|
-
function parseIso(value, withTime) {
|
|
2794
|
-
const m = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::\d{2}(?:\.\d+)?)?)?$/.exec(value.trim());
|
|
2795
|
-
if (!m) return null;
|
|
2796
|
-
if (withTime && m[4] === void 0) return null;
|
|
2797
|
-
if (!withTime && m[4] !== void 0) return null;
|
|
2798
|
-
const y = Number(m[1]), mo = Number(m[2]), d = Number(m[3]);
|
|
2799
|
-
const h = m[4] === void 0 ? 0 : Number(m[4]);
|
|
2800
|
-
const mi = m[5] === void 0 ? 0 : Number(m[5]);
|
|
2801
|
-
if (mo < 1 || mo > 12 || d < 1 || d > new Date(Date.UTC(y, mo, 0)).getUTCDate()) return null;
|
|
2802
|
-
if (h > 23 || mi > 59) return null;
|
|
2803
|
-
return {
|
|
2804
|
-
y,
|
|
2805
|
-
mo,
|
|
2806
|
-
d,
|
|
2807
|
-
h,
|
|
2808
|
-
mi
|
|
2809
|
-
};
|
|
2810
|
-
}
|
|
2811
|
-
function formatIsoDate(value) {
|
|
2812
|
-
const p = parseIso(value, false);
|
|
2813
|
-
return p ? `${MONTHS[p.mo - 1]} ${p.d}, ${p.y}` : value;
|
|
2814
|
-
}
|
|
2815
|
-
function formatIsoDateTime(value) {
|
|
2816
|
-
const p = parseIso(value, true);
|
|
2817
|
-
if (!p) return value;
|
|
2818
|
-
const hour = p.h % 12 === 0 ? 12 : p.h % 12;
|
|
2819
|
-
return `${MONTHS[p.mo - 1]} ${p.d}, ${p.y}, ${hour}:${String(p.mi).padStart(2, "0")} ${p.h < 12 ? "AM" : "PM"}`;
|
|
2820
|
-
}
|
|
2821
|
-
function isoKey(p) {
|
|
2822
|
-
return (((p.y * 100 + p.mo) * 100 + p.d) * 100 + p.h) * 100 + p.mi;
|
|
2823
|
-
}
|
|
2824
3018
|
var TextInputComponent = class TextInputComponent {
|
|
2825
3019
|
static {
|
|
2826
3020
|
this._EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -3399,7 +3593,7 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
3399
3593
|
this.additionalDropdownButtons = computed(() => this._allowedButtons().filter((b) => !b.variant && !b.hidden && b.type !== "import" && b.type !== "export").sort((a, b) => a.label.localeCompare(b.label, void 0, { sensitivity: "base" })), ...ngDevMode ? [{ debugName: "additionalDropdownButtons" }] : /* istanbul ignore next */ []);
|
|
3400
3594
|
this.showSavedViewsItem = computed(() => this.showSavedViews() && (!this.readOnly() || this.savedViews().length > 0), ...ngDevMode ? [{ debugName: "showSavedViewsItem" }] : /* istanbul ignore next */ []);
|
|
3401
3595
|
this.hasMoreItems = computed(() => !!this.exportDropdownButton() || !!this.importButton() || !this.readOnly() || this.showSavedViewsItem() || this.additionalDropdownButtons().length > 0, ...ngDevMode ? [{ debugName: "hasMoreItems" }] : /* istanbul ignore next */ []);
|
|
3402
|
-
this.configurableColumns = computed(() => this.columns().filter((c) => c.key !== this.lockedColumn()), ...ngDevMode ? [{ debugName: "configurableColumns" }] : /* istanbul ignore next */ []);
|
|
3596
|
+
this.configurableColumns = computed(() => this.columns().filter((c) => c.key !== this.lockedColumn() && c.cellType !== "actions"), ...ngDevMode ? [{ debugName: "configurableColumns" }] : /* istanbul ignore next */ []);
|
|
3403
3597
|
this.hiddenCount = computed(() => this.configurableColumns().filter((c) => !this.visibleColumns().includes(c.key)).length, ...ngDevMode ? [{ debugName: "hiddenCount" }] : /* istanbul ignore next */ []);
|
|
3404
3598
|
this.activeViewName = computed(() => this.savedViews().find((v) => v.id === this.activeViewId())?.name ?? "", ...ngDevMode ? [{ debugName: "activeViewName" }] : /* istanbul ignore next */ []);
|
|
3405
3599
|
this.sortedViews = computed(() => {
|
|
@@ -3416,7 +3610,7 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
3416
3610
|
this._pendingCols.update((cols) => cols.includes(key) ? cols.filter((k) => k !== key) : [...cols, key]);
|
|
3417
3611
|
}
|
|
3418
3612
|
applyColumns() {
|
|
3419
|
-
this.visibleColumnsChange.emit(this._pendingCols());
|
|
3613
|
+
this.visibleColumnsChange.emit(this._pendingCols().filter((k) => !this.columns().some((c) => c.key === k && c.cellType === "actions")));
|
|
3420
3614
|
this.colModalOpen.set(false);
|
|
3421
3615
|
}
|
|
3422
3616
|
closeColModal() {
|
|
@@ -3757,9 +3951,14 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
3757
3951
|
"ariaLabel",
|
|
3758
3952
|
"indeterminate",
|
|
3759
3953
|
"checked",
|
|
3954
|
+
"required",
|
|
3955
|
+
"requiredMessage",
|
|
3956
|
+
"hint",
|
|
3957
|
+
"error",
|
|
3958
|
+
"showErrors",
|
|
3760
3959
|
"disabled"
|
|
3761
3960
|
],
|
|
3762
|
-
outputs: ["checkedChange"]
|
|
3961
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
3763
3962
|
},
|
|
3764
3963
|
{
|
|
3765
3964
|
kind: "component",
|
|
@@ -3777,6 +3976,7 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
3777
3976
|
"ariaLabel",
|
|
3778
3977
|
"ariaExpanded",
|
|
3779
3978
|
"ariaPressed",
|
|
3979
|
+
"ariaDescribedBy",
|
|
3780
3980
|
"modal-footer-left",
|
|
3781
3981
|
"modal-footer-right"
|
|
3782
3982
|
]
|
|
@@ -4073,6 +4273,35 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4073
4273
|
}]
|
|
4074
4274
|
}
|
|
4075
4275
|
});
|
|
4276
|
+
function needsEscape(value) {
|
|
4277
|
+
return value.includes(",") || value.includes("\\\\") || value.endsWith("\\");
|
|
4278
|
+
}
|
|
4279
|
+
function encodeFilterValue(value) {
|
|
4280
|
+
return needsEscape(value) ? value.replace(/\\/g, "\\\\").replace(/,/g, "\\,") : value;
|
|
4281
|
+
}
|
|
4282
|
+
function encodeFilterValues(values) {
|
|
4283
|
+
return values.map(encodeFilterValue).join(",");
|
|
4284
|
+
}
|
|
4285
|
+
function decodeFilterValues(raw) {
|
|
4286
|
+
const out = [];
|
|
4287
|
+
let current = "";
|
|
4288
|
+
for (let i = 0; i < raw.length; i++) {
|
|
4289
|
+
const ch = raw[i];
|
|
4290
|
+
if (ch === "\\" && (raw[i + 1] === "," || raw[i + 1] === "\\")) {
|
|
4291
|
+
current += raw[i + 1];
|
|
4292
|
+
i++;
|
|
4293
|
+
continue;
|
|
4294
|
+
}
|
|
4295
|
+
if (ch === ",") {
|
|
4296
|
+
out.push(current);
|
|
4297
|
+
current = "";
|
|
4298
|
+
continue;
|
|
4299
|
+
}
|
|
4300
|
+
current += ch;
|
|
4301
|
+
}
|
|
4302
|
+
out.push(current);
|
|
4303
|
+
return out.map((v) => v.trim()).filter(Boolean);
|
|
4304
|
+
}
|
|
4076
4305
|
function getEligibleOptions(options, selectedItems, field) {
|
|
4077
4306
|
if (selectedItems.length === 0) return options;
|
|
4078
4307
|
return options.filter((opt) => !selectedItems.every((item) => String(item[field] ?? "") === opt.value));
|
|
@@ -4349,16 +4578,159 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4349
4578
|
}]
|
|
4350
4579
|
}
|
|
4351
4580
|
});
|
|
4581
|
+
let nextTooltipId = 0;
|
|
4582
|
+
var TooltipDirective = class TooltipDirective {
|
|
4583
|
+
constructor() {
|
|
4584
|
+
this.uiTooltip = input("", ...ngDevMode ? [{ debugName: "uiTooltip" }] : /* istanbul ignore next */ []);
|
|
4585
|
+
this.tooltipPosition = input("top", ...ngDevMode ? [{ debugName: "tooltipPosition" }] : /* istanbul ignore next */ []);
|
|
4586
|
+
this.host = inject(ElementRef).nativeElement;
|
|
4587
|
+
this.doc = inject(DOCUMENT);
|
|
4588
|
+
this.bubble = null;
|
|
4589
|
+
this.id = `ui-tooltip-${nextTooltipId++}`;
|
|
4590
|
+
inject(DestroyRef).onDestroy(() => this.hide());
|
|
4591
|
+
}
|
|
4592
|
+
show() {
|
|
4593
|
+
const text = this.uiTooltip();
|
|
4594
|
+
if (!text || this.bubble) return;
|
|
4595
|
+
const el = this.doc.createElement("div");
|
|
4596
|
+
el.id = this.id;
|
|
4597
|
+
el.setAttribute("role", "tooltip");
|
|
4598
|
+
el.textContent = text;
|
|
4599
|
+
Object.assign(el.style, {
|
|
4600
|
+
position: "fixed",
|
|
4601
|
+
zIndex: "10000",
|
|
4602
|
+
maxWidth: "280px",
|
|
4603
|
+
padding: "6px 10px",
|
|
4604
|
+
background: "#0f172a",
|
|
4605
|
+
color: "#fff",
|
|
4606
|
+
fontSize: "0.75rem",
|
|
4607
|
+
lineHeight: "1.4",
|
|
4608
|
+
borderRadius: "6px",
|
|
4609
|
+
boxShadow: "0 4px 12px rgba(15,23,42,.25)",
|
|
4610
|
+
whiteSpace: "pre-line",
|
|
4611
|
+
pointerEvents: "none",
|
|
4612
|
+
visibility: "hidden"
|
|
4613
|
+
});
|
|
4614
|
+
this.doc.body.appendChild(el);
|
|
4615
|
+
this.bubble = el;
|
|
4616
|
+
this.host.setAttribute("aria-describedby", this.id);
|
|
4617
|
+
const r = this.host.getBoundingClientRect();
|
|
4618
|
+
const b = el.getBoundingClientRect();
|
|
4619
|
+
const gap = 6;
|
|
4620
|
+
let top = this.tooltipPosition() === "top" ? r.top - b.height - gap : r.bottom + gap;
|
|
4621
|
+
if (top < 4) top = r.bottom + gap;
|
|
4622
|
+
else if (top + b.height > window.innerHeight - 4) top = r.top - b.height - gap;
|
|
4623
|
+
const left = Math.min(Math.max(4, r.left + r.width / 2 - b.width / 2), window.innerWidth - b.width - 4);
|
|
4624
|
+
el.style.top = `${top}px`;
|
|
4625
|
+
el.style.left = `${left}px`;
|
|
4626
|
+
el.style.visibility = "visible";
|
|
4627
|
+
}
|
|
4628
|
+
hide() {
|
|
4629
|
+
this.bubble?.remove();
|
|
4630
|
+
this.bubble = null;
|
|
4631
|
+
this.host.removeAttribute("aria-describedby");
|
|
4632
|
+
}
|
|
4633
|
+
static {
|
|
4634
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
4635
|
+
minVersion: "12.0.0",
|
|
4636
|
+
version: "22.2.2",
|
|
4637
|
+
ngImport: i0,
|
|
4638
|
+
type: TooltipDirective,
|
|
4639
|
+
deps: [],
|
|
4640
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
4641
|
+
});
|
|
4642
|
+
}
|
|
4643
|
+
static {
|
|
4644
|
+
this.ɵdir = i0.ɵɵngDeclareDirective({
|
|
4645
|
+
minVersion: "17.1.0",
|
|
4646
|
+
version: "22.2.2",
|
|
4647
|
+
type: TooltipDirective,
|
|
4648
|
+
isStandalone: true,
|
|
4649
|
+
selector: "[uiTooltip]",
|
|
4650
|
+
inputs: {
|
|
4651
|
+
uiTooltip: {
|
|
4652
|
+
classPropertyName: "uiTooltip",
|
|
4653
|
+
publicName: "uiTooltip",
|
|
4654
|
+
isSignal: true,
|
|
4655
|
+
isRequired: false,
|
|
4656
|
+
transformFunction: null
|
|
4657
|
+
},
|
|
4658
|
+
tooltipPosition: {
|
|
4659
|
+
classPropertyName: "tooltipPosition",
|
|
4660
|
+
publicName: "tooltipPosition",
|
|
4661
|
+
isSignal: true,
|
|
4662
|
+
isRequired: false,
|
|
4663
|
+
transformFunction: null
|
|
4664
|
+
}
|
|
4665
|
+
},
|
|
4666
|
+
host: { listeners: {
|
|
4667
|
+
"mouseenter": "show()",
|
|
4668
|
+
"mouseleave": "hide()",
|
|
4669
|
+
"focusin": "show()",
|
|
4670
|
+
"focusout": "hide()",
|
|
4671
|
+
"keydown.escape": "hide()",
|
|
4672
|
+
"click": "hide()"
|
|
4673
|
+
} },
|
|
4674
|
+
ngImport: i0
|
|
4675
|
+
});
|
|
4676
|
+
}
|
|
4677
|
+
};
|
|
4678
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4679
|
+
minVersion: "12.0.0",
|
|
4680
|
+
version: "22.2.2",
|
|
4681
|
+
ngImport: i0,
|
|
4682
|
+
type: TooltipDirective,
|
|
4683
|
+
decorators: [{
|
|
4684
|
+
type: Directive,
|
|
4685
|
+
args: [{
|
|
4686
|
+
selector: "[uiTooltip]",
|
|
4687
|
+
standalone: true,
|
|
4688
|
+
host: {
|
|
4689
|
+
"(mouseenter)": "show()",
|
|
4690
|
+
"(mouseleave)": "hide()",
|
|
4691
|
+
"(focusin)": "show()",
|
|
4692
|
+
"(focusout)": "hide()",
|
|
4693
|
+
"(keydown.escape)": "hide()",
|
|
4694
|
+
"(click)": "hide()"
|
|
4695
|
+
}
|
|
4696
|
+
}]
|
|
4697
|
+
}],
|
|
4698
|
+
ctorParameters: () => [],
|
|
4699
|
+
propDecorators: {
|
|
4700
|
+
uiTooltip: [{
|
|
4701
|
+
type: i0.Input,
|
|
4702
|
+
args: [{
|
|
4703
|
+
isSignal: true,
|
|
4704
|
+
alias: "uiTooltip",
|
|
4705
|
+
required: false
|
|
4706
|
+
}]
|
|
4707
|
+
}],
|
|
4708
|
+
tooltipPosition: [{
|
|
4709
|
+
type: i0.Input,
|
|
4710
|
+
args: [{
|
|
4711
|
+
isSignal: true,
|
|
4712
|
+
alias: "tooltipPosition",
|
|
4713
|
+
required: false
|
|
4714
|
+
}]
|
|
4715
|
+
}]
|
|
4716
|
+
}
|
|
4717
|
+
});
|
|
4352
4718
|
var ProgressBarComponent = class ProgressBarComponent {
|
|
4353
4719
|
constructor() {
|
|
4354
4720
|
this.value = input(0, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
4355
4721
|
this.max = input(100, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
|
|
4356
4722
|
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
4357
|
-
this.variant = input(
|
|
4723
|
+
this.variant = input(null, ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
4358
4724
|
this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
|
|
4359
4725
|
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
4360
4726
|
this.clampedValue = computed(() => Math.min(Math.max(this.value(), 0), this.max()), ...ngDevMode ? [{ debugName: "clampedValue" }] : /* istanbul ignore next */ []);
|
|
4361
4727
|
this.percent = computed(() => this.max() > 0 ? Math.round(this.clampedValue() / this.max() * 100) : 0, ...ngDevMode ? [{ debugName: "percent" }] : /* istanbul ignore next */ []);
|
|
4728
|
+
this.effectiveVariant = computed(() => {
|
|
4729
|
+
const fixed = this.variant();
|
|
4730
|
+
if (fixed) return fixed;
|
|
4731
|
+
const exact = this.max() > 0 ? this.clampedValue() / this.max() * 100 : 0;
|
|
4732
|
+
return exact <= 25 ? "red" : exact <= 50 ? "amber" : exact <= 75 ? "blue" : "green";
|
|
4733
|
+
}, ...ngDevMode ? [{ debugName: "effectiveVariant" }] : /* istanbul ignore next */ []);
|
|
4362
4734
|
}
|
|
4363
4735
|
static {
|
|
4364
4736
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -4429,13 +4801,20 @@ var ProgressBarComponent = class ProgressBarComponent {
|
|
|
4429
4801
|
[attr.aria-valuemax]="max()"
|
|
4430
4802
|
[attr.aria-valuenow]="clampedValue()"
|
|
4431
4803
|
[attr.aria-label]="ariaLabel() || label() || null"
|
|
4432
|
-
[
|
|
4433
|
-
|
|
4804
|
+
[uiTooltip]="tooltip()"
|
|
4805
|
+
[attr.tabindex]="tooltip() ? 0 : null">
|
|
4806
|
+
<div class="pb-track"><div class="pb-fill" [class]="'pb-fill pb-' + effectiveVariant()" [style.width.%]="percent()"></div></div>
|
|
4434
4807
|
@if (label()) { <span class="pb-label">{{ label() }}</span> }
|
|
4435
4808
|
</div>
|
|
4436
4809
|
`,
|
|
4437
4810
|
isInline: true,
|
|
4438
4811
|
styles: [":host{display:block}.pb{display:flex;align-items:center;gap:8px;min-width:100px}.pb-track{flex:1;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.pb-fill{height:100%;border-radius:3px;transition:width .3s}.pb-blue{background:#3b82f6}.pb-green{background:#16a34a}.pb-amber{background:#f59e0b}.pb-red{background:#ef4444}.pb-slate{background:#94a3b8}.pb-label{font-size:.75rem;font-weight:500;color:#64748b;white-space:nowrap}\n"],
|
|
4812
|
+
dependencies: [{
|
|
4813
|
+
kind: "directive",
|
|
4814
|
+
type: TooltipDirective,
|
|
4815
|
+
selector: "[uiTooltip]",
|
|
4816
|
+
inputs: ["uiTooltip", "tooltipPosition"]
|
|
4817
|
+
}],
|
|
4439
4818
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4440
4819
|
});
|
|
4441
4820
|
}
|
|
@@ -4450,6 +4829,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4450
4829
|
args: [{
|
|
4451
4830
|
selector: "ui-progress-bar",
|
|
4452
4831
|
standalone: true,
|
|
4832
|
+
imports: [TooltipDirective],
|
|
4453
4833
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4454
4834
|
template: `
|
|
4455
4835
|
<div class="pb"
|
|
@@ -4458,8 +4838,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4458
4838
|
[attr.aria-valuemax]="max()"
|
|
4459
4839
|
[attr.aria-valuenow]="clampedValue()"
|
|
4460
4840
|
[attr.aria-label]="ariaLabel() || label() || null"
|
|
4461
|
-
[
|
|
4462
|
-
|
|
4841
|
+
[uiTooltip]="tooltip()"
|
|
4842
|
+
[attr.tabindex]="tooltip() ? 0 : null">
|
|
4843
|
+
<div class="pb-track"><div class="pb-fill" [class]="'pb-fill pb-' + effectiveVariant()" [style.width.%]="percent()"></div></div>
|
|
4463
4844
|
@if (label()) { <span class="pb-label">{{ label() }}</span> }
|
|
4464
4845
|
</div>
|
|
4465
4846
|
`,
|
|
@@ -5789,6 +6170,7 @@ var ImportExportComponent = class ImportExportComponent {
|
|
|
5789
6170
|
"ariaLabel",
|
|
5790
6171
|
"ariaExpanded",
|
|
5791
6172
|
"ariaPressed",
|
|
6173
|
+
"ariaDescribedBy",
|
|
5792
6174
|
"modal-footer-left",
|
|
5793
6175
|
"modal-footer-right"
|
|
5794
6176
|
]
|
|
@@ -6275,6 +6657,7 @@ var ConfirmOutletComponent = class ConfirmOutletComponent {
|
|
|
6275
6657
|
"ariaLabel",
|
|
6276
6658
|
"ariaExpanded",
|
|
6277
6659
|
"ariaPressed",
|
|
6660
|
+
"ariaDescribedBy",
|
|
6278
6661
|
"modal-footer-left",
|
|
6279
6662
|
"modal-footer-right"
|
|
6280
6663
|
]
|
|
@@ -6619,6 +7002,7 @@ var ErrorStateComponent = class ErrorStateComponent {
|
|
|
6619
7002
|
"ariaLabel",
|
|
6620
7003
|
"ariaExpanded",
|
|
6621
7004
|
"ariaPressed",
|
|
7005
|
+
"ariaDescribedBy",
|
|
6622
7006
|
"modal-footer-left",
|
|
6623
7007
|
"modal-footer-right"
|
|
6624
7008
|
]
|
|
@@ -6707,6 +7091,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6707
7091
|
_countLabel(count) {
|
|
6708
7092
|
return count === 1 ? this.itemLabel() : this.itemLabelPlural() || pluralize(this.itemLabel());
|
|
6709
7093
|
}
|
|
7094
|
+
_deleteTitle() {
|
|
7095
|
+
return `Delete ${(this.itemLabelPlural() || pluralize(this.itemLabel())).replace(/(^|\s)(\S)/g, (_m, sp, ch) => sp + ch.toUpperCase())}`;
|
|
7096
|
+
}
|
|
6710
7097
|
_presentKeys(counts) {
|
|
6711
7098
|
return Object.keys(counts).filter((k) => k !== "" && k !== "all" && (counts[k] ?? 0) > 0);
|
|
6712
7099
|
}
|
|
@@ -6724,6 +7111,10 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6724
7111
|
}
|
|
6725
7112
|
return null;
|
|
6726
7113
|
}
|
|
7114
|
+
_configurableKeys(keys) {
|
|
7115
|
+
const actionKeys = new Set(this.columns().filter((c) => c.cellType === "actions").map((c) => c.key));
|
|
7116
|
+
return (keys ?? []).filter((k) => !actionKeys.has(k));
|
|
7117
|
+
}
|
|
6727
7118
|
_rowClickable() {
|
|
6728
7119
|
const listeners = this.rowClick.listeners;
|
|
6729
7120
|
return listeners === void 0 ? true : (listeners?.length ?? 0) > 0;
|
|
@@ -6732,11 +7123,11 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6732
7123
|
const opts = this._getOptionsForField(def.field);
|
|
6733
7124
|
return def.exclude?.length ? opts.filter((o) => !this._isBulkExcluded(def, o.value)) : opts;
|
|
6734
7125
|
}
|
|
6735
|
-
_canBulkMove(def, current, target) {
|
|
7126
|
+
_canBulkMove(def, current, target, row) {
|
|
6736
7127
|
const cur = String(current ?? "");
|
|
6737
7128
|
if (cur === String(target)) return false;
|
|
6738
|
-
if (!def.allowedFrom) return
|
|
6739
|
-
return
|
|
7129
|
+
if (def.allowedFrom && !def.allowedFrom[target]?.includes(cur)) return false;
|
|
7130
|
+
return !def.canChange || row === void 0 || def.canChange(row, String(target));
|
|
6740
7131
|
}
|
|
6741
7132
|
_isBulkExcluded(def, value) {
|
|
6742
7133
|
if (!def.exclude?.length) return false;
|
|
@@ -6752,12 +7143,16 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6752
7143
|
const raw = col.nameFn ? col.nameFn(item) : col.render ? col.render(item) : item[col.key];
|
|
6753
7144
|
return raw == null ? "" : String(raw).trim();
|
|
6754
7145
|
}
|
|
6755
|
-
|
|
7146
|
+
rowAccessibleName(item) {
|
|
6756
7147
|
const name = this.rowName(item);
|
|
7148
|
+
return name ? `${name}${this._rowNameSuffix().get(item) ?? ""}` : "";
|
|
7149
|
+
}
|
|
7150
|
+
selectRowLabel(item) {
|
|
7151
|
+
const name = this.rowAccessibleName(item);
|
|
6757
7152
|
return name ? `Select ${name}` : "Select row";
|
|
6758
7153
|
}
|
|
6759
7154
|
rowActionsLabel(item) {
|
|
6760
|
-
const name = this.
|
|
7155
|
+
const name = this.rowAccessibleName(item);
|
|
6761
7156
|
return name ? `Row actions for ${name}` : "Row actions";
|
|
6762
7157
|
}
|
|
6763
7158
|
toggleSelectAll() {
|
|
@@ -6824,7 +7219,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6824
7219
|
const blockedCount = split.blocked.length;
|
|
6825
7220
|
const skippedNote = blockedCount === 0 ? "" : blockedCount === 1 ? " 1 selected row can't be deleted and will be skipped." : ` ${blockedCount} selected rows can't be deleted and will be skipped.`;
|
|
6826
7221
|
const deleteDefault = {
|
|
6827
|
-
title:
|
|
7222
|
+
title: this._deleteTitle(),
|
|
6828
7223
|
message: `Delete ${count} ${this._countLabel(count)}? This cannot be undone.${skippedNote}`,
|
|
6829
7224
|
confirmLabel: "Delete",
|
|
6830
7225
|
variant: "danger"
|
|
@@ -6989,7 +7384,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
6989
7384
|
}
|
|
6990
7385
|
if (action.startsWith("change-") && targetValue !== void 0) {
|
|
6991
7386
|
const field = action.slice(7);
|
|
6992
|
-
const eligible = selected.filter((item) => def ? this._canBulkMove(def, item[field], targetValue) : String(item[field] ?? "") !== String(targetValue));
|
|
7387
|
+
const eligible = selected.filter((item) => def ? this._canBulkMove(def, item[field], targetValue, item) : String(item[field] ?? "") !== String(targetValue));
|
|
6993
7388
|
return {
|
|
6994
7389
|
eligibleIds: eligible.map((i) => i.id),
|
|
6995
7390
|
skippedCount: selected.length - eligible.length
|
|
@@ -7116,6 +7511,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7116
7511
|
}, ...ngDevMode ? [{ debugName: "_effectiveTabs" }] : /* istanbul ignore next */ []);
|
|
7117
7512
|
this._error = signal(null, ...ngDevMode ? [{ debugName: "_error" }] : /* istanbul ignore next */ []);
|
|
7118
7513
|
this._search = signal("", ...ngDevMode ? [{ debugName: "_search" }] : /* istanbul ignore next */ []);
|
|
7514
|
+
this._searchParam = computed(() => this._search().toLowerCase(), ...ngDevMode ? [{ debugName: "_searchParam" }] : /* istanbul ignore next */ []);
|
|
7119
7515
|
this._page = signal(1, ...ngDevMode ? [{ debugName: "_page" }] : /* istanbul ignore next */ []);
|
|
7120
7516
|
this._sortField = signal(null, ...ngDevMode ? [{ debugName: "_sortField" }] : /* istanbul ignore next */ []);
|
|
7121
7517
|
this._sortDir = signal("asc", ...ngDevMode ? [{ debugName: "_sortDir" }] : /* istanbul ignore next */ []);
|
|
@@ -7131,7 +7527,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7131
7527
|
const vis = this._visibleColumns();
|
|
7132
7528
|
const cols = this.columns();
|
|
7133
7529
|
const numericKeys = this._numericKeys();
|
|
7134
|
-
const base = vis.length ? cols.filter((c) => vis.includes(c.key)) : cols.filter((c) => c.defaultVisible !== false);
|
|
7530
|
+
const base = vis.length ? cols.filter((c) => c.cellType === "actions" || vis.includes(c.key)) : cols.filter((c) => c.defaultVisible !== false);
|
|
7135
7531
|
const dates = [];
|
|
7136
7532
|
const status = [];
|
|
7137
7533
|
const regular = [];
|
|
@@ -7190,7 +7586,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7190
7586
|
this._exportParams = computed(() => {
|
|
7191
7587
|
const params = { ...this._extraParams() };
|
|
7192
7588
|
if (this._search()) {
|
|
7193
|
-
params["search"] = this.
|
|
7589
|
+
params["search"] = this._searchParam();
|
|
7194
7590
|
if (this._searchFields()) params["searchFields"] = this._searchFields();
|
|
7195
7591
|
}
|
|
7196
7592
|
if (this._activeTab()) params["filter"] = this._activeTab();
|
|
@@ -7199,7 +7595,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7199
7595
|
params["direction"] = this._sortDir();
|
|
7200
7596
|
}
|
|
7201
7597
|
const cf = this._colFilterValues();
|
|
7202
|
-
for (const [key, vals] of Object.entries(cf)) if (vals.length > 0) params[key] = vals
|
|
7598
|
+
for (const [key, vals] of Object.entries(cf)) if (vals.length > 0) params[key] = encodeFilterValues(vals);
|
|
7203
7599
|
return params;
|
|
7204
7600
|
}, ...ngDevMode ? [{ debugName: "_exportParams" }] : /* istanbul ignore next */ []);
|
|
7205
7601
|
this._effectiveButtons = computed(() => {
|
|
@@ -7237,6 +7633,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7237
7633
|
const exclude = typeof entry === "string" ? [] : entry.exclude ?? [];
|
|
7238
7634
|
const col = this.columns().find((c) => c.key === key);
|
|
7239
7635
|
const allowedFrom = typeof entry === "string" ? void 0 : entry.allowedFrom;
|
|
7636
|
+
const canChange = typeof entry === "string" ? void 0 : entry.canChange;
|
|
7240
7637
|
return {
|
|
7241
7638
|
type: `change-${key}`,
|
|
7242
7639
|
label: `Change ${col?.label ?? key}`,
|
|
@@ -7244,6 +7641,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7244
7641
|
field: key,
|
|
7245
7642
|
...exclude.length ? { exclude } : {},
|
|
7246
7643
|
...allowedFrom ? { allowedFrom } : {},
|
|
7644
|
+
...canChange ? { canChange } : {},
|
|
7247
7645
|
...confirm ? { confirm } : {}
|
|
7248
7646
|
};
|
|
7249
7647
|
}).filter((def) => !def.field || !def.exclude?.length || this._bulkOptionsFor(def).length > 0), ...ngDevMode ? [{ debugName: "_bulkDefs" }] : /* istanbul ignore next */ []);
|
|
@@ -7261,8 +7659,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7261
7659
|
const allOpts = this._bulkOptionsFor(def);
|
|
7262
7660
|
const selected = this._items().filter((i) => this._selectedIds().has(i["id"]));
|
|
7263
7661
|
const eligible = getEligibleOptions(allOpts, selected, def.field);
|
|
7264
|
-
if (!def.allowedFrom) return eligible;
|
|
7265
|
-
return eligible.filter((o) => selected.some((i) => this._canBulkMove(def, i[def.field], o.value)));
|
|
7662
|
+
if (!def.allowedFrom && !def.canChange) return eligible;
|
|
7663
|
+
return eligible.filter((o) => selected.some((i) => this._canBulkMove(def, i[def.field], o.value, i)));
|
|
7266
7664
|
}, ...ngDevMode ? [{ debugName: "_eligibleBulkOptions" }] : /* istanbul ignore next */ []);
|
|
7267
7665
|
this._allSelected = computed(() => {
|
|
7268
7666
|
const items = this._items();
|
|
@@ -7270,6 +7668,22 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7270
7668
|
return items.length > 0 && items.every((item) => sel.has(item["id"]));
|
|
7271
7669
|
}, ...ngDevMode ? [{ debugName: "_allSelected" }] : /* istanbul ignore next */ []);
|
|
7272
7670
|
this._someSelected = computed(() => this._selectedIds().size > 0 && !this._allSelected(), ...ngDevMode ? [{ debugName: "_someSelected" }] : /* istanbul ignore next */ []);
|
|
7671
|
+
this._rowNameSuffix = computed(() => {
|
|
7672
|
+
const items = this._items();
|
|
7673
|
+
const names = items.map((item) => this.rowName(item));
|
|
7674
|
+
const total = /* @__PURE__ */ new Map();
|
|
7675
|
+
for (const n of names) if (n) total.set(n, (total.get(n) ?? 0) + 1);
|
|
7676
|
+
const seen = /* @__PURE__ */ new Map();
|
|
7677
|
+
const out = /* @__PURE__ */ new Map();
|
|
7678
|
+
items.forEach((item, index) => {
|
|
7679
|
+
const n = names[index];
|
|
7680
|
+
if (!n || (total.get(n) ?? 0) < 2) return;
|
|
7681
|
+
const k = (seen.get(n) ?? 0) + 1;
|
|
7682
|
+
seen.set(n, k);
|
|
7683
|
+
out.set(item, ` (${k} of ${total.get(n)})`);
|
|
7684
|
+
});
|
|
7685
|
+
return out;
|
|
7686
|
+
}, ...ngDevMode ? [{ debugName: "_rowNameSuffix" }] : /* istanbul ignore next */ []);
|
|
7273
7687
|
this._confirmingBulk = false;
|
|
7274
7688
|
this._rowDeleteTarget = signal(null, ...ngDevMode ? [{ debugName: "_rowDeleteTarget" }] : /* istanbul ignore next */ []);
|
|
7275
7689
|
this._rowDeleting = signal(false, ...ngDevMode ? [{ debugName: "_rowDeleting" }] : /* istanbul ignore next */ []);
|
|
@@ -7334,14 +7748,14 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7334
7748
|
this._error.set(null);
|
|
7335
7749
|
let params = new HttpParams({ fromObject: this._extraParams() }).set("page", this._page() - 1).set("size", this.pageSize());
|
|
7336
7750
|
if (this._search()) {
|
|
7337
|
-
params = params.set("search", this.
|
|
7751
|
+
params = params.set("search", this._searchParam());
|
|
7338
7752
|
const searchFields = this._searchFields();
|
|
7339
7753
|
if (searchFields) params = params.set("searchFields", searchFields);
|
|
7340
7754
|
}
|
|
7341
7755
|
if (this._sortField()) params = params.set("sort", this._sortField()).set("direction", this._sortDir());
|
|
7342
7756
|
if (this._activeTab()) params = params.set("filter", this._activeTab());
|
|
7343
7757
|
const cf = this._colFilterValues();
|
|
7344
|
-
for (const [key, vals] of Object.entries(cf)) if (vals.length > 0) params = params.set(key, vals
|
|
7758
|
+
for (const [key, vals] of Object.entries(cf)) if (vals.length > 0) params = params.set(key, encodeFilterValues(vals));
|
|
7345
7759
|
return this.http.get(`${this.config.baseUrl}${this.endpoint()}`, { params }).pipe(catchError(() => {
|
|
7346
7760
|
this._error.set("Something went wrong. Please try again.");
|
|
7347
7761
|
return of(null);
|
|
@@ -7367,7 +7781,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7367
7781
|
_countParams() {
|
|
7368
7782
|
const params = { ...this._extraParams() };
|
|
7369
7783
|
if (this._search()) {
|
|
7370
|
-
params["search"] = this.
|
|
7784
|
+
params["search"] = this._searchParam();
|
|
7371
7785
|
if (this._searchFields()) params["searchFields"] = this._searchFields();
|
|
7372
7786
|
}
|
|
7373
7787
|
return params;
|
|
@@ -7547,13 +7961,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7547
7961
|
}
|
|
7548
7962
|
getState() {
|
|
7549
7963
|
const columnFilters = {};
|
|
7550
|
-
for (const [key, vals] of Object.entries(this._colFilterValues())) if (vals.length > 0) columnFilters[key] = vals
|
|
7964
|
+
for (const [key, vals] of Object.entries(this._colFilterValues())) if (vals.length > 0) columnFilters[key] = encodeFilterValues(vals);
|
|
7551
7965
|
return {
|
|
7552
7966
|
columnFilters,
|
|
7553
7967
|
quickFilter: this._activeTab() || null,
|
|
7554
7968
|
sortField: this._sortField() || null,
|
|
7555
7969
|
sortDir: this._sortField() ? this._sortDir() : null,
|
|
7556
|
-
visibleColumns: this.
|
|
7970
|
+
visibleColumns: this._configurableKeys(this._visibleColumns())
|
|
7557
7971
|
};
|
|
7558
7972
|
}
|
|
7559
7973
|
applyView(view) {
|
|
@@ -7566,7 +7980,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7566
7980
|
this._sortField.set(null);
|
|
7567
7981
|
this._sortDir.set("asc");
|
|
7568
7982
|
}
|
|
7569
|
-
this._visibleColumns.set(
|
|
7983
|
+
this._visibleColumns.set(this._configurableKeys(view.visibleColumns));
|
|
7570
7984
|
if (view.columnFilters && typeof view.columnFilters === "object") this._colFilterValues.set(this._restorableColumnFilters(view.columnFilters));
|
|
7571
7985
|
this.resetToFirstPage();
|
|
7572
7986
|
}
|
|
@@ -7577,7 +7991,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7577
7991
|
for (const [key, raw] of Object.entries(saved)) {
|
|
7578
7992
|
if (!keys.has(key) || typeof raw !== "string") continue;
|
|
7579
7993
|
const known = Object.keys(counts[key] ?? {});
|
|
7580
|
-
let vals = raw
|
|
7994
|
+
let vals = decodeFilterValues(raw);
|
|
7581
7995
|
if (known.length > 0) vals = vals.filter((v) => known.includes(v));
|
|
7582
7996
|
if (vals.length > 0) out[key] = vals;
|
|
7583
7997
|
}
|
|
@@ -7630,7 +8044,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7630
8044
|
_rowActions(col, item) {
|
|
7631
8045
|
const actions = col.actionsFn?.(item) ?? [];
|
|
7632
8046
|
if (this._canEdit()) return actions;
|
|
7633
|
-
const visible = actions.filter((a) => a.type === "view");
|
|
8047
|
+
const visible = actions.filter((a) => a.type === "view" || a.allowReadOnly === true && a.type !== "delete");
|
|
7634
8048
|
return visible.length === actions.length ? actions : visible;
|
|
7635
8049
|
}
|
|
7636
8050
|
async onTableRowAction(type, col, item) {
|
|
@@ -7731,6 +8145,15 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7731
8145
|
return "";
|
|
7732
8146
|
}
|
|
7733
8147
|
}
|
|
8148
|
+
imagePosition(col, item) {
|
|
8149
|
+
try {
|
|
8150
|
+
const p = col.imagePositionFn?.(item);
|
|
8151
|
+
const clamp = (n) => typeof n === "number" && Number.isFinite(n) ? Math.min(100, Math.max(0, n)) : 50;
|
|
8152
|
+
return `${clamp(p?.x)}% ${clamp(p?.y)}%`;
|
|
8153
|
+
} catch {
|
|
8154
|
+
return "50% 50%";
|
|
8155
|
+
}
|
|
8156
|
+
}
|
|
7734
8157
|
imageClass(col, small) {
|
|
7735
8158
|
const size = small ? "sm" : col.imageSize ?? "md";
|
|
7736
8159
|
return `dt-img-${col.imageShape ?? "circle"}-${size}`;
|
|
@@ -8051,7 +8474,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8051
8474
|
[readOnly]="!_canEdit()"
|
|
8052
8475
|
[tableButtons]="_toolbarButtons()"
|
|
8053
8476
|
[hideMoreActions]="_emptyUnfiltered() && !_keepMoreActions()"
|
|
8054
|
-
(visibleColumnsChange)="_visibleColumns.set($event)"
|
|
8477
|
+
(visibleColumnsChange)="_visibleColumns.set(_configurableKeys($event))"
|
|
8055
8478
|
(saveViewClick)="onSaveViewClick($event)"
|
|
8056
8479
|
(loadViewClick)="onLoadViewClick($event)"
|
|
8057
8480
|
(deleteViewClick)="onDeleteViewClick($event)"
|
|
@@ -8096,7 +8519,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8096
8519
|
@let imgClass = imageClass(col, !!small);
|
|
8097
8520
|
@if (imgUrl && !_failedImages().has(imgUrl)) {
|
|
8098
8521
|
<img [class]="imgClass + ' dt-img'" [src]="imgUrl" [attr.alt]="imageAlt(col, item)"
|
|
8099
|
-
loading="lazy" decoding="async" (error)="onImageError(imgUrl)" />
|
|
8522
|
+
[style.object-position]="imagePosition(col, item)" loading="lazy" decoding="async" (error)="onImageError(imgUrl)" />
|
|
8100
8523
|
} @else {
|
|
8101
8524
|
<span [class]="imgClass + ' dt-img-ph'" aria-hidden="true">
|
|
8102
8525
|
@if (col.imagePlaceholder === 'person') {
|
|
@@ -8127,6 +8550,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8127
8550
|
<th
|
|
8128
8551
|
scope="col"
|
|
8129
8552
|
[style.text-align]="col.headerAlign ?? (col.cellType === 'number' ? 'right' : 'center')"
|
|
8553
|
+
[style.width]="col.width ?? null"
|
|
8554
|
+
[style.min-width]="col.width ?? null"
|
|
8555
|
+
[style.max-width]="col.width ?? null"
|
|
8130
8556
|
[attr.aria-sort]="_isSortable(col) ? sortAriaLabel(col.key) : null"
|
|
8131
8557
|
[class.dt-th-sorted]="_sortField() === col.key"
|
|
8132
8558
|
[class.dt-th-actions]="col.cellType === 'actions'">
|
|
@@ -8227,6 +8653,10 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8227
8653
|
@for (col of visibleCols(); track col.key) {
|
|
8228
8654
|
<td
|
|
8229
8655
|
[style.text-align]="resolveCellAlign(col, item)"
|
|
8656
|
+
[style.width]="col.width ?? null"
|
|
8657
|
+
[style.min-width]="col.width ?? null"
|
|
8658
|
+
[style.max-width]="col.width ?? null"
|
|
8659
|
+
[class.dt-td-width]="!!col.width && col.cellType !== 'actions'"
|
|
8230
8660
|
[class.dt-td-actions]="col.cellType === 'actions'">
|
|
8231
8661
|
|
|
8232
8662
|
@switch (col.cellType) {
|
|
@@ -8274,7 +8704,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8274
8704
|
@let pCfg = col.progressFn ? col.progressFn(item) : null;
|
|
8275
8705
|
@if (pCfg) {
|
|
8276
8706
|
<ui-progress-bar [value]="pCfg.value" [max]="pCfg.max" [label]="pCfg.label ?? ''"
|
|
8277
|
-
[variant]="pCfg.variant ??
|
|
8707
|
+
[variant]="pCfg.variant ?? null" [tooltip]="pCfg.tooltip ?? ''" />
|
|
8278
8708
|
} @else { <span class="dt-none">—</span> }
|
|
8279
8709
|
}
|
|
8280
8710
|
|
|
@@ -8564,7 +8994,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8564
8994
|
</div>
|
|
8565
8995
|
`,
|
|
8566
8996
|
isInline: true,
|
|
8567
|
-
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}.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-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{
|
|
8997
|
+
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-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-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-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: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"],
|
|
8568
8998
|
dependencies: [
|
|
8569
8999
|
{
|
|
8570
9000
|
kind: "directive",
|
|
@@ -8750,6 +9180,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8750
9180
|
"ariaLabel",
|
|
8751
9181
|
"ariaExpanded",
|
|
8752
9182
|
"ariaPressed",
|
|
9183
|
+
"ariaDescribedBy",
|
|
8753
9184
|
"modal-footer-left",
|
|
8754
9185
|
"modal-footer-right"
|
|
8755
9186
|
]
|
|
@@ -8763,9 +9194,14 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8763
9194
|
"ariaLabel",
|
|
8764
9195
|
"indeterminate",
|
|
8765
9196
|
"checked",
|
|
9197
|
+
"required",
|
|
9198
|
+
"requiredMessage",
|
|
9199
|
+
"hint",
|
|
9200
|
+
"error",
|
|
9201
|
+
"showErrors",
|
|
8766
9202
|
"disabled"
|
|
8767
9203
|
],
|
|
8768
|
-
outputs: ["checkedChange"]
|
|
9204
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
8769
9205
|
},
|
|
8770
9206
|
{
|
|
8771
9207
|
kind: "component",
|
|
@@ -8947,7 +9383,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8947
9383
|
[readOnly]="!_canEdit()"
|
|
8948
9384
|
[tableButtons]="_toolbarButtons()"
|
|
8949
9385
|
[hideMoreActions]="_emptyUnfiltered() && !_keepMoreActions()"
|
|
8950
|
-
(visibleColumnsChange)="_visibleColumns.set($event)"
|
|
9386
|
+
(visibleColumnsChange)="_visibleColumns.set(_configurableKeys($event))"
|
|
8951
9387
|
(saveViewClick)="onSaveViewClick($event)"
|
|
8952
9388
|
(loadViewClick)="onLoadViewClick($event)"
|
|
8953
9389
|
(deleteViewClick)="onDeleteViewClick($event)"
|
|
@@ -8992,7 +9428,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8992
9428
|
@let imgClass = imageClass(col, !!small);
|
|
8993
9429
|
@if (imgUrl && !_failedImages().has(imgUrl)) {
|
|
8994
9430
|
<img [class]="imgClass + ' dt-img'" [src]="imgUrl" [attr.alt]="imageAlt(col, item)"
|
|
8995
|
-
loading="lazy" decoding="async" (error)="onImageError(imgUrl)" />
|
|
9431
|
+
[style.object-position]="imagePosition(col, item)" loading="lazy" decoding="async" (error)="onImageError(imgUrl)" />
|
|
8996
9432
|
} @else {
|
|
8997
9433
|
<span [class]="imgClass + ' dt-img-ph'" aria-hidden="true">
|
|
8998
9434
|
@if (col.imagePlaceholder === 'person') {
|
|
@@ -9023,6 +9459,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9023
9459
|
<th
|
|
9024
9460
|
scope="col"
|
|
9025
9461
|
[style.text-align]="col.headerAlign ?? (col.cellType === 'number' ? 'right' : 'center')"
|
|
9462
|
+
[style.width]="col.width ?? null"
|
|
9463
|
+
[style.min-width]="col.width ?? null"
|
|
9464
|
+
[style.max-width]="col.width ?? null"
|
|
9026
9465
|
[attr.aria-sort]="_isSortable(col) ? sortAriaLabel(col.key) : null"
|
|
9027
9466
|
[class.dt-th-sorted]="_sortField() === col.key"
|
|
9028
9467
|
[class.dt-th-actions]="col.cellType === 'actions'">
|
|
@@ -9123,6 +9562,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9123
9562
|
@for (col of visibleCols(); track col.key) {
|
|
9124
9563
|
<td
|
|
9125
9564
|
[style.text-align]="resolveCellAlign(col, item)"
|
|
9565
|
+
[style.width]="col.width ?? null"
|
|
9566
|
+
[style.min-width]="col.width ?? null"
|
|
9567
|
+
[style.max-width]="col.width ?? null"
|
|
9568
|
+
[class.dt-td-width]="!!col.width && col.cellType !== 'actions'"
|
|
9126
9569
|
[class.dt-td-actions]="col.cellType === 'actions'">
|
|
9127
9570
|
|
|
9128
9571
|
@switch (col.cellType) {
|
|
@@ -9170,7 +9613,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9170
9613
|
@let pCfg = col.progressFn ? col.progressFn(item) : null;
|
|
9171
9614
|
@if (pCfg) {
|
|
9172
9615
|
<ui-progress-bar [value]="pCfg.value" [max]="pCfg.max" [label]="pCfg.label ?? ''"
|
|
9173
|
-
[variant]="pCfg.variant ??
|
|
9616
|
+
[variant]="pCfg.variant ?? null" [tooltip]="pCfg.tooltip ?? ''" />
|
|
9174
9617
|
} @else { <span class="dt-none">—</span> }
|
|
9175
9618
|
}
|
|
9176
9619
|
|
|
@@ -9459,7 +9902,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9459
9902
|
}
|
|
9460
9903
|
</div>
|
|
9461
9904
|
`,
|
|
9462
|
-
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}.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-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{
|
|
9905
|
+
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-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-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-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: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"]
|
|
9463
9906
|
}]
|
|
9464
9907
|
}],
|
|
9465
9908
|
ctorParameters: () => [],
|
|
@@ -9939,7 +10382,7 @@ var SidePanelComponent = class SidePanelComponent {
|
|
|
9939
10382
|
}
|
|
9940
10383
|
`,
|
|
9941
10384
|
isInline: true,
|
|
9942
|
-
styles: [".sp-backdrop{position:fixed;inset:0;background:#0000004d;z-index:90;animation:sp-fade .2s ease}.sp-panel{position:fixed;top:0;right:0;bottom:var(--ui-kb, 0px);width:480px;max-width:100vw;max-height:var(--ui-vvh, 100dvh);background:#fff;z-index:100;box-shadow:-4px 0 20px #0000001a;display:flex;flex-direction:column;animation:sp-slide .25s ease}.sp-panel:focus{outline:none}.sp-wide{width:620px}.sp-extra-wide{width:760px}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 20px;gap:12px;flex-shrink:0;background:linear-gradient(135deg,#1e293b,#334155)}.sp-header-text{flex:1;min-width:0}.sp-title{font-size:1.125rem;font-weight:700;color:#fff;margin:0}.sp-subtitle{font-size:.8125rem;color:#94a3b8;margin:4px 0 0}.sp-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;cursor:pointer;color:#cbd5e1;transition:background .15s,border-color .15s}.sp-close:hover{background:#fff3;border-color:#ffffff4d;color:#fff}.sp-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-body{padding:20px 24px 24px;flex:1;overflow-y:auto;overflow-x:hidden}.sp-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid #e2e8f0;background:#f8fafc}.sp-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;border-radius:7px;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,opacity .1s}.sp-btn:disabled{opacity:.5;cursor:default}.sp-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-btn-cancel{background:#fff;border:1px solid #e2e8f0;color:#475569}.sp-btn-cancel:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.sp-btn-primary{background:#3b82f6;border:1px solid #3b82f6;color:#fff}.sp-btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.sp-btn-danger{background:#dc2626;border:1px solid #dc2626;color:#fff}.sp-btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.sp-btn-warning{background:#d97706;border:1px solid #d97706;color:#fff}.sp-btn-warning:hover:not(:disabled){background:#b45309;border-color:#b45309}.sp-spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:sp-spin .55s linear infinite;flex-shrink:0}@media(max-width:768px){.sp-panel,.sp-wide,.sp-extra-wide{width:100vw}}@media(max-width:480px){.sp-panel,.sp-wide,.sp-extra-wide{inset:auto 0 0;width:100vw;max-height:min(90dvh,var(--ui-vvh, 100dvh));border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #00000026;animation:sp-up .25s ease}.sp-header{padding:16px 16px 14px}.sp-body{padding:16px}.sp-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}}@keyframes sp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes sp-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sp-fade{0%{opacity:0}to{opacity:1}}@keyframes sp-spin{to{transform:rotate(360deg)}}\n"],
|
|
10385
|
+
styles: [".sp-backdrop{position:fixed;inset:0;background:#0000004d;z-index:90;animation:sp-fade .2s ease}.sp-panel{position:fixed;top:0;right:0;bottom:var(--ui-kb, 0px);width:480px;max-width:100vw;max-height:var(--ui-vvh, 100dvh);background:#fff;z-index:100;box-shadow:-4px 0 20px #0000001a;display:flex;flex-direction:column;animation:sp-slide .25s ease}.sp-panel:focus{outline:none}.sp-wide{width:620px}.sp-extra-wide{width:760px}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 20px;gap:12px;flex-shrink:0;background:linear-gradient(135deg,#1e293b,#334155)}.sp-header-text{flex:1;min-width:0}.sp-title{font-size:1.125rem;font-weight:700;color:#fff;margin:0}.sp-subtitle{font-size:.8125rem;color:#94a3b8;margin:4px 0 0}.sp-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;cursor:pointer;color:#cbd5e1;transition:background .15s,border-color .15s}.sp-close:hover{background:#fff3;border-color:#ffffff4d;color:#fff}.sp-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-body{padding:20px 24px 24px;flex:1;overflow-y:auto;overflow-x:hidden}.sp-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid #e2e8f0;background:#f8fafc}.sp-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;border-radius:7px;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,opacity .1s}.sp-btn:disabled{opacity:.5;cursor:default}.sp-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-btn-cancel{background:#fff;border:1px solid #e2e8f0;color:#475569}.sp-btn-cancel:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.sp-btn-primary{background:#3b82f6;border:1px solid #3b82f6;color:#fff}.sp-btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.sp-btn-danger{background:#dc2626;border:1px solid #dc2626;color:#fff}.sp-btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.sp-btn-warning{background:#d97706;border:1px solid #d97706;color:#fff}.sp-btn-warning:hover:not(:disabled){background:#b45309;border-color:#b45309}.sp-spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:sp-spin .55s linear infinite;flex-shrink:0}@media(max-width:768px){.sp-panel,.sp-wide,.sp-extra-wide{width:100vw}}@media(max-width:480px){.sp-panel,.sp-wide,.sp-extra-wide{inset:auto 0 0;width:100vw;max-height:min(90dvh,var(--ui-vvh, 100dvh));border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #00000026;animation:sp-up .25s ease}.sp-header{padding:16px 16px 14px}.sp-body{padding:16px}.sp-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}}@media(pointer:coarse),(max-width:480px){.sp-close{position:relative}.sp-close:after{content:\"\";position:absolute;inset:-5px}.sp-btn{min-height:44px;justify-content:center}}@keyframes sp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes sp-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sp-fade{0%{opacity:0}to{opacity:1}}@keyframes sp-spin{to{transform:rotate(360deg)}}\n"],
|
|
9943
10386
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
9944
10387
|
});
|
|
9945
10388
|
}
|
|
@@ -10021,7 +10464,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10021
10464
|
</aside>
|
|
10022
10465
|
}
|
|
10023
10466
|
`,
|
|
10024
|
-
styles: [".sp-backdrop{position:fixed;inset:0;background:#0000004d;z-index:90;animation:sp-fade .2s ease}.sp-panel{position:fixed;top:0;right:0;bottom:var(--ui-kb, 0px);width:480px;max-width:100vw;max-height:var(--ui-vvh, 100dvh);background:#fff;z-index:100;box-shadow:-4px 0 20px #0000001a;display:flex;flex-direction:column;animation:sp-slide .25s ease}.sp-panel:focus{outline:none}.sp-wide{width:620px}.sp-extra-wide{width:760px}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 20px;gap:12px;flex-shrink:0;background:linear-gradient(135deg,#1e293b,#334155)}.sp-header-text{flex:1;min-width:0}.sp-title{font-size:1.125rem;font-weight:700;color:#fff;margin:0}.sp-subtitle{font-size:.8125rem;color:#94a3b8;margin:4px 0 0}.sp-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;cursor:pointer;color:#cbd5e1;transition:background .15s,border-color .15s}.sp-close:hover{background:#fff3;border-color:#ffffff4d;color:#fff}.sp-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-body{padding:20px 24px 24px;flex:1;overflow-y:auto;overflow-x:hidden}.sp-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid #e2e8f0;background:#f8fafc}.sp-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;border-radius:7px;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,opacity .1s}.sp-btn:disabled{opacity:.5;cursor:default}.sp-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-btn-cancel{background:#fff;border:1px solid #e2e8f0;color:#475569}.sp-btn-cancel:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.sp-btn-primary{background:#3b82f6;border:1px solid #3b82f6;color:#fff}.sp-btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.sp-btn-danger{background:#dc2626;border:1px solid #dc2626;color:#fff}.sp-btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.sp-btn-warning{background:#d97706;border:1px solid #d97706;color:#fff}.sp-btn-warning:hover:not(:disabled){background:#b45309;border-color:#b45309}.sp-spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:sp-spin .55s linear infinite;flex-shrink:0}@media(max-width:768px){.sp-panel,.sp-wide,.sp-extra-wide{width:100vw}}@media(max-width:480px){.sp-panel,.sp-wide,.sp-extra-wide{inset:auto 0 0;width:100vw;max-height:min(90dvh,var(--ui-vvh, 100dvh));border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #00000026;animation:sp-up .25s ease}.sp-header{padding:16px 16px 14px}.sp-body{padding:16px}.sp-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}}@keyframes sp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes sp-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sp-fade{0%{opacity:0}to{opacity:1}}@keyframes sp-spin{to{transform:rotate(360deg)}}\n"]
|
|
10467
|
+
styles: [".sp-backdrop{position:fixed;inset:0;background:#0000004d;z-index:90;animation:sp-fade .2s ease}.sp-panel{position:fixed;top:0;right:0;bottom:var(--ui-kb, 0px);width:480px;max-width:100vw;max-height:var(--ui-vvh, 100dvh);background:#fff;z-index:100;box-shadow:-4px 0 20px #0000001a;display:flex;flex-direction:column;animation:sp-slide .25s ease}.sp-panel:focus{outline:none}.sp-wide{width:620px}.sp-extra-wide{width:760px}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 20px;gap:12px;flex-shrink:0;background:linear-gradient(135deg,#1e293b,#334155)}.sp-header-text{flex:1;min-width:0}.sp-title{font-size:1.125rem;font-weight:700;color:#fff;margin:0}.sp-subtitle{font-size:.8125rem;color:#94a3b8;margin:4px 0 0}.sp-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;cursor:pointer;color:#cbd5e1;transition:background .15s,border-color .15s}.sp-close:hover{background:#fff3;border-color:#ffffff4d;color:#fff}.sp-close:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-body{padding:20px 24px 24px;flex:1;overflow-y:auto;overflow-x:hidden}.sp-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid #e2e8f0;background:#f8fafc}.sp-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;border-radius:7px;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,opacity .1s}.sp-btn:disabled{opacity:.5;cursor:default}.sp-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.sp-btn-cancel{background:#fff;border:1px solid #e2e8f0;color:#475569}.sp-btn-cancel:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.sp-btn-primary{background:#3b82f6;border:1px solid #3b82f6;color:#fff}.sp-btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.sp-btn-danger{background:#dc2626;border:1px solid #dc2626;color:#fff}.sp-btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.sp-btn-warning{background:#d97706;border:1px solid #d97706;color:#fff}.sp-btn-warning:hover:not(:disabled){background:#b45309;border-color:#b45309}.sp-spinner{display:inline-block;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:sp-spin .55s linear infinite;flex-shrink:0}@media(max-width:768px){.sp-panel,.sp-wide,.sp-extra-wide{width:100vw}}@media(max-width:480px){.sp-panel,.sp-wide,.sp-extra-wide{inset:auto 0 0;width:100vw;max-height:min(90dvh,var(--ui-vvh, 100dvh));border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #00000026;animation:sp-up .25s ease}.sp-header{padding:16px 16px 14px}.sp-body{padding:16px}.sp-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}}@media(pointer:coarse),(max-width:480px){.sp-close{position:relative}.sp-close:after{content:\"\";position:absolute;inset:-5px}.sp-btn{min-height:44px;justify-content:center}}@keyframes sp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes sp-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sp-fade{0%{opacity:0}to{opacity:1}}@keyframes sp-spin{to{transform:rotate(360deg)}}\n"]
|
|
10025
10468
|
}]
|
|
10026
10469
|
}],
|
|
10027
10470
|
ctorParameters: () => [],
|
|
@@ -10116,30 +10559,120 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10116
10559
|
}]
|
|
10117
10560
|
}
|
|
10118
10561
|
});
|
|
10119
|
-
|
|
10562
|
+
const KEY_STEP = 2;
|
|
10563
|
+
const KEY_STEP_BIG = 10;
|
|
10564
|
+
const clamp = (n) => Math.min(100, Math.max(0, Math.round(n)));
|
|
10565
|
+
var ImageRepositionComponent = class ImageRepositionComponent {
|
|
10120
10566
|
constructor() {
|
|
10121
|
-
this.
|
|
10122
|
-
this.
|
|
10123
|
-
this.
|
|
10567
|
+
this.hintId = `ui-image-reposition-hint-${ImageRepositionComponent.nextId++}`;
|
|
10568
|
+
this.host = inject(ElementRef).nativeElement;
|
|
10569
|
+
this.src = input(null, ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
|
|
10570
|
+
this.alt = input("", ...ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []);
|
|
10571
|
+
this.shape = input("circle", ...ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []);
|
|
10572
|
+
this.label = input("Photo position", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
10573
|
+
this.x = model(50, ...ngDevMode ? [{ debugName: "x" }] : /* istanbul ignore next */ []);
|
|
10574
|
+
this.y = model(50, ...ngDevMode ? [{ debugName: "y" }] : /* istanbul ignore next */ []);
|
|
10575
|
+
this.dragging = signal(false, ...ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []);
|
|
10576
|
+
this.natural = null;
|
|
10577
|
+
this.start = null;
|
|
10578
|
+
}
|
|
10579
|
+
static {
|
|
10580
|
+
this.nextId = 0;
|
|
10581
|
+
}
|
|
10582
|
+
onLoad(e) {
|
|
10583
|
+
const img = e.target;
|
|
10584
|
+
this.natural = {
|
|
10585
|
+
w: img.naturalWidth,
|
|
10586
|
+
h: img.naturalHeight
|
|
10587
|
+
};
|
|
10588
|
+
}
|
|
10589
|
+
overflow(frame) {
|
|
10590
|
+
if (!this.natural || !this.natural.w || !this.natural.h) return {
|
|
10591
|
+
x: 0,
|
|
10592
|
+
y: 0
|
|
10593
|
+
};
|
|
10594
|
+
const scale = Math.max(frame.width / this.natural.w, frame.height / this.natural.h);
|
|
10595
|
+
return {
|
|
10596
|
+
x: Math.max(0, this.natural.w * scale - frame.width),
|
|
10597
|
+
y: Math.max(0, this.natural.h * scale - frame.height)
|
|
10598
|
+
};
|
|
10599
|
+
}
|
|
10600
|
+
onPointerDown(e) {
|
|
10601
|
+
if (!this.src() || e.pointerType === "mouse" && e.button !== 0) return;
|
|
10602
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
10603
|
+
this.start = {
|
|
10604
|
+
px: e.clientX,
|
|
10605
|
+
py: e.clientY,
|
|
10606
|
+
x: this.x(),
|
|
10607
|
+
y: this.y()
|
|
10608
|
+
};
|
|
10609
|
+
this.dragging.set(true);
|
|
10610
|
+
}
|
|
10611
|
+
onPointerMove(e) {
|
|
10612
|
+
if (!this.start) return;
|
|
10613
|
+
const frame = e.currentTarget.getBoundingClientRect();
|
|
10614
|
+
const o = this.overflow(frame);
|
|
10615
|
+
if (o.x > 0) this.x.set(clamp(this.start.x - (e.clientX - this.start.px) / o.x * 100));
|
|
10616
|
+
if (o.y > 0) this.y.set(clamp(this.start.y - (e.clientY - this.start.py) / o.y * 100));
|
|
10617
|
+
}
|
|
10618
|
+
endDrag(e) {
|
|
10619
|
+
if (!this.start) return;
|
|
10620
|
+
e.currentTarget.releasePointerCapture?.(e.pointerId);
|
|
10621
|
+
this.start = null;
|
|
10622
|
+
this.dragging.set(false);
|
|
10623
|
+
}
|
|
10624
|
+
onKeydown(e) {
|
|
10625
|
+
if (!this.src()) return;
|
|
10626
|
+
const step = e.shiftKey ? KEY_STEP_BIG : KEY_STEP;
|
|
10627
|
+
const frame = this.host.querySelector(".ir-frame").getBoundingClientRect();
|
|
10628
|
+
const o = this.overflow(frame);
|
|
10629
|
+
let handled = true;
|
|
10630
|
+
if (e.key === "ArrowLeft" && o.x > 0) this.x.set(clamp(this.x() + step));
|
|
10631
|
+
else if (e.key === "ArrowRight" && o.x > 0) this.x.set(clamp(this.x() - step));
|
|
10632
|
+
else if (e.key === "ArrowUp" && o.y > 0) this.y.set(clamp(this.y() + step));
|
|
10633
|
+
else if (e.key === "ArrowDown" && o.y > 0) this.y.set(clamp(this.y() - step));
|
|
10634
|
+
else handled = e.key.startsWith("Arrow");
|
|
10635
|
+
if (handled) e.preventDefault();
|
|
10124
10636
|
}
|
|
10125
10637
|
static {
|
|
10126
10638
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10127
10639
|
minVersion: "12.0.0",
|
|
10128
10640
|
version: "22.2.2",
|
|
10129
10641
|
ngImport: i0,
|
|
10130
|
-
type:
|
|
10642
|
+
type: ImageRepositionComponent,
|
|
10131
10643
|
deps: [],
|
|
10132
10644
|
target: i0.ɵɵFactoryTarget.Component
|
|
10133
10645
|
});
|
|
10134
10646
|
}
|
|
10135
10647
|
static {
|
|
10136
10648
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10137
|
-
minVersion: "17.
|
|
10649
|
+
minVersion: "17.0.0",
|
|
10138
10650
|
version: "22.2.2",
|
|
10139
|
-
type:
|
|
10651
|
+
type: ImageRepositionComponent,
|
|
10140
10652
|
isStandalone: true,
|
|
10141
|
-
selector: "ui-
|
|
10653
|
+
selector: "ui-image-reposition",
|
|
10142
10654
|
inputs: {
|
|
10655
|
+
src: {
|
|
10656
|
+
classPropertyName: "src",
|
|
10657
|
+
publicName: "src",
|
|
10658
|
+
isSignal: true,
|
|
10659
|
+
isRequired: false,
|
|
10660
|
+
transformFunction: null
|
|
10661
|
+
},
|
|
10662
|
+
alt: {
|
|
10663
|
+
classPropertyName: "alt",
|
|
10664
|
+
publicName: "alt",
|
|
10665
|
+
isSignal: true,
|
|
10666
|
+
isRequired: false,
|
|
10667
|
+
transformFunction: null
|
|
10668
|
+
},
|
|
10669
|
+
shape: {
|
|
10670
|
+
classPropertyName: "shape",
|
|
10671
|
+
publicName: "shape",
|
|
10672
|
+
isSignal: true,
|
|
10673
|
+
isRequired: false,
|
|
10674
|
+
transformFunction: null
|
|
10675
|
+
},
|
|
10143
10676
|
label: {
|
|
10144
10677
|
classPropertyName: "label",
|
|
10145
10678
|
publicName: "label",
|
|
@@ -10147,24 +10680,41 @@ var ToggleBadgeComponent = class ToggleBadgeComponent {
|
|
|
10147
10680
|
isRequired: false,
|
|
10148
10681
|
transformFunction: null
|
|
10149
10682
|
},
|
|
10150
|
-
|
|
10151
|
-
classPropertyName: "
|
|
10152
|
-
publicName: "
|
|
10683
|
+
x: {
|
|
10684
|
+
classPropertyName: "x",
|
|
10685
|
+
publicName: "x",
|
|
10686
|
+
isSignal: true,
|
|
10687
|
+
isRequired: false,
|
|
10688
|
+
transformFunction: null
|
|
10689
|
+
},
|
|
10690
|
+
y: {
|
|
10691
|
+
classPropertyName: "y",
|
|
10692
|
+
publicName: "y",
|
|
10153
10693
|
isSignal: true,
|
|
10154
10694
|
isRequired: false,
|
|
10155
10695
|
transformFunction: null
|
|
10156
10696
|
}
|
|
10157
10697
|
},
|
|
10158
|
-
outputs: {
|
|
10698
|
+
outputs: {
|
|
10699
|
+
x: "xChange",
|
|
10700
|
+
y: "yChange"
|
|
10701
|
+
},
|
|
10159
10702
|
ngImport: i0,
|
|
10160
10703
|
template: `
|
|
10161
|
-
<
|
|
10162
|
-
|
|
10163
|
-
|
|
10164
|
-
|
|
10704
|
+
<div class="ir-frame" [class.ir-circle]="shape() === 'circle'" [class.ir-dragging]="dragging()"
|
|
10705
|
+
role="group" tabindex="0" data-testid="image-reposition-frame"
|
|
10706
|
+
[attr.aria-label]="label()" [attr.aria-describedby]="hintId"
|
|
10707
|
+
(pointerdown)="onPointerDown($event)" (pointermove)="onPointerMove($event)"
|
|
10708
|
+
(pointerup)="endDrag($event)" (pointercancel)="endDrag($event)" (keydown)="onKeydown($event)">
|
|
10709
|
+
@if (src()) {
|
|
10710
|
+
<img class="ir-img" [src]="src()" [attr.alt]="alt()" draggable="false"
|
|
10711
|
+
[style.object-position]="x() + '% ' + y() + '%'" (load)="onLoad($event)" />
|
|
10712
|
+
}
|
|
10713
|
+
</div>
|
|
10714
|
+
<span class="ir-hint" [id]="hintId">Drag the photo, or use the arrow keys, to center it in the frame.</span>
|
|
10165
10715
|
`,
|
|
10166
10716
|
isInline: true,
|
|
10167
|
-
styles: ["
|
|
10717
|
+
styles: [":host{display:inline-flex;flex-direction:column;gap:6px;max-width:100%}.ir-frame{width:160px;height:160px;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0;background:#f1f5f9;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;box-sizing:border-box;flex-shrink:0}.ir-frame:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ir-circle{border-radius:50%}.ir-dragging{cursor:grabbing}.ir-img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.ir-hint{font-size:.75rem;color:#64748b}\n"],
|
|
10168
10718
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
10169
10719
|
});
|
|
10170
10720
|
}
|
|
@@ -10173,23 +10723,54 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10173
10723
|
minVersion: "12.0.0",
|
|
10174
10724
|
version: "22.2.2",
|
|
10175
10725
|
ngImport: i0,
|
|
10176
|
-
type:
|
|
10726
|
+
type: ImageRepositionComponent,
|
|
10177
10727
|
decorators: [{
|
|
10178
10728
|
type: Component,
|
|
10179
10729
|
args: [{
|
|
10180
|
-
selector: "ui-
|
|
10730
|
+
selector: "ui-image-reposition",
|
|
10181
10731
|
standalone: true,
|
|
10182
10732
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10183
10733
|
template: `
|
|
10184
|
-
<
|
|
10185
|
-
|
|
10186
|
-
|
|
10187
|
-
|
|
10734
|
+
<div class="ir-frame" [class.ir-circle]="shape() === 'circle'" [class.ir-dragging]="dragging()"
|
|
10735
|
+
role="group" tabindex="0" data-testid="image-reposition-frame"
|
|
10736
|
+
[attr.aria-label]="label()" [attr.aria-describedby]="hintId"
|
|
10737
|
+
(pointerdown)="onPointerDown($event)" (pointermove)="onPointerMove($event)"
|
|
10738
|
+
(pointerup)="endDrag($event)" (pointercancel)="endDrag($event)" (keydown)="onKeydown($event)">
|
|
10739
|
+
@if (src()) {
|
|
10740
|
+
<img class="ir-img" [src]="src()" [attr.alt]="alt()" draggable="false"
|
|
10741
|
+
[style.object-position]="x() + '% ' + y() + '%'" (load)="onLoad($event)" />
|
|
10742
|
+
}
|
|
10743
|
+
</div>
|
|
10744
|
+
<span class="ir-hint" [id]="hintId">Drag the photo, or use the arrow keys, to center it in the frame.</span>
|
|
10188
10745
|
`,
|
|
10189
|
-
styles: ["
|
|
10746
|
+
styles: [":host{display:inline-flex;flex-direction:column;gap:6px;max-width:100%}.ir-frame{width:160px;height:160px;border-radius:12px;overflow:hidden;border:1px solid #e2e8f0;background:#f1f5f9;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;box-sizing:border-box;flex-shrink:0}.ir-frame:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ir-circle{border-radius:50%}.ir-dragging{cursor:grabbing}.ir-img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.ir-hint{font-size:.75rem;color:#64748b}\n"]
|
|
10190
10747
|
}]
|
|
10191
10748
|
}],
|
|
10192
10749
|
propDecorators: {
|
|
10750
|
+
src: [{
|
|
10751
|
+
type: i0.Input,
|
|
10752
|
+
args: [{
|
|
10753
|
+
isSignal: true,
|
|
10754
|
+
alias: "src",
|
|
10755
|
+
required: false
|
|
10756
|
+
}]
|
|
10757
|
+
}],
|
|
10758
|
+
alt: [{
|
|
10759
|
+
type: i0.Input,
|
|
10760
|
+
args: [{
|
|
10761
|
+
isSignal: true,
|
|
10762
|
+
alias: "alt",
|
|
10763
|
+
required: false
|
|
10764
|
+
}]
|
|
10765
|
+
}],
|
|
10766
|
+
shape: [{
|
|
10767
|
+
type: i0.Input,
|
|
10768
|
+
args: [{
|
|
10769
|
+
isSignal: true,
|
|
10770
|
+
alias: "shape",
|
|
10771
|
+
required: false
|
|
10772
|
+
}]
|
|
10773
|
+
}],
|
|
10193
10774
|
label: [{
|
|
10194
10775
|
type: i0.Input,
|
|
10195
10776
|
args: [{
|
|
@@ -10198,21 +10779,127 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10198
10779
|
required: false
|
|
10199
10780
|
}]
|
|
10200
10781
|
}],
|
|
10201
|
-
|
|
10782
|
+
x: [{
|
|
10202
10783
|
type: i0.Input,
|
|
10203
10784
|
args: [{
|
|
10204
10785
|
isSignal: true,
|
|
10205
|
-
alias: "
|
|
10786
|
+
alias: "x",
|
|
10206
10787
|
required: false
|
|
10207
10788
|
}]
|
|
10789
|
+
}, {
|
|
10790
|
+
type: i0.Output,
|
|
10791
|
+
args: ["xChange"]
|
|
10208
10792
|
}],
|
|
10209
|
-
|
|
10793
|
+
y: [{
|
|
10794
|
+
type: i0.Input,
|
|
10795
|
+
args: [{
|
|
10796
|
+
isSignal: true,
|
|
10797
|
+
alias: "y",
|
|
10798
|
+
required: false
|
|
10799
|
+
}]
|
|
10800
|
+
}, {
|
|
10210
10801
|
type: i0.Output,
|
|
10211
|
-
args: ["
|
|
10802
|
+
args: ["yChange"]
|
|
10212
10803
|
}]
|
|
10213
10804
|
}
|
|
10214
10805
|
});
|
|
10215
|
-
var
|
|
10806
|
+
var ToggleBadgeComponent = class ToggleBadgeComponent {
|
|
10807
|
+
constructor() {
|
|
10808
|
+
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
10809
|
+
this.active = input(false, ...ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []);
|
|
10810
|
+
this.toggle = output();
|
|
10811
|
+
}
|
|
10812
|
+
static {
|
|
10813
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10814
|
+
minVersion: "12.0.0",
|
|
10815
|
+
version: "22.2.2",
|
|
10816
|
+
ngImport: i0,
|
|
10817
|
+
type: ToggleBadgeComponent,
|
|
10818
|
+
deps: [],
|
|
10819
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
10820
|
+
});
|
|
10821
|
+
}
|
|
10822
|
+
static {
|
|
10823
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10824
|
+
minVersion: "17.1.0",
|
|
10825
|
+
version: "22.2.2",
|
|
10826
|
+
type: ToggleBadgeComponent,
|
|
10827
|
+
isStandalone: true,
|
|
10828
|
+
selector: "ui-toggle-badge",
|
|
10829
|
+
inputs: {
|
|
10830
|
+
label: {
|
|
10831
|
+
classPropertyName: "label",
|
|
10832
|
+
publicName: "label",
|
|
10833
|
+
isSignal: true,
|
|
10834
|
+
isRequired: false,
|
|
10835
|
+
transformFunction: null
|
|
10836
|
+
},
|
|
10837
|
+
active: {
|
|
10838
|
+
classPropertyName: "active",
|
|
10839
|
+
publicName: "active",
|
|
10840
|
+
isSignal: true,
|
|
10841
|
+
isRequired: false,
|
|
10842
|
+
transformFunction: null
|
|
10843
|
+
}
|
|
10844
|
+
},
|
|
10845
|
+
outputs: { toggle: "toggle" },
|
|
10846
|
+
ngImport: i0,
|
|
10847
|
+
template: `
|
|
10848
|
+
<button class="toggle-badge" [class.active]="active()" (click)="toggle.emit()">
|
|
10849
|
+
<ng-content />
|
|
10850
|
+
{{ label() }}
|
|
10851
|
+
</button>
|
|
10852
|
+
`,
|
|
10853
|
+
isInline: true,
|
|
10854
|
+
styles: [".toggle-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.75rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:all .15s ease;line-height:1}.toggle-badge:hover{background:#f8fafc;border-color:#94a3b8}.toggle-badge.active{background:#1e293b;color:#fff;border-color:#1e293b}.toggle-badge:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}\n"],
|
|
10855
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
10856
|
+
});
|
|
10857
|
+
}
|
|
10858
|
+
};
|
|
10859
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
10860
|
+
minVersion: "12.0.0",
|
|
10861
|
+
version: "22.2.2",
|
|
10862
|
+
ngImport: i0,
|
|
10863
|
+
type: ToggleBadgeComponent,
|
|
10864
|
+
decorators: [{
|
|
10865
|
+
type: Component,
|
|
10866
|
+
args: [{
|
|
10867
|
+
selector: "ui-toggle-badge",
|
|
10868
|
+
standalone: true,
|
|
10869
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10870
|
+
template: `
|
|
10871
|
+
<button class="toggle-badge" [class.active]="active()" (click)="toggle.emit()">
|
|
10872
|
+
<ng-content />
|
|
10873
|
+
{{ label() }}
|
|
10874
|
+
</button>
|
|
10875
|
+
`,
|
|
10876
|
+
styles: [".toggle-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.75rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:all .15s ease;line-height:1}.toggle-badge:hover{background:#f8fafc;border-color:#94a3b8}.toggle-badge.active{background:#1e293b;color:#fff;border-color:#1e293b}.toggle-badge:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}\n"]
|
|
10877
|
+
}]
|
|
10878
|
+
}],
|
|
10879
|
+
propDecorators: {
|
|
10880
|
+
label: [{
|
|
10881
|
+
type: i0.Input,
|
|
10882
|
+
args: [{
|
|
10883
|
+
isSignal: true,
|
|
10884
|
+
alias: "label",
|
|
10885
|
+
required: false
|
|
10886
|
+
}]
|
|
10887
|
+
}],
|
|
10888
|
+
active: [{
|
|
10889
|
+
type: i0.Input,
|
|
10890
|
+
args: [{
|
|
10891
|
+
isSignal: true,
|
|
10892
|
+
alias: "active",
|
|
10893
|
+
required: false
|
|
10894
|
+
}]
|
|
10895
|
+
}],
|
|
10896
|
+
toggle: [{
|
|
10897
|
+
type: i0.Output,
|
|
10898
|
+
args: ["toggle"]
|
|
10899
|
+
}]
|
|
10900
|
+
}
|
|
10901
|
+
});
|
|
10902
|
+
var PillTabsComponent = class PillTabsComponent {
|
|
10216
10903
|
constructor() {
|
|
10217
10904
|
this.host = inject(ElementRef);
|
|
10218
10905
|
this.tabs = input([], ...ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []);
|
|
@@ -10348,7 +11035,7 @@ var PillTabsComponent = class PillTabsComponent {
|
|
|
10348
11035
|
</div>
|
|
10349
11036
|
`,
|
|
10350
11037
|
isInline: true,
|
|
10351
|
-
styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}\n"],
|
|
11038
|
+
styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"],
|
|
10352
11039
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
10353
11040
|
});
|
|
10354
11041
|
}
|
|
@@ -10394,7 +11081,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10394
11081
|
<span class="pill-fade pill-fade--end" [class.visible]="canScrollEnd()" aria-hidden="true" data-testid="pill-fade-end"></span>
|
|
10395
11082
|
</div>
|
|
10396
11083
|
`,
|
|
10397
|
-
styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}\n"]
|
|
11084
|
+
styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"]
|
|
10398
11085
|
}]
|
|
10399
11086
|
}],
|
|
10400
11087
|
ctorParameters: () => [],
|
|
@@ -10933,7 +11620,7 @@ var ContactPickerComponent = class ContactPickerComponent {
|
|
|
10933
11620
|
</div>
|
|
10934
11621
|
`,
|
|
10935
11622
|
isInline: true,
|
|
10936
|
-
styles: [".picker-wrapper{position:relative;overflow:visible}.picker-label{display:block;font-size:.8125rem;font-weight:600;color:#374151;margin-bottom:6px}.picker-req{color:#ef4444}.picker-hint{margin:6px 0 0;font-size:.75rem;line-height:1.4;color:#64748b}.picker-input{width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.875rem;color:#1e293b;font-family:inherit;outline:none;box-sizing:border-box}.picker-input::placeholder{color:#94a3b8}.picker-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.picker-input:focus-visible{outline:2px solid transparent}@media(max-width:480px){.picker-input{font-size:1rem}}.picker-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 16px #0000001a;max-height:240px;overflow-y:auto}@media(pointer:coarse),(max-width:480px){.picker-input{min-height:44px}.picker-dropdown{max-height:min(240px,40vh);overscroll-behavior:contain}.picker-option{min-height:44px;justify-content:center;box-sizing:border-box}.picker-option--check{min-height:44px}.chip-remove{position:relative}.chip-remove:after{content:\"\";position:absolute;inset:-13px}}.picker-option{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;font-family:inherit}.picker-option:hover,.picker-option.picker-option--active{background:#f8fafc}.picker-option:first-child{border-radius:8px 8px 0 0}.picker-option:last-child{border-radius:0 0 8px 8px}.picker-option--check{flex-direction:row;align-items:center;gap:10px}.picker-option--check .option-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.picker-option--check .option-name,.picker-option--check .option-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-check{display:flex;pointer-events:none}.option-name{font-size:.875rem;font-weight:600;color:#1e293b;overflow-wrap:anywhere}.option-detail{font-size:.75rem;color:#94a3b8;overflow-wrap:anywhere}.picker-loading,.picker-empty{padding:12px;font-size:.8125rem;color:#94a3b8;text-align:center}.selected-input{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:.875rem;font-weight:600;color:#1e293b;gap:8px;overflow-wrap:anywhere;min-width:0}.selected-input:focus{outline:none}.selected-input:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn{width:18px;height:18px;border:none;background:#e2e8f0;border-radius:50%;cursor:pointer;font-size:.75rem;color:#64748b;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.clear-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn:hover{background:#cbd5e1;color:#1e293b}.clear-btn:after{content:\"\";position:absolute;inset:-13px}.recipient-details{margin-top:16px}.details-label{display:block;font-size:.6875rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.details-card{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9}.detail-row.last{border-bottom:none}.detail-row:nth-child(2n){background:#f8fafc}.detail-key{font-size:.8125rem;color:#94a3b8;font-weight:500}.detail-val{font-size:.875rem;color:#1e293b;font-weight:600}.multi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.multi-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px 4px 10px;background:#dbeafe;border-radius:20px;font-size:.8125rem;font-weight:500;color:#1e40af}.chip-remove{width:18px;height:18px;border:none;background:#1e40af26;border-radius:50%;cursor:pointer;font-size:.875rem;line-height:1;color:#1e40af;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chip-remove:hover{background:#1e40af4d}.chip-remove:focus-visible{outline:2px solid #1e40af;outline-offset:2px}@media(forced-colors:active){.picker-input:focus{outline:2px solid Highlight;outline-offset:1px}.picker-option--active{outline:2px solid Highlight;outline-offset:-2px}}\n"],
|
|
11623
|
+
styles: [".picker-wrapper{position:relative;overflow:visible}.picker-label{display:block;font-size:.8125rem;font-weight:600;color:#374151;margin-bottom:6px}.picker-req{color:#ef4444}.picker-hint{margin:6px 0 0;font-size:.75rem;line-height:1.4;color:#64748b}.picker-input{width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.875rem;color:#1e293b;font-family:inherit;outline:none;box-sizing:border-box}.picker-input::placeholder{color:#94a3b8}.picker-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.picker-input:focus-visible{outline:2px solid transparent}@media(max-width:480px){.picker-input{font-size:1rem}}.picker-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 16px #0000001a;max-height:240px;overflow-y:auto}@media(pointer:coarse),(max-width:480px){.picker-input{min-height:44px}.picker-dropdown{max-height:min(240px,40vh);overscroll-behavior:contain}.picker-option{min-height:44px;justify-content:center;box-sizing:border-box}.picker-option--check{min-height:44px}.chip-remove{position:relative}.chip-remove:after{content:\"\";position:absolute;inset:-13px}}@media(max-width:480px){:host-context(.m-body) .picker-dropdown{position:static;margin-top:4px;max-height:min(240px,calc(var(--ui-vvh, 100dvh) * .3))}}.picker-option{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;font-family:inherit}.picker-option:hover,.picker-option.picker-option--active{background:#f8fafc}.picker-option:first-child{border-radius:8px 8px 0 0}.picker-option:last-child{border-radius:0 0 8px 8px}.picker-option--check{flex-direction:row;align-items:center;gap:10px}.picker-option--check .option-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.picker-option--check .option-name,.picker-option--check .option-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-check{display:flex;pointer-events:none}.option-name{font-size:.875rem;font-weight:600;color:#1e293b;overflow-wrap:anywhere}.option-detail{font-size:.75rem;color:#94a3b8;overflow-wrap:anywhere}.picker-loading,.picker-empty{padding:12px;font-size:.8125rem;color:#94a3b8;text-align:center}.selected-input{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:.875rem;font-weight:600;color:#1e293b;gap:8px;overflow-wrap:anywhere;min-width:0}.selected-input:focus{outline:none}.selected-input:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn{width:18px;height:18px;border:none;background:#e2e8f0;border-radius:50%;cursor:pointer;font-size:.75rem;color:#64748b;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.clear-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn:hover{background:#cbd5e1;color:#1e293b}.clear-btn:after{content:\"\";position:absolute;inset:-13px}.recipient-details{margin-top:16px}.details-label{display:block;font-size:.6875rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.details-card{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9}.detail-row.last{border-bottom:none}.detail-row:nth-child(2n){background:#f8fafc}.detail-key{font-size:.8125rem;color:#94a3b8;font-weight:500}.detail-val{font-size:.875rem;color:#1e293b;font-weight:600}.multi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.multi-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px 4px 10px;background:#dbeafe;border-radius:20px;font-size:.8125rem;font-weight:500;color:#1e40af}.chip-remove{width:18px;height:18px;border:none;background:#1e40af26;border-radius:50%;cursor:pointer;font-size:.875rem;line-height:1;color:#1e40af;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chip-remove:hover{background:#1e40af4d}.chip-remove:focus-visible{outline:2px solid #1e40af;outline-offset:2px}@media(forced-colors:active){.picker-input:focus{outline:2px solid Highlight;outline-offset:1px}.picker-option--active{outline:2px solid Highlight;outline-offset:-2px}}\n"],
|
|
10937
11624
|
dependencies: [
|
|
10938
11625
|
{
|
|
10939
11626
|
kind: "ngmodule",
|
|
@@ -10971,9 +11658,14 @@ var ContactPickerComponent = class ContactPickerComponent {
|
|
|
10971
11658
|
"ariaLabel",
|
|
10972
11659
|
"indeterminate",
|
|
10973
11660
|
"checked",
|
|
11661
|
+
"required",
|
|
11662
|
+
"requiredMessage",
|
|
11663
|
+
"hint",
|
|
11664
|
+
"error",
|
|
11665
|
+
"showErrors",
|
|
10974
11666
|
"disabled"
|
|
10975
11667
|
],
|
|
10976
|
-
outputs: ["checkedChange"]
|
|
11668
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
10977
11669
|
}
|
|
10978
11670
|
],
|
|
10979
11671
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
@@ -11156,7 +11848,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11156
11848
|
}
|
|
11157
11849
|
</div>
|
|
11158
11850
|
`,
|
|
11159
|
-
styles: [".picker-wrapper{position:relative;overflow:visible}.picker-label{display:block;font-size:.8125rem;font-weight:600;color:#374151;margin-bottom:6px}.picker-req{color:#ef4444}.picker-hint{margin:6px 0 0;font-size:.75rem;line-height:1.4;color:#64748b}.picker-input{width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.875rem;color:#1e293b;font-family:inherit;outline:none;box-sizing:border-box}.picker-input::placeholder{color:#94a3b8}.picker-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.picker-input:focus-visible{outline:2px solid transparent}@media(max-width:480px){.picker-input{font-size:1rem}}.picker-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 16px #0000001a;max-height:240px;overflow-y:auto}@media(pointer:coarse),(max-width:480px){.picker-input{min-height:44px}.picker-dropdown{max-height:min(240px,40vh);overscroll-behavior:contain}.picker-option{min-height:44px;justify-content:center;box-sizing:border-box}.picker-option--check{min-height:44px}.chip-remove{position:relative}.chip-remove:after{content:\"\";position:absolute;inset:-13px}}.picker-option{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;font-family:inherit}.picker-option:hover,.picker-option.picker-option--active{background:#f8fafc}.picker-option:first-child{border-radius:8px 8px 0 0}.picker-option:last-child{border-radius:0 0 8px 8px}.picker-option--check{flex-direction:row;align-items:center;gap:10px}.picker-option--check .option-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.picker-option--check .option-name,.picker-option--check .option-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-check{display:flex;pointer-events:none}.option-name{font-size:.875rem;font-weight:600;color:#1e293b;overflow-wrap:anywhere}.option-detail{font-size:.75rem;color:#94a3b8;overflow-wrap:anywhere}.picker-loading,.picker-empty{padding:12px;font-size:.8125rem;color:#94a3b8;text-align:center}.selected-input{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:.875rem;font-weight:600;color:#1e293b;gap:8px;overflow-wrap:anywhere;min-width:0}.selected-input:focus{outline:none}.selected-input:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn{width:18px;height:18px;border:none;background:#e2e8f0;border-radius:50%;cursor:pointer;font-size:.75rem;color:#64748b;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.clear-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn:hover{background:#cbd5e1;color:#1e293b}.clear-btn:after{content:\"\";position:absolute;inset:-13px}.recipient-details{margin-top:16px}.details-label{display:block;font-size:.6875rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.details-card{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9}.detail-row.last{border-bottom:none}.detail-row:nth-child(2n){background:#f8fafc}.detail-key{font-size:.8125rem;color:#94a3b8;font-weight:500}.detail-val{font-size:.875rem;color:#1e293b;font-weight:600}.multi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.multi-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px 4px 10px;background:#dbeafe;border-radius:20px;font-size:.8125rem;font-weight:500;color:#1e40af}.chip-remove{width:18px;height:18px;border:none;background:#1e40af26;border-radius:50%;cursor:pointer;font-size:.875rem;line-height:1;color:#1e40af;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chip-remove:hover{background:#1e40af4d}.chip-remove:focus-visible{outline:2px solid #1e40af;outline-offset:2px}@media(forced-colors:active){.picker-input:focus{outline:2px solid Highlight;outline-offset:1px}.picker-option--active{outline:2px solid Highlight;outline-offset:-2px}}\n"]
|
|
11851
|
+
styles: [".picker-wrapper{position:relative;overflow:visible}.picker-label{display:block;font-size:.8125rem;font-weight:600;color:#374151;margin-bottom:6px}.picker-req{color:#ef4444}.picker-hint{margin:6px 0 0;font-size:.75rem;line-height:1.4;color:#64748b}.picker-input{width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.875rem;color:#1e293b;font-family:inherit;outline:none;box-sizing:border-box}.picker-input::placeholder{color:#94a3b8}.picker-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.picker-input:focus-visible{outline:2px solid transparent}@media(max-width:480px){.picker-input{font-size:1rem}}.picker-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:9999;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 16px #0000001a;max-height:240px;overflow-y:auto}@media(pointer:coarse),(max-width:480px){.picker-input{min-height:44px}.picker-dropdown{max-height:min(240px,40vh);overscroll-behavior:contain}.picker-option{min-height:44px;justify-content:center;box-sizing:border-box}.picker-option--check{min-height:44px}.chip-remove{position:relative}.chip-remove:after{content:\"\";position:absolute;inset:-13px}}@media(max-width:480px){:host-context(.m-body) .picker-dropdown{position:static;margin-top:4px;max-height:min(240px,calc(var(--ui-vvh, 100dvh) * .3))}}.picker-option{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 12px;border:none;background:none;text-align:left;cursor:pointer;font-family:inherit}.picker-option:hover,.picker-option.picker-option--active{background:#f8fafc}.picker-option:first-child{border-radius:8px 8px 0 0}.picker-option:last-child{border-radius:0 0 8px 8px}.picker-option--check{flex-direction:row;align-items:center;gap:10px}.picker-option--check .option-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.picker-option--check .option-name,.picker-option--check .option-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option-check{display:flex;pointer-events:none}.option-name{font-size:.875rem;font-weight:600;color:#1e293b;overflow-wrap:anywhere}.option-detail{font-size:.75rem;color:#94a3b8;overflow-wrap:anywhere}.picker-loading,.picker-empty{padding:12px;font-size:.8125rem;color:#94a3b8;text-align:center}.selected-input{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;font-size:.875rem;font-weight:600;color:#1e293b;gap:8px;overflow-wrap:anywhere;min-width:0}.selected-input:focus{outline:none}.selected-input:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn{width:18px;height:18px;border:none;background:#e2e8f0;border-radius:50%;cursor:pointer;font-size:.75rem;color:#64748b;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.clear-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.clear-btn:hover{background:#cbd5e1;color:#1e293b}.clear-btn:after{content:\"\";position:absolute;inset:-13px}.recipient-details{margin-top:16px}.details-label{display:block;font-size:.6875rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.details-card{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9}.detail-row.last{border-bottom:none}.detail-row:nth-child(2n){background:#f8fafc}.detail-key{font-size:.8125rem;color:#94a3b8;font-weight:500}.detail-val{font-size:.875rem;color:#1e293b;font-weight:600}.multi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.multi-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px 4px 10px;background:#dbeafe;border-radius:20px;font-size:.8125rem;font-weight:500;color:#1e40af}.chip-remove{width:18px;height:18px;border:none;background:#1e40af26;border-radius:50%;cursor:pointer;font-size:.875rem;line-height:1;color:#1e40af;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chip-remove:hover{background:#1e40af4d}.chip-remove:focus-visible{outline:2px solid #1e40af;outline-offset:2px}@media(forced-colors:active){.picker-input:focus{outline:2px solid Highlight;outline-offset:1px}.picker-option--active{outline:2px solid Highlight;outline-offset:-2px}}\n"]
|
|
11160
11852
|
}]
|
|
11161
11853
|
}],
|
|
11162
11854
|
ctorParameters: () => [],
|
|
@@ -13151,6 +13843,11 @@ function getErrorMessage(error, fallbackContext, action) {
|
|
|
13151
13843
|
if (typeof error === "string") return error;
|
|
13152
13844
|
return `${failed} Please try again.`;
|
|
13153
13845
|
}
|
|
13846
|
+
function serverMessage(err) {
|
|
13847
|
+
if (!(err instanceof HttpErrorResponse)) return "";
|
|
13848
|
+
const m = err.error?.message;
|
|
13849
|
+
return typeof m === "string" ? m.trim() : "";
|
|
13850
|
+
}
|
|
13154
13851
|
var TextareaInputComponent = class TextareaInputComponent {
|
|
13155
13852
|
constructor() {
|
|
13156
13853
|
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
@@ -13170,6 +13867,7 @@ var TextareaInputComponent = class TextareaInputComponent {
|
|
|
13170
13867
|
this._cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []);
|
|
13171
13868
|
this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
13172
13869
|
this._value = signal("", ...ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []);
|
|
13870
|
+
this._unlabelledHint = computed(() => !this.label() && !!this.hint(), ...ngDevMode ? [{ debugName: "_unlabelledHint" }] : /* istanbul ignore next */ []);
|
|
13173
13871
|
this._reveal = createFieldReveal(this.showErrors);
|
|
13174
13872
|
this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
13175
13873
|
this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
@@ -13357,10 +14055,13 @@ var TextareaInputComponent = class TextareaInputComponent {
|
|
|
13357
14055
|
[attr.required]="required() || null"
|
|
13358
14056
|
[attr.aria-label]="ariaLabel() || null"
|
|
13359
14057
|
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
13360
|
-
[attr.aria-describedby]="_activeError() ? _inputId + '-desc' : null"
|
|
14058
|
+
[attr.aria-describedby]="_activeError() ? _inputId + '-desc' : (_unlabelledHint() ? _inputId + '-hint' : null)"
|
|
13361
14059
|
(input)="onInput($event)"
|
|
13362
14060
|
(blur)="onBlur()"
|
|
13363
14061
|
></textarea>
|
|
14062
|
+
@if (!_activeError() && _unlabelledHint()) {
|
|
14063
|
+
<p class="ta-desc" [id]="_inputId + '-hint'">{{ hint() }}</p>
|
|
14064
|
+
}
|
|
13364
14065
|
@if (_activeError()) {
|
|
13365
14066
|
<p class="ta-desc ta-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
13366
14067
|
}
|
|
@@ -13420,10 +14121,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
13420
14121
|
[attr.required]="required() || null"
|
|
13421
14122
|
[attr.aria-label]="ariaLabel() || null"
|
|
13422
14123
|
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
13423
|
-
[attr.aria-describedby]="_activeError() ? _inputId + '-desc' : null"
|
|
14124
|
+
[attr.aria-describedby]="_activeError() ? _inputId + '-desc' : (_unlabelledHint() ? _inputId + '-hint' : null)"
|
|
13424
14125
|
(input)="onInput($event)"
|
|
13425
14126
|
(blur)="onBlur()"
|
|
13426
14127
|
></textarea>
|
|
14128
|
+
@if (!_activeError() && _unlabelledHint()) {
|
|
14129
|
+
<p class="ta-desc" [id]="_inputId + '-hint'">{{ hint() }}</p>
|
|
14130
|
+
}
|
|
13427
14131
|
@if (_activeError()) {
|
|
13428
14132
|
<p class="ta-desc ta-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
13429
14133
|
}
|
|
@@ -14097,7 +14801,7 @@ var ChipComponent = class ChipComponent {
|
|
|
14097
14801
|
</button>
|
|
14098
14802
|
`,
|
|
14099
14803
|
isInline: true,
|
|
14100
|
-
styles: [":host{display:contents}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1.5px solid #d1d5db;background:#f9fafb;color:#374151;font-weight:500;font-family:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.chip:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.chip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chip:disabled{opacity:.5;cursor:default}.chip--sm{padding:2px 10px;font-size:.75rem}.chip--lg{padding:6px 16px;font-size:.875rem}.chip--sm.chip--dismissible{padding-right:6px}.chip--lg.chip--dismissible{padding-right:10px}
|
|
14804
|
+
styles: [":host{display:contents}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1.5px solid #d1d5db;background:#f9fafb;color:#374151;font-weight:500;font-family:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.chip:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.chip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chip:disabled{opacity:.5;cursor:default}.chip--sm{padding:2px 10px;font-size:.75rem}.chip--lg{padding:6px 16px;font-size:.875rem}.chip--sm.chip--dismissible{padding-right:6px}.chip--lg.chip--dismissible{padding-right:10px}.chip--active{background:#3b82f6;border-color:#3b82f6;color:#fff}.chip--active:hover:not(:disabled){background:#2563eb;border-color:#2563eb;color:#fff}.chip-dismiss{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:#0000001f;flex-shrink:0;transition:background .15s}.chip-dismiss:hover{background:#00000040}.chip--active .chip-dismiss{background:#ffffff4d}.chip--active .chip-dismiss:hover{background:#ffffff80}@media(pointer:coarse){.chip{min-height:44px}.chip--sm{min-height:40px;padding:6px 14px}.chip--lg{padding-left:18px;padding-right:18px}.chip--sm.chip--dismissible{padding-right:8px}.chip--lg.chip--dismissible{padding-right:12px}.chip-dismiss{width:24px;height:24px;position:relative}.chip-dismiss:after{content:\"\";position:absolute;inset:-10px}}@media(max-width:480px)and (pointer:fine){.chip-dismiss{position:relative}.chip-dismiss:after{content:\"\";position:absolute;inset:-15px}}\n"],
|
|
14101
14805
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
14102
14806
|
});
|
|
14103
14807
|
}
|
|
@@ -14146,7 +14850,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
14146
14850
|
}
|
|
14147
14851
|
</button>
|
|
14148
14852
|
`,
|
|
14149
|
-
styles: [":host{display:contents}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1.5px solid #d1d5db;background:#f9fafb;color:#374151;font-weight:500;font-family:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.chip:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.chip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chip:disabled{opacity:.5;cursor:default}.chip--sm{padding:2px 10px;font-size:.75rem}.chip--lg{padding:6px 16px;font-size:.875rem}.chip--sm.chip--dismissible{padding-right:6px}.chip--lg.chip--dismissible{padding-right:10px}
|
|
14853
|
+
styles: [":host{display:contents}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1.5px solid #d1d5db;background:#f9fafb;color:#374151;font-weight:500;font-family:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.chip:hover:not(:disabled){border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.chip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chip:disabled{opacity:.5;cursor:default}.chip--sm{padding:2px 10px;font-size:.75rem}.chip--lg{padding:6px 16px;font-size:.875rem}.chip--sm.chip--dismissible{padding-right:6px}.chip--lg.chip--dismissible{padding-right:10px}.chip--active{background:#3b82f6;border-color:#3b82f6;color:#fff}.chip--active:hover:not(:disabled){background:#2563eb;border-color:#2563eb;color:#fff}.chip-dismiss{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:#0000001f;flex-shrink:0;transition:background .15s}.chip-dismiss:hover{background:#00000040}.chip--active .chip-dismiss{background:#ffffff4d}.chip--active .chip-dismiss:hover{background:#ffffff80}@media(pointer:coarse){.chip{min-height:44px}.chip--sm{min-height:40px;padding:6px 14px}.chip--lg{padding-left:18px;padding-right:18px}.chip--sm.chip--dismissible{padding-right:8px}.chip--lg.chip--dismissible{padding-right:12px}.chip-dismiss{width:24px;height:24px;position:relative}.chip-dismiss:after{content:\"\";position:absolute;inset:-10px}}@media(max-width:480px)and (pointer:fine){.chip-dismiss{position:relative}.chip-dismiss:after{content:\"\";position:absolute;inset:-15px}}\n"]
|
|
14150
14854
|
}]
|
|
14151
14855
|
}],
|
|
14152
14856
|
propDecorators: {
|
|
@@ -14990,6 +15694,8 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
14990
15694
|
this._suggestedSubject = "";
|
|
14991
15695
|
this.previewHtml = messagePreviewHtml;
|
|
14992
15696
|
this.docsRemovedNote = "";
|
|
15697
|
+
this.MAX_SUBJECT = 255;
|
|
15698
|
+
this.MAX_BODY = 1e4;
|
|
14993
15699
|
effect(() => {
|
|
14994
15700
|
this.contactName();
|
|
14995
15701
|
this.contactEmail();
|
|
@@ -15058,7 +15764,17 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15058
15764
|
this.documentsInvalid = bad;
|
|
15059
15765
|
this.notifyValid();
|
|
15060
15766
|
}
|
|
15767
|
+
get bodyLengthError() {
|
|
15768
|
+
return this.resolvedBody.length > this.MAX_BODY ? `Message is too long (${this.resolvedBody.length.toLocaleString("en-US")} of ${this.MAX_BODY.toLocaleString("en-US")} characters).` : "";
|
|
15769
|
+
}
|
|
15770
|
+
get subjectLengthError() {
|
|
15771
|
+
return this.resolvedSubject.length > this.MAX_SUBJECT ? `Subject is too long (${this.resolvedSubject.length.toLocaleString("en-US")} of ${this.MAX_SUBJECT} characters).` : "";
|
|
15772
|
+
}
|
|
15773
|
+
get sendLengthError() {
|
|
15774
|
+
return this.subjectLengthError || (this.mode === "compose" ? "" : this.bodyLengthError);
|
|
15775
|
+
}
|
|
15061
15776
|
get canSend() {
|
|
15777
|
+
if (this.bodyLengthError || this.subjectLengthError) return false;
|
|
15062
15778
|
if (this.ccError || this.documents() && this.documentsInvalid) return false;
|
|
15063
15779
|
const hasContent = !!this.subject.trim() && !!this.body.trim() && this.unresolvedVars.length === 0 && !hasLeftoverTags(this.resolvedSubject) && !hasLeftoverTags(this.resolvedBody);
|
|
15064
15780
|
if (this.showSchedule) return hasContent && !!this.scheduledAt && new Date(this.scheduledAt).getTime() > Date.now();
|
|
@@ -15286,7 +16002,7 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15286
16002
|
this.cdr.markForCheck();
|
|
15287
16003
|
},
|
|
15288
16004
|
error: (err) => {
|
|
15289
|
-
this.toast.error(custom || docs ? getErrorMessage(err, "email", "send") : "Failed to send email");
|
|
16005
|
+
this.toast.error(custom || docs ? getErrorMessage(err, "email", "send") : serverMessage(err) || "Failed to send email");
|
|
15290
16006
|
this.loading = false;
|
|
15291
16007
|
this.cdr.markForCheck();
|
|
15292
16008
|
}
|
|
@@ -15477,6 +16193,7 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15477
16193
|
label="Subject"
|
|
15478
16194
|
[required]="true"
|
|
15479
16195
|
placeholder="Email subject..."
|
|
16196
|
+
[maxlength]="MAX_SUBJECT"
|
|
15480
16197
|
[(ngModel)]="subject"
|
|
15481
16198
|
(ngModelChange)="notifyValid()" />
|
|
15482
16199
|
<ui-textarea-input
|
|
@@ -15485,7 +16202,7 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15485
16202
|
placeholder="Write your message..."
|
|
15486
16203
|
[rows]="8"
|
|
15487
16204
|
[(ngModel)]="body"
|
|
15488
|
-
[error]="composeTagError"
|
|
16205
|
+
[error]="composeTagError || bodyLengthError"
|
|
15489
16206
|
(ngModelChange)="notifyValid()" />
|
|
15490
16207
|
|
|
15491
16208
|
@if (!hasDocuments && attachmentsAndScheduling()) {
|
|
@@ -15598,6 +16315,9 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15598
16315
|
</div>
|
|
15599
16316
|
}
|
|
15600
16317
|
|
|
16318
|
+
<!-- Why Send is disabled for length, in every mode (compose shows the message error inline on the editor itself). -->
|
|
16319
|
+
<ui-error errorId="sm-length-error" [message]="sendLengthError" />
|
|
16320
|
+
|
|
15601
16321
|
@if (showReceiptOption() === true) {
|
|
15602
16322
|
<ui-checkbox
|
|
15603
16323
|
class="sm-receipt-option"
|
|
@@ -15654,6 +16374,12 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15654
16374
|
selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]",
|
|
15655
16375
|
inputs: ["required"]
|
|
15656
16376
|
},
|
|
16377
|
+
{
|
|
16378
|
+
kind: "directive",
|
|
16379
|
+
type: i1.MaxLengthValidator,
|
|
16380
|
+
selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]",
|
|
16381
|
+
inputs: ["maxlength"]
|
|
16382
|
+
},
|
|
15657
16383
|
{
|
|
15658
16384
|
kind: "directive",
|
|
15659
16385
|
type: i1.NgModel,
|
|
@@ -15683,6 +16409,7 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15683
16409
|
"ariaLabel",
|
|
15684
16410
|
"ariaExpanded",
|
|
15685
16411
|
"ariaPressed",
|
|
16412
|
+
"ariaDescribedBy",
|
|
15686
16413
|
"modal-footer-left",
|
|
15687
16414
|
"modal-footer-right"
|
|
15688
16415
|
]
|
|
@@ -15696,9 +16423,14 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15696
16423
|
"ariaLabel",
|
|
15697
16424
|
"indeterminate",
|
|
15698
16425
|
"checked",
|
|
16426
|
+
"required",
|
|
16427
|
+
"requiredMessage",
|
|
16428
|
+
"hint",
|
|
16429
|
+
"error",
|
|
16430
|
+
"showErrors",
|
|
15699
16431
|
"disabled"
|
|
15700
16432
|
],
|
|
15701
|
-
outputs: ["checkedChange"]
|
|
16433
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
15702
16434
|
},
|
|
15703
16435
|
{
|
|
15704
16436
|
kind: "component",
|
|
@@ -15822,6 +16554,12 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
15822
16554
|
"initialDocuments"
|
|
15823
16555
|
],
|
|
15824
16556
|
outputs: ["valueChange", "invalidChange"]
|
|
16557
|
+
},
|
|
16558
|
+
{
|
|
16559
|
+
kind: "component",
|
|
16560
|
+
type: ErrorComponent,
|
|
16561
|
+
selector: "ui-error",
|
|
16562
|
+
inputs: ["message", "errorId"]
|
|
15825
16563
|
}
|
|
15826
16564
|
],
|
|
15827
16565
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
@@ -15850,7 +16588,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15850
16588
|
TextareaInputComponent,
|
|
15851
16589
|
DatetimeInputComponent,
|
|
15852
16590
|
FormSectionComponent,
|
|
15853
|
-
DocumentSendOptionsComponent
|
|
16591
|
+
DocumentSendOptionsComponent,
|
|
16592
|
+
ErrorComponent
|
|
15854
16593
|
],
|
|
15855
16594
|
template: `
|
|
15856
16595
|
<!-- Missing email guard -->
|
|
@@ -15900,6 +16639,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15900
16639
|
label="Subject"
|
|
15901
16640
|
[required]="true"
|
|
15902
16641
|
placeholder="Email subject..."
|
|
16642
|
+
[maxlength]="MAX_SUBJECT"
|
|
15903
16643
|
[(ngModel)]="subject"
|
|
15904
16644
|
(ngModelChange)="notifyValid()" />
|
|
15905
16645
|
<ui-textarea-input
|
|
@@ -15908,7 +16648,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15908
16648
|
placeholder="Write your message..."
|
|
15909
16649
|
[rows]="8"
|
|
15910
16650
|
[(ngModel)]="body"
|
|
15911
|
-
[error]="composeTagError"
|
|
16651
|
+
[error]="composeTagError || bodyLengthError"
|
|
15912
16652
|
(ngModelChange)="notifyValid()" />
|
|
15913
16653
|
|
|
15914
16654
|
@if (!hasDocuments && attachmentsAndScheduling()) {
|
|
@@ -16021,6 +16761,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
16021
16761
|
</div>
|
|
16022
16762
|
}
|
|
16023
16763
|
|
|
16764
|
+
<!-- Why Send is disabled for length, in every mode (compose shows the message error inline on the editor itself). -->
|
|
16765
|
+
<ui-error errorId="sm-length-error" [message]="sendLengthError" />
|
|
16766
|
+
|
|
16024
16767
|
@if (showReceiptOption() === true) {
|
|
16025
16768
|
<ui-checkbox
|
|
16026
16769
|
class="sm-receipt-option"
|
|
@@ -16523,7 +17266,7 @@ var SendTextComponent = class SendTextComponent {
|
|
|
16523
17266
|
this.cdr.detectChanges();
|
|
16524
17267
|
},
|
|
16525
17268
|
error: (err) => {
|
|
16526
|
-
this.toast.error(custom || docs ? getErrorMessage(err, "text message", "send") : "Failed to send text message");
|
|
17269
|
+
this.toast.error(custom || docs ? getErrorMessage(err, "text message", "send") : serverMessage(err) || "Failed to send text message");
|
|
16527
17270
|
this.loading = false;
|
|
16528
17271
|
this.cdr.detectChanges();
|
|
16529
17272
|
}
|
|
@@ -16886,6 +17629,7 @@ var SendTextComponent = class SendTextComponent {
|
|
|
16886
17629
|
"ariaLabel",
|
|
16887
17630
|
"ariaExpanded",
|
|
16888
17631
|
"ariaPressed",
|
|
17632
|
+
"ariaDescribedBy",
|
|
16889
17633
|
"modal-footer-left",
|
|
16890
17634
|
"modal-footer-right"
|
|
16891
17635
|
]
|
|
@@ -16899,9 +17643,14 @@ var SendTextComponent = class SendTextComponent {
|
|
|
16899
17643
|
"ariaLabel",
|
|
16900
17644
|
"indeterminate",
|
|
16901
17645
|
"checked",
|
|
17646
|
+
"required",
|
|
17647
|
+
"requiredMessage",
|
|
17648
|
+
"hint",
|
|
17649
|
+
"error",
|
|
17650
|
+
"showErrors",
|
|
16902
17651
|
"disabled"
|
|
16903
17652
|
],
|
|
16904
|
-
outputs: ["checkedChange"]
|
|
17653
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
16905
17654
|
},
|
|
16906
17655
|
{
|
|
16907
17656
|
kind: "component",
|
|
@@ -19420,11 +20169,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19420
20169
|
var TimeInputComponent = class TimeInputComponent {
|
|
19421
20170
|
constructor() {
|
|
19422
20171
|
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
20172
|
+
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
19423
20173
|
this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
|
|
19424
20174
|
this.min = input("", ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
|
|
19425
20175
|
this.max = input("", ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
|
|
19426
20176
|
this.hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
19427
20177
|
this.error = input("", ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
|
|
20178
|
+
this.showErrors = input(false, ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
|
|
19428
20179
|
this._disabledInput = input(false, {
|
|
19429
20180
|
...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
|
|
19430
20181
|
alias: "disabled"
|
|
@@ -19433,8 +20184,28 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19433
20184
|
this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
19434
20185
|
this._value = signal("", ...ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []);
|
|
19435
20186
|
this._inputId = `tmi-${Math.random().toString(36).slice(2, 8)}`;
|
|
20187
|
+
this._reveal = createFieldReveal(this.showErrors);
|
|
20188
|
+
this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
20189
|
+
this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
20190
|
+
this.errorMessage = computed(() => this._issue()?.message ?? "", ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
|
|
20191
|
+
this.invalidChange = output();
|
|
20192
|
+
this._activeError = computed(() => this.error() || (this._reveal.revealed() ? this.errorMessage() : ""), ...ngDevMode ? [{ debugName: "_activeError" }] : /* istanbul ignore next */ []);
|
|
20193
|
+
this._onValidatorChange = () => {};
|
|
19436
20194
|
this._onChange = (_) => {};
|
|
19437
20195
|
this._onTouched = () => {};
|
|
20196
|
+
effect(() => {
|
|
20197
|
+
this.invalidChange.emit(this.invalid());
|
|
20198
|
+
});
|
|
20199
|
+
}
|
|
20200
|
+
ngOnChanges() {
|
|
20201
|
+
this._onValidatorChange();
|
|
20202
|
+
}
|
|
20203
|
+
validate(control) {
|
|
20204
|
+
const v = control.value;
|
|
20205
|
+
return issueToErrors(this._check(v == null ? "" : String(v)));
|
|
20206
|
+
}
|
|
20207
|
+
registerOnValidatorChange(fn) {
|
|
20208
|
+
this._onValidatorChange = fn;
|
|
19438
20209
|
}
|
|
19439
20210
|
writeValue(val) {
|
|
19440
20211
|
this._value.set(val ?? "");
|
|
@@ -19455,6 +20226,40 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19455
20226
|
}
|
|
19456
20227
|
onBlur() {
|
|
19457
20228
|
this._onTouched();
|
|
20229
|
+
this._reveal.touched.set(true);
|
|
20230
|
+
}
|
|
20231
|
+
_check(value) {
|
|
20232
|
+
if (this.disabled()) return null;
|
|
20233
|
+
const text = value.trim();
|
|
20234
|
+
if (!text) return this.required() ? requiredIssue(this.label() || this.ariaLabel()) : null;
|
|
20235
|
+
const t = parseTime(text);
|
|
20236
|
+
if (t == null) return {
|
|
20237
|
+
key: "time",
|
|
20238
|
+
message: "Please enter a valid time."
|
|
20239
|
+
};
|
|
20240
|
+
let min = this.min() ? parseTime(this.min()) : null;
|
|
20241
|
+
let max = this.max() ? parseTime(this.max()) : null;
|
|
20242
|
+
if (min != null && max != null && max < min) {
|
|
20243
|
+
min = null;
|
|
20244
|
+
max = null;
|
|
20245
|
+
}
|
|
20246
|
+
if (min != null && t < min) return {
|
|
20247
|
+
key: "min",
|
|
20248
|
+
message: `Must be at or after ${formatTime(this.min())}`,
|
|
20249
|
+
value: {
|
|
20250
|
+
min: this.min(),
|
|
20251
|
+
actual: text
|
|
20252
|
+
}
|
|
20253
|
+
};
|
|
20254
|
+
if (max != null && t > max) return {
|
|
20255
|
+
key: "max",
|
|
20256
|
+
message: `Must be at or before ${formatTime(this.max())}`,
|
|
20257
|
+
value: {
|
|
20258
|
+
max: this.max(),
|
|
20259
|
+
actual: text
|
|
20260
|
+
}
|
|
20261
|
+
};
|
|
20262
|
+
return null;
|
|
19458
20263
|
}
|
|
19459
20264
|
static {
|
|
19460
20265
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -19481,6 +20286,13 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19481
20286
|
isRequired: false,
|
|
19482
20287
|
transformFunction: null
|
|
19483
20288
|
},
|
|
20289
|
+
ariaLabel: {
|
|
20290
|
+
classPropertyName: "ariaLabel",
|
|
20291
|
+
publicName: "ariaLabel",
|
|
20292
|
+
isSignal: true,
|
|
20293
|
+
isRequired: false,
|
|
20294
|
+
transformFunction: null
|
|
20295
|
+
},
|
|
19484
20296
|
required: {
|
|
19485
20297
|
classPropertyName: "required",
|
|
19486
20298
|
publicName: "required",
|
|
@@ -19516,6 +20328,13 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19516
20328
|
isRequired: false,
|
|
19517
20329
|
transformFunction: null
|
|
19518
20330
|
},
|
|
20331
|
+
showErrors: {
|
|
20332
|
+
classPropertyName: "showErrors",
|
|
20333
|
+
publicName: "showErrors",
|
|
20334
|
+
isSignal: true,
|
|
20335
|
+
isRequired: false,
|
|
20336
|
+
transformFunction: null
|
|
20337
|
+
},
|
|
19519
20338
|
_disabledInput: {
|
|
19520
20339
|
classPropertyName: "_disabledInput",
|
|
19521
20340
|
publicName: "disabled",
|
|
@@ -19524,14 +20343,27 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19524
20343
|
transformFunction: null
|
|
19525
20344
|
}
|
|
19526
20345
|
},
|
|
19527
|
-
|
|
19528
|
-
|
|
19529
|
-
|
|
19530
|
-
|
|
19531
|
-
|
|
20346
|
+
outputs: { invalidChange: "invalidChange" },
|
|
20347
|
+
providers: [
|
|
20348
|
+
{
|
|
20349
|
+
provide: NG_VALUE_ACCESSOR,
|
|
20350
|
+
useExisting: forwardRef(() => TimeInputComponent),
|
|
20351
|
+
multi: true
|
|
20352
|
+
},
|
|
20353
|
+
{
|
|
20354
|
+
provide: NG_VALIDATORS,
|
|
20355
|
+
useExisting: forwardRef(() => TimeInputComponent),
|
|
20356
|
+
multi: true
|
|
20357
|
+
},
|
|
20358
|
+
{
|
|
20359
|
+
provide: UiFieldValidity,
|
|
20360
|
+
useExisting: forwardRef(() => TimeInputComponent)
|
|
20361
|
+
}
|
|
20362
|
+
],
|
|
20363
|
+
usesOnChanges: true,
|
|
19532
20364
|
ngImport: i0,
|
|
19533
20365
|
template: `
|
|
19534
|
-
<div class="tmi-field" [class.tmi-error]="
|
|
20366
|
+
<div class="tmi-field" [class.tmi-error]="_activeError()" [class.tmi-disabled]="disabled()">
|
|
19535
20367
|
@if (label()) {
|
|
19536
20368
|
<label class="tmi-label" [for]="_inputId">
|
|
19537
20369
|
{{ label() }}
|
|
@@ -19547,13 +20379,15 @@ var TimeInputComponent = class TimeInputComponent {
|
|
|
19547
20379
|
[attr.min]="min() || null"
|
|
19548
20380
|
[attr.max]="max() || null"
|
|
19549
20381
|
[attr.required]="required() || null"
|
|
19550
|
-
[attr.aria-
|
|
19551
|
-
[attr.aria-
|
|
20382
|
+
[attr.aria-label]="ariaLabel() || label() || null"
|
|
20383
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
20384
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
20385
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _inputId + '-desc' : null"
|
|
19552
20386
|
(change)="onChange($event)"
|
|
19553
20387
|
(blur)="onBlur()"
|
|
19554
20388
|
/>
|
|
19555
|
-
@if (
|
|
19556
|
-
<p class="tmi-desc tmi-desc-error" [id]="_inputId + '-desc'" role="alert">{{
|
|
20389
|
+
@if (_activeError()) {
|
|
20390
|
+
<p class="tmi-desc tmi-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
19557
20391
|
} @else if (hint()) {
|
|
19558
20392
|
<p class="tmi-desc" [id]="_inputId + '-desc'">{{ hint() }}</p>
|
|
19559
20393
|
}
|
|
@@ -19576,13 +20410,24 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19576
20410
|
selector: "ui-time-input",
|
|
19577
20411
|
standalone: true,
|
|
19578
20412
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19579
|
-
providers: [
|
|
19580
|
-
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
|
|
20413
|
+
providers: [
|
|
20414
|
+
{
|
|
20415
|
+
provide: NG_VALUE_ACCESSOR,
|
|
20416
|
+
useExisting: forwardRef(() => TimeInputComponent),
|
|
20417
|
+
multi: true
|
|
20418
|
+
},
|
|
20419
|
+
{
|
|
20420
|
+
provide: NG_VALIDATORS,
|
|
20421
|
+
useExisting: forwardRef(() => TimeInputComponent),
|
|
20422
|
+
multi: true
|
|
20423
|
+
},
|
|
20424
|
+
{
|
|
20425
|
+
provide: UiFieldValidity,
|
|
20426
|
+
useExisting: forwardRef(() => TimeInputComponent)
|
|
20427
|
+
}
|
|
20428
|
+
],
|
|
19584
20429
|
template: `
|
|
19585
|
-
<div class="tmi-field" [class.tmi-error]="
|
|
20430
|
+
<div class="tmi-field" [class.tmi-error]="_activeError()" [class.tmi-disabled]="disabled()">
|
|
19586
20431
|
@if (label()) {
|
|
19587
20432
|
<label class="tmi-label" [for]="_inputId">
|
|
19588
20433
|
{{ label() }}
|
|
@@ -19598,13 +20443,15 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19598
20443
|
[attr.min]="min() || null"
|
|
19599
20444
|
[attr.max]="max() || null"
|
|
19600
20445
|
[attr.required]="required() || null"
|
|
19601
|
-
[attr.aria-
|
|
19602
|
-
[attr.aria-
|
|
20446
|
+
[attr.aria-label]="ariaLabel() || label() || null"
|
|
20447
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
20448
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
20449
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _inputId + '-desc' : null"
|
|
19603
20450
|
(change)="onChange($event)"
|
|
19604
20451
|
(blur)="onBlur()"
|
|
19605
20452
|
/>
|
|
19606
|
-
@if (
|
|
19607
|
-
<p class="tmi-desc tmi-desc-error" [id]="_inputId + '-desc'" role="alert">{{
|
|
20453
|
+
@if (_activeError()) {
|
|
20454
|
+
<p class="tmi-desc tmi-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
19608
20455
|
} @else if (hint()) {
|
|
19609
20456
|
<p class="tmi-desc" [id]="_inputId + '-desc'">{{ hint() }}</p>
|
|
19610
20457
|
}
|
|
@@ -19613,6 +20460,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19613
20460
|
styles: [":host{display:block}.tmi-field{display:flex;flex-direction:column;gap:6px}.tmi-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.tmi-required{color:#ef4444;margin-left:2px}.tmi-input{width:100%;box-sizing:border-box;padding:8px 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;appearance:none}.tmi-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.tmi-error .tmi-input{border-color:#ef4444}.tmi-error .tmi-input:focus{box-shadow:0 0 0 3px #ef44441f}.tmi-disabled .tmi-input{opacity:.5;cursor:not-allowed}.tmi-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.tmi-desc-error{color:#ef4444}@media(max-width:480px){.tmi-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.tmi-input{min-height:44px}}\n"]
|
|
19614
20461
|
}]
|
|
19615
20462
|
}],
|
|
20463
|
+
ctorParameters: () => [],
|
|
19616
20464
|
propDecorators: {
|
|
19617
20465
|
label: [{
|
|
19618
20466
|
type: i0.Input,
|
|
@@ -19622,6 +20470,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19622
20470
|
required: false
|
|
19623
20471
|
}]
|
|
19624
20472
|
}],
|
|
20473
|
+
ariaLabel: [{
|
|
20474
|
+
type: i0.Input,
|
|
20475
|
+
args: [{
|
|
20476
|
+
isSignal: true,
|
|
20477
|
+
alias: "ariaLabel",
|
|
20478
|
+
required: false
|
|
20479
|
+
}]
|
|
20480
|
+
}],
|
|
19625
20481
|
required: [{
|
|
19626
20482
|
type: i0.Input,
|
|
19627
20483
|
args: [{
|
|
@@ -19662,6 +20518,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19662
20518
|
required: false
|
|
19663
20519
|
}]
|
|
19664
20520
|
}],
|
|
20521
|
+
showErrors: [{
|
|
20522
|
+
type: i0.Input,
|
|
20523
|
+
args: [{
|
|
20524
|
+
isSignal: true,
|
|
20525
|
+
alias: "showErrors",
|
|
20526
|
+
required: false
|
|
20527
|
+
}]
|
|
20528
|
+
}],
|
|
19665
20529
|
_disabledInput: [{
|
|
19666
20530
|
type: i0.Input,
|
|
19667
20531
|
args: [{
|
|
@@ -19669,6 +20533,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19669
20533
|
alias: "disabled",
|
|
19670
20534
|
required: false
|
|
19671
20535
|
}]
|
|
20536
|
+
}],
|
|
20537
|
+
invalidChange: [{
|
|
20538
|
+
type: i0.Output,
|
|
20539
|
+
args: ["invalidChange"]
|
|
19672
20540
|
}]
|
|
19673
20541
|
}
|
|
19674
20542
|
});
|
|
@@ -19924,9 +20792,14 @@ var MultiSelectComponent = class MultiSelectComponent {
|
|
|
19924
20792
|
"ariaLabel",
|
|
19925
20793
|
"indeterminate",
|
|
19926
20794
|
"checked",
|
|
20795
|
+
"required",
|
|
20796
|
+
"requiredMessage",
|
|
20797
|
+
"hint",
|
|
20798
|
+
"error",
|
|
20799
|
+
"showErrors",
|
|
19927
20800
|
"disabled"
|
|
19928
20801
|
],
|
|
19929
|
-
outputs: ["checkedChange"]
|
|
20802
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
19930
20803
|
}],
|
|
19931
20804
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
19932
20805
|
});
|
|
@@ -20235,9 +21108,14 @@ var DiscountSelectorComponent = class DiscountSelectorComponent {
|
|
|
20235
21108
|
"ariaLabel",
|
|
20236
21109
|
"indeterminate",
|
|
20237
21110
|
"checked",
|
|
21111
|
+
"required",
|
|
21112
|
+
"requiredMessage",
|
|
21113
|
+
"hint",
|
|
21114
|
+
"error",
|
|
21115
|
+
"showErrors",
|
|
20238
21116
|
"disabled"
|
|
20239
21117
|
],
|
|
20240
|
-
outputs: ["checkedChange"]
|
|
21118
|
+
outputs: ["checkedChange", "invalidChange"]
|
|
20241
21119
|
}],
|
|
20242
21120
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
20243
21121
|
});
|
|
@@ -21784,6 +22662,7 @@ var QrCodeComponent = class QrCodeComponent {
|
|
|
21784
22662
|
"ariaLabel",
|
|
21785
22663
|
"ariaExpanded",
|
|
21786
22664
|
"ariaPressed",
|
|
22665
|
+
"ariaDescribedBy",
|
|
21787
22666
|
"modal-footer-left",
|
|
21788
22667
|
"modal-footer-right"
|
|
21789
22668
|
]
|
|
@@ -22051,6 +22930,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
22051
22930
|
"ariaLabel",
|
|
22052
22931
|
"ariaExpanded",
|
|
22053
22932
|
"ariaPressed",
|
|
22933
|
+
"ariaDescribedBy",
|
|
22054
22934
|
"modal-footer-left",
|
|
22055
22935
|
"modal-footer-right"
|
|
22056
22936
|
]
|
|
@@ -23292,9 +24172,12 @@ var ImagePreviewComponent = class ImagePreviewComponent {
|
|
|
23292
24172
|
this.size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
23293
24173
|
this.placeholder = input("image", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
|
|
23294
24174
|
this.loading = input("lazy", ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
24175
|
+
this.positionX = input(50, ...ngDevMode ? [{ debugName: "positionX" }] : /* istanbul ignore next */ []);
|
|
24176
|
+
this.positionY = input(50, ...ngDevMode ? [{ debugName: "positionY" }] : /* istanbul ignore next */ []);
|
|
23295
24177
|
this.retryKey = input(null, ...ngDevMode ? [{ debugName: "retryKey" }] : /* istanbul ignore next */ []);
|
|
23296
24178
|
this._failed = signal(false, ...ngDevMode ? [{ debugName: "_failed" }] : /* istanbul ignore next */ []);
|
|
23297
24179
|
this._url = computed(() => this.src()?.trim() || null, ...ngDevMode ? [{ debugName: "_url" }] : /* istanbul ignore next */ []);
|
|
24180
|
+
this._objectPosition = computed(() => `${this.positionX() ?? 50}% ${this.positionY() ?? 50}%`, ...ngDevMode ? [{ debugName: "_objectPosition" }] : /* istanbul ignore next */ []);
|
|
23298
24181
|
this._cls = computed(() => `ip-${this.shape()}-${this.size()}`, ...ngDevMode ? [{ debugName: "_cls" }] : /* istanbul ignore next */ []);
|
|
23299
24182
|
effect(() => {
|
|
23300
24183
|
this.src();
|
|
@@ -23368,8 +24251,22 @@ var ImagePreviewComponent = class ImagePreviewComponent {
|
|
|
23368
24251
|
isRequired: false,
|
|
23369
24252
|
transformFunction: null
|
|
23370
24253
|
},
|
|
23371
|
-
|
|
23372
|
-
classPropertyName: "
|
|
24254
|
+
positionX: {
|
|
24255
|
+
classPropertyName: "positionX",
|
|
24256
|
+
publicName: "positionX",
|
|
24257
|
+
isSignal: true,
|
|
24258
|
+
isRequired: false,
|
|
24259
|
+
transformFunction: null
|
|
24260
|
+
},
|
|
24261
|
+
positionY: {
|
|
24262
|
+
classPropertyName: "positionY",
|
|
24263
|
+
publicName: "positionY",
|
|
24264
|
+
isSignal: true,
|
|
24265
|
+
isRequired: false,
|
|
24266
|
+
transformFunction: null
|
|
24267
|
+
},
|
|
24268
|
+
retryKey: {
|
|
24269
|
+
classPropertyName: "retryKey",
|
|
23373
24270
|
publicName: "retryKey",
|
|
23374
24271
|
isSignal: true,
|
|
23375
24272
|
isRequired: false,
|
|
@@ -23379,7 +24276,7 @@ var ImagePreviewComponent = class ImagePreviewComponent {
|
|
|
23379
24276
|
ngImport: i0,
|
|
23380
24277
|
template: `
|
|
23381
24278
|
@if (_url() && !_failed()) {
|
|
23382
|
-
<img class="ip-img" [class]="_cls()" [src]="_url()" [attr.alt]="alt()" [attr.loading]="loading()" decoding="async" (error)="_onError()" />
|
|
24279
|
+
<img class="ip-img" [class]="_cls()" [src]="_url()" [attr.alt]="alt()" [attr.loading]="loading()" [style.object-position]="_objectPosition()" decoding="async" (error)="_onError()" />
|
|
23383
24280
|
} @else {
|
|
23384
24281
|
<span class="ip-img ip-ph" [class]="_cls()" aria-hidden="true">
|
|
23385
24282
|
@if (placeholder() === 'person') {
|
|
@@ -23409,7 +24306,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
23409
24306
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23410
24307
|
template: `
|
|
23411
24308
|
@if (_url() && !_failed()) {
|
|
23412
|
-
<img class="ip-img" [class]="_cls()" [src]="_url()" [attr.alt]="alt()" [attr.loading]="loading()" decoding="async" (error)="_onError()" />
|
|
24309
|
+
<img class="ip-img" [class]="_cls()" [src]="_url()" [attr.alt]="alt()" [attr.loading]="loading()" [style.object-position]="_objectPosition()" decoding="async" (error)="_onError()" />
|
|
23413
24310
|
} @else {
|
|
23414
24311
|
<span class="ip-img ip-ph" [class]="_cls()" aria-hidden="true">
|
|
23415
24312
|
@if (placeholder() === 'person') {
|
|
@@ -23473,6 +24370,22 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
23473
24370
|
required: false
|
|
23474
24371
|
}]
|
|
23475
24372
|
}],
|
|
24373
|
+
positionX: [{
|
|
24374
|
+
type: i0.Input,
|
|
24375
|
+
args: [{
|
|
24376
|
+
isSignal: true,
|
|
24377
|
+
alias: "positionX",
|
|
24378
|
+
required: false
|
|
24379
|
+
}]
|
|
24380
|
+
}],
|
|
24381
|
+
positionY: [{
|
|
24382
|
+
type: i0.Input,
|
|
24383
|
+
args: [{
|
|
24384
|
+
isSignal: true,
|
|
24385
|
+
alias: "positionY",
|
|
24386
|
+
required: false
|
|
24387
|
+
}]
|
|
24388
|
+
}],
|
|
23476
24389
|
retryKey: [{
|
|
23477
24390
|
type: i0.Input,
|
|
23478
24391
|
args: [{
|
|
@@ -23918,6 +24831,7 @@ var DateRangePickerComponent = class DateRangePickerComponent {
|
|
|
23918
24831
|
"ariaLabel",
|
|
23919
24832
|
"ariaExpanded",
|
|
23920
24833
|
"ariaPressed",
|
|
24834
|
+
"ariaDescribedBy",
|
|
23921
24835
|
"modal-footer-left",
|
|
23922
24836
|
"modal-footer-right"
|
|
23923
24837
|
]
|
|
@@ -25099,7 +26013,7 @@ var RichTextEditorComponent = class RichTextEditorComponent {
|
|
|
25099
26013
|
</div>
|
|
25100
26014
|
`,
|
|
25101
26015
|
isInline: true,
|
|
25102
|
-
styles: [":host{display:block}.rte-field{display:flex;flex-direction:column;gap:6px}.rte-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rte-required{color:#ef4444;margin-left:2px}.rte-hint-inline{font-size:.75rem;color:#94a3b8;font-weight:400;margin-left:4px}.rte-box{border:1px solid #e2e8f0;border-radius:8px;background:#fff;transition:border-color .15s,box-shadow .15s}.rte-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.rte-error .rte-box{border-color:#ef4444}.rte-error .rte-box:focus-within{box-shadow:0 0 0 3px #ef44441f}.rte-disabled .rte-box{opacity:.5;cursor:not-allowed}.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:8px 8px 0 0}.rte-divider{width:1px;height:20px;background:#cbd5e1;margin:0 4px}.rte-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.rte-btn svg{width:16px;height:16px}.rte-btn:hover:not(:disabled){background:#e2e8f0;color:#1e293b}.rte-btn:focus-visible,.rte-btn:focus-within{outline:2px solid #3b82f6;outline-offset:1px}.rte-btn.active{background:#dbeafe;color:#2563eb}.rte-btn:disabled,.rte-btn-disabled{cursor:not-allowed;opacity:.5}.rte-menu-wrap{position:relative;display:inline-flex}.rte-menu-btn{width:auto;padding:0 6px;gap:3px}.rte-menu-btn .rte-chevron{width:10px;height:10px;color:#94a3b8;flex-shrink:0}.rte-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 12px #0000001f;padding:4px;overflow-y:auto;max-height:260px}.rte-font-panel{min-width:180px}.rte-item{display:block;width:100%;text-align:left;padding:5px 10px;font-size:12px;color:#374151;border:none;background:none;border-radius:4px;cursor:pointer;white-space:nowrap}.rte-item:hover{background:#f1f5f9}.rte-item.selected{background:#dbeafe;color:#2563eb;font-weight:600}.rte-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:6px 10px 2px}.di-h1{font-size:18px;font-weight:700}.di-h2{font-size:15px;font-weight:600}.di-h3{font-size:13px;font-weight:600}.rte-color{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.rte-editor{padding:12px;outline:none;overflow-y:auto;box-sizing:border-box;font-size:.875rem;line-height:1.6;color:#1e293b;background:#fff;border-radius:0 0 8px 8px;word-break:break-word}.rte-editor[data-empty=true]:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;float:left;height:0}.rte-editor ul,.rte-editor ol{padding-left:1.5em;margin:.25em 0}.rte-editor li{margin:.15em 0}.rte-editor h1{font-size:1.75em;font-weight:700;margin:.5em 0 .25em}.rte-editor h2{font-size:1.4em;font-weight:600;margin:.5em 0 .25em}.rte-editor h3{font-size:1.15em;font-weight:600;margin:.5em 0 .25em}.rte-editor a{color:#2563eb;text-decoration:underline}.rte-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rte-desc-error{color:#ef4444}@media(max-width:480px){.rte-editor{font-size:1rem}}\n"],
|
|
26016
|
+
styles: [":host{display:block}.rte-field{display:flex;flex-direction:column;gap:6px}.rte-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rte-required{color:#ef4444;margin-left:2px}.rte-hint-inline{font-size:.75rem;color:#94a3b8;font-weight:400;margin-left:4px}.rte-box{border:1px solid #e2e8f0;border-radius:8px;background:#fff;transition:border-color .15s,box-shadow .15s}.rte-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.rte-error .rte-box{border-color:#ef4444}.rte-error .rte-box:focus-within{box-shadow:0 0 0 3px #ef44441f}.rte-disabled .rte-box{opacity:.5;cursor:not-allowed}.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:8px 8px 0 0}.rte-divider{width:1px;height:20px;background:#cbd5e1;margin:0 4px}.rte-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.rte-btn svg{width:16px;height:16px}.rte-btn:hover:not(:disabled){background:#e2e8f0;color:#1e293b}.rte-btn:focus-visible,.rte-btn:focus-within{outline:2px solid #3b82f6;outline-offset:1px}.rte-btn.active{background:#dbeafe;color:#2563eb}.rte-btn:disabled,.rte-btn-disabled{cursor:not-allowed;opacity:.5}.rte-menu-wrap{position:relative;display:inline-flex}.rte-menu-btn{width:auto;padding:0 6px;gap:3px}.rte-menu-btn .rte-chevron{width:10px;height:10px;color:#94a3b8;flex-shrink:0}.rte-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 12px #0000001f;padding:4px;overflow-y:auto;max-height:260px}.rte-font-panel{min-width:180px}.rte-item{display:block;width:100%;text-align:left;padding:5px 10px;font-size:12px;color:#374151;border:none;background:none;border-radius:4px;cursor:pointer;white-space:nowrap}.rte-item:hover{background:#f1f5f9}.rte-item.selected{background:#dbeafe;color:#2563eb;font-weight:600}.rte-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:6px 10px 2px}.di-h1{font-size:18px;font-weight:700}.di-h2{font-size:15px;font-weight:600}.di-h3{font-size:13px;font-weight:600}.rte-color{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.rte-editor{padding:12px;outline:none;overflow-y:auto;box-sizing:border-box;font-size:.875rem;line-height:1.6;color:#1e293b;background:#fff;border-radius:0 0 8px 8px;word-break:break-word}.rte-editor[data-empty=true]:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;float:left;height:0}.rte-editor ul,.rte-editor ol{padding-left:1.5em;margin:.25em 0}.rte-editor li{margin:.15em 0}.rte-editor h1{font-size:1.75em;font-weight:700;margin:.5em 0 .25em}.rte-editor h2{font-size:1.4em;font-weight:600;margin:.5em 0 .25em}.rte-editor h3{font-size:1.15em;font-weight:600;margin:.5em 0 .25em}.rte-editor a{color:#2563eb;text-decoration:underline}.rte-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rte-desc-error{color:#ef4444}@media(max-width:480px){.rte-editor{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.rte-btn{width:44px;height:44px}.rte-menu-btn{width:auto;min-width:44px}.rte-divider{height:28px}}\n"],
|
|
25103
26017
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
25104
26018
|
});
|
|
25105
26019
|
}
|
|
@@ -25336,7 +26250,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
25336
26250
|
}
|
|
25337
26251
|
</div>
|
|
25338
26252
|
`,
|
|
25339
|
-
styles: [":host{display:block}.rte-field{display:flex;flex-direction:column;gap:6px}.rte-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rte-required{color:#ef4444;margin-left:2px}.rte-hint-inline{font-size:.75rem;color:#94a3b8;font-weight:400;margin-left:4px}.rte-box{border:1px solid #e2e8f0;border-radius:8px;background:#fff;transition:border-color .15s,box-shadow .15s}.rte-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.rte-error .rte-box{border-color:#ef4444}.rte-error .rte-box:focus-within{box-shadow:0 0 0 3px #ef44441f}.rte-disabled .rte-box{opacity:.5;cursor:not-allowed}.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:8px 8px 0 0}.rte-divider{width:1px;height:20px;background:#cbd5e1;margin:0 4px}.rte-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.rte-btn svg{width:16px;height:16px}.rte-btn:hover:not(:disabled){background:#e2e8f0;color:#1e293b}.rte-btn:focus-visible,.rte-btn:focus-within{outline:2px solid #3b82f6;outline-offset:1px}.rte-btn.active{background:#dbeafe;color:#2563eb}.rte-btn:disabled,.rte-btn-disabled{cursor:not-allowed;opacity:.5}.rte-menu-wrap{position:relative;display:inline-flex}.rte-menu-btn{width:auto;padding:0 6px;gap:3px}.rte-menu-btn .rte-chevron{width:10px;height:10px;color:#94a3b8;flex-shrink:0}.rte-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 12px #0000001f;padding:4px;overflow-y:auto;max-height:260px}.rte-font-panel{min-width:180px}.rte-item{display:block;width:100%;text-align:left;padding:5px 10px;font-size:12px;color:#374151;border:none;background:none;border-radius:4px;cursor:pointer;white-space:nowrap}.rte-item:hover{background:#f1f5f9}.rte-item.selected{background:#dbeafe;color:#2563eb;font-weight:600}.rte-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:6px 10px 2px}.di-h1{font-size:18px;font-weight:700}.di-h2{font-size:15px;font-weight:600}.di-h3{font-size:13px;font-weight:600}.rte-color{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.rte-editor{padding:12px;outline:none;overflow-y:auto;box-sizing:border-box;font-size:.875rem;line-height:1.6;color:#1e293b;background:#fff;border-radius:0 0 8px 8px;word-break:break-word}.rte-editor[data-empty=true]:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;float:left;height:0}.rte-editor ul,.rte-editor ol{padding-left:1.5em;margin:.25em 0}.rte-editor li{margin:.15em 0}.rte-editor h1{font-size:1.75em;font-weight:700;margin:.5em 0 .25em}.rte-editor h2{font-size:1.4em;font-weight:600;margin:.5em 0 .25em}.rte-editor h3{font-size:1.15em;font-weight:600;margin:.5em 0 .25em}.rte-editor a{color:#2563eb;text-decoration:underline}.rte-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rte-desc-error{color:#ef4444}@media(max-width:480px){.rte-editor{font-size:1rem}}\n"]
|
|
26253
|
+
styles: [":host{display:block}.rte-field{display:flex;flex-direction:column;gap:6px}.rte-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rte-required{color:#ef4444;margin-left:2px}.rte-hint-inline{font-size:.75rem;color:#94a3b8;font-weight:400;margin-left:4px}.rte-box{border:1px solid #e2e8f0;border-radius:8px;background:#fff;transition:border-color .15s,box-shadow .15s}.rte-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.rte-error .rte-box{border-color:#ef4444}.rte-error .rte-box:focus-within{box-shadow:0 0 0 3px #ef44441f}.rte-disabled .rte-box{opacity:.5;cursor:not-allowed}.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:8px 8px 0 0}.rte-divider{width:1px;height:20px;background:#cbd5e1;margin:0 4px}.rte-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.rte-btn svg{width:16px;height:16px}.rte-btn:hover:not(:disabled){background:#e2e8f0;color:#1e293b}.rte-btn:focus-visible,.rte-btn:focus-within{outline:2px solid #3b82f6;outline-offset:1px}.rte-btn.active{background:#dbeafe;color:#2563eb}.rte-btn:disabled,.rte-btn-disabled{cursor:not-allowed;opacity:.5}.rte-menu-wrap{position:relative;display:inline-flex}.rte-menu-btn{width:auto;padding:0 6px;gap:3px}.rte-menu-btn .rte-chevron{width:10px;height:10px;color:#94a3b8;flex-shrink:0}.rte-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 12px #0000001f;padding:4px;overflow-y:auto;max-height:260px}.rte-font-panel{min-width:180px}.rte-item{display:block;width:100%;text-align:left;padding:5px 10px;font-size:12px;color:#374151;border:none;background:none;border-radius:4px;cursor:pointer;white-space:nowrap}.rte-item:hover{background:#f1f5f9}.rte-item.selected{background:#dbeafe;color:#2563eb;font-weight:600}.rte-group-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:6px 10px 2px}.di-h1{font-size:18px;font-weight:700}.di-h2{font-size:15px;font-weight:600}.di-h3{font-size:13px;font-weight:600}.rte-color{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.rte-editor{padding:12px;outline:none;overflow-y:auto;box-sizing:border-box;font-size:.875rem;line-height:1.6;color:#1e293b;background:#fff;border-radius:0 0 8px 8px;word-break:break-word}.rte-editor[data-empty=true]:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;float:left;height:0}.rte-editor ul,.rte-editor ol{padding-left:1.5em;margin:.25em 0}.rte-editor li{margin:.15em 0}.rte-editor h1{font-size:1.75em;font-weight:700;margin:.5em 0 .25em}.rte-editor h2{font-size:1.4em;font-weight:600;margin:.5em 0 .25em}.rte-editor h3{font-size:1.15em;font-weight:600;margin:.5em 0 .25em}.rte-editor a{color:#2563eb;text-decoration:underline}.rte-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rte-desc-error{color:#ef4444}@media(max-width:480px){.rte-editor{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.rte-btn{width:44px;height:44px}.rte-menu-btn{width:auto;min-width:44px}.rte-divider{height:28px}}\n"]
|
|
25340
26254
|
}]
|
|
25341
26255
|
}],
|
|
25342
26256
|
ctorParameters: () => [],
|
|
@@ -25435,6 +26349,1542 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
25435
26349
|
}]
|
|
25436
26350
|
}
|
|
25437
26351
|
});
|
|
25438
|
-
|
|
26352
|
+
var RadioComponent = class RadioComponent {
|
|
26353
|
+
constructor() {
|
|
26354
|
+
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
26355
|
+
this.description = input("", ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
|
|
26356
|
+
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
26357
|
+
this.value = input("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
26358
|
+
this.name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
26359
|
+
this.checked = input(false, ...ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []);
|
|
26360
|
+
this.invalid = input(false, ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
26361
|
+
this.describedBy = input("", ...ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []);
|
|
26362
|
+
this._disabledInput = input(false, {
|
|
26363
|
+
...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
|
|
26364
|
+
alias: "disabled"
|
|
26365
|
+
});
|
|
26366
|
+
this.disabled = this._disabledInput;
|
|
26367
|
+
this._labelId = `rd-${Math.random().toString(36).slice(2, 8)}-label`;
|
|
26368
|
+
this._labelledBy = computed(() => this.label() && this.description() && !this.ariaLabel() ? this._labelId : null, ...ngDevMode ? [{ debugName: "_labelledBy" }] : /* istanbul ignore next */ []);
|
|
26369
|
+
this._descriptionId = `rd-${Math.random().toString(36).slice(2, 8)}-desc`;
|
|
26370
|
+
this._describedByIds = computed(() => {
|
|
26371
|
+
return [this.describedBy(), this.description() ? this._descriptionId : ""].filter(Boolean).join(" ") || null;
|
|
26372
|
+
}, ...ngDevMode ? [{ debugName: "_describedByIds" }] : /* istanbul ignore next */ []);
|
|
26373
|
+
this.selected = output();
|
|
26374
|
+
}
|
|
26375
|
+
onChange(event) {
|
|
26376
|
+
if (event.target.checked) this.selected.emit(this.value());
|
|
26377
|
+
}
|
|
26378
|
+
static {
|
|
26379
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
26380
|
+
minVersion: "12.0.0",
|
|
26381
|
+
version: "22.2.2",
|
|
26382
|
+
ngImport: i0,
|
|
26383
|
+
type: RadioComponent,
|
|
26384
|
+
deps: [],
|
|
26385
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
26386
|
+
});
|
|
26387
|
+
}
|
|
26388
|
+
static {
|
|
26389
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
26390
|
+
minVersion: "17.0.0",
|
|
26391
|
+
version: "22.2.2",
|
|
26392
|
+
type: RadioComponent,
|
|
26393
|
+
isStandalone: true,
|
|
26394
|
+
selector: "ui-radio",
|
|
26395
|
+
inputs: {
|
|
26396
|
+
label: {
|
|
26397
|
+
classPropertyName: "label",
|
|
26398
|
+
publicName: "label",
|
|
26399
|
+
isSignal: true,
|
|
26400
|
+
isRequired: false,
|
|
26401
|
+
transformFunction: null
|
|
26402
|
+
},
|
|
26403
|
+
description: {
|
|
26404
|
+
classPropertyName: "description",
|
|
26405
|
+
publicName: "description",
|
|
26406
|
+
isSignal: true,
|
|
26407
|
+
isRequired: false,
|
|
26408
|
+
transformFunction: null
|
|
26409
|
+
},
|
|
26410
|
+
ariaLabel: {
|
|
26411
|
+
classPropertyName: "ariaLabel",
|
|
26412
|
+
publicName: "ariaLabel",
|
|
26413
|
+
isSignal: true,
|
|
26414
|
+
isRequired: false,
|
|
26415
|
+
transformFunction: null
|
|
26416
|
+
},
|
|
26417
|
+
value: {
|
|
26418
|
+
classPropertyName: "value",
|
|
26419
|
+
publicName: "value",
|
|
26420
|
+
isSignal: true,
|
|
26421
|
+
isRequired: false,
|
|
26422
|
+
transformFunction: null
|
|
26423
|
+
},
|
|
26424
|
+
name: {
|
|
26425
|
+
classPropertyName: "name",
|
|
26426
|
+
publicName: "name",
|
|
26427
|
+
isSignal: true,
|
|
26428
|
+
isRequired: false,
|
|
26429
|
+
transformFunction: null
|
|
26430
|
+
},
|
|
26431
|
+
checked: {
|
|
26432
|
+
classPropertyName: "checked",
|
|
26433
|
+
publicName: "checked",
|
|
26434
|
+
isSignal: true,
|
|
26435
|
+
isRequired: false,
|
|
26436
|
+
transformFunction: null
|
|
26437
|
+
},
|
|
26438
|
+
invalid: {
|
|
26439
|
+
classPropertyName: "invalid",
|
|
26440
|
+
publicName: "invalid",
|
|
26441
|
+
isSignal: true,
|
|
26442
|
+
isRequired: false,
|
|
26443
|
+
transformFunction: null
|
|
26444
|
+
},
|
|
26445
|
+
describedBy: {
|
|
26446
|
+
classPropertyName: "describedBy",
|
|
26447
|
+
publicName: "describedBy",
|
|
26448
|
+
isSignal: true,
|
|
26449
|
+
isRequired: false,
|
|
26450
|
+
transformFunction: null
|
|
26451
|
+
},
|
|
26452
|
+
_disabledInput: {
|
|
26453
|
+
classPropertyName: "_disabledInput",
|
|
26454
|
+
publicName: "disabled",
|
|
26455
|
+
isSignal: true,
|
|
26456
|
+
isRequired: false,
|
|
26457
|
+
transformFunction: null
|
|
26458
|
+
}
|
|
26459
|
+
},
|
|
26460
|
+
outputs: { selected: "selected" },
|
|
26461
|
+
ngImport: i0,
|
|
26462
|
+
template: `
|
|
26463
|
+
<label class="rd-wrap" [class.rd-disabled]="disabled()">
|
|
26464
|
+
<span class="rd-dot" [class.rd-checked]="checked()" [class.rd-invalid]="invalid()" [class.rd-disabled]="disabled()">
|
|
26465
|
+
@if (checked()) { <span class="rd-core"></span> }
|
|
26466
|
+
</span>
|
|
26467
|
+
<input
|
|
26468
|
+
type="radio"
|
|
26469
|
+
class="rd-hidden"
|
|
26470
|
+
[name]="name()"
|
|
26471
|
+
[value]="value()"
|
|
26472
|
+
[checked]="checked()"
|
|
26473
|
+
[disabled]="disabled()"
|
|
26474
|
+
[attr.aria-label]="ariaLabel() || null"
|
|
26475
|
+
[attr.aria-labelledby]="_labelledBy()"
|
|
26476
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
26477
|
+
[attr.aria-describedby]="_describedByIds()"
|
|
26478
|
+
(change)="onChange($event)"
|
|
26479
|
+
/>
|
|
26480
|
+
<span class="rd-text">
|
|
26481
|
+
@if (label()) { <span class="rd-label" [id]="_labelId">{{ label() }}</span> }
|
|
26482
|
+
@if (description()) { <span class="rd-description" [id]="_descriptionId">{{ description() }}</span> }
|
|
26483
|
+
<ng-content />
|
|
26484
|
+
</span>
|
|
26485
|
+
</label>
|
|
26486
|
+
`,
|
|
26487
|
+
isInline: true,
|
|
26488
|
+
styles: [":host{display:block}.rd-wrap{display:inline-flex;align-items:flex-start;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.rd-wrap.rd-disabled{cursor:not-allowed;opacity:.5}.rd-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.rd-wrap:has(.rd-hidden:focus-visible) .rd-dot{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.rd-wrap{position:relative}.rd-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:-2px;opacity:0;cursor:pointer;z-index:1}.rd-wrap.rd-disabled .rd-hidden{cursor:not-allowed}}.rd-dot{flex-shrink:0;width:20px;height:20px;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.rd-dot.rd-checked{background:#3b82f6;border-color:#3b82f6}.rd-dot.rd-invalid:not(.rd-checked){border-color:#ef4444}.rd-wrap:hover .rd-dot:not(.rd-checked):not(.rd-disabled){border-color:#3b82f6}.rd-core{width:8px;height:8px;border-radius:50%;background:#fff}@media(max-width:640px),(pointer:coarse){.rd-dot{position:relative}.rd-dot:after{content:\"\";position:absolute;inset:-12px}}.rd-text{display:flex;flex-direction:column;gap:2px}.rd-label{font-size:.875rem;color:#334155;line-height:1.4}.rd-description{font-size:.75rem;color:#64748b;line-height:1.4}\n"],
|
|
26489
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
26490
|
+
});
|
|
26491
|
+
}
|
|
26492
|
+
};
|
|
26493
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
26494
|
+
minVersion: "12.0.0",
|
|
26495
|
+
version: "22.2.2",
|
|
26496
|
+
ngImport: i0,
|
|
26497
|
+
type: RadioComponent,
|
|
26498
|
+
decorators: [{
|
|
26499
|
+
type: Component,
|
|
26500
|
+
args: [{
|
|
26501
|
+
selector: "ui-radio",
|
|
26502
|
+
standalone: true,
|
|
26503
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
26504
|
+
template: `
|
|
26505
|
+
<label class="rd-wrap" [class.rd-disabled]="disabled()">
|
|
26506
|
+
<span class="rd-dot" [class.rd-checked]="checked()" [class.rd-invalid]="invalid()" [class.rd-disabled]="disabled()">
|
|
26507
|
+
@if (checked()) { <span class="rd-core"></span> }
|
|
26508
|
+
</span>
|
|
26509
|
+
<input
|
|
26510
|
+
type="radio"
|
|
26511
|
+
class="rd-hidden"
|
|
26512
|
+
[name]="name()"
|
|
26513
|
+
[value]="value()"
|
|
26514
|
+
[checked]="checked()"
|
|
26515
|
+
[disabled]="disabled()"
|
|
26516
|
+
[attr.aria-label]="ariaLabel() || null"
|
|
26517
|
+
[attr.aria-labelledby]="_labelledBy()"
|
|
26518
|
+
[attr.aria-invalid]="invalid() ? 'true' : null"
|
|
26519
|
+
[attr.aria-describedby]="_describedByIds()"
|
|
26520
|
+
(change)="onChange($event)"
|
|
26521
|
+
/>
|
|
26522
|
+
<span class="rd-text">
|
|
26523
|
+
@if (label()) { <span class="rd-label" [id]="_labelId">{{ label() }}</span> }
|
|
26524
|
+
@if (description()) { <span class="rd-description" [id]="_descriptionId">{{ description() }}</span> }
|
|
26525
|
+
<ng-content />
|
|
26526
|
+
</span>
|
|
26527
|
+
</label>
|
|
26528
|
+
`,
|
|
26529
|
+
styles: [":host{display:block}.rd-wrap{display:inline-flex;align-items:flex-start;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.rd-wrap.rd-disabled{cursor:not-allowed;opacity:.5}.rd-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.rd-wrap:has(.rd-hidden:focus-visible) .rd-dot{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.rd-wrap{position:relative}.rd-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:-2px;opacity:0;cursor:pointer;z-index:1}.rd-wrap.rd-disabled .rd-hidden{cursor:not-allowed}}.rd-dot{flex-shrink:0;width:20px;height:20px;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.rd-dot.rd-checked{background:#3b82f6;border-color:#3b82f6}.rd-dot.rd-invalid:not(.rd-checked){border-color:#ef4444}.rd-wrap:hover .rd-dot:not(.rd-checked):not(.rd-disabled){border-color:#3b82f6}.rd-core{width:8px;height:8px;border-radius:50%;background:#fff}@media(max-width:640px),(pointer:coarse){.rd-dot{position:relative}.rd-dot:after{content:\"\";position:absolute;inset:-12px}}.rd-text{display:flex;flex-direction:column;gap:2px}.rd-label{font-size:.875rem;color:#334155;line-height:1.4}.rd-description{font-size:.75rem;color:#64748b;line-height:1.4}\n"]
|
|
26530
|
+
}]
|
|
26531
|
+
}],
|
|
26532
|
+
propDecorators: {
|
|
26533
|
+
label: [{
|
|
26534
|
+
type: i0.Input,
|
|
26535
|
+
args: [{
|
|
26536
|
+
isSignal: true,
|
|
26537
|
+
alias: "label",
|
|
26538
|
+
required: false
|
|
26539
|
+
}]
|
|
26540
|
+
}],
|
|
26541
|
+
description: [{
|
|
26542
|
+
type: i0.Input,
|
|
26543
|
+
args: [{
|
|
26544
|
+
isSignal: true,
|
|
26545
|
+
alias: "description",
|
|
26546
|
+
required: false
|
|
26547
|
+
}]
|
|
26548
|
+
}],
|
|
26549
|
+
ariaLabel: [{
|
|
26550
|
+
type: i0.Input,
|
|
26551
|
+
args: [{
|
|
26552
|
+
isSignal: true,
|
|
26553
|
+
alias: "ariaLabel",
|
|
26554
|
+
required: false
|
|
26555
|
+
}]
|
|
26556
|
+
}],
|
|
26557
|
+
value: [{
|
|
26558
|
+
type: i0.Input,
|
|
26559
|
+
args: [{
|
|
26560
|
+
isSignal: true,
|
|
26561
|
+
alias: "value",
|
|
26562
|
+
required: false
|
|
26563
|
+
}]
|
|
26564
|
+
}],
|
|
26565
|
+
name: [{
|
|
26566
|
+
type: i0.Input,
|
|
26567
|
+
args: [{
|
|
26568
|
+
isSignal: true,
|
|
26569
|
+
alias: "name",
|
|
26570
|
+
required: false
|
|
26571
|
+
}]
|
|
26572
|
+
}],
|
|
26573
|
+
checked: [{
|
|
26574
|
+
type: i0.Input,
|
|
26575
|
+
args: [{
|
|
26576
|
+
isSignal: true,
|
|
26577
|
+
alias: "checked",
|
|
26578
|
+
required: false
|
|
26579
|
+
}]
|
|
26580
|
+
}],
|
|
26581
|
+
invalid: [{
|
|
26582
|
+
type: i0.Input,
|
|
26583
|
+
args: [{
|
|
26584
|
+
isSignal: true,
|
|
26585
|
+
alias: "invalid",
|
|
26586
|
+
required: false
|
|
26587
|
+
}]
|
|
26588
|
+
}],
|
|
26589
|
+
describedBy: [{
|
|
26590
|
+
type: i0.Input,
|
|
26591
|
+
args: [{
|
|
26592
|
+
isSignal: true,
|
|
26593
|
+
alias: "describedBy",
|
|
26594
|
+
required: false
|
|
26595
|
+
}]
|
|
26596
|
+
}],
|
|
26597
|
+
_disabledInput: [{
|
|
26598
|
+
type: i0.Input,
|
|
26599
|
+
args: [{
|
|
26600
|
+
isSignal: true,
|
|
26601
|
+
alias: "disabled",
|
|
26602
|
+
required: false
|
|
26603
|
+
}]
|
|
26604
|
+
}],
|
|
26605
|
+
selected: [{
|
|
26606
|
+
type: i0.Output,
|
|
26607
|
+
args: ["selected"]
|
|
26608
|
+
}]
|
|
26609
|
+
}
|
|
26610
|
+
});
|
|
26611
|
+
var RadioGroupComponent = class RadioGroupComponent {
|
|
26612
|
+
get _name() {
|
|
26613
|
+
return this.name() || this._generatedName;
|
|
26614
|
+
}
|
|
26615
|
+
constructor() {
|
|
26616
|
+
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
26617
|
+
this.options = input([], ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
|
|
26618
|
+
this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
|
|
26619
|
+
this.hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
26620
|
+
this.error = input("", ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
|
|
26621
|
+
this.showErrors = input(false, ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
|
|
26622
|
+
this.orientation = input("vertical", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
|
|
26623
|
+
this.name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
26624
|
+
this._disabledInput = input(false, {
|
|
26625
|
+
...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
|
|
26626
|
+
alias: "disabled"
|
|
26627
|
+
});
|
|
26628
|
+
this._cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []);
|
|
26629
|
+
this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
26630
|
+
this._generatedName = `rg-${Math.random().toString(36).slice(2, 8)}`;
|
|
26631
|
+
this._descId = `${this._generatedName}-desc`;
|
|
26632
|
+
this._value = signal("", ...ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []);
|
|
26633
|
+
this._reveal = createFieldReveal(this.showErrors);
|
|
26634
|
+
this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
26635
|
+
this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
26636
|
+
this.errorMessage = computed(() => this._issue()?.message ?? "", ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
|
|
26637
|
+
this.invalidChange = output();
|
|
26638
|
+
this._activeError = computed(() => this.error() || (this._reveal.revealed() ? this.errorMessage() : ""), ...ngDevMode ? [{ debugName: "_activeError" }] : /* istanbul ignore next */ []);
|
|
26639
|
+
this._onValidatorChange = () => {};
|
|
26640
|
+
this._onChange = (_) => {};
|
|
26641
|
+
this._onTouched = () => {};
|
|
26642
|
+
effect(() => {
|
|
26643
|
+
this.invalidChange.emit(this.invalid());
|
|
26644
|
+
});
|
|
26645
|
+
}
|
|
26646
|
+
ngOnChanges() {
|
|
26647
|
+
this._onValidatorChange();
|
|
26648
|
+
}
|
|
26649
|
+
validate(control) {
|
|
26650
|
+
const v = control.value;
|
|
26651
|
+
return issueToErrors(this._check(v == null ? "" : String(v)));
|
|
26652
|
+
}
|
|
26653
|
+
registerOnValidatorChange(fn) {
|
|
26654
|
+
this._onValidatorChange = fn;
|
|
26655
|
+
}
|
|
26656
|
+
writeValue(val) {
|
|
26657
|
+
this._value.set(val ?? "");
|
|
26658
|
+
}
|
|
26659
|
+
registerOnChange(fn) {
|
|
26660
|
+
this._onChange = fn;
|
|
26661
|
+
}
|
|
26662
|
+
registerOnTouched(fn) {
|
|
26663
|
+
this._onTouched = fn;
|
|
26664
|
+
}
|
|
26665
|
+
setDisabledState(d) {
|
|
26666
|
+
this._cvaDisabled.set(d);
|
|
26667
|
+
}
|
|
26668
|
+
onSelect(value) {
|
|
26669
|
+
this._value.set(value);
|
|
26670
|
+
this._onChange(value);
|
|
26671
|
+
}
|
|
26672
|
+
onFocusOut(event) {
|
|
26673
|
+
const next = event.relatedTarget;
|
|
26674
|
+
if (next && event.currentTarget.contains(next)) return;
|
|
26675
|
+
this._onTouched();
|
|
26676
|
+
this._reveal.touched.set(true);
|
|
26677
|
+
}
|
|
26678
|
+
_check(value) {
|
|
26679
|
+
if (this.disabled()) return null;
|
|
26680
|
+
if (!value) return this.required() ? requiredIssue(this.label()) : null;
|
|
26681
|
+
const opts = this.options();
|
|
26682
|
+
if (opts.length > 0 && !opts.some((o) => o.value === value)) return {
|
|
26683
|
+
key: "option",
|
|
26684
|
+
message: "Select a valid option."
|
|
26685
|
+
};
|
|
26686
|
+
return null;
|
|
26687
|
+
}
|
|
26688
|
+
static {
|
|
26689
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
26690
|
+
minVersion: "12.0.0",
|
|
26691
|
+
version: "22.2.2",
|
|
26692
|
+
ngImport: i0,
|
|
26693
|
+
type: RadioGroupComponent,
|
|
26694
|
+
deps: [],
|
|
26695
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
26696
|
+
});
|
|
26697
|
+
}
|
|
26698
|
+
static {
|
|
26699
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
26700
|
+
minVersion: "17.0.0",
|
|
26701
|
+
version: "22.2.2",
|
|
26702
|
+
type: RadioGroupComponent,
|
|
26703
|
+
isStandalone: true,
|
|
26704
|
+
selector: "ui-radio-group",
|
|
26705
|
+
inputs: {
|
|
26706
|
+
label: {
|
|
26707
|
+
classPropertyName: "label",
|
|
26708
|
+
publicName: "label",
|
|
26709
|
+
isSignal: true,
|
|
26710
|
+
isRequired: false,
|
|
26711
|
+
transformFunction: null
|
|
26712
|
+
},
|
|
26713
|
+
options: {
|
|
26714
|
+
classPropertyName: "options",
|
|
26715
|
+
publicName: "options",
|
|
26716
|
+
isSignal: true,
|
|
26717
|
+
isRequired: false,
|
|
26718
|
+
transformFunction: null
|
|
26719
|
+
},
|
|
26720
|
+
required: {
|
|
26721
|
+
classPropertyName: "required",
|
|
26722
|
+
publicName: "required",
|
|
26723
|
+
isSignal: true,
|
|
26724
|
+
isRequired: false,
|
|
26725
|
+
transformFunction: null
|
|
26726
|
+
},
|
|
26727
|
+
hint: {
|
|
26728
|
+
classPropertyName: "hint",
|
|
26729
|
+
publicName: "hint",
|
|
26730
|
+
isSignal: true,
|
|
26731
|
+
isRequired: false,
|
|
26732
|
+
transformFunction: null
|
|
26733
|
+
},
|
|
26734
|
+
error: {
|
|
26735
|
+
classPropertyName: "error",
|
|
26736
|
+
publicName: "error",
|
|
26737
|
+
isSignal: true,
|
|
26738
|
+
isRequired: false,
|
|
26739
|
+
transformFunction: null
|
|
26740
|
+
},
|
|
26741
|
+
showErrors: {
|
|
26742
|
+
classPropertyName: "showErrors",
|
|
26743
|
+
publicName: "showErrors",
|
|
26744
|
+
isSignal: true,
|
|
26745
|
+
isRequired: false,
|
|
26746
|
+
transformFunction: null
|
|
26747
|
+
},
|
|
26748
|
+
orientation: {
|
|
26749
|
+
classPropertyName: "orientation",
|
|
26750
|
+
publicName: "orientation",
|
|
26751
|
+
isSignal: true,
|
|
26752
|
+
isRequired: false,
|
|
26753
|
+
transformFunction: null
|
|
26754
|
+
},
|
|
26755
|
+
name: {
|
|
26756
|
+
classPropertyName: "name",
|
|
26757
|
+
publicName: "name",
|
|
26758
|
+
isSignal: true,
|
|
26759
|
+
isRequired: false,
|
|
26760
|
+
transformFunction: null
|
|
26761
|
+
},
|
|
26762
|
+
_disabledInput: {
|
|
26763
|
+
classPropertyName: "_disabledInput",
|
|
26764
|
+
publicName: "disabled",
|
|
26765
|
+
isSignal: true,
|
|
26766
|
+
isRequired: false,
|
|
26767
|
+
transformFunction: null
|
|
26768
|
+
}
|
|
26769
|
+
},
|
|
26770
|
+
outputs: { invalidChange: "invalidChange" },
|
|
26771
|
+
providers: [
|
|
26772
|
+
{
|
|
26773
|
+
provide: NG_VALUE_ACCESSOR,
|
|
26774
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
26775
|
+
multi: true
|
|
26776
|
+
},
|
|
26777
|
+
{
|
|
26778
|
+
provide: NG_VALIDATORS,
|
|
26779
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
26780
|
+
multi: true
|
|
26781
|
+
},
|
|
26782
|
+
{
|
|
26783
|
+
provide: UiFieldValidity,
|
|
26784
|
+
useExisting: forwardRef(() => RadioGroupComponent)
|
|
26785
|
+
}
|
|
26786
|
+
],
|
|
26787
|
+
usesOnChanges: true,
|
|
26788
|
+
ngImport: i0,
|
|
26789
|
+
template: `
|
|
26790
|
+
<fieldset
|
|
26791
|
+
class="rg-field"
|
|
26792
|
+
role="radiogroup"
|
|
26793
|
+
[class.rg-error]="_activeError()"
|
|
26794
|
+
[class.rg-disabled]="disabled()"
|
|
26795
|
+
[disabled]="disabled()"
|
|
26796
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
26797
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
26798
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
26799
|
+
(focusout)="onFocusOut($event)">
|
|
26800
|
+
@if (label()) {
|
|
26801
|
+
<legend class="rg-label">
|
|
26802
|
+
{{ label() }}
|
|
26803
|
+
@if (required()) { <span class="rg-required" aria-hidden="true">*</span> }
|
|
26804
|
+
</legend>
|
|
26805
|
+
}
|
|
26806
|
+
<div class="rg-options" [class.rg-horizontal]="orientation() === 'horizontal'">
|
|
26807
|
+
@for (opt of options(); track opt.value) {
|
|
26808
|
+
<ui-radio
|
|
26809
|
+
[name]="_name"
|
|
26810
|
+
[value]="opt.value"
|
|
26811
|
+
[label]="opt.label"
|
|
26812
|
+
[description]="opt.description ?? ''"
|
|
26813
|
+
[checked]="_value() === opt.value"
|
|
26814
|
+
[disabled]="disabled() || !!opt.disabled"
|
|
26815
|
+
[invalid]="!!_activeError()"
|
|
26816
|
+
[describedBy]="(_activeError() || hint()) ? _descId : ''"
|
|
26817
|
+
(selected)="onSelect($event)" />
|
|
26818
|
+
}
|
|
26819
|
+
</div>
|
|
26820
|
+
@if (_activeError()) {
|
|
26821
|
+
<p class="rg-desc rg-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
26822
|
+
} @else if (hint()) {
|
|
26823
|
+
<p class="rg-desc" [id]="_descId">{{ hint() }}</p>
|
|
26824
|
+
}
|
|
26825
|
+
</fieldset>
|
|
26826
|
+
`,
|
|
26827
|
+
isInline: true,
|
|
26828
|
+
styles: [":host{display:block}.rg-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rg-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rg-required{color:#ef4444;margin-left:2px}.rg-options{display:flex;flex-direction:column;gap:10px}.rg-options.rg-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.rg-disabled{cursor:not-allowed}.rg-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rg-desc-error{color:#ef4444}@media(pointer:coarse),(max-width:480px){.rg-options{gap:4px}}\n"],
|
|
26829
|
+
dependencies: [{
|
|
26830
|
+
kind: "component",
|
|
26831
|
+
type: RadioComponent,
|
|
26832
|
+
selector: "ui-radio",
|
|
26833
|
+
inputs: [
|
|
26834
|
+
"label",
|
|
26835
|
+
"description",
|
|
26836
|
+
"ariaLabel",
|
|
26837
|
+
"value",
|
|
26838
|
+
"name",
|
|
26839
|
+
"checked",
|
|
26840
|
+
"invalid",
|
|
26841
|
+
"describedBy",
|
|
26842
|
+
"disabled"
|
|
26843
|
+
],
|
|
26844
|
+
outputs: ["selected"]
|
|
26845
|
+
}],
|
|
26846
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
26847
|
+
});
|
|
26848
|
+
}
|
|
26849
|
+
};
|
|
26850
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
26851
|
+
minVersion: "12.0.0",
|
|
26852
|
+
version: "22.2.2",
|
|
26853
|
+
ngImport: i0,
|
|
26854
|
+
type: RadioGroupComponent,
|
|
26855
|
+
decorators: [{
|
|
26856
|
+
type: Component,
|
|
26857
|
+
args: [{
|
|
26858
|
+
selector: "ui-radio-group",
|
|
26859
|
+
standalone: true,
|
|
26860
|
+
imports: [RadioComponent],
|
|
26861
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
26862
|
+
providers: [
|
|
26863
|
+
{
|
|
26864
|
+
provide: NG_VALUE_ACCESSOR,
|
|
26865
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
26866
|
+
multi: true
|
|
26867
|
+
},
|
|
26868
|
+
{
|
|
26869
|
+
provide: NG_VALIDATORS,
|
|
26870
|
+
useExisting: forwardRef(() => RadioGroupComponent),
|
|
26871
|
+
multi: true
|
|
26872
|
+
},
|
|
26873
|
+
{
|
|
26874
|
+
provide: UiFieldValidity,
|
|
26875
|
+
useExisting: forwardRef(() => RadioGroupComponent)
|
|
26876
|
+
}
|
|
26877
|
+
],
|
|
26878
|
+
template: `
|
|
26879
|
+
<fieldset
|
|
26880
|
+
class="rg-field"
|
|
26881
|
+
role="radiogroup"
|
|
26882
|
+
[class.rg-error]="_activeError()"
|
|
26883
|
+
[class.rg-disabled]="disabled()"
|
|
26884
|
+
[disabled]="disabled()"
|
|
26885
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
26886
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
26887
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
26888
|
+
(focusout)="onFocusOut($event)">
|
|
26889
|
+
@if (label()) {
|
|
26890
|
+
<legend class="rg-label">
|
|
26891
|
+
{{ label() }}
|
|
26892
|
+
@if (required()) { <span class="rg-required" aria-hidden="true">*</span> }
|
|
26893
|
+
</legend>
|
|
26894
|
+
}
|
|
26895
|
+
<div class="rg-options" [class.rg-horizontal]="orientation() === 'horizontal'">
|
|
26896
|
+
@for (opt of options(); track opt.value) {
|
|
26897
|
+
<ui-radio
|
|
26898
|
+
[name]="_name"
|
|
26899
|
+
[value]="opt.value"
|
|
26900
|
+
[label]="opt.label"
|
|
26901
|
+
[description]="opt.description ?? ''"
|
|
26902
|
+
[checked]="_value() === opt.value"
|
|
26903
|
+
[disabled]="disabled() || !!opt.disabled"
|
|
26904
|
+
[invalid]="!!_activeError()"
|
|
26905
|
+
[describedBy]="(_activeError() || hint()) ? _descId : ''"
|
|
26906
|
+
(selected)="onSelect($event)" />
|
|
26907
|
+
}
|
|
26908
|
+
</div>
|
|
26909
|
+
@if (_activeError()) {
|
|
26910
|
+
<p class="rg-desc rg-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
26911
|
+
} @else if (hint()) {
|
|
26912
|
+
<p class="rg-desc" [id]="_descId">{{ hint() }}</p>
|
|
26913
|
+
}
|
|
26914
|
+
</fieldset>
|
|
26915
|
+
`,
|
|
26916
|
+
styles: [":host{display:block}.rg-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rg-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rg-required{color:#ef4444;margin-left:2px}.rg-options{display:flex;flex-direction:column;gap:10px}.rg-options.rg-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.rg-disabled{cursor:not-allowed}.rg-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rg-desc-error{color:#ef4444}@media(pointer:coarse),(max-width:480px){.rg-options{gap:4px}}\n"]
|
|
26917
|
+
}]
|
|
26918
|
+
}],
|
|
26919
|
+
ctorParameters: () => [],
|
|
26920
|
+
propDecorators: {
|
|
26921
|
+
label: [{
|
|
26922
|
+
type: i0.Input,
|
|
26923
|
+
args: [{
|
|
26924
|
+
isSignal: true,
|
|
26925
|
+
alias: "label",
|
|
26926
|
+
required: false
|
|
26927
|
+
}]
|
|
26928
|
+
}],
|
|
26929
|
+
options: [{
|
|
26930
|
+
type: i0.Input,
|
|
26931
|
+
args: [{
|
|
26932
|
+
isSignal: true,
|
|
26933
|
+
alias: "options",
|
|
26934
|
+
required: false
|
|
26935
|
+
}]
|
|
26936
|
+
}],
|
|
26937
|
+
required: [{
|
|
26938
|
+
type: i0.Input,
|
|
26939
|
+
args: [{
|
|
26940
|
+
isSignal: true,
|
|
26941
|
+
alias: "required",
|
|
26942
|
+
required: false
|
|
26943
|
+
}]
|
|
26944
|
+
}],
|
|
26945
|
+
hint: [{
|
|
26946
|
+
type: i0.Input,
|
|
26947
|
+
args: [{
|
|
26948
|
+
isSignal: true,
|
|
26949
|
+
alias: "hint",
|
|
26950
|
+
required: false
|
|
26951
|
+
}]
|
|
26952
|
+
}],
|
|
26953
|
+
error: [{
|
|
26954
|
+
type: i0.Input,
|
|
26955
|
+
args: [{
|
|
26956
|
+
isSignal: true,
|
|
26957
|
+
alias: "error",
|
|
26958
|
+
required: false
|
|
26959
|
+
}]
|
|
26960
|
+
}],
|
|
26961
|
+
showErrors: [{
|
|
26962
|
+
type: i0.Input,
|
|
26963
|
+
args: [{
|
|
26964
|
+
isSignal: true,
|
|
26965
|
+
alias: "showErrors",
|
|
26966
|
+
required: false
|
|
26967
|
+
}]
|
|
26968
|
+
}],
|
|
26969
|
+
orientation: [{
|
|
26970
|
+
type: i0.Input,
|
|
26971
|
+
args: [{
|
|
26972
|
+
isSignal: true,
|
|
26973
|
+
alias: "orientation",
|
|
26974
|
+
required: false
|
|
26975
|
+
}]
|
|
26976
|
+
}],
|
|
26977
|
+
name: [{
|
|
26978
|
+
type: i0.Input,
|
|
26979
|
+
args: [{
|
|
26980
|
+
isSignal: true,
|
|
26981
|
+
alias: "name",
|
|
26982
|
+
required: false
|
|
26983
|
+
}]
|
|
26984
|
+
}],
|
|
26985
|
+
_disabledInput: [{
|
|
26986
|
+
type: i0.Input,
|
|
26987
|
+
args: [{
|
|
26988
|
+
isSignal: true,
|
|
26989
|
+
alias: "disabled",
|
|
26990
|
+
required: false
|
|
26991
|
+
}]
|
|
26992
|
+
}],
|
|
26993
|
+
invalidChange: [{
|
|
26994
|
+
type: i0.Output,
|
|
26995
|
+
args: ["invalidChange"]
|
|
26996
|
+
}]
|
|
26997
|
+
}
|
|
26998
|
+
});
|
|
26999
|
+
var RadioMatrixComponent = class RadioMatrixComponent {
|
|
27000
|
+
get _name() {
|
|
27001
|
+
return this.name() || this._generatedName;
|
|
27002
|
+
}
|
|
27003
|
+
constructor() {
|
|
27004
|
+
this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
27005
|
+
this.rowHeader = input("", ...ngDevMode ? [{ debugName: "rowHeader" }] : /* istanbul ignore next */ []);
|
|
27006
|
+
this.rows = input([], ...ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []);
|
|
27007
|
+
this.columns = input([], ...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
|
|
27008
|
+
this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
|
|
27009
|
+
this.hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
27010
|
+
this.error = input("", ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
|
|
27011
|
+
this.showErrors = input(false, ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
|
|
27012
|
+
this.name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
27013
|
+
this._disabledInput = input(false, {
|
|
27014
|
+
...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
|
|
27015
|
+
alias: "disabled"
|
|
27016
|
+
});
|
|
27017
|
+
this._cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []);
|
|
27018
|
+
this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
27019
|
+
this._generatedName = `rm-${Math.random().toString(36).slice(2, 8)}`;
|
|
27020
|
+
this._descId = `${this._generatedName}-desc`;
|
|
27021
|
+
this._value = signal({}, ...ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []);
|
|
27022
|
+
this._reveal = createFieldReveal(this.showErrors);
|
|
27023
|
+
this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
27024
|
+
this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
27025
|
+
this.errorMessage = computed(() => this._issue()?.message ?? "", ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
|
|
27026
|
+
this.invalidChange = output();
|
|
27027
|
+
this._activeError = computed(() => this.error() || (this._reveal.revealed() ? this.errorMessage() : ""), ...ngDevMode ? [{ debugName: "_activeError" }] : /* istanbul ignore next */ []);
|
|
27028
|
+
this._onValidatorChange = () => {};
|
|
27029
|
+
this._onChange = (_) => {};
|
|
27030
|
+
this._onTouched = () => {};
|
|
27031
|
+
effect(() => {
|
|
27032
|
+
this.invalidChange.emit(this.invalid());
|
|
27033
|
+
});
|
|
27034
|
+
}
|
|
27035
|
+
ngOnChanges() {
|
|
27036
|
+
this._onValidatorChange();
|
|
27037
|
+
}
|
|
27038
|
+
validate(control) {
|
|
27039
|
+
return issueToErrors(this._check(this._toRecord(control.value)));
|
|
27040
|
+
}
|
|
27041
|
+
registerOnValidatorChange(fn) {
|
|
27042
|
+
this._onValidatorChange = fn;
|
|
27043
|
+
}
|
|
27044
|
+
writeValue(val) {
|
|
27045
|
+
this._value.set(this._toRecord(val));
|
|
27046
|
+
}
|
|
27047
|
+
registerOnChange(fn) {
|
|
27048
|
+
this._onChange = fn;
|
|
27049
|
+
}
|
|
27050
|
+
registerOnTouched(fn) {
|
|
27051
|
+
this._onTouched = fn;
|
|
27052
|
+
}
|
|
27053
|
+
setDisabledState(d) {
|
|
27054
|
+
this._cvaDisabled.set(d);
|
|
27055
|
+
}
|
|
27056
|
+
onSelect(row, column) {
|
|
27057
|
+
const next = {
|
|
27058
|
+
...this._value(),
|
|
27059
|
+
[row]: column
|
|
27060
|
+
};
|
|
27061
|
+
this._value.set(next);
|
|
27062
|
+
this._onChange(next);
|
|
27063
|
+
}
|
|
27064
|
+
_rowInvalid(row) {
|
|
27065
|
+
if (this.disabled() || row.disabled || !this._reveal.revealed()) return false;
|
|
27066
|
+
const v = this._value()[row.value] ?? "";
|
|
27067
|
+
return v ? !this.columns().some((c) => c.value === v) : this.required();
|
|
27068
|
+
}
|
|
27069
|
+
onFocusOut(event) {
|
|
27070
|
+
const next = event.relatedTarget;
|
|
27071
|
+
if (next && event.currentTarget.contains(next)) return;
|
|
27072
|
+
this._onTouched();
|
|
27073
|
+
this._reveal.touched.set(true);
|
|
27074
|
+
}
|
|
27075
|
+
_toRecord(val) {
|
|
27076
|
+
return val && typeof val === "object" ? { ...val } : {};
|
|
27077
|
+
}
|
|
27078
|
+
_check(value) {
|
|
27079
|
+
if (this.disabled()) return null;
|
|
27080
|
+
const cols = this.columns();
|
|
27081
|
+
const rows = this.rows().filter((r) => !r.disabled);
|
|
27082
|
+
if (cols.length > 0 && rows.some((r) => value[r.value] && !cols.some((c) => c.value === value[r.value]))) return {
|
|
27083
|
+
key: "option",
|
|
27084
|
+
message: "Select a valid option."
|
|
27085
|
+
};
|
|
27086
|
+
if (this.required() && rows.some((r) => !value[r.value])) {
|
|
27087
|
+
const label = this.label().trim();
|
|
27088
|
+
return {
|
|
27089
|
+
key: "required",
|
|
27090
|
+
message: label ? `${label}: choose an option in every row.` : "Choose an option in every row."
|
|
27091
|
+
};
|
|
27092
|
+
}
|
|
27093
|
+
return null;
|
|
27094
|
+
}
|
|
27095
|
+
static {
|
|
27096
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27097
|
+
minVersion: "12.0.0",
|
|
27098
|
+
version: "22.2.2",
|
|
27099
|
+
ngImport: i0,
|
|
27100
|
+
type: RadioMatrixComponent,
|
|
27101
|
+
deps: [],
|
|
27102
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
27103
|
+
});
|
|
27104
|
+
}
|
|
27105
|
+
static {
|
|
27106
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27107
|
+
minVersion: "17.0.0",
|
|
27108
|
+
version: "22.2.2",
|
|
27109
|
+
type: RadioMatrixComponent,
|
|
27110
|
+
isStandalone: true,
|
|
27111
|
+
selector: "ui-radio-matrix",
|
|
27112
|
+
inputs: {
|
|
27113
|
+
label: {
|
|
27114
|
+
classPropertyName: "label",
|
|
27115
|
+
publicName: "label",
|
|
27116
|
+
isSignal: true,
|
|
27117
|
+
isRequired: false,
|
|
27118
|
+
transformFunction: null
|
|
27119
|
+
},
|
|
27120
|
+
rowHeader: {
|
|
27121
|
+
classPropertyName: "rowHeader",
|
|
27122
|
+
publicName: "rowHeader",
|
|
27123
|
+
isSignal: true,
|
|
27124
|
+
isRequired: false,
|
|
27125
|
+
transformFunction: null
|
|
27126
|
+
},
|
|
27127
|
+
rows: {
|
|
27128
|
+
classPropertyName: "rows",
|
|
27129
|
+
publicName: "rows",
|
|
27130
|
+
isSignal: true,
|
|
27131
|
+
isRequired: false,
|
|
27132
|
+
transformFunction: null
|
|
27133
|
+
},
|
|
27134
|
+
columns: {
|
|
27135
|
+
classPropertyName: "columns",
|
|
27136
|
+
publicName: "columns",
|
|
27137
|
+
isSignal: true,
|
|
27138
|
+
isRequired: false,
|
|
27139
|
+
transformFunction: null
|
|
27140
|
+
},
|
|
27141
|
+
required: {
|
|
27142
|
+
classPropertyName: "required",
|
|
27143
|
+
publicName: "required",
|
|
27144
|
+
isSignal: true,
|
|
27145
|
+
isRequired: false,
|
|
27146
|
+
transformFunction: null
|
|
27147
|
+
},
|
|
27148
|
+
hint: {
|
|
27149
|
+
classPropertyName: "hint",
|
|
27150
|
+
publicName: "hint",
|
|
27151
|
+
isSignal: true,
|
|
27152
|
+
isRequired: false,
|
|
27153
|
+
transformFunction: null
|
|
27154
|
+
},
|
|
27155
|
+
error: {
|
|
27156
|
+
classPropertyName: "error",
|
|
27157
|
+
publicName: "error",
|
|
27158
|
+
isSignal: true,
|
|
27159
|
+
isRequired: false,
|
|
27160
|
+
transformFunction: null
|
|
27161
|
+
},
|
|
27162
|
+
showErrors: {
|
|
27163
|
+
classPropertyName: "showErrors",
|
|
27164
|
+
publicName: "showErrors",
|
|
27165
|
+
isSignal: true,
|
|
27166
|
+
isRequired: false,
|
|
27167
|
+
transformFunction: null
|
|
27168
|
+
},
|
|
27169
|
+
name: {
|
|
27170
|
+
classPropertyName: "name",
|
|
27171
|
+
publicName: "name",
|
|
27172
|
+
isSignal: true,
|
|
27173
|
+
isRequired: false,
|
|
27174
|
+
transformFunction: null
|
|
27175
|
+
},
|
|
27176
|
+
_disabledInput: {
|
|
27177
|
+
classPropertyName: "_disabledInput",
|
|
27178
|
+
publicName: "disabled",
|
|
27179
|
+
isSignal: true,
|
|
27180
|
+
isRequired: false,
|
|
27181
|
+
transformFunction: null
|
|
27182
|
+
}
|
|
27183
|
+
},
|
|
27184
|
+
outputs: { invalidChange: "invalidChange" },
|
|
27185
|
+
providers: [
|
|
27186
|
+
{
|
|
27187
|
+
provide: NG_VALUE_ACCESSOR,
|
|
27188
|
+
useExisting: forwardRef(() => RadioMatrixComponent),
|
|
27189
|
+
multi: true
|
|
27190
|
+
},
|
|
27191
|
+
{
|
|
27192
|
+
provide: NG_VALIDATORS,
|
|
27193
|
+
useExisting: forwardRef(() => RadioMatrixComponent),
|
|
27194
|
+
multi: true
|
|
27195
|
+
},
|
|
27196
|
+
{
|
|
27197
|
+
provide: UiFieldValidity,
|
|
27198
|
+
useExisting: forwardRef(() => RadioMatrixComponent)
|
|
27199
|
+
}
|
|
27200
|
+
],
|
|
27201
|
+
usesOnChanges: true,
|
|
27202
|
+
ngImport: i0,
|
|
27203
|
+
template: `
|
|
27204
|
+
<fieldset
|
|
27205
|
+
class="rm-field"
|
|
27206
|
+
[class.rm-error]="_activeError()"
|
|
27207
|
+
[class.rm-disabled]="disabled()"
|
|
27208
|
+
[disabled]="disabled()"
|
|
27209
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
27210
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
27211
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
27212
|
+
(focusout)="onFocusOut($event)">
|
|
27213
|
+
@if (label()) {
|
|
27214
|
+
<legend class="rm-label">
|
|
27215
|
+
{{ label() }}
|
|
27216
|
+
@if (required()) { <span class="rm-required" aria-hidden="true">*</span> }
|
|
27217
|
+
</legend>
|
|
27218
|
+
}
|
|
27219
|
+
<div class="rm-scroll">
|
|
27220
|
+
<table class="rm-table">
|
|
27221
|
+
<thead>
|
|
27222
|
+
<tr>
|
|
27223
|
+
<th scope="col" class="rm-corner">{{ rowHeader() }}</th>
|
|
27224
|
+
@for (col of columns(); track col.value) {
|
|
27225
|
+
<th scope="col" class="rm-col">{{ col.label }}</th>
|
|
27226
|
+
}
|
|
27227
|
+
</tr>
|
|
27228
|
+
</thead>
|
|
27229
|
+
<tbody>
|
|
27230
|
+
@for (row of rows(); track row.value) {
|
|
27231
|
+
<tr class="rm-row" [class.rm-row-missing]="_rowInvalid(row)">
|
|
27232
|
+
<th scope="row" class="rm-row-label">{{ row.label }}</th>
|
|
27233
|
+
@for (col of columns(); track col.value) {
|
|
27234
|
+
<td class="rm-cell">
|
|
27235
|
+
<ui-radio
|
|
27236
|
+
[name]="_name + '-' + row.value"
|
|
27237
|
+
[value]="col.value"
|
|
27238
|
+
[ariaLabel]="row.label + ': ' + col.label"
|
|
27239
|
+
[checked]="_value()[row.value] === col.value"
|
|
27240
|
+
[disabled]="disabled() || !!row.disabled || !!col.disabled"
|
|
27241
|
+
[invalid]="_rowInvalid(row)"
|
|
27242
|
+
[describedBy]="(_activeError() || hint()) ? _descId : ''"
|
|
27243
|
+
(selected)="onSelect(row.value, $event)" />
|
|
27244
|
+
</td>
|
|
27245
|
+
}
|
|
27246
|
+
</tr>
|
|
27247
|
+
}
|
|
27248
|
+
</tbody>
|
|
27249
|
+
</table>
|
|
27250
|
+
</div>
|
|
27251
|
+
@if (_activeError()) {
|
|
27252
|
+
<p class="rm-desc rm-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
27253
|
+
} @else if (hint()) {
|
|
27254
|
+
<p class="rm-desc" [id]="_descId">{{ hint() }}</p>
|
|
27255
|
+
}
|
|
27256
|
+
</fieldset>
|
|
27257
|
+
`,
|
|
27258
|
+
isInline: true,
|
|
27259
|
+
styles: [":host{display:block}.rm-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rm-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rm-required{color:#ef4444;margin-left:2px}.rm-scroll{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px}.rm-table{width:100%;border-collapse:collapse;font-size:.875rem}.rm-table th,.rm-table td{padding:8px 12px;border-bottom:1px solid #f1f5f9;text-align:left}.rm-table tbody tr:last-child th,.rm-table tbody tr:last-child td{border-bottom:0}.rm-table thead th{position:sticky;top:0;background:#f8fafc;font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.rm-col,.rm-cell{text-align:center!important;width:1%;white-space:nowrap}.rm-cell ui-radio{display:inline-block}.rm-row-label{font-weight:500;color:#1e293b}.rm-row:hover{background:#f8fafc}.rm-row-missing .rm-row-label{color:#b91c1c}.rm-disabled .rm-scroll{opacity:.6}.rm-error .rm-scroll{border-color:#ef4444}.rm-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rm-desc-error{color:#ef4444}@media(max-width:480px){.rm-table th,.rm-table td{padding:6px 8px}.rm-table thead th{font-size:.6875rem}}\n"],
|
|
27260
|
+
dependencies: [{
|
|
27261
|
+
kind: "component",
|
|
27262
|
+
type: RadioComponent,
|
|
27263
|
+
selector: "ui-radio",
|
|
27264
|
+
inputs: [
|
|
27265
|
+
"label",
|
|
27266
|
+
"description",
|
|
27267
|
+
"ariaLabel",
|
|
27268
|
+
"value",
|
|
27269
|
+
"name",
|
|
27270
|
+
"checked",
|
|
27271
|
+
"invalid",
|
|
27272
|
+
"describedBy",
|
|
27273
|
+
"disabled"
|
|
27274
|
+
],
|
|
27275
|
+
outputs: ["selected"]
|
|
27276
|
+
}],
|
|
27277
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
27278
|
+
});
|
|
27279
|
+
}
|
|
27280
|
+
};
|
|
27281
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
27282
|
+
minVersion: "12.0.0",
|
|
27283
|
+
version: "22.2.2",
|
|
27284
|
+
ngImport: i0,
|
|
27285
|
+
type: RadioMatrixComponent,
|
|
27286
|
+
decorators: [{
|
|
27287
|
+
type: Component,
|
|
27288
|
+
args: [{
|
|
27289
|
+
selector: "ui-radio-matrix",
|
|
27290
|
+
standalone: true,
|
|
27291
|
+
imports: [RadioComponent],
|
|
27292
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27293
|
+
providers: [
|
|
27294
|
+
{
|
|
27295
|
+
provide: NG_VALUE_ACCESSOR,
|
|
27296
|
+
useExisting: forwardRef(() => RadioMatrixComponent),
|
|
27297
|
+
multi: true
|
|
27298
|
+
},
|
|
27299
|
+
{
|
|
27300
|
+
provide: NG_VALIDATORS,
|
|
27301
|
+
useExisting: forwardRef(() => RadioMatrixComponent),
|
|
27302
|
+
multi: true
|
|
27303
|
+
},
|
|
27304
|
+
{
|
|
27305
|
+
provide: UiFieldValidity,
|
|
27306
|
+
useExisting: forwardRef(() => RadioMatrixComponent)
|
|
27307
|
+
}
|
|
27308
|
+
],
|
|
27309
|
+
template: `
|
|
27310
|
+
<fieldset
|
|
27311
|
+
class="rm-field"
|
|
27312
|
+
[class.rm-error]="_activeError()"
|
|
27313
|
+
[class.rm-disabled]="disabled()"
|
|
27314
|
+
[disabled]="disabled()"
|
|
27315
|
+
[attr.aria-required]="required() ? 'true' : null"
|
|
27316
|
+
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
27317
|
+
[attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
|
|
27318
|
+
(focusout)="onFocusOut($event)">
|
|
27319
|
+
@if (label()) {
|
|
27320
|
+
<legend class="rm-label">
|
|
27321
|
+
{{ label() }}
|
|
27322
|
+
@if (required()) { <span class="rm-required" aria-hidden="true">*</span> }
|
|
27323
|
+
</legend>
|
|
27324
|
+
}
|
|
27325
|
+
<div class="rm-scroll">
|
|
27326
|
+
<table class="rm-table">
|
|
27327
|
+
<thead>
|
|
27328
|
+
<tr>
|
|
27329
|
+
<th scope="col" class="rm-corner">{{ rowHeader() }}</th>
|
|
27330
|
+
@for (col of columns(); track col.value) {
|
|
27331
|
+
<th scope="col" class="rm-col">{{ col.label }}</th>
|
|
27332
|
+
}
|
|
27333
|
+
</tr>
|
|
27334
|
+
</thead>
|
|
27335
|
+
<tbody>
|
|
27336
|
+
@for (row of rows(); track row.value) {
|
|
27337
|
+
<tr class="rm-row" [class.rm-row-missing]="_rowInvalid(row)">
|
|
27338
|
+
<th scope="row" class="rm-row-label">{{ row.label }}</th>
|
|
27339
|
+
@for (col of columns(); track col.value) {
|
|
27340
|
+
<td class="rm-cell">
|
|
27341
|
+
<ui-radio
|
|
27342
|
+
[name]="_name + '-' + row.value"
|
|
27343
|
+
[value]="col.value"
|
|
27344
|
+
[ariaLabel]="row.label + ': ' + col.label"
|
|
27345
|
+
[checked]="_value()[row.value] === col.value"
|
|
27346
|
+
[disabled]="disabled() || !!row.disabled || !!col.disabled"
|
|
27347
|
+
[invalid]="_rowInvalid(row)"
|
|
27348
|
+
[describedBy]="(_activeError() || hint()) ? _descId : ''"
|
|
27349
|
+
(selected)="onSelect(row.value, $event)" />
|
|
27350
|
+
</td>
|
|
27351
|
+
}
|
|
27352
|
+
</tr>
|
|
27353
|
+
}
|
|
27354
|
+
</tbody>
|
|
27355
|
+
</table>
|
|
27356
|
+
</div>
|
|
27357
|
+
@if (_activeError()) {
|
|
27358
|
+
<p class="rm-desc rm-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
|
|
27359
|
+
} @else if (hint()) {
|
|
27360
|
+
<p class="rm-desc" [id]="_descId">{{ hint() }}</p>
|
|
27361
|
+
}
|
|
27362
|
+
</fieldset>
|
|
27363
|
+
`,
|
|
27364
|
+
styles: [":host{display:block}.rm-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rm-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rm-required{color:#ef4444;margin-left:2px}.rm-scroll{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px}.rm-table{width:100%;border-collapse:collapse;font-size:.875rem}.rm-table th,.rm-table td{padding:8px 12px;border-bottom:1px solid #f1f5f9;text-align:left}.rm-table tbody tr:last-child th,.rm-table tbody tr:last-child td{border-bottom:0}.rm-table thead th{position:sticky;top:0;background:#f8fafc;font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.rm-col,.rm-cell{text-align:center!important;width:1%;white-space:nowrap}.rm-cell ui-radio{display:inline-block}.rm-row-label{font-weight:500;color:#1e293b}.rm-row:hover{background:#f8fafc}.rm-row-missing .rm-row-label{color:#b91c1c}.rm-disabled .rm-scroll{opacity:.6}.rm-error .rm-scroll{border-color:#ef4444}.rm-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rm-desc-error{color:#ef4444}@media(max-width:480px){.rm-table th,.rm-table td{padding:6px 8px}.rm-table thead th{font-size:.6875rem}}\n"]
|
|
27365
|
+
}]
|
|
27366
|
+
}],
|
|
27367
|
+
ctorParameters: () => [],
|
|
27368
|
+
propDecorators: {
|
|
27369
|
+
label: [{
|
|
27370
|
+
type: i0.Input,
|
|
27371
|
+
args: [{
|
|
27372
|
+
isSignal: true,
|
|
27373
|
+
alias: "label",
|
|
27374
|
+
required: false
|
|
27375
|
+
}]
|
|
27376
|
+
}],
|
|
27377
|
+
rowHeader: [{
|
|
27378
|
+
type: i0.Input,
|
|
27379
|
+
args: [{
|
|
27380
|
+
isSignal: true,
|
|
27381
|
+
alias: "rowHeader",
|
|
27382
|
+
required: false
|
|
27383
|
+
}]
|
|
27384
|
+
}],
|
|
27385
|
+
rows: [{
|
|
27386
|
+
type: i0.Input,
|
|
27387
|
+
args: [{
|
|
27388
|
+
isSignal: true,
|
|
27389
|
+
alias: "rows",
|
|
27390
|
+
required: false
|
|
27391
|
+
}]
|
|
27392
|
+
}],
|
|
27393
|
+
columns: [{
|
|
27394
|
+
type: i0.Input,
|
|
27395
|
+
args: [{
|
|
27396
|
+
isSignal: true,
|
|
27397
|
+
alias: "columns",
|
|
27398
|
+
required: false
|
|
27399
|
+
}]
|
|
27400
|
+
}],
|
|
27401
|
+
required: [{
|
|
27402
|
+
type: i0.Input,
|
|
27403
|
+
args: [{
|
|
27404
|
+
isSignal: true,
|
|
27405
|
+
alias: "required",
|
|
27406
|
+
required: false
|
|
27407
|
+
}]
|
|
27408
|
+
}],
|
|
27409
|
+
hint: [{
|
|
27410
|
+
type: i0.Input,
|
|
27411
|
+
args: [{
|
|
27412
|
+
isSignal: true,
|
|
27413
|
+
alias: "hint",
|
|
27414
|
+
required: false
|
|
27415
|
+
}]
|
|
27416
|
+
}],
|
|
27417
|
+
error: [{
|
|
27418
|
+
type: i0.Input,
|
|
27419
|
+
args: [{
|
|
27420
|
+
isSignal: true,
|
|
27421
|
+
alias: "error",
|
|
27422
|
+
required: false
|
|
27423
|
+
}]
|
|
27424
|
+
}],
|
|
27425
|
+
showErrors: [{
|
|
27426
|
+
type: i0.Input,
|
|
27427
|
+
args: [{
|
|
27428
|
+
isSignal: true,
|
|
27429
|
+
alias: "showErrors",
|
|
27430
|
+
required: false
|
|
27431
|
+
}]
|
|
27432
|
+
}],
|
|
27433
|
+
name: [{
|
|
27434
|
+
type: i0.Input,
|
|
27435
|
+
args: [{
|
|
27436
|
+
isSignal: true,
|
|
27437
|
+
alias: "name",
|
|
27438
|
+
required: false
|
|
27439
|
+
}]
|
|
27440
|
+
}],
|
|
27441
|
+
_disabledInput: [{
|
|
27442
|
+
type: i0.Input,
|
|
27443
|
+
args: [{
|
|
27444
|
+
isSignal: true,
|
|
27445
|
+
alias: "disabled",
|
|
27446
|
+
required: false
|
|
27447
|
+
}]
|
|
27448
|
+
}],
|
|
27449
|
+
invalidChange: [{
|
|
27450
|
+
type: i0.Output,
|
|
27451
|
+
args: ["invalidChange"]
|
|
27452
|
+
}]
|
|
27453
|
+
}
|
|
27454
|
+
});
|
|
27455
|
+
var DetailCardComponent = class DetailCardComponent {
|
|
27456
|
+
constructor() {
|
|
27457
|
+
this.title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
27458
|
+
this.headingLevel = input(null, ...ngDevMode ? [{ debugName: "headingLevel" }] : /* istanbul ignore next */ []);
|
|
27459
|
+
this.titleId = input("", ...ngDevMode ? [{ debugName: "titleId" }] : /* istanbul ignore next */ []);
|
|
27460
|
+
this.subtitle = input("", ...ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []);
|
|
27461
|
+
this.showHeader = input(true, ...ngDevMode ? [{ debugName: "showHeader" }] : /* istanbul ignore next */ []);
|
|
27462
|
+
this.collapsible = input(true, ...ngDevMode ? [{ debugName: "collapsible" }] : /* istanbul ignore next */ []);
|
|
27463
|
+
this.expanded = model(true, ...ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []);
|
|
27464
|
+
this.showEdit = input(false, ...ngDevMode ? [{ debugName: "showEdit" }] : /* istanbul ignore next */ []);
|
|
27465
|
+
this.editLabel = input("Edit", ...ngDevMode ? [{ debugName: "editLabel" }] : /* istanbul ignore next */ []);
|
|
27466
|
+
this.editClick = output();
|
|
27467
|
+
}
|
|
27468
|
+
isOpen() {
|
|
27469
|
+
return !(this.showHeader() && this.collapsible()) || this.expanded();
|
|
27470
|
+
}
|
|
27471
|
+
toggle() {
|
|
27472
|
+
this.expanded.set(!this.expanded());
|
|
27473
|
+
}
|
|
27474
|
+
onHeaderClick(event) {
|
|
27475
|
+
if (!this.showHeader() || !this.collapsible()) return;
|
|
27476
|
+
if (event.target?.closest("button, a, input, select, textarea, label, [role=\"button\"], [role=\"link\"], [tabindex]:not([tabindex=\"-1\"])")?.closest(".dc-header")) return;
|
|
27477
|
+
this.toggle();
|
|
27478
|
+
}
|
|
27479
|
+
static {
|
|
27480
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27481
|
+
minVersion: "12.0.0",
|
|
27482
|
+
version: "22.2.2",
|
|
27483
|
+
ngImport: i0,
|
|
27484
|
+
type: DetailCardComponent,
|
|
27485
|
+
deps: [],
|
|
27486
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
27487
|
+
});
|
|
27488
|
+
}
|
|
27489
|
+
static {
|
|
27490
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27491
|
+
minVersion: "17.0.0",
|
|
27492
|
+
version: "22.2.2",
|
|
27493
|
+
type: DetailCardComponent,
|
|
27494
|
+
isStandalone: true,
|
|
27495
|
+
selector: "ui-detail-card",
|
|
27496
|
+
inputs: {
|
|
27497
|
+
title: {
|
|
27498
|
+
classPropertyName: "title",
|
|
27499
|
+
publicName: "title",
|
|
27500
|
+
isSignal: true,
|
|
27501
|
+
isRequired: false,
|
|
27502
|
+
transformFunction: null
|
|
27503
|
+
},
|
|
27504
|
+
headingLevel: {
|
|
27505
|
+
classPropertyName: "headingLevel",
|
|
27506
|
+
publicName: "headingLevel",
|
|
27507
|
+
isSignal: true,
|
|
27508
|
+
isRequired: false,
|
|
27509
|
+
transformFunction: null
|
|
27510
|
+
},
|
|
27511
|
+
titleId: {
|
|
27512
|
+
classPropertyName: "titleId",
|
|
27513
|
+
publicName: "titleId",
|
|
27514
|
+
isSignal: true,
|
|
27515
|
+
isRequired: false,
|
|
27516
|
+
transformFunction: null
|
|
27517
|
+
},
|
|
27518
|
+
subtitle: {
|
|
27519
|
+
classPropertyName: "subtitle",
|
|
27520
|
+
publicName: "subtitle",
|
|
27521
|
+
isSignal: true,
|
|
27522
|
+
isRequired: false,
|
|
27523
|
+
transformFunction: null
|
|
27524
|
+
},
|
|
27525
|
+
showHeader: {
|
|
27526
|
+
classPropertyName: "showHeader",
|
|
27527
|
+
publicName: "showHeader",
|
|
27528
|
+
isSignal: true,
|
|
27529
|
+
isRequired: false,
|
|
27530
|
+
transformFunction: null
|
|
27531
|
+
},
|
|
27532
|
+
collapsible: {
|
|
27533
|
+
classPropertyName: "collapsible",
|
|
27534
|
+
publicName: "collapsible",
|
|
27535
|
+
isSignal: true,
|
|
27536
|
+
isRequired: false,
|
|
27537
|
+
transformFunction: null
|
|
27538
|
+
},
|
|
27539
|
+
expanded: {
|
|
27540
|
+
classPropertyName: "expanded",
|
|
27541
|
+
publicName: "expanded",
|
|
27542
|
+
isSignal: true,
|
|
27543
|
+
isRequired: false,
|
|
27544
|
+
transformFunction: null
|
|
27545
|
+
},
|
|
27546
|
+
showEdit: {
|
|
27547
|
+
classPropertyName: "showEdit",
|
|
27548
|
+
publicName: "showEdit",
|
|
27549
|
+
isSignal: true,
|
|
27550
|
+
isRequired: false,
|
|
27551
|
+
transformFunction: null
|
|
27552
|
+
},
|
|
27553
|
+
editLabel: {
|
|
27554
|
+
classPropertyName: "editLabel",
|
|
27555
|
+
publicName: "editLabel",
|
|
27556
|
+
isSignal: true,
|
|
27557
|
+
isRequired: false,
|
|
27558
|
+
transformFunction: null
|
|
27559
|
+
}
|
|
27560
|
+
},
|
|
27561
|
+
outputs: {
|
|
27562
|
+
expanded: "expandedChange",
|
|
27563
|
+
editClick: "editClick"
|
|
27564
|
+
},
|
|
27565
|
+
host: {
|
|
27566
|
+
attributes: { "role": "group" },
|
|
27567
|
+
properties: {
|
|
27568
|
+
"attr.aria-labelledby": "showHeader() && title() && titleId() ? titleId() : null",
|
|
27569
|
+
"attr.aria-label": "showHeader() && title() && !titleId() ? title() : null"
|
|
27570
|
+
}
|
|
27571
|
+
},
|
|
27572
|
+
ngImport: i0,
|
|
27573
|
+
template: `
|
|
27574
|
+
<div class="dc">
|
|
27575
|
+
@if (showHeader()) {
|
|
27576
|
+
<div class="dc-header" [class.collapsible]="collapsible()" [class.open]="isOpen()" (click)="onHeaderClick($event)">
|
|
27577
|
+
@if (collapsible()) {
|
|
27578
|
+
<ui-button class="dc-chevron" variant="icon" size="sm"
|
|
27579
|
+
[ariaLabel]="title() || 'Toggle section'"
|
|
27580
|
+
[ariaExpanded]="isOpen()"
|
|
27581
|
+
(click)="$event.stopPropagation(); toggle()">
|
|
27582
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
|
27583
|
+
stroke-linecap="round" stroke-linejoin="round" [class.rotated]="!isOpen()" aria-hidden="true">
|
|
27584
|
+
<path d="M6 9l6 6 6-6"/>
|
|
27585
|
+
</svg>
|
|
27586
|
+
</ui-button>
|
|
27587
|
+
}
|
|
27588
|
+
<ng-content select="[card-header-leading]" />
|
|
27589
|
+
<div class="dc-header-text">
|
|
27590
|
+
@if (title()) { <span class="dc-title" [attr.id]="titleId() || null" [attr.role]="headingLevel() ? 'heading' : null" [attr.aria-level]="headingLevel() || null">{{ title() }}</span> }
|
|
27591
|
+
@if (subtitle()) { <span class="dc-subtitle">{{ subtitle() }}</span> }
|
|
27592
|
+
<ng-content select="[card-header]" />
|
|
27593
|
+
</div>
|
|
27594
|
+
@if (showEdit()) {
|
|
27595
|
+
<ui-button class="dc-edit" variant="secondary" size="xs" (click)="$event.stopPropagation(); editClick.emit()">
|
|
27596
|
+
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
|
27597
|
+
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
|
|
27598
|
+
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
|
|
27599
|
+
</svg>
|
|
27600
|
+
{{ editLabel() }}
|
|
27601
|
+
</ui-button>
|
|
27602
|
+
}
|
|
27603
|
+
<ng-content select="[card-header-action]" />
|
|
27604
|
+
</div>
|
|
27605
|
+
}
|
|
27606
|
+
<div class="dc-body-wrap" [class.collapsed]="!isOpen()" [attr.inert]="isOpen() ? null : ''" [attr.aria-hidden]="isOpen() ? null : 'true'">
|
|
27607
|
+
<div class="dc-body">
|
|
27608
|
+
<ng-content />
|
|
27609
|
+
</div>
|
|
27610
|
+
</div>
|
|
27611
|
+
</div>
|
|
27612
|
+
`,
|
|
27613
|
+
isInline: true,
|
|
27614
|
+
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}.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:#94a3b8}.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:#1e293b;line-height:1.3;text-transform:uppercase}.dc-subtitle{font-size:.75rem;color:#94a3b8}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.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:0;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"],
|
|
27615
|
+
dependencies: [{
|
|
27616
|
+
kind: "component",
|
|
27617
|
+
type: ButtonComponent,
|
|
27618
|
+
selector: "ui-button",
|
|
27619
|
+
inputs: [
|
|
27620
|
+
"variant",
|
|
27621
|
+
"color",
|
|
27622
|
+
"active",
|
|
27623
|
+
"size",
|
|
27624
|
+
"type",
|
|
27625
|
+
"disabled",
|
|
27626
|
+
"loading",
|
|
27627
|
+
"fullWidth",
|
|
27628
|
+
"ariaLabel",
|
|
27629
|
+
"ariaExpanded",
|
|
27630
|
+
"ariaPressed",
|
|
27631
|
+
"ariaDescribedBy",
|
|
27632
|
+
"modal-footer-left",
|
|
27633
|
+
"modal-footer-right"
|
|
27634
|
+
]
|
|
27635
|
+
}],
|
|
27636
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
27637
|
+
});
|
|
27638
|
+
}
|
|
27639
|
+
};
|
|
27640
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
27641
|
+
minVersion: "12.0.0",
|
|
27642
|
+
version: "22.2.2",
|
|
27643
|
+
ngImport: i0,
|
|
27644
|
+
type: DetailCardComponent,
|
|
27645
|
+
decorators: [{
|
|
27646
|
+
type: Component,
|
|
27647
|
+
args: [{
|
|
27648
|
+
selector: "ui-detail-card",
|
|
27649
|
+
standalone: true,
|
|
27650
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27651
|
+
imports: [ButtonComponent],
|
|
27652
|
+
host: {
|
|
27653
|
+
"role": "group",
|
|
27654
|
+
"[attr.aria-labelledby]": "showHeader() && title() && titleId() ? titleId() : null",
|
|
27655
|
+
"[attr.aria-label]": "showHeader() && title() && !titleId() ? title() : null"
|
|
27656
|
+
},
|
|
27657
|
+
template: `
|
|
27658
|
+
<div class="dc">
|
|
27659
|
+
@if (showHeader()) {
|
|
27660
|
+
<div class="dc-header" [class.collapsible]="collapsible()" [class.open]="isOpen()" (click)="onHeaderClick($event)">
|
|
27661
|
+
@if (collapsible()) {
|
|
27662
|
+
<ui-button class="dc-chevron" variant="icon" size="sm"
|
|
27663
|
+
[ariaLabel]="title() || 'Toggle section'"
|
|
27664
|
+
[ariaExpanded]="isOpen()"
|
|
27665
|
+
(click)="$event.stopPropagation(); toggle()">
|
|
27666
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
|
27667
|
+
stroke-linecap="round" stroke-linejoin="round" [class.rotated]="!isOpen()" aria-hidden="true">
|
|
27668
|
+
<path d="M6 9l6 6 6-6"/>
|
|
27669
|
+
</svg>
|
|
27670
|
+
</ui-button>
|
|
27671
|
+
}
|
|
27672
|
+
<ng-content select="[card-header-leading]" />
|
|
27673
|
+
<div class="dc-header-text">
|
|
27674
|
+
@if (title()) { <span class="dc-title" [attr.id]="titleId() || null" [attr.role]="headingLevel() ? 'heading' : null" [attr.aria-level]="headingLevel() || null">{{ title() }}</span> }
|
|
27675
|
+
@if (subtitle()) { <span class="dc-subtitle">{{ subtitle() }}</span> }
|
|
27676
|
+
<ng-content select="[card-header]" />
|
|
27677
|
+
</div>
|
|
27678
|
+
@if (showEdit()) {
|
|
27679
|
+
<ui-button class="dc-edit" variant="secondary" size="xs" (click)="$event.stopPropagation(); editClick.emit()">
|
|
27680
|
+
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
|
27681
|
+
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
|
|
27682
|
+
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
|
|
27683
|
+
</svg>
|
|
27684
|
+
{{ editLabel() }}
|
|
27685
|
+
</ui-button>
|
|
27686
|
+
}
|
|
27687
|
+
<ng-content select="[card-header-action]" />
|
|
27688
|
+
</div>
|
|
27689
|
+
}
|
|
27690
|
+
<div class="dc-body-wrap" [class.collapsed]="!isOpen()" [attr.inert]="isOpen() ? null : ''" [attr.aria-hidden]="isOpen() ? null : 'true'">
|
|
27691
|
+
<div class="dc-body">
|
|
27692
|
+
<ng-content />
|
|
27693
|
+
</div>
|
|
27694
|
+
</div>
|
|
27695
|
+
</div>
|
|
27696
|
+
`,
|
|
27697
|
+
styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}.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:#94a3b8}.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:#1e293b;line-height:1.3;text-transform:uppercase}.dc-subtitle{font-size:.75rem;color:#94a3b8}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.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:0;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"]
|
|
27698
|
+
}]
|
|
27699
|
+
}],
|
|
27700
|
+
propDecorators: {
|
|
27701
|
+
title: [{
|
|
27702
|
+
type: i0.Input,
|
|
27703
|
+
args: [{
|
|
27704
|
+
isSignal: true,
|
|
27705
|
+
alias: "title",
|
|
27706
|
+
required: false
|
|
27707
|
+
}]
|
|
27708
|
+
}],
|
|
27709
|
+
headingLevel: [{
|
|
27710
|
+
type: i0.Input,
|
|
27711
|
+
args: [{
|
|
27712
|
+
isSignal: true,
|
|
27713
|
+
alias: "headingLevel",
|
|
27714
|
+
required: false
|
|
27715
|
+
}]
|
|
27716
|
+
}],
|
|
27717
|
+
titleId: [{
|
|
27718
|
+
type: i0.Input,
|
|
27719
|
+
args: [{
|
|
27720
|
+
isSignal: true,
|
|
27721
|
+
alias: "titleId",
|
|
27722
|
+
required: false
|
|
27723
|
+
}]
|
|
27724
|
+
}],
|
|
27725
|
+
subtitle: [{
|
|
27726
|
+
type: i0.Input,
|
|
27727
|
+
args: [{
|
|
27728
|
+
isSignal: true,
|
|
27729
|
+
alias: "subtitle",
|
|
27730
|
+
required: false
|
|
27731
|
+
}]
|
|
27732
|
+
}],
|
|
27733
|
+
showHeader: [{
|
|
27734
|
+
type: i0.Input,
|
|
27735
|
+
args: [{
|
|
27736
|
+
isSignal: true,
|
|
27737
|
+
alias: "showHeader",
|
|
27738
|
+
required: false
|
|
27739
|
+
}]
|
|
27740
|
+
}],
|
|
27741
|
+
collapsible: [{
|
|
27742
|
+
type: i0.Input,
|
|
27743
|
+
args: [{
|
|
27744
|
+
isSignal: true,
|
|
27745
|
+
alias: "collapsible",
|
|
27746
|
+
required: false
|
|
27747
|
+
}]
|
|
27748
|
+
}],
|
|
27749
|
+
expanded: [{
|
|
27750
|
+
type: i0.Input,
|
|
27751
|
+
args: [{
|
|
27752
|
+
isSignal: true,
|
|
27753
|
+
alias: "expanded",
|
|
27754
|
+
required: false
|
|
27755
|
+
}]
|
|
27756
|
+
}, {
|
|
27757
|
+
type: i0.Output,
|
|
27758
|
+
args: ["expandedChange"]
|
|
27759
|
+
}],
|
|
27760
|
+
showEdit: [{
|
|
27761
|
+
type: i0.Input,
|
|
27762
|
+
args: [{
|
|
27763
|
+
isSignal: true,
|
|
27764
|
+
alias: "showEdit",
|
|
27765
|
+
required: false
|
|
27766
|
+
}]
|
|
27767
|
+
}],
|
|
27768
|
+
editLabel: [{
|
|
27769
|
+
type: i0.Input,
|
|
27770
|
+
args: [{
|
|
27771
|
+
isSignal: true,
|
|
27772
|
+
alias: "editLabel",
|
|
27773
|
+
required: false
|
|
27774
|
+
}]
|
|
27775
|
+
}],
|
|
27776
|
+
editClick: [{
|
|
27777
|
+
type: i0.Output,
|
|
27778
|
+
args: ["editClick"]
|
|
27779
|
+
}]
|
|
27780
|
+
}
|
|
27781
|
+
});
|
|
27782
|
+
const SPACE_PX = {
|
|
27783
|
+
none: 0,
|
|
27784
|
+
sm: 8,
|
|
27785
|
+
md: 16,
|
|
27786
|
+
lg: 24
|
|
27787
|
+
};
|
|
27788
|
+
var DividerComponent = class DividerComponent {
|
|
27789
|
+
constructor() {
|
|
27790
|
+
this.spaceAbove = input("none", ...ngDevMode ? [{ debugName: "spaceAbove" }] : /* istanbul ignore next */ []);
|
|
27791
|
+
this.spaceBelow = input("md", ...ngDevMode ? [{ debugName: "spaceBelow" }] : /* istanbul ignore next */ []);
|
|
27792
|
+
this.decorative = input(false, ...ngDevMode ? [{ debugName: "decorative" }] : /* istanbul ignore next */ []);
|
|
27793
|
+
this.above = computed(() => SPACE_PX[this.spaceAbove()] ?? 0, ...ngDevMode ? [{ debugName: "above" }] : /* istanbul ignore next */ []);
|
|
27794
|
+
this.below = computed(() => SPACE_PX[this.spaceBelow()] ?? 0, ...ngDevMode ? [{ debugName: "below" }] : /* istanbul ignore next */ []);
|
|
27795
|
+
}
|
|
27796
|
+
static {
|
|
27797
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27798
|
+
minVersion: "12.0.0",
|
|
27799
|
+
version: "22.2.2",
|
|
27800
|
+
ngImport: i0,
|
|
27801
|
+
type: DividerComponent,
|
|
27802
|
+
deps: [],
|
|
27803
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
27804
|
+
});
|
|
27805
|
+
}
|
|
27806
|
+
static {
|
|
27807
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27808
|
+
minVersion: "17.1.0",
|
|
27809
|
+
version: "22.2.2",
|
|
27810
|
+
type: DividerComponent,
|
|
27811
|
+
isStandalone: true,
|
|
27812
|
+
selector: "ui-divider",
|
|
27813
|
+
inputs: {
|
|
27814
|
+
spaceAbove: {
|
|
27815
|
+
classPropertyName: "spaceAbove",
|
|
27816
|
+
publicName: "spaceAbove",
|
|
27817
|
+
isSignal: true,
|
|
27818
|
+
isRequired: false,
|
|
27819
|
+
transformFunction: null
|
|
27820
|
+
},
|
|
27821
|
+
spaceBelow: {
|
|
27822
|
+
classPropertyName: "spaceBelow",
|
|
27823
|
+
publicName: "spaceBelow",
|
|
27824
|
+
isSignal: true,
|
|
27825
|
+
isRequired: false,
|
|
27826
|
+
transformFunction: null
|
|
27827
|
+
},
|
|
27828
|
+
decorative: {
|
|
27829
|
+
classPropertyName: "decorative",
|
|
27830
|
+
publicName: "decorative",
|
|
27831
|
+
isSignal: true,
|
|
27832
|
+
isRequired: false,
|
|
27833
|
+
transformFunction: null
|
|
27834
|
+
}
|
|
27835
|
+
},
|
|
27836
|
+
ngImport: i0,
|
|
27837
|
+
template: `<hr class="ui-divider" [style.margin-top.px]="above()" [style.margin-bottom.px]="below()"
|
|
27838
|
+
[attr.aria-hidden]="decorative() ? 'true' : null" [attr.role]="decorative() ? 'presentation' : null" />`,
|
|
27839
|
+
isInline: true,
|
|
27840
|
+
styles: [":host{display:block}.ui-divider{display:block;width:100%;height:0;border:0;border-top:1px solid #e2e8f0;padding:0}\n"],
|
|
27841
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
27842
|
+
});
|
|
27843
|
+
}
|
|
27844
|
+
};
|
|
27845
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
27846
|
+
minVersion: "12.0.0",
|
|
27847
|
+
version: "22.2.2",
|
|
27848
|
+
ngImport: i0,
|
|
27849
|
+
type: DividerComponent,
|
|
27850
|
+
decorators: [{
|
|
27851
|
+
type: Component,
|
|
27852
|
+
args: [{
|
|
27853
|
+
selector: "ui-divider",
|
|
27854
|
+
standalone: true,
|
|
27855
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27856
|
+
template: `<hr class="ui-divider" [style.margin-top.px]="above()" [style.margin-bottom.px]="below()"
|
|
27857
|
+
[attr.aria-hidden]="decorative() ? 'true' : null" [attr.role]="decorative() ? 'presentation' : null" />`,
|
|
27858
|
+
styles: [":host{display:block}.ui-divider{display:block;width:100%;height:0;border:0;border-top:1px solid #e2e8f0;padding:0}\n"]
|
|
27859
|
+
}]
|
|
27860
|
+
}],
|
|
27861
|
+
propDecorators: {
|
|
27862
|
+
spaceAbove: [{
|
|
27863
|
+
type: i0.Input,
|
|
27864
|
+
args: [{
|
|
27865
|
+
isSignal: true,
|
|
27866
|
+
alias: "spaceAbove",
|
|
27867
|
+
required: false
|
|
27868
|
+
}]
|
|
27869
|
+
}],
|
|
27870
|
+
spaceBelow: [{
|
|
27871
|
+
type: i0.Input,
|
|
27872
|
+
args: [{
|
|
27873
|
+
isSignal: true,
|
|
27874
|
+
alias: "spaceBelow",
|
|
27875
|
+
required: false
|
|
27876
|
+
}]
|
|
27877
|
+
}],
|
|
27878
|
+
decorative: [{
|
|
27879
|
+
type: i0.Input,
|
|
27880
|
+
args: [{
|
|
27881
|
+
isSignal: true,
|
|
27882
|
+
alias: "decorative",
|
|
27883
|
+
required: false
|
|
27884
|
+
}]
|
|
27885
|
+
}]
|
|
27886
|
+
}
|
|
27887
|
+
});
|
|
27888
|
+
export { AlertComponent, AppShellComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BulkMessagePanelComponent, ButtonComponent, CheckboxComponent, ChipComponent, ChipGroupComponent, ColumnFilterComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_DOCUMENT_SUBJECT, DOCUMENT_PURPOSE_OPTIONS, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DocumentSendOptionsComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FileInputComponent, FormRowComponent, FormSectionComponent, HintComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, ListItemComponent, MAX_CC, ModalComponent, MoreMenuComponent, MultiSelectComponent, PaginationComponent, PanelInfoListComponent, PillTabsComponent, ProgressBarComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SelectComponent, SendMessagePanelComponent, SidePanelComponent, SkeletonComponent, TableToolbarComponent, TemplatePickerComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, ToastComponent, ToastService, ToggleBadgeComponent, TooltipDirective, US_STATES, UiFieldValidity, VideoPickerComponent, appShellGroupsStorageKey, autoVariant, builtInActionIcon, createFieldReveal, decodeFilterValues, encodeFilterValue, encodeFilterValues, errorContextInterceptor, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, isoKey, issueToErrors, maxLengthIssue, messagePreviewHtml, parseCcList, parseIso, parseTime, pluralize, requiredIssue, resolvePreset, suggestDocumentSubject };
|
|
25439
27889
|
|
|
25440
27890
|
//# sourceMappingURL=forgeroute-ui.mjs.map
|