@forgeroute/ui 0.4.14 → 0.4.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/forgeroute-ui-messaging.mjs +12 -0
- package/fesm2022/forgeroute-ui-messaging.mjs.map +1 -1
- package/fesm2022/forgeroute-ui-stripe.mjs +3 -0
- package/fesm2022/forgeroute-ui-stripe.mjs.map +1 -1
- package/fesm2022/forgeroute-ui.mjs +1041 -453
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui.d.ts +163 -4
|
@@ -826,7 +826,7 @@ var QuickFilterTabsComponent = class QuickFilterTabsComponent {
|
|
|
826
826
|
</div>
|
|
827
827
|
`,
|
|
828
828
|
isInline: true,
|
|
829
|
-
styles: [":host{display:block;min-width:0}.tabs-outer{position:relative;display:inline-flex;align-items:center}.tabs{display:flex;align-items:center;gap:2px;background:#f1f5f9;border-radius:8px;padding:3px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;border:none;background:transparent;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:background .1s,color .1s;white-space:nowrap;flex-shrink:0}.tab:hover{color:#1e293b}.tab.active{background:#fff;color:#1e293b;box-shadow:0 1px 3px #00000014}.tab:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}.tab.tab-disabled{opacity:.45;cursor:default;pointer-events:none}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:.6875rem;font-weight:700;background:#e2e8f0;color:#475569;line-height:1}.active .tab-count,.active-count{background:#1e293b;color:#fff}.more-btn{gap:4px}.more-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001a;min-width:180px;padding:4px;max-height:260px;overflow-y:auto}.more-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;font-size:.875rem;color:#334155;font-family:inherit;border-radius:5px;transition:background .1s;text-align:left;gap:12px}.more-option:hover{background:#f8fafc}.more-option.more-option-active{background:#f1f5f9;color:#1e293b;font-weight:500}.more-option:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}.more-option-label{flex:1}.more-option-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:.6875rem;font-weight:700;line-height:1;background:#e2e8f0;color:#475569}.more-option-active .more-option-count{background:#1e293b;color:#fff}@media(max-width:1024px){.tab{padding:7px 12px}}@media(pointer:coarse){.tab{min-height:44px}}@media(max-width:640px){:host{align-self:flex-start}.tab{padding:10px 12px;font-size:.8125rem;min-height:44px}.more-option{padding:12px 14px}}\n"],
|
|
829
|
+
styles: [":host{display:block;min-width:0}.tabs-outer{position:relative;display:inline-flex;align-items:center;max-width:100%;min-width:0}.tabs{display:flex;align-items:center;gap:2px;background:#f1f5f9;border-radius:8px;padding:3px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;border:none;background:transparent;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:background .1s,color .1s;white-space:nowrap;flex-shrink:0}.tab:hover{color:#1e293b}.tab.active{background:#fff;color:#1e293b;box-shadow:0 1px 3px #00000014}.tab:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}.tab.tab-disabled{opacity:.45;cursor:default;pointer-events:none}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:.6875rem;font-weight:700;background:#e2e8f0;color:#475569;line-height:1}.active .tab-count,.active-count{background:#1e293b;color:#fff}.more-btn{gap:4px}.more-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001a;min-width:180px;padding:4px;max-height:260px;overflow-y:auto}.more-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;font-size:.875rem;color:#334155;font-family:inherit;border-radius:5px;transition:background .1s;text-align:left;gap:12px}.more-option:hover{background:#f8fafc}.more-option.more-option-active{background:#f1f5f9;color:#1e293b;font-weight:500}.more-option:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}.more-option-label{flex:1}.more-option-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:.6875rem;font-weight:700;line-height:1;background:#e2e8f0;color:#475569}.more-option-active .more-option-count{background:#1e293b;color:#fff}@media(max-width:1024px){.tab{padding:7px 12px}}@media(pointer:coarse){.tab{min-height:44px}}@media(max-width:640px){:host{align-self:flex-start;max-width:100%}.tab{padding:10px 12px;font-size:.8125rem;min-height:44px}.more-option{padding:12px 14px}}\n"],
|
|
830
830
|
dependencies: [{
|
|
831
831
|
kind: "pipe",
|
|
832
832
|
type: DecimalPipe,
|
|
@@ -916,7 +916,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
916
916
|
}
|
|
917
917
|
</div>
|
|
918
918
|
`,
|
|
919
|
-
styles: [":host{display:block;min-width:0}.tabs-outer{position:relative;display:inline-flex;align-items:center}.tabs{display:flex;align-items:center;gap:2px;background:#f1f5f9;border-radius:8px;padding:3px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;border:none;background:transparent;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:background .1s,color .1s;white-space:nowrap;flex-shrink:0}.tab:hover{color:#1e293b}.tab.active{background:#fff;color:#1e293b;box-shadow:0 1px 3px #00000014}.tab:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}.tab.tab-disabled{opacity:.45;cursor:default;pointer-events:none}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:.6875rem;font-weight:700;background:#e2e8f0;color:#475569;line-height:1}.active .tab-count,.active-count{background:#1e293b;color:#fff}.more-btn{gap:4px}.more-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001a;min-width:180px;padding:4px;max-height:260px;overflow-y:auto}.more-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;font-size:.875rem;color:#334155;font-family:inherit;border-radius:5px;transition:background .1s;text-align:left;gap:12px}.more-option:hover{background:#f8fafc}.more-option.more-option-active{background:#f1f5f9;color:#1e293b;font-weight:500}.more-option:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}.more-option-label{flex:1}.more-option-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:.6875rem;font-weight:700;line-height:1;background:#e2e8f0;color:#475569}.more-option-active .more-option-count{background:#1e293b;color:#fff}@media(max-width:1024px){.tab{padding:7px 12px}}@media(pointer:coarse){.tab{min-height:44px}}@media(max-width:640px){:host{align-self:flex-start}.tab{padding:10px 12px;font-size:.8125rem;min-height:44px}.more-option{padding:12px 14px}}\n"]
|
|
919
|
+
styles: [":host{display:block;min-width:0}.tabs-outer{position:relative;display:inline-flex;align-items:center;max-width:100%;min-width:0}.tabs{display:flex;align-items:center;gap:2px;background:#f1f5f9;border-radius:8px;padding:3px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;border:none;background:transparent;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;font-family:inherit;transition:background .1s,color .1s;white-space:nowrap;flex-shrink:0}.tab:hover{color:#1e293b}.tab.active{background:#fff;color:#1e293b;box-shadow:0 1px 3px #00000014}.tab:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}.tab.tab-disabled{opacity:.45;cursor:default;pointer-events:none}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:.6875rem;font-weight:700;background:#e2e8f0;color:#475569;line-height:1}.active .tab-count,.active-count{background:#1e293b;color:#fff}.more-btn{gap:4px}.more-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001a;min-width:180px;padding:4px;max-height:260px;overflow-y:auto}.more-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;font-size:.875rem;color:#334155;font-family:inherit;border-radius:5px;transition:background .1s;text-align:left;gap:12px}.more-option:hover{background:#f8fafc}.more-option.more-option-active{background:#f1f5f9;color:#1e293b;font-weight:500}.more-option:focus-visible{outline:2px solid #60a5fa;outline-offset:-2px}.more-option-label{flex:1}.more-option-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:.6875rem;font-weight:700;line-height:1;background:#e2e8f0;color:#475569}.more-option-active .more-option-count{background:#1e293b;color:#fff}@media(max-width:1024px){.tab{padding:7px 12px}}@media(pointer:coarse){.tab{min-height:44px}}@media(max-width:640px){:host{align-self:flex-start;max-width:100%}.tab{padding:10px 12px;font-size:.8125rem;min-height:44px}.more-option{padding:12px 14px}}\n"]
|
|
920
920
|
}]
|
|
921
921
|
}],
|
|
922
922
|
ctorParameters: () => [],
|
|
@@ -3912,6 +3912,583 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3912
3912
|
}]
|
|
3913
3913
|
}
|
|
3914
3914
|
});
|
|
3915
|
+
let nextTooltipId = 0;
|
|
3916
|
+
var TooltipDirective = class TooltipDirective {
|
|
3917
|
+
constructor() {
|
|
3918
|
+
this.uiTooltip = input("", ...ngDevMode ? [{ debugName: "uiTooltip" }] : /* istanbul ignore next */ []);
|
|
3919
|
+
this.tooltipPosition = input("top", ...ngDevMode ? [{ debugName: "tooltipPosition" }] : /* istanbul ignore next */ []);
|
|
3920
|
+
this.host = inject(ElementRef).nativeElement;
|
|
3921
|
+
this.doc = inject(DOCUMENT);
|
|
3922
|
+
this.bubble = null;
|
|
3923
|
+
this.id = `ui-tooltip-${nextTooltipId++}`;
|
|
3924
|
+
inject(DestroyRef).onDestroy(() => this.hide());
|
|
3925
|
+
}
|
|
3926
|
+
show() {
|
|
3927
|
+
const text = this.uiTooltip();
|
|
3928
|
+
if (!text || this.bubble) return;
|
|
3929
|
+
const el = this.doc.createElement("div");
|
|
3930
|
+
el.id = this.id;
|
|
3931
|
+
el.setAttribute("role", "tooltip");
|
|
3932
|
+
el.textContent = text;
|
|
3933
|
+
Object.assign(el.style, {
|
|
3934
|
+
position: "fixed",
|
|
3935
|
+
zIndex: "10000",
|
|
3936
|
+
maxWidth: "280px",
|
|
3937
|
+
padding: "6px 10px",
|
|
3938
|
+
background: "#0f172a",
|
|
3939
|
+
color: "#fff",
|
|
3940
|
+
fontSize: "0.75rem",
|
|
3941
|
+
lineHeight: "1.4",
|
|
3942
|
+
borderRadius: "6px",
|
|
3943
|
+
boxShadow: "0 4px 12px rgba(15,23,42,.25)",
|
|
3944
|
+
whiteSpace: "pre-line",
|
|
3945
|
+
pointerEvents: "none",
|
|
3946
|
+
visibility: "hidden"
|
|
3947
|
+
});
|
|
3948
|
+
this.doc.body.appendChild(el);
|
|
3949
|
+
this.bubble = el;
|
|
3950
|
+
this.host.setAttribute("aria-describedby", this.id);
|
|
3951
|
+
const r = this.host.getBoundingClientRect();
|
|
3952
|
+
const b = el.getBoundingClientRect();
|
|
3953
|
+
const gap = 6;
|
|
3954
|
+
let top = this.tooltipPosition() === "top" ? r.top - b.height - gap : r.bottom + gap;
|
|
3955
|
+
if (top < 4) top = r.bottom + gap;
|
|
3956
|
+
else if (top + b.height > window.innerHeight - 4) top = r.top - b.height - gap;
|
|
3957
|
+
const left = Math.min(Math.max(4, r.left + r.width / 2 - b.width / 2), window.innerWidth - b.width - 4);
|
|
3958
|
+
el.style.top = `${top}px`;
|
|
3959
|
+
el.style.left = `${left}px`;
|
|
3960
|
+
el.style.visibility = "visible";
|
|
3961
|
+
}
|
|
3962
|
+
hide() {
|
|
3963
|
+
this.bubble?.remove();
|
|
3964
|
+
this.bubble = null;
|
|
3965
|
+
this.host.removeAttribute("aria-describedby");
|
|
3966
|
+
}
|
|
3967
|
+
static {
|
|
3968
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
3969
|
+
minVersion: "12.0.0",
|
|
3970
|
+
version: "22.2.2",
|
|
3971
|
+
ngImport: i0,
|
|
3972
|
+
type: TooltipDirective,
|
|
3973
|
+
deps: [],
|
|
3974
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
3975
|
+
});
|
|
3976
|
+
}
|
|
3977
|
+
static {
|
|
3978
|
+
this.ɵdir = i0.ɵɵngDeclareDirective({
|
|
3979
|
+
minVersion: "17.1.0",
|
|
3980
|
+
version: "22.2.2",
|
|
3981
|
+
type: TooltipDirective,
|
|
3982
|
+
isStandalone: true,
|
|
3983
|
+
selector: "[uiTooltip]",
|
|
3984
|
+
inputs: {
|
|
3985
|
+
uiTooltip: {
|
|
3986
|
+
classPropertyName: "uiTooltip",
|
|
3987
|
+
publicName: "uiTooltip",
|
|
3988
|
+
isSignal: true,
|
|
3989
|
+
isRequired: false,
|
|
3990
|
+
transformFunction: null
|
|
3991
|
+
},
|
|
3992
|
+
tooltipPosition: {
|
|
3993
|
+
classPropertyName: "tooltipPosition",
|
|
3994
|
+
publicName: "tooltipPosition",
|
|
3995
|
+
isSignal: true,
|
|
3996
|
+
isRequired: false,
|
|
3997
|
+
transformFunction: null
|
|
3998
|
+
}
|
|
3999
|
+
},
|
|
4000
|
+
host: { listeners: {
|
|
4001
|
+
"mouseenter": "show()",
|
|
4002
|
+
"mouseleave": "hide()",
|
|
4003
|
+
"focusin": "show()",
|
|
4004
|
+
"focusout": "hide()",
|
|
4005
|
+
"keydown.escape": "hide()",
|
|
4006
|
+
"click": "hide()"
|
|
4007
|
+
} },
|
|
4008
|
+
ngImport: i0
|
|
4009
|
+
});
|
|
4010
|
+
}
|
|
4011
|
+
};
|
|
4012
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4013
|
+
minVersion: "12.0.0",
|
|
4014
|
+
version: "22.2.2",
|
|
4015
|
+
ngImport: i0,
|
|
4016
|
+
type: TooltipDirective,
|
|
4017
|
+
decorators: [{
|
|
4018
|
+
type: Directive,
|
|
4019
|
+
args: [{
|
|
4020
|
+
selector: "[uiTooltip]",
|
|
4021
|
+
standalone: true,
|
|
4022
|
+
host: {
|
|
4023
|
+
"(mouseenter)": "show()",
|
|
4024
|
+
"(mouseleave)": "hide()",
|
|
4025
|
+
"(focusin)": "show()",
|
|
4026
|
+
"(focusout)": "hide()",
|
|
4027
|
+
"(keydown.escape)": "hide()",
|
|
4028
|
+
"(click)": "hide()"
|
|
4029
|
+
}
|
|
4030
|
+
}]
|
|
4031
|
+
}],
|
|
4032
|
+
ctorParameters: () => [],
|
|
4033
|
+
propDecorators: {
|
|
4034
|
+
uiTooltip: [{
|
|
4035
|
+
type: i0.Input,
|
|
4036
|
+
args: [{
|
|
4037
|
+
isSignal: true,
|
|
4038
|
+
alias: "uiTooltip",
|
|
4039
|
+
required: false
|
|
4040
|
+
}]
|
|
4041
|
+
}],
|
|
4042
|
+
tooltipPosition: [{
|
|
4043
|
+
type: i0.Input,
|
|
4044
|
+
args: [{
|
|
4045
|
+
isSignal: true,
|
|
4046
|
+
alias: "tooltipPosition",
|
|
4047
|
+
required: false
|
|
4048
|
+
}]
|
|
4049
|
+
}]
|
|
4050
|
+
}
|
|
4051
|
+
});
|
|
4052
|
+
const EXTRA_ICONS = {
|
|
4053
|
+
"delete": "M3 6h18 M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2 M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14 M10 11v6 M14 11v6",
|
|
4054
|
+
"add": "M12 5v14 M5 12h14",
|
|
4055
|
+
"close": "M18 6L6 18 M6 6l12 12",
|
|
4056
|
+
"check": "M20 6L9 17l-5-5",
|
|
4057
|
+
"upload": "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 M17 8l-5-5-5 5 M12 3v12",
|
|
4058
|
+
"image": "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z M8.5 8.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z M21 15l-5-5L5 21",
|
|
4059
|
+
"chevron-up": "M18 15l-6-6-6 6",
|
|
4060
|
+
"chevron-down": "M6 9l6 6 6-6",
|
|
4061
|
+
"arrow-left": "M19 12H5 M12 19l-7-7 7-7",
|
|
4062
|
+
"bell": "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9 M13.73 21a2 2 0 0 1-3.46 0",
|
|
4063
|
+
"print": "M6 9V2h12v7 M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2 M6 14h12v8H6z",
|
|
4064
|
+
"shield": "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z",
|
|
4065
|
+
"lock": "M5 11h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2z M7 11V7a5 5 0 0 1 10 0v4",
|
|
4066
|
+
"arrow-up": "M12 19V5 M5 12l7-7 7 7",
|
|
4067
|
+
"arrow-down": "M12 5v14 M19 12l-7 7-7-7",
|
|
4068
|
+
"arrow-right": "M5 12h14 M12 5l7 7-7 7",
|
|
4069
|
+
"document": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M16 13H8 M16 17H8 M10 9H8",
|
|
4070
|
+
"grip": "M9 5h.01 M15 5h.01 M9 12h.01 M15 12h.01 M9 19h.01 M15 19h.01",
|
|
4071
|
+
"card": "M3 4h18a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M1 10h22",
|
|
4072
|
+
"view-off": "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z M3 3l18 18",
|
|
4073
|
+
"bank": "M3 21h18 M3 10h18 M5 6l7-3 7 3 M4 10v11 M20 10v11 M8 14v3 M12 14v3 M16 14v3"
|
|
4074
|
+
};
|
|
4075
|
+
function iconPath(name) {
|
|
4076
|
+
return Object.prototype.hasOwnProperty.call(EXTRA_ICONS, name) ? EXTRA_ICONS[name] : builtInActionIcon(name);
|
|
4077
|
+
}
|
|
4078
|
+
var IconComponent = class IconComponent {
|
|
4079
|
+
constructor() {
|
|
4080
|
+
this.name = input.required(...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
4081
|
+
this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
|
|
4082
|
+
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
4083
|
+
this.size = input(16, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
4084
|
+
this.variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
4085
|
+
this.disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
4086
|
+
this.loading = input(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
4087
|
+
this.interactive = input(true, ...ngDevMode ? [{ debugName: "interactive" }] : /* istanbul ignore next */ []);
|
|
4088
|
+
this.iconClick = output();
|
|
4089
|
+
this.accessibleName = computed(() => this.ariaLabel() || this.tooltip(), ...ngDevMode ? [{ debugName: "accessibleName" }] : /* istanbul ignore next */ []);
|
|
4090
|
+
this.path = computed(() => iconPath(this.name()), ...ngDevMode ? [{ debugName: "path" }] : /* istanbul ignore next */ []);
|
|
4091
|
+
}
|
|
4092
|
+
onClick(event) {
|
|
4093
|
+
event.stopPropagation();
|
|
4094
|
+
this.iconClick.emit(event);
|
|
4095
|
+
}
|
|
4096
|
+
static {
|
|
4097
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
4098
|
+
minVersion: "12.0.0",
|
|
4099
|
+
version: "22.2.2",
|
|
4100
|
+
ngImport: i0,
|
|
4101
|
+
type: IconComponent,
|
|
4102
|
+
deps: [],
|
|
4103
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
4104
|
+
});
|
|
4105
|
+
}
|
|
4106
|
+
static {
|
|
4107
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
4108
|
+
minVersion: "17.0.0",
|
|
4109
|
+
version: "22.2.2",
|
|
4110
|
+
type: IconComponent,
|
|
4111
|
+
isStandalone: true,
|
|
4112
|
+
selector: "ui-icon",
|
|
4113
|
+
inputs: {
|
|
4114
|
+
name: {
|
|
4115
|
+
classPropertyName: "name",
|
|
4116
|
+
publicName: "name",
|
|
4117
|
+
isSignal: true,
|
|
4118
|
+
isRequired: true,
|
|
4119
|
+
transformFunction: null
|
|
4120
|
+
},
|
|
4121
|
+
tooltip: {
|
|
4122
|
+
classPropertyName: "tooltip",
|
|
4123
|
+
publicName: "tooltip",
|
|
4124
|
+
isSignal: true,
|
|
4125
|
+
isRequired: false,
|
|
4126
|
+
transformFunction: null
|
|
4127
|
+
},
|
|
4128
|
+
ariaLabel: {
|
|
4129
|
+
classPropertyName: "ariaLabel",
|
|
4130
|
+
publicName: "ariaLabel",
|
|
4131
|
+
isSignal: true,
|
|
4132
|
+
isRequired: false,
|
|
4133
|
+
transformFunction: null
|
|
4134
|
+
},
|
|
4135
|
+
size: {
|
|
4136
|
+
classPropertyName: "size",
|
|
4137
|
+
publicName: "size",
|
|
4138
|
+
isSignal: true,
|
|
4139
|
+
isRequired: false,
|
|
4140
|
+
transformFunction: null
|
|
4141
|
+
},
|
|
4142
|
+
variant: {
|
|
4143
|
+
classPropertyName: "variant",
|
|
4144
|
+
publicName: "variant",
|
|
4145
|
+
isSignal: true,
|
|
4146
|
+
isRequired: false,
|
|
4147
|
+
transformFunction: null
|
|
4148
|
+
},
|
|
4149
|
+
disabled: {
|
|
4150
|
+
classPropertyName: "disabled",
|
|
4151
|
+
publicName: "disabled",
|
|
4152
|
+
isSignal: true,
|
|
4153
|
+
isRequired: false,
|
|
4154
|
+
transformFunction: null
|
|
4155
|
+
},
|
|
4156
|
+
loading: {
|
|
4157
|
+
classPropertyName: "loading",
|
|
4158
|
+
publicName: "loading",
|
|
4159
|
+
isSignal: true,
|
|
4160
|
+
isRequired: false,
|
|
4161
|
+
transformFunction: null
|
|
4162
|
+
},
|
|
4163
|
+
interactive: {
|
|
4164
|
+
classPropertyName: "interactive",
|
|
4165
|
+
publicName: "interactive",
|
|
4166
|
+
isSignal: true,
|
|
4167
|
+
isRequired: false,
|
|
4168
|
+
transformFunction: null
|
|
4169
|
+
}
|
|
4170
|
+
},
|
|
4171
|
+
outputs: { iconClick: "iconClick" },
|
|
4172
|
+
ngImport: i0,
|
|
4173
|
+
template: `
|
|
4174
|
+
@if (interactive()) {
|
|
4175
|
+
<button type="button" class="icon-btn" [class.danger]="variant() === 'danger'"
|
|
4176
|
+
[class.loading]="loading()" [disabled]="disabled() || loading()" [attr.aria-busy]="loading() ? 'true' : null"
|
|
4177
|
+
[attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" (click)="onClick($event)">
|
|
4178
|
+
<ng-container *ngTemplateOutlet="glyph" />
|
|
4179
|
+
</button>
|
|
4180
|
+
} @else {
|
|
4181
|
+
<span class="icon-static" [class.danger]="variant() === 'danger'" [attr.aria-busy]="loading() ? 'true' : null"
|
|
4182
|
+
[attr.role]="accessibleName() ? 'img' : null" [attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" [attr.aria-hidden]="accessibleName() ? null : 'true'">
|
|
4183
|
+
<ng-container *ngTemplateOutlet="glyph" />
|
|
4184
|
+
</span>
|
|
4185
|
+
}
|
|
4186
|
+
<ng-template #glyph>
|
|
4187
|
+
@if (loading()) {
|
|
4188
|
+
<span class="spinner" [style.width.px]="size()" [style.height.px]="size()" aria-hidden="true"></span>
|
|
4189
|
+
} @else if (path(); as d) {
|
|
4190
|
+
<svg viewBox="0 0 24 24" [attr.width]="size()" [attr.height]="size()" fill="none" stroke="currentColor"
|
|
4191
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
4192
|
+
<path [attr.d]="d" />
|
|
4193
|
+
</svg>
|
|
4194
|
+
}
|
|
4195
|
+
</ng-template>
|
|
4196
|
+
`,
|
|
4197
|
+
isInline: true,
|
|
4198
|
+
styles: [":host{display:inline-flex}.icon-static{display:inline-flex;align-items:center;justify-content:center;color:inherit}.icon-static.danger{color:#b91c1c}.icon-static svg{display:block}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#475569;cursor:pointer;-webkit-appearance:none;appearance:none;font:inherit;transition:background .15s ease,color .15s ease}.icon-btn:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.icon-btn.danger{color:#b91c1c}.icon-btn.danger:hover:not(:disabled){background:#fef2f2;color:#991b1b}.icon-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn.loading:disabled{opacity:1;cursor:progress}.spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:ui-icon-spin .6s linear infinite}@keyframes ui-icon-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.icon-btn:after{content:\"\";position:absolute;inset:-8px}\n"],
|
|
4199
|
+
dependencies: [{
|
|
4200
|
+
kind: "directive",
|
|
4201
|
+
type: NgTemplateOutlet,
|
|
4202
|
+
selector: "[ngTemplateOutlet]",
|
|
4203
|
+
inputs: [
|
|
4204
|
+
"ngTemplateOutletContext",
|
|
4205
|
+
"ngTemplateOutlet",
|
|
4206
|
+
"ngTemplateOutletInjector"
|
|
4207
|
+
]
|
|
4208
|
+
}, {
|
|
4209
|
+
kind: "directive",
|
|
4210
|
+
type: TooltipDirective,
|
|
4211
|
+
selector: "[uiTooltip]",
|
|
4212
|
+
inputs: ["uiTooltip", "tooltipPosition"]
|
|
4213
|
+
}],
|
|
4214
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4215
|
+
});
|
|
4216
|
+
}
|
|
4217
|
+
};
|
|
4218
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4219
|
+
minVersion: "12.0.0",
|
|
4220
|
+
version: "22.2.2",
|
|
4221
|
+
ngImport: i0,
|
|
4222
|
+
type: IconComponent,
|
|
4223
|
+
decorators: [{
|
|
4224
|
+
type: Component,
|
|
4225
|
+
args: [{
|
|
4226
|
+
selector: "ui-icon",
|
|
4227
|
+
standalone: true,
|
|
4228
|
+
imports: [NgTemplateOutlet, TooltipDirective],
|
|
4229
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4230
|
+
template: `
|
|
4231
|
+
@if (interactive()) {
|
|
4232
|
+
<button type="button" class="icon-btn" [class.danger]="variant() === 'danger'"
|
|
4233
|
+
[class.loading]="loading()" [disabled]="disabled() || loading()" [attr.aria-busy]="loading() ? 'true' : null"
|
|
4234
|
+
[attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" (click)="onClick($event)">
|
|
4235
|
+
<ng-container *ngTemplateOutlet="glyph" />
|
|
4236
|
+
</button>
|
|
4237
|
+
} @else {
|
|
4238
|
+
<span class="icon-static" [class.danger]="variant() === 'danger'" [attr.aria-busy]="loading() ? 'true' : null"
|
|
4239
|
+
[attr.role]="accessibleName() ? 'img' : null" [attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" [attr.aria-hidden]="accessibleName() ? null : 'true'">
|
|
4240
|
+
<ng-container *ngTemplateOutlet="glyph" />
|
|
4241
|
+
</span>
|
|
4242
|
+
}
|
|
4243
|
+
<ng-template #glyph>
|
|
4244
|
+
@if (loading()) {
|
|
4245
|
+
<span class="spinner" [style.width.px]="size()" [style.height.px]="size()" aria-hidden="true"></span>
|
|
4246
|
+
} @else if (path(); as d) {
|
|
4247
|
+
<svg viewBox="0 0 24 24" [attr.width]="size()" [attr.height]="size()" fill="none" stroke="currentColor"
|
|
4248
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
4249
|
+
<path [attr.d]="d" />
|
|
4250
|
+
</svg>
|
|
4251
|
+
}
|
|
4252
|
+
</ng-template>
|
|
4253
|
+
`,
|
|
4254
|
+
styles: [":host{display:inline-flex}.icon-static{display:inline-flex;align-items:center;justify-content:center;color:inherit}.icon-static.danger{color:#b91c1c}.icon-static svg{display:block}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#475569;cursor:pointer;-webkit-appearance:none;appearance:none;font:inherit;transition:background .15s ease,color .15s ease}.icon-btn:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.icon-btn.danger{color:#b91c1c}.icon-btn.danger:hover:not(:disabled){background:#fef2f2;color:#991b1b}.icon-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn.loading:disabled{opacity:1;cursor:progress}.spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:ui-icon-spin .6s linear infinite}@keyframes ui-icon-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.icon-btn:after{content:\"\";position:absolute;inset:-8px}\n"]
|
|
4255
|
+
}]
|
|
4256
|
+
}],
|
|
4257
|
+
propDecorators: {
|
|
4258
|
+
name: [{
|
|
4259
|
+
type: i0.Input,
|
|
4260
|
+
args: [{
|
|
4261
|
+
isSignal: true,
|
|
4262
|
+
alias: "name",
|
|
4263
|
+
required: true
|
|
4264
|
+
}]
|
|
4265
|
+
}],
|
|
4266
|
+
tooltip: [{
|
|
4267
|
+
type: i0.Input,
|
|
4268
|
+
args: [{
|
|
4269
|
+
isSignal: true,
|
|
4270
|
+
alias: "tooltip",
|
|
4271
|
+
required: false
|
|
4272
|
+
}]
|
|
4273
|
+
}],
|
|
4274
|
+
ariaLabel: [{
|
|
4275
|
+
type: i0.Input,
|
|
4276
|
+
args: [{
|
|
4277
|
+
isSignal: true,
|
|
4278
|
+
alias: "ariaLabel",
|
|
4279
|
+
required: false
|
|
4280
|
+
}]
|
|
4281
|
+
}],
|
|
4282
|
+
size: [{
|
|
4283
|
+
type: i0.Input,
|
|
4284
|
+
args: [{
|
|
4285
|
+
isSignal: true,
|
|
4286
|
+
alias: "size",
|
|
4287
|
+
required: false
|
|
4288
|
+
}]
|
|
4289
|
+
}],
|
|
4290
|
+
variant: [{
|
|
4291
|
+
type: i0.Input,
|
|
4292
|
+
args: [{
|
|
4293
|
+
isSignal: true,
|
|
4294
|
+
alias: "variant",
|
|
4295
|
+
required: false
|
|
4296
|
+
}]
|
|
4297
|
+
}],
|
|
4298
|
+
disabled: [{
|
|
4299
|
+
type: i0.Input,
|
|
4300
|
+
args: [{
|
|
4301
|
+
isSignal: true,
|
|
4302
|
+
alias: "disabled",
|
|
4303
|
+
required: false
|
|
4304
|
+
}]
|
|
4305
|
+
}],
|
|
4306
|
+
loading: [{
|
|
4307
|
+
type: i0.Input,
|
|
4308
|
+
args: [{
|
|
4309
|
+
isSignal: true,
|
|
4310
|
+
alias: "loading",
|
|
4311
|
+
required: false
|
|
4312
|
+
}]
|
|
4313
|
+
}],
|
|
4314
|
+
interactive: [{
|
|
4315
|
+
type: i0.Input,
|
|
4316
|
+
args: [{
|
|
4317
|
+
isSignal: true,
|
|
4318
|
+
alias: "interactive",
|
|
4319
|
+
required: false
|
|
4320
|
+
}]
|
|
4321
|
+
}],
|
|
4322
|
+
iconClick: [{
|
|
4323
|
+
type: i0.Output,
|
|
4324
|
+
args: ["iconClick"]
|
|
4325
|
+
}]
|
|
4326
|
+
}
|
|
4327
|
+
});
|
|
4328
|
+
const DEFAULT_PASSWORD_RULES = [
|
|
4329
|
+
{
|
|
4330
|
+
id: "length",
|
|
4331
|
+
label: "At least 8 characters",
|
|
4332
|
+
test: (p) => p.length >= 8
|
|
4333
|
+
},
|
|
4334
|
+
{
|
|
4335
|
+
id: "uppercase",
|
|
4336
|
+
label: "One uppercase letter",
|
|
4337
|
+
test: (p) => /[A-Z]/.test(p)
|
|
4338
|
+
},
|
|
4339
|
+
{
|
|
4340
|
+
id: "lowercase",
|
|
4341
|
+
label: "One lowercase letter",
|
|
4342
|
+
test: (p) => /[a-z]/.test(p)
|
|
4343
|
+
},
|
|
4344
|
+
{
|
|
4345
|
+
id: "digit",
|
|
4346
|
+
label: "One digit",
|
|
4347
|
+
test: (p) => /[0-9]/.test(p)
|
|
4348
|
+
},
|
|
4349
|
+
{
|
|
4350
|
+
id: "special",
|
|
4351
|
+
label: "One special character (!@#$%^&*...)",
|
|
4352
|
+
test: (p) => /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(p)
|
|
4353
|
+
}
|
|
4354
|
+
];
|
|
4355
|
+
function passwordMeetsRules(password, rules = DEFAULT_PASSWORD_RULES) {
|
|
4356
|
+
return rules.every((r) => r.test(password));
|
|
4357
|
+
}
|
|
4358
|
+
var PasswordRequirementsComponent = class PasswordRequirementsComponent {
|
|
4359
|
+
constructor() {
|
|
4360
|
+
this.value = input("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
4361
|
+
this.rules = input(DEFAULT_PASSWORD_RULES, ...ngDevMode ? [{ debugName: "rules" }] : /* istanbul ignore next */ []);
|
|
4362
|
+
this.title = input("Password Requirements:", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
4363
|
+
this._check = iconPath("check");
|
|
4364
|
+
this._results = computed(() => this.rules().map((r) => ({
|
|
4365
|
+
id: r.id,
|
|
4366
|
+
label: r.label,
|
|
4367
|
+
met: r.test(this.value() ?? "")
|
|
4368
|
+
})), ...ngDevMode ? [{ debugName: "_results" }] : /* istanbul ignore next */ []);
|
|
4369
|
+
}
|
|
4370
|
+
static {
|
|
4371
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
4372
|
+
minVersion: "12.0.0",
|
|
4373
|
+
version: "22.2.2",
|
|
4374
|
+
ngImport: i0,
|
|
4375
|
+
type: PasswordRequirementsComponent,
|
|
4376
|
+
deps: [],
|
|
4377
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
4378
|
+
});
|
|
4379
|
+
}
|
|
4380
|
+
static {
|
|
4381
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
4382
|
+
minVersion: "17.0.0",
|
|
4383
|
+
version: "22.2.2",
|
|
4384
|
+
type: PasswordRequirementsComponent,
|
|
4385
|
+
isStandalone: true,
|
|
4386
|
+
selector: "ui-password-requirements",
|
|
4387
|
+
inputs: {
|
|
4388
|
+
value: {
|
|
4389
|
+
classPropertyName: "value",
|
|
4390
|
+
publicName: "value",
|
|
4391
|
+
isSignal: true,
|
|
4392
|
+
isRequired: false,
|
|
4393
|
+
transformFunction: null
|
|
4394
|
+
},
|
|
4395
|
+
rules: {
|
|
4396
|
+
classPropertyName: "rules",
|
|
4397
|
+
publicName: "rules",
|
|
4398
|
+
isSignal: true,
|
|
4399
|
+
isRequired: false,
|
|
4400
|
+
transformFunction: null
|
|
4401
|
+
},
|
|
4402
|
+
title: {
|
|
4403
|
+
classPropertyName: "title",
|
|
4404
|
+
publicName: "title",
|
|
4405
|
+
isSignal: true,
|
|
4406
|
+
isRequired: false,
|
|
4407
|
+
transformFunction: null
|
|
4408
|
+
}
|
|
4409
|
+
},
|
|
4410
|
+
ngImport: i0,
|
|
4411
|
+
template: `
|
|
4412
|
+
<div class="pr" role="group" [attr.aria-label]="title()" data-testid="password-requirements">
|
|
4413
|
+
<p class="pr-title">{{ title() }}</p>
|
|
4414
|
+
<ul class="pr-list">
|
|
4415
|
+
@for (r of _results(); track r.id) {
|
|
4416
|
+
<li class="pr-item" [class.pr-met]="r.met" [attr.data-testid]="'password-requirement-' + r.id" [attr.data-met]="r.met">
|
|
4417
|
+
<svg class="pr-icon" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5"
|
|
4418
|
+
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
4419
|
+
@if (r.met) { <path [attr.d]="_check" /> } @else { <circle cx="12" cy="12" r="8" /> }
|
|
4420
|
+
</svg>
|
|
4421
|
+
<span>{{ r.label }}</span>
|
|
4422
|
+
<span class="pr-sr">{{ r.met ? ', met' : ', not met' }}</span>
|
|
4423
|
+
</li>
|
|
4424
|
+
}
|
|
4425
|
+
</ul>
|
|
4426
|
+
</div>
|
|
4427
|
+
`,
|
|
4428
|
+
isInline: true,
|
|
4429
|
+
styles: [":host{display:block}.pr-title{margin:0 0 6px;font-size:.8125rem;color:#64748b}.pr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.pr-item{display:flex;align-items:center;gap:8px;font-size:.8125rem;line-height:1.3;color:#64748b;transition:color .15s}.pr-icon{flex:0 0 auto}.pr-met{color:#15803d;font-weight:500}.pr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n"],
|
|
4430
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4431
|
+
});
|
|
4432
|
+
}
|
|
4433
|
+
};
|
|
4434
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4435
|
+
minVersion: "12.0.0",
|
|
4436
|
+
version: "22.2.2",
|
|
4437
|
+
ngImport: i0,
|
|
4438
|
+
type: PasswordRequirementsComponent,
|
|
4439
|
+
decorators: [{
|
|
4440
|
+
type: Component,
|
|
4441
|
+
args: [{
|
|
4442
|
+
selector: "ui-password-requirements",
|
|
4443
|
+
standalone: true,
|
|
4444
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4445
|
+
template: `
|
|
4446
|
+
<div class="pr" role="group" [attr.aria-label]="title()" data-testid="password-requirements">
|
|
4447
|
+
<p class="pr-title">{{ title() }}</p>
|
|
4448
|
+
<ul class="pr-list">
|
|
4449
|
+
@for (r of _results(); track r.id) {
|
|
4450
|
+
<li class="pr-item" [class.pr-met]="r.met" [attr.data-testid]="'password-requirement-' + r.id" [attr.data-met]="r.met">
|
|
4451
|
+
<svg class="pr-icon" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5"
|
|
4452
|
+
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
4453
|
+
@if (r.met) { <path [attr.d]="_check" /> } @else { <circle cx="12" cy="12" r="8" /> }
|
|
4454
|
+
</svg>
|
|
4455
|
+
<span>{{ r.label }}</span>
|
|
4456
|
+
<span class="pr-sr">{{ r.met ? ', met' : ', not met' }}</span>
|
|
4457
|
+
</li>
|
|
4458
|
+
}
|
|
4459
|
+
</ul>
|
|
4460
|
+
</div>
|
|
4461
|
+
`,
|
|
4462
|
+
styles: [":host{display:block}.pr-title{margin:0 0 6px;font-size:.8125rem;color:#64748b}.pr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.pr-item{display:flex;align-items:center;gap:8px;font-size:.8125rem;line-height:1.3;color:#64748b;transition:color .15s}.pr-icon{flex:0 0 auto}.pr-met{color:#15803d;font-weight:500}.pr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}\n"]
|
|
4463
|
+
}]
|
|
4464
|
+
}],
|
|
4465
|
+
propDecorators: {
|
|
4466
|
+
value: [{
|
|
4467
|
+
type: i0.Input,
|
|
4468
|
+
args: [{
|
|
4469
|
+
isSignal: true,
|
|
4470
|
+
alias: "value",
|
|
4471
|
+
required: false
|
|
4472
|
+
}]
|
|
4473
|
+
}],
|
|
4474
|
+
rules: [{
|
|
4475
|
+
type: i0.Input,
|
|
4476
|
+
args: [{
|
|
4477
|
+
isSignal: true,
|
|
4478
|
+
alias: "rules",
|
|
4479
|
+
required: false
|
|
4480
|
+
}]
|
|
4481
|
+
}],
|
|
4482
|
+
title: [{
|
|
4483
|
+
type: i0.Input,
|
|
4484
|
+
args: [{
|
|
4485
|
+
isSignal: true,
|
|
4486
|
+
alias: "title",
|
|
4487
|
+
required: false
|
|
4488
|
+
}]
|
|
4489
|
+
}]
|
|
4490
|
+
}
|
|
4491
|
+
});
|
|
3915
4492
|
var TextInputComponent = class TextInputComponent {
|
|
3916
4493
|
static {
|
|
3917
4494
|
this._EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -3921,6 +4498,9 @@ var TextInputComponent = class TextInputComponent {
|
|
|
3921
4498
|
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
3922
4499
|
this.placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
|
|
3923
4500
|
this.prefix = input("", ...ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []);
|
|
4501
|
+
this.revealable = input(false, ...ngDevMode ? [{ debugName: "revealable" }] : /* istanbul ignore next */ []);
|
|
4502
|
+
this.passwordRequirements = input(false, ...ngDevMode ? [{ debugName: "passwordRequirements" }] : /* istanbul ignore next */ []);
|
|
4503
|
+
this.passwordRules = input(void 0, ...ngDevMode ? [{ debugName: "passwordRules" }] : /* istanbul ignore next */ []);
|
|
3924
4504
|
this.type = input("text", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
3925
4505
|
this.maxlength = input(void 0, ...ngDevMode ? [{ debugName: "maxlength" }] : /* istanbul ignore next */ []);
|
|
3926
4506
|
this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
|
|
@@ -3957,6 +4537,18 @@ var TextInputComponent = class TextInputComponent {
|
|
|
3957
4537
|
if (this.type() === "number" && typeof step === "number" && Number.isFinite(step) && step > 0) return String(step);
|
|
3958
4538
|
return this.type() === "number" && this.integer() ? "1" : null;
|
|
3959
4539
|
}, ...ngDevMode ? [{ debugName: "_stepAttr" }] : /* istanbul ignore next */ []);
|
|
4540
|
+
this._revealable = computed(() => this.revealable() && this.type() === "password", ...ngDevMode ? [{ debugName: "_revealable" }] : /* istanbul ignore next */ []);
|
|
4541
|
+
this._shown = signal(false, ...ngDevMode ? [{ debugName: "_shown" }] : /* istanbul ignore next */ []);
|
|
4542
|
+
this._inputType = computed(() => this._revealable() && this._shown() ? "text" : this.type(), ...ngDevMode ? [{ debugName: "_inputType" }] : /* istanbul ignore next */ []);
|
|
4543
|
+
this._eyePath = iconPath("view");
|
|
4544
|
+
this._eyeOffPath = iconPath("view-off");
|
|
4545
|
+
this._showRequirements = computed(() => this.passwordRequirements() && this.type() === "password" && this._typed(), ...ngDevMode ? [{ debugName: "_showRequirements" }] : /* istanbul ignore next */ []);
|
|
4546
|
+
this._describedBy = computed(() => {
|
|
4547
|
+
const ids = [this._activeError() || this.hint() ? this._inputId + "-desc" : "", this._showRequirements() ? this._inputId + "-req" : ""].filter(Boolean);
|
|
4548
|
+
return ids.length ? ids.join(" ") : null;
|
|
4549
|
+
}, ...ngDevMode ? [{ debugName: "_describedBy" }] : /* istanbul ignore next */ []);
|
|
4550
|
+
this._typed = signal(false, ...ngDevMode ? [{ debugName: "_typed" }] : /* istanbul ignore next */ []);
|
|
4551
|
+
this._defaultRules = DEFAULT_PASSWORD_RULES;
|
|
3960
4552
|
this._warned = false;
|
|
3961
4553
|
this._formatting = computed(() => this.phoneFormat() || this.type() === "tel", ...ngDevMode ? [{ debugName: "_formatting" }] : /* istanbul ignore next */ []);
|
|
3962
4554
|
this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
|
|
@@ -3983,6 +4575,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
3983
4575
|
writeValue(val) {
|
|
3984
4576
|
const text = val == null || typeof val === "number" && Number.isNaN(val) && this._numeric() ? "" : String(val);
|
|
3985
4577
|
this._value.set(this._formatting() ? TextInputComponent._formatPhone(text) : text);
|
|
4578
|
+
if (text === "") this._typed.set(false);
|
|
3986
4579
|
}
|
|
3987
4580
|
validate(control) {
|
|
3988
4581
|
const v = control.value;
|
|
@@ -4006,6 +4599,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4006
4599
|
this._cvaDisabled.set(d);
|
|
4007
4600
|
}
|
|
4008
4601
|
onInput(event) {
|
|
4602
|
+
this._typed.set(true);
|
|
4009
4603
|
const input = event.target;
|
|
4010
4604
|
const raw = input.value;
|
|
4011
4605
|
let val = this._formatting() ? TextInputComponent._formatPhone(raw) : raw;
|
|
@@ -4147,6 +4741,27 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4147
4741
|
isRequired: false,
|
|
4148
4742
|
transformFunction: null
|
|
4149
4743
|
},
|
|
4744
|
+
revealable: {
|
|
4745
|
+
classPropertyName: "revealable",
|
|
4746
|
+
publicName: "revealable",
|
|
4747
|
+
isSignal: true,
|
|
4748
|
+
isRequired: false,
|
|
4749
|
+
transformFunction: null
|
|
4750
|
+
},
|
|
4751
|
+
passwordRequirements: {
|
|
4752
|
+
classPropertyName: "passwordRequirements",
|
|
4753
|
+
publicName: "passwordRequirements",
|
|
4754
|
+
isSignal: true,
|
|
4755
|
+
isRequired: false,
|
|
4756
|
+
transformFunction: null
|
|
4757
|
+
},
|
|
4758
|
+
passwordRules: {
|
|
4759
|
+
classPropertyName: "passwordRules",
|
|
4760
|
+
publicName: "passwordRules",
|
|
4761
|
+
isSignal: true,
|
|
4762
|
+
isRequired: false,
|
|
4763
|
+
transformFunction: null
|
|
4764
|
+
},
|
|
4150
4765
|
type: {
|
|
4151
4766
|
classPropertyName: "type",
|
|
4152
4767
|
publicName: "type",
|
|
@@ -4300,7 +4915,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4300
4915
|
ngImport: i0,
|
|
4301
4916
|
template: `
|
|
4302
4917
|
<div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
|
|
4303
|
-
[class.ti-prefixed]="!!prefix()" [style.--ti-input-row]="prefix() ? (label() ? 2 : 1) : null">
|
|
4918
|
+
[class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
|
|
4304
4919
|
@if (label()) {
|
|
4305
4920
|
<label class="ti-label" [for]="_inputId">
|
|
4306
4921
|
{{ label() }}
|
|
@@ -4310,8 +4925,9 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4310
4925
|
<input
|
|
4311
4926
|
class="ti-input"
|
|
4312
4927
|
[style.padding-left]="_prefixPadding()"
|
|
4928
|
+
[style.padding-right]="_revealable() ? '44px' : null"
|
|
4313
4929
|
[id]="_inputId"
|
|
4314
|
-
[type]="
|
|
4930
|
+
[type]="_inputType()"
|
|
4315
4931
|
[attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
|
|
4316
4932
|
[placeholder]="placeholder()"
|
|
4317
4933
|
[value]="_value()"
|
|
@@ -4323,7 +4939,7 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4323
4939
|
[attr.required]="required() || null"
|
|
4324
4940
|
[attr.aria-label]="ariaLabel() || null"
|
|
4325
4941
|
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
4326
|
-
[attr.aria-describedby]="(
|
|
4942
|
+
[attr.aria-describedby]="_describedBy()"
|
|
4327
4943
|
(input)="onInput($event)"
|
|
4328
4944
|
(focus)="onFocus()"
|
|
4329
4945
|
(blur)="onBlur()"
|
|
@@ -4332,6 +4948,18 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4332
4948
|
<!-- Optional leading mark ("$"): a sibling after the input, laid over it by the grid of .ti-prefixed, so toggling it never recreates the input (focus and caret stay). -->
|
|
4333
4949
|
<span class="ti-prefix" aria-hidden="true">{{ prefix() }}</span>
|
|
4334
4950
|
}
|
|
4951
|
+
@if (_revealable()) {
|
|
4952
|
+
<!-- Show / hide toggle laid over the end of the input by the grid of .ti-prefixed. The name stays "Show password"; aria-pressed carries the state. -->
|
|
4953
|
+
<button type="button" class="ti-reveal" data-testid="ti-reveal" aria-label="Show password"
|
|
4954
|
+
[attr.aria-pressed]="_shown()" [attr.aria-controls]="_inputId" [disabled]="disabled()" (click)="_shown.set(!_shown())">
|
|
4955
|
+
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
4956
|
+
<path [attr.d]="_shown() ? _eyeOffPath : _eyePath" />
|
|
4957
|
+
</svg>
|
|
4958
|
+
</button>
|
|
4959
|
+
}
|
|
4960
|
+
@if (_showRequirements()) {
|
|
4961
|
+
<ui-password-requirements [attr.id]="_inputId + '-req'" [value]="_value()" [rules]="passwordRules() ?? _defaultRules" />
|
|
4962
|
+
}
|
|
4335
4963
|
@if (_activeError()) {
|
|
4336
4964
|
<p class="ti-desc ti-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
4337
4965
|
} @else if (hint()) {
|
|
@@ -4340,7 +4968,17 @@ var TextInputComponent = class TextInputComponent {
|
|
|
4340
4968
|
</div>
|
|
4341
4969
|
`,
|
|
4342
4970
|
isInline: true,
|
|
4343
|
-
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#ef4444;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#ef4444}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
|
|
4971
|
+
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#ef4444;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#ef4444}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
|
|
4972
|
+
dependencies: [{
|
|
4973
|
+
kind: "component",
|
|
4974
|
+
type: PasswordRequirementsComponent,
|
|
4975
|
+
selector: "ui-password-requirements",
|
|
4976
|
+
inputs: [
|
|
4977
|
+
"value",
|
|
4978
|
+
"rules",
|
|
4979
|
+
"title"
|
|
4980
|
+
]
|
|
4981
|
+
}],
|
|
4344
4982
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
4345
4983
|
});
|
|
4346
4984
|
}
|
|
@@ -4356,6 +4994,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4356
4994
|
selector: "ui-text-input",
|
|
4357
4995
|
standalone: true,
|
|
4358
4996
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4997
|
+
imports: [PasswordRequirementsComponent],
|
|
4359
4998
|
providers: [
|
|
4360
4999
|
{
|
|
4361
5000
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -4374,7 +5013,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4374
5013
|
],
|
|
4375
5014
|
template: `
|
|
4376
5015
|
<div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
|
|
4377
|
-
[class.ti-prefixed]="!!prefix()" [style.--ti-input-row]="prefix() ? (label() ? 2 : 1) : null">
|
|
5016
|
+
[class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
|
|
4378
5017
|
@if (label()) {
|
|
4379
5018
|
<label class="ti-label" [for]="_inputId">
|
|
4380
5019
|
{{ label() }}
|
|
@@ -4384,8 +5023,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4384
5023
|
<input
|
|
4385
5024
|
class="ti-input"
|
|
4386
5025
|
[style.padding-left]="_prefixPadding()"
|
|
5026
|
+
[style.padding-right]="_revealable() ? '44px' : null"
|
|
4387
5027
|
[id]="_inputId"
|
|
4388
|
-
[type]="
|
|
5028
|
+
[type]="_inputType()"
|
|
4389
5029
|
[attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
|
|
4390
5030
|
[placeholder]="placeholder()"
|
|
4391
5031
|
[value]="_value()"
|
|
@@ -4397,7 +5037,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4397
5037
|
[attr.required]="required() || null"
|
|
4398
5038
|
[attr.aria-label]="ariaLabel() || null"
|
|
4399
5039
|
[attr.aria-invalid]="_activeError() ? 'true' : null"
|
|
4400
|
-
[attr.aria-describedby]="(
|
|
5040
|
+
[attr.aria-describedby]="_describedBy()"
|
|
4401
5041
|
(input)="onInput($event)"
|
|
4402
5042
|
(focus)="onFocus()"
|
|
4403
5043
|
(blur)="onBlur()"
|
|
@@ -4406,6 +5046,18 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4406
5046
|
<!-- Optional leading mark ("$"): a sibling after the input, laid over it by the grid of .ti-prefixed, so toggling it never recreates the input (focus and caret stay). -->
|
|
4407
5047
|
<span class="ti-prefix" aria-hidden="true">{{ prefix() }}</span>
|
|
4408
5048
|
}
|
|
5049
|
+
@if (_revealable()) {
|
|
5050
|
+
<!-- Show / hide toggle laid over the end of the input by the grid of .ti-prefixed. The name stays "Show password"; aria-pressed carries the state. -->
|
|
5051
|
+
<button type="button" class="ti-reveal" data-testid="ti-reveal" aria-label="Show password"
|
|
5052
|
+
[attr.aria-pressed]="_shown()" [attr.aria-controls]="_inputId" [disabled]="disabled()" (click)="_shown.set(!_shown())">
|
|
5053
|
+
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
5054
|
+
<path [attr.d]="_shown() ? _eyeOffPath : _eyePath" />
|
|
5055
|
+
</svg>
|
|
5056
|
+
</button>
|
|
5057
|
+
}
|
|
5058
|
+
@if (_showRequirements()) {
|
|
5059
|
+
<ui-password-requirements [attr.id]="_inputId + '-req'" [value]="_value()" [rules]="passwordRules() ?? _defaultRules" />
|
|
5060
|
+
}
|
|
4409
5061
|
@if (_activeError()) {
|
|
4410
5062
|
<p class="ti-desc ti-desc-error" [id]="_inputId + '-desc'" role="alert">{{ _activeError() }}</p>
|
|
4411
5063
|
} @else if (hint()) {
|
|
@@ -4413,7 +5065,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4413
5065
|
}
|
|
4414
5066
|
</div>
|
|
4415
5067
|
`,
|
|
4416
|
-
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#ef4444;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#ef4444}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
|
|
5068
|
+
styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#ef4444;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#ef4444}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
|
|
4417
5069
|
}]
|
|
4418
5070
|
}],
|
|
4419
5071
|
ctorParameters: () => [],
|
|
@@ -4450,6 +5102,30 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4450
5102
|
required: false
|
|
4451
5103
|
}]
|
|
4452
5104
|
}],
|
|
5105
|
+
revealable: [{
|
|
5106
|
+
type: i0.Input,
|
|
5107
|
+
args: [{
|
|
5108
|
+
isSignal: true,
|
|
5109
|
+
alias: "revealable",
|
|
5110
|
+
required: false
|
|
5111
|
+
}]
|
|
5112
|
+
}],
|
|
5113
|
+
passwordRequirements: [{
|
|
5114
|
+
type: i0.Input,
|
|
5115
|
+
args: [{
|
|
5116
|
+
isSignal: true,
|
|
5117
|
+
alias: "passwordRequirements",
|
|
5118
|
+
required: false
|
|
5119
|
+
}]
|
|
5120
|
+
}],
|
|
5121
|
+
passwordRules: [{
|
|
5122
|
+
type: i0.Input,
|
|
5123
|
+
args: [{
|
|
5124
|
+
isSignal: true,
|
|
5125
|
+
alias: "passwordRules",
|
|
5126
|
+
required: false
|
|
5127
|
+
}]
|
|
5128
|
+
}],
|
|
4453
5129
|
type: [{
|
|
4454
5130
|
type: i0.Input,
|
|
4455
5131
|
args: [{
|
|
@@ -5066,6 +5742,9 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
5066
5742
|
"ariaLabel",
|
|
5067
5743
|
"placeholder",
|
|
5068
5744
|
"prefix",
|
|
5745
|
+
"revealable",
|
|
5746
|
+
"passwordRequirements",
|
|
5747
|
+
"passwordRules",
|
|
5069
5748
|
"type",
|
|
5070
5749
|
"maxlength",
|
|
5071
5750
|
"required",
|
|
@@ -5565,147 +6244,13 @@ function getEligibleIds(items, selectedIds, action, options = {}) {
|
|
|
5565
6244
|
skippedCount: selected.length - eligible.length
|
|
5566
6245
|
};
|
|
5567
6246
|
}
|
|
5568
|
-
let nextTooltipId = 0;
|
|
5569
|
-
var TooltipDirective = class TooltipDirective {
|
|
5570
|
-
constructor() {
|
|
5571
|
-
this.uiTooltip = input("", ...ngDevMode ? [{ debugName: "uiTooltip" }] : /* istanbul ignore next */ []);
|
|
5572
|
-
this.tooltipPosition = input("top", ...ngDevMode ? [{ debugName: "tooltipPosition" }] : /* istanbul ignore next */ []);
|
|
5573
|
-
this.host = inject(ElementRef).nativeElement;
|
|
5574
|
-
this.doc = inject(DOCUMENT);
|
|
5575
|
-
this.bubble = null;
|
|
5576
|
-
this.id = `ui-tooltip-${nextTooltipId++}`;
|
|
5577
|
-
inject(DestroyRef).onDestroy(() => this.hide());
|
|
5578
|
-
}
|
|
5579
|
-
show() {
|
|
5580
|
-
const text = this.uiTooltip();
|
|
5581
|
-
if (!text || this.bubble) return;
|
|
5582
|
-
const el = this.doc.createElement("div");
|
|
5583
|
-
el.id = this.id;
|
|
5584
|
-
el.setAttribute("role", "tooltip");
|
|
5585
|
-
el.textContent = text;
|
|
5586
|
-
Object.assign(el.style, {
|
|
5587
|
-
position: "fixed",
|
|
5588
|
-
zIndex: "10000",
|
|
5589
|
-
maxWidth: "280px",
|
|
5590
|
-
padding: "6px 10px",
|
|
5591
|
-
background: "#0f172a",
|
|
5592
|
-
color: "#fff",
|
|
5593
|
-
fontSize: "0.75rem",
|
|
5594
|
-
lineHeight: "1.4",
|
|
5595
|
-
borderRadius: "6px",
|
|
5596
|
-
boxShadow: "0 4px 12px rgba(15,23,42,.25)",
|
|
5597
|
-
whiteSpace: "pre-line",
|
|
5598
|
-
pointerEvents: "none",
|
|
5599
|
-
visibility: "hidden"
|
|
5600
|
-
});
|
|
5601
|
-
this.doc.body.appendChild(el);
|
|
5602
|
-
this.bubble = el;
|
|
5603
|
-
this.host.setAttribute("aria-describedby", this.id);
|
|
5604
|
-
const r = this.host.getBoundingClientRect();
|
|
5605
|
-
const b = el.getBoundingClientRect();
|
|
5606
|
-
const gap = 6;
|
|
5607
|
-
let top = this.tooltipPosition() === "top" ? r.top - b.height - gap : r.bottom + gap;
|
|
5608
|
-
if (top < 4) top = r.bottom + gap;
|
|
5609
|
-
else if (top + b.height > window.innerHeight - 4) top = r.top - b.height - gap;
|
|
5610
|
-
const left = Math.min(Math.max(4, r.left + r.width / 2 - b.width / 2), window.innerWidth - b.width - 4);
|
|
5611
|
-
el.style.top = `${top}px`;
|
|
5612
|
-
el.style.left = `${left}px`;
|
|
5613
|
-
el.style.visibility = "visible";
|
|
5614
|
-
}
|
|
5615
|
-
hide() {
|
|
5616
|
-
this.bubble?.remove();
|
|
5617
|
-
this.bubble = null;
|
|
5618
|
-
this.host.removeAttribute("aria-describedby");
|
|
5619
|
-
}
|
|
5620
|
-
static {
|
|
5621
|
-
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5622
|
-
minVersion: "12.0.0",
|
|
5623
|
-
version: "22.2.2",
|
|
5624
|
-
ngImport: i0,
|
|
5625
|
-
type: TooltipDirective,
|
|
5626
|
-
deps: [],
|
|
5627
|
-
target: i0.ɵɵFactoryTarget.Directive
|
|
5628
|
-
});
|
|
5629
|
-
}
|
|
5630
|
-
static {
|
|
5631
|
-
this.ɵdir = i0.ɵɵngDeclareDirective({
|
|
5632
|
-
minVersion: "17.1.0",
|
|
5633
|
-
version: "22.2.2",
|
|
5634
|
-
type: TooltipDirective,
|
|
5635
|
-
isStandalone: true,
|
|
5636
|
-
selector: "[uiTooltip]",
|
|
5637
|
-
inputs: {
|
|
5638
|
-
uiTooltip: {
|
|
5639
|
-
classPropertyName: "uiTooltip",
|
|
5640
|
-
publicName: "uiTooltip",
|
|
5641
|
-
isSignal: true,
|
|
5642
|
-
isRequired: false,
|
|
5643
|
-
transformFunction: null
|
|
5644
|
-
},
|
|
5645
|
-
tooltipPosition: {
|
|
5646
|
-
classPropertyName: "tooltipPosition",
|
|
5647
|
-
publicName: "tooltipPosition",
|
|
5648
|
-
isSignal: true,
|
|
5649
|
-
isRequired: false,
|
|
5650
|
-
transformFunction: null
|
|
5651
|
-
}
|
|
5652
|
-
},
|
|
5653
|
-
host: { listeners: {
|
|
5654
|
-
"mouseenter": "show()",
|
|
5655
|
-
"mouseleave": "hide()",
|
|
5656
|
-
"focusin": "show()",
|
|
5657
|
-
"focusout": "hide()",
|
|
5658
|
-
"keydown.escape": "hide()",
|
|
5659
|
-
"click": "hide()"
|
|
5660
|
-
} },
|
|
5661
|
-
ngImport: i0
|
|
5662
|
-
});
|
|
5663
|
-
}
|
|
5664
|
-
};
|
|
5665
|
-
i0.ɵɵngDeclareClassMetadata({
|
|
5666
|
-
minVersion: "12.0.0",
|
|
5667
|
-
version: "22.2.2",
|
|
5668
|
-
ngImport: i0,
|
|
5669
|
-
type: TooltipDirective,
|
|
5670
|
-
decorators: [{
|
|
5671
|
-
type: Directive,
|
|
5672
|
-
args: [{
|
|
5673
|
-
selector: "[uiTooltip]",
|
|
5674
|
-
standalone: true,
|
|
5675
|
-
host: {
|
|
5676
|
-
"(mouseenter)": "show()",
|
|
5677
|
-
"(mouseleave)": "hide()",
|
|
5678
|
-
"(focusin)": "show()",
|
|
5679
|
-
"(focusout)": "hide()",
|
|
5680
|
-
"(keydown.escape)": "hide()",
|
|
5681
|
-
"(click)": "hide()"
|
|
5682
|
-
}
|
|
5683
|
-
}]
|
|
5684
|
-
}],
|
|
5685
|
-
ctorParameters: () => [],
|
|
5686
|
-
propDecorators: {
|
|
5687
|
-
uiTooltip: [{
|
|
5688
|
-
type: i0.Input,
|
|
5689
|
-
args: [{
|
|
5690
|
-
isSignal: true,
|
|
5691
|
-
alias: "uiTooltip",
|
|
5692
|
-
required: false
|
|
5693
|
-
}]
|
|
5694
|
-
}],
|
|
5695
|
-
tooltipPosition: [{
|
|
5696
|
-
type: i0.Input,
|
|
5697
|
-
args: [{
|
|
5698
|
-
isSignal: true,
|
|
5699
|
-
alias: "tooltipPosition",
|
|
5700
|
-
required: false
|
|
5701
|
-
}]
|
|
5702
|
-
}]
|
|
5703
|
-
}
|
|
5704
|
-
});
|
|
5705
6247
|
var StarComponent = class StarComponent {
|
|
5706
6248
|
constructor() {
|
|
5707
6249
|
this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
|
|
5708
6250
|
this.size = input(16, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
6251
|
+
this.filled = input(true, ...ngDevMode ? [{ debugName: "filled" }] : /* istanbul ignore next */ []);
|
|
6252
|
+
this.interactive = input(false, ...ngDevMode ? [{ debugName: "interactive" }] : /* istanbul ignore next */ []);
|
|
6253
|
+
this.starClick = output();
|
|
5709
6254
|
this.hasTooltip = computed(() => !!this.tooltip(), ...ngDevMode ? [{ debugName: "hasTooltip" }] : /* istanbul ignore next */ []);
|
|
5710
6255
|
}
|
|
5711
6256
|
static {
|
|
@@ -5720,7 +6265,7 @@ var StarComponent = class StarComponent {
|
|
|
5720
6265
|
}
|
|
5721
6266
|
static {
|
|
5722
6267
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5723
|
-
minVersion: "17.
|
|
6268
|
+
minVersion: "17.0.0",
|
|
5724
6269
|
version: "22.2.2",
|
|
5725
6270
|
type: StarComponent,
|
|
5726
6271
|
isStandalone: true,
|
|
@@ -5739,28 +6284,62 @@ var StarComponent = class StarComponent {
|
|
|
5739
6284
|
isSignal: true,
|
|
5740
6285
|
isRequired: false,
|
|
5741
6286
|
transformFunction: null
|
|
6287
|
+
},
|
|
6288
|
+
filled: {
|
|
6289
|
+
classPropertyName: "filled",
|
|
6290
|
+
publicName: "filled",
|
|
6291
|
+
isSignal: true,
|
|
6292
|
+
isRequired: false,
|
|
6293
|
+
transformFunction: null
|
|
6294
|
+
},
|
|
6295
|
+
interactive: {
|
|
6296
|
+
classPropertyName: "interactive",
|
|
6297
|
+
publicName: "interactive",
|
|
6298
|
+
isSignal: true,
|
|
6299
|
+
isRequired: false,
|
|
6300
|
+
transformFunction: null
|
|
5742
6301
|
}
|
|
5743
6302
|
},
|
|
6303
|
+
outputs: { starClick: "starClick" },
|
|
5744
6304
|
ngImport: i0,
|
|
5745
6305
|
template: `
|
|
5746
|
-
|
|
5747
|
-
[uiTooltip]="tooltip()"
|
|
5748
|
-
|
|
5749
|
-
|
|
5750
|
-
|
|
5751
|
-
|
|
6306
|
+
@if (interactive()) {
|
|
6307
|
+
<button type="button" class="star star-btn" [class.star-off]="!filled()" [uiTooltip]="tooltip()"
|
|
6308
|
+
[attr.aria-label]="tooltip() || null" (click)="starClick.emit($event)">
|
|
6309
|
+
<ng-container *ngTemplateOutlet="shape" />
|
|
6310
|
+
</button>
|
|
6311
|
+
} @else {
|
|
6312
|
+
<span class="star" [class.star-off]="!filled()"
|
|
6313
|
+
[uiTooltip]="tooltip()"
|
|
6314
|
+
[attr.role]="hasTooltip() ? 'img' : null"
|
|
6315
|
+
[attr.aria-label]="hasTooltip() ? tooltip() : null"
|
|
6316
|
+
[attr.aria-hidden]="hasTooltip() ? null : 'true'"
|
|
6317
|
+
[attr.tabindex]="hasTooltip() ? 0 : null">
|
|
6318
|
+
<ng-container *ngTemplateOutlet="shape" />
|
|
6319
|
+
</span>
|
|
6320
|
+
}
|
|
6321
|
+
<ng-template #shape>
|
|
5752
6322
|
<svg [attr.width]="size()" [attr.height]="size()" viewBox="0 0 20 20" aria-hidden="true" focusable="false">
|
|
5753
6323
|
<path class="star-shape" d="M10 1.5l2.6 5.3 5.9.9-4.25 4.15 1 5.85L10 14.9l-5.25 2.8 1-5.85L1.5 7.7l5.9-.9L10 1.5z" />
|
|
5754
6324
|
</svg>
|
|
5755
|
-
</
|
|
6325
|
+
</ng-template>
|
|
5756
6326
|
`,
|
|
5757
6327
|
isInline: true,
|
|
5758
|
-
styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.star{display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.star:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.star-shape{fill:#f5b301;stroke:#d99a00;stroke-width:.75;stroke-linejoin:round}\n"],
|
|
6328
|
+
styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.star{display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.star-btn{border:0;background:none;padding:0;margin:0;cursor:pointer;font:inherit}.star-off .star-shape{fill:none;stroke:#94a3b8;stroke-width:1.25}.star-btn.star-off:hover .star-shape{stroke:#64748b}.star:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.star-shape{fill:#f5b301;stroke:#d99a00;stroke-width:.75;stroke-linejoin:round}\n"],
|
|
5759
6329
|
dependencies: [{
|
|
5760
6330
|
kind: "directive",
|
|
5761
6331
|
type: TooltipDirective,
|
|
5762
6332
|
selector: "[uiTooltip]",
|
|
5763
6333
|
inputs: ["uiTooltip", "tooltipPosition"]
|
|
6334
|
+
}, {
|
|
6335
|
+
kind: "directive",
|
|
6336
|
+
type: NgTemplateOutlet,
|
|
6337
|
+
selector: "[ngTemplateOutlet]",
|
|
6338
|
+
inputs: [
|
|
6339
|
+
"ngTemplateOutletContext",
|
|
6340
|
+
"ngTemplateOutlet",
|
|
6341
|
+
"ngTemplateOutletInjector"
|
|
6342
|
+
]
|
|
5764
6343
|
}],
|
|
5765
6344
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
5766
6345
|
});
|
|
@@ -5777,20 +6356,30 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5777
6356
|
selector: "ui-star",
|
|
5778
6357
|
standalone: true,
|
|
5779
6358
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5780
|
-
imports: [TooltipDirective],
|
|
6359
|
+
imports: [TooltipDirective, NgTemplateOutlet],
|
|
5781
6360
|
template: `
|
|
5782
|
-
|
|
5783
|
-
[uiTooltip]="tooltip()"
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
6361
|
+
@if (interactive()) {
|
|
6362
|
+
<button type="button" class="star star-btn" [class.star-off]="!filled()" [uiTooltip]="tooltip()"
|
|
6363
|
+
[attr.aria-label]="tooltip() || null" (click)="starClick.emit($event)">
|
|
6364
|
+
<ng-container *ngTemplateOutlet="shape" />
|
|
6365
|
+
</button>
|
|
6366
|
+
} @else {
|
|
6367
|
+
<span class="star" [class.star-off]="!filled()"
|
|
6368
|
+
[uiTooltip]="tooltip()"
|
|
6369
|
+
[attr.role]="hasTooltip() ? 'img' : null"
|
|
6370
|
+
[attr.aria-label]="hasTooltip() ? tooltip() : null"
|
|
6371
|
+
[attr.aria-hidden]="hasTooltip() ? null : 'true'"
|
|
6372
|
+
[attr.tabindex]="hasTooltip() ? 0 : null">
|
|
6373
|
+
<ng-container *ngTemplateOutlet="shape" />
|
|
6374
|
+
</span>
|
|
6375
|
+
}
|
|
6376
|
+
<ng-template #shape>
|
|
5788
6377
|
<svg [attr.width]="size()" [attr.height]="size()" viewBox="0 0 20 20" aria-hidden="true" focusable="false">
|
|
5789
6378
|
<path class="star-shape" d="M10 1.5l2.6 5.3 5.9.9-4.25 4.15 1 5.85L10 14.9l-5.25 2.8 1-5.85L1.5 7.7l5.9-.9L10 1.5z" />
|
|
5790
6379
|
</svg>
|
|
5791
|
-
</
|
|
6380
|
+
</ng-template>
|
|
5792
6381
|
`,
|
|
5793
|
-
styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.star{display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.star:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.star-shape{fill:#f5b301;stroke:#d99a00;stroke-width:.75;stroke-linejoin:round}\n"]
|
|
6382
|
+
styles: [":host{display:inline-flex;vertical-align:middle;line-height:1}.star{display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.star-btn{border:0;background:none;padding:0;margin:0;cursor:pointer;font:inherit}.star-off .star-shape{fill:none;stroke:#94a3b8;stroke-width:1.25}.star-btn.star-off:hover .star-shape{stroke:#64748b}.star:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.star-shape{fill:#f5b301;stroke:#d99a00;stroke-width:.75;stroke-linejoin:round}\n"]
|
|
5794
6383
|
}]
|
|
5795
6384
|
}],
|
|
5796
6385
|
propDecorators: {
|
|
@@ -5809,6 +6398,26 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5809
6398
|
alias: "size",
|
|
5810
6399
|
required: false
|
|
5811
6400
|
}]
|
|
6401
|
+
}],
|
|
6402
|
+
filled: [{
|
|
6403
|
+
type: i0.Input,
|
|
6404
|
+
args: [{
|
|
6405
|
+
isSignal: true,
|
|
6406
|
+
alias: "filled",
|
|
6407
|
+
required: false
|
|
6408
|
+
}]
|
|
6409
|
+
}],
|
|
6410
|
+
interactive: [{
|
|
6411
|
+
type: i0.Input,
|
|
6412
|
+
args: [{
|
|
6413
|
+
isSignal: true,
|
|
6414
|
+
alias: "interactive",
|
|
6415
|
+
required: false
|
|
6416
|
+
}]
|
|
6417
|
+
}],
|
|
6418
|
+
starClick: [{
|
|
6419
|
+
type: i0.Output,
|
|
6420
|
+
args: ["starClick"]
|
|
5812
6421
|
}]
|
|
5813
6422
|
}
|
|
5814
6423
|
});
|
|
@@ -8631,6 +9240,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8631
9240
|
}]
|
|
8632
9241
|
}
|
|
8633
9242
|
});
|
|
9243
|
+
let reorderHelpSeq = 0;
|
|
8634
9244
|
function formatPhone$1(raw) {
|
|
8635
9245
|
if (!raw) return "—";
|
|
8636
9246
|
const digits = raw.replace(/\D/g, "");
|
|
@@ -8676,6 +9286,96 @@ var DataTableComponent = class DataTableComponent {
|
|
|
8676
9286
|
const listeners = this.rowClick.listeners;
|
|
8677
9287
|
return listeners === void 0 ? true : (listeners?.length ?? 0) > 0;
|
|
8678
9288
|
}
|
|
9289
|
+
reorderLabel(item) {
|
|
9290
|
+
const name = this.rowAccessibleName(item);
|
|
9291
|
+
return name ? `Reorder ${name}` : "Reorder row";
|
|
9292
|
+
}
|
|
9293
|
+
onGripDragStart(e, index) {
|
|
9294
|
+
if (!this._reorderActive()) {
|
|
9295
|
+
e.preventDefault();
|
|
9296
|
+
return;
|
|
9297
|
+
}
|
|
9298
|
+
this._dragFrom.set(index);
|
|
9299
|
+
this._dragKey = this.trackItem(this._items()[index], index);
|
|
9300
|
+
if (e.dataTransfer) {
|
|
9301
|
+
e.dataTransfer.effectAllowed = "move";
|
|
9302
|
+
e.dataTransfer.setData("text/plain", String(index));
|
|
9303
|
+
const row = e.target.closest("tr, .dt-card");
|
|
9304
|
+
if (row) e.dataTransfer.setDragImage(row, 16, 16);
|
|
9305
|
+
}
|
|
9306
|
+
}
|
|
9307
|
+
onGripDragEnd() {
|
|
9308
|
+
this._dragFrom.set(null);
|
|
9309
|
+
this._dragOver.set(null);
|
|
9310
|
+
this._dragKey = null;
|
|
9311
|
+
}
|
|
9312
|
+
onRowDragOver(e, index) {
|
|
9313
|
+
if (this._dragFrom() === null) return;
|
|
9314
|
+
e.preventDefault();
|
|
9315
|
+
if (e.dataTransfer) e.dataTransfer.dropEffect = "move";
|
|
9316
|
+
this._dragOver.set(index);
|
|
9317
|
+
}
|
|
9318
|
+
onRowDrop(e, index) {
|
|
9319
|
+
const dragged = this._dragFrom();
|
|
9320
|
+
if (dragged === null) return;
|
|
9321
|
+
e.preventDefault();
|
|
9322
|
+
const key = this._dragKey;
|
|
9323
|
+
const from = key === null ? dragged : this._items().findIndex((item, i) => this.trackItem(item, i) === key);
|
|
9324
|
+
this.onGripDragEnd();
|
|
9325
|
+
if (from >= 0) this.moveRow(from, index);
|
|
9326
|
+
}
|
|
9327
|
+
onGripKeydown(e, index) {
|
|
9328
|
+
if (!this._reorderActive()) return;
|
|
9329
|
+
const last = this._items().length - 1;
|
|
9330
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
9331
|
+
e.preventDefault();
|
|
9332
|
+
e.stopPropagation();
|
|
9333
|
+
const name = this.rowAccessibleName(this._items()[index]) || "Row";
|
|
9334
|
+
this._reorderAnnouncement.set("");
|
|
9335
|
+
afterNextRender(() => this._reorderAnnouncement.set(`${name} is at position ${index + 1} of ${last + 1}. Use the up and down arrow keys to move it, Home for the top, End for the bottom.`), { injector: this._injector });
|
|
9336
|
+
return;
|
|
9337
|
+
}
|
|
9338
|
+
const target = e.key === "ArrowUp" ? index - 1 : e.key === "ArrowDown" ? index + 1 : e.key === "Home" ? 0 : e.key === "End" ? last : null;
|
|
9339
|
+
if (target === null) return;
|
|
9340
|
+
e.preventDefault();
|
|
9341
|
+
e.stopPropagation();
|
|
9342
|
+
if (this.moveRow(index, target)) {
|
|
9343
|
+
const key = String(this._items()[Math.max(0, Math.min(last, target))]["id"] ?? target);
|
|
9344
|
+
afterNextRender(() => {
|
|
9345
|
+
this._host.nativeElement.querySelector(`[data-row-key="${CSS.escape(key)}"] .dt-grip`)?.focus();
|
|
9346
|
+
}, { injector: this._injector });
|
|
9347
|
+
}
|
|
9348
|
+
}
|
|
9349
|
+
moveByButton(index, direction) {
|
|
9350
|
+
const key = String(this.trackItem(this._items()[index], index));
|
|
9351
|
+
if (!this.moveRow(index, index + direction)) return;
|
|
9352
|
+
afterNextRender(() => {
|
|
9353
|
+
const row = this._host.nativeElement.querySelector(`[data-row-key="${CSS.escape(key)}"]`);
|
|
9354
|
+
const suffix = direction === -1 ? " up" : " down";
|
|
9355
|
+
(row?.querySelector(`button[aria-label$="${suffix}"]:not(:disabled)`) ?? row?.querySelector(".dt-row-move button:not(:disabled), .dt-card-move button:not(:disabled)"))?.focus();
|
|
9356
|
+
}, { injector: this._injector });
|
|
9357
|
+
}
|
|
9358
|
+
moveRow(from, to) {
|
|
9359
|
+
const items = this._items();
|
|
9360
|
+
if (!this._reorderActive() || !Number.isInteger(from) || from < 0 || from >= items.length) return false;
|
|
9361
|
+
const target = Math.max(0, Math.min(items.length - 1, to));
|
|
9362
|
+
if (target === from) return false;
|
|
9363
|
+
const next = [...items];
|
|
9364
|
+
const [moved] = next.splice(from, 1);
|
|
9365
|
+
next.splice(target, 0, moved);
|
|
9366
|
+
this._items.set(next);
|
|
9367
|
+
const name = this.rowAccessibleName(moved) || "Row";
|
|
9368
|
+
this._reorderAnnouncement.set("");
|
|
9369
|
+
afterNextRender(() => this._reorderAnnouncement.set(`${name} moved to position ${target + 1} of ${next.length}`), { injector: this._injector });
|
|
9370
|
+
this.rowReorder.emit({
|
|
9371
|
+
item: moved,
|
|
9372
|
+
from,
|
|
9373
|
+
to: target,
|
|
9374
|
+
items: next,
|
|
9375
|
+
offset: (this._page() - 1) * this.pageSize()
|
|
9376
|
+
});
|
|
9377
|
+
return true;
|
|
9378
|
+
}
|
|
8679
9379
|
_bulkOptionsFor(def) {
|
|
8680
9380
|
const opts = this._getOptionsForField(def.field);
|
|
8681
9381
|
return def.exclude?.length ? opts.filter((o) => !this._isBulkExcluded(def, o.value)) : opts;
|
|
@@ -9036,6 +9736,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
9036
9736
|
this.tabChange = output();
|
|
9037
9737
|
this.bulkAction = output();
|
|
9038
9738
|
this.rowDeleted = output();
|
|
9739
|
+
this.reorderable = input(false, ...ngDevMode ? [{ debugName: "reorderable" }] : /* istanbul ignore next */ []);
|
|
9740
|
+
this.rowReorder = output();
|
|
9039
9741
|
this.config = inject(FORGEROUTE_CONFIG);
|
|
9040
9742
|
this.http = inject(HttpClient);
|
|
9041
9743
|
this.destroyRef = inject(DestroyRef);
|
|
@@ -9132,6 +9834,15 @@ var DataTableComponent = class DataTableComponent {
|
|
|
9132
9834
|
this._emptyUnfiltered = computed(() => this._hasLoaded() && !this._loading() && !this._error() && this._items().length === 0 && !this._hasActiveFilters(), ...ngDevMode ? [{ debugName: "_emptyUnfiltered" }] : /* istanbul ignore next */ []);
|
|
9133
9835
|
this._toolbarButtons = computed(() => this._emptyUnfiltered() ? this._effectiveButtons().filter((b) => b.variant === "primary" || b.keepWhenEmpty) : this._effectiveButtons(), ...ngDevMode ? [{ debugName: "_toolbarButtons" }] : /* istanbul ignore next */ []);
|
|
9134
9836
|
this._keepMoreActions = computed(() => this._emptyUnfiltered() && this._toolbarButtons().some((b) => !b.variant && !b.hidden), ...ngDevMode ? [{ debugName: "_keepMoreActions" }] : /* istanbul ignore next */ []);
|
|
9837
|
+
this._reorderOn = computed(() => this.reorderable() && this._canEdit(), ...ngDevMode ? [{ debugName: "_reorderOn" }] : /* istanbul ignore next */ []);
|
|
9838
|
+
this._reorderActive = computed(() => this._reorderOn() && !this._loading() && !this._error() && !this._sortField() && !this._hasActiveFilters() && this._items().length > 1, ...ngDevMode ? [{ debugName: "_reorderActive" }] : /* istanbul ignore next */ []);
|
|
9839
|
+
this._reorderHint = computed(() => this._items().length < 2 ? "There is nothing to reorder" : "Clear the sort, search and filters to change the order", ...ngDevMode ? [{ debugName: "_reorderHint" }] : /* istanbul ignore next */ []);
|
|
9840
|
+
this._reorderHelpId = `dt-reorder-help-${++reorderHelpSeq}`;
|
|
9841
|
+
this._dragFrom = signal(null, ...ngDevMode ? [{ debugName: "_dragFrom" }] : /* istanbul ignore next */ []);
|
|
9842
|
+
this._dragKey = null;
|
|
9843
|
+
this._dragOver = signal(null, ...ngDevMode ? [{ debugName: "_dragOver" }] : /* istanbul ignore next */ []);
|
|
9844
|
+
this._reorderAnnouncement = signal("", ...ngDevMode ? [{ debugName: "_reorderAnnouncement" }] : /* istanbul ignore next */ []);
|
|
9845
|
+
this._host = inject(ElementRef);
|
|
9135
9846
|
this._hasActiveFilters = computed(() => {
|
|
9136
9847
|
const cf = this._colFilterValues();
|
|
9137
9848
|
return !!this._search() || !!this._activeTab() || Object.values(cf).some((v) => v.length > 0);
|
|
@@ -10052,6 +10763,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10052
10763
|
isSignal: true,
|
|
10053
10764
|
isRequired: false,
|
|
10054
10765
|
transformFunction: null
|
|
10766
|
+
},
|
|
10767
|
+
reorderable: {
|
|
10768
|
+
classPropertyName: "reorderable",
|
|
10769
|
+
publicName: "reorderable",
|
|
10770
|
+
isSignal: true,
|
|
10771
|
+
isRequired: false,
|
|
10772
|
+
transformFunction: null
|
|
10055
10773
|
}
|
|
10056
10774
|
},
|
|
10057
10775
|
outputs: {
|
|
@@ -10066,7 +10784,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10066
10784
|
selectionChange: "selectionChange",
|
|
10067
10785
|
tabChange: "tabChange",
|
|
10068
10786
|
bulkAction: "bulkAction",
|
|
10069
|
-
rowDeleted: "rowDeleted"
|
|
10787
|
+
rowDeleted: "rowDeleted",
|
|
10788
|
+
rowReorder: "rowReorder"
|
|
10070
10789
|
},
|
|
10071
10790
|
providers: [DatePipe, {
|
|
10072
10791
|
provide: DROPDOWN_GROUP,
|
|
@@ -10221,6 +10940,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10221
10940
|
<table [attr.aria-label]="tableLabel()" [attr.aria-busy]="_loading()">
|
|
10222
10941
|
<thead>
|
|
10223
10942
|
<tr>
|
|
10943
|
+
@if (_reorderOn()) {
|
|
10944
|
+
<th class="dt-th-grip" scope="col"><span class="dt-sr-only">Reorder</span></th>
|
|
10945
|
+
}
|
|
10224
10946
|
@if (_isSelectable()) {
|
|
10225
10947
|
<th class="dt-th-cb" scope="col">
|
|
10226
10948
|
<ui-checkbox
|
|
@@ -10275,6 +10997,9 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10275
10997
|
@if (_loading()) {
|
|
10276
10998
|
@for (_ of skeletonRows(); track $index) {
|
|
10277
10999
|
<tr class="dt-sk-reload-row">
|
|
11000
|
+
@if (_reorderOn()) {
|
|
11001
|
+
<td class="dt-td-grip"></td>
|
|
11002
|
+
}
|
|
10278
11003
|
@if (_isSelectable()) {
|
|
10279
11004
|
<td class="dt-td-cb"></td>
|
|
10280
11005
|
}
|
|
@@ -10288,7 +11013,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10288
11013
|
<!-- Error -->
|
|
10289
11014
|
@else if (_error()) {
|
|
10290
11015
|
<tr>
|
|
10291
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
11016
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
10292
11017
|
<ui-error-state [message]="_error()!" [retryLabel]="_retryLabel()" (retry)="load()" />
|
|
10293
11018
|
</td>
|
|
10294
11019
|
</tr>
|
|
@@ -10297,7 +11022,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10297
11022
|
<!-- Empty (no filters active) -->
|
|
10298
11023
|
@else if (_items().length === 0 && !_hasActiveFilters()) {
|
|
10299
11024
|
<tr>
|
|
10300
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
11025
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
10301
11026
|
<ui-empty-state iconType="table" [message]="emptyMessage()" />
|
|
10302
11027
|
</td>
|
|
10303
11028
|
</tr>
|
|
@@ -10306,7 +11031,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10306
11031
|
<!-- No match -->
|
|
10307
11032
|
@else if (_items().length === 0 && _hasActiveFilters()) {
|
|
10308
11033
|
<tr>
|
|
10309
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
11034
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
10310
11035
|
<ui-empty-state iconType="search" message="No results match your search or filters.">
|
|
10311
11036
|
<ui-button variant="secondary" size="sm" (click)="clearFilters()">Clear filters</ui-button>
|
|
10312
11037
|
</ui-empty-state>
|
|
@@ -10322,10 +11047,44 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10322
11047
|
[style.--i]="$index < 8 ? $index : 8"
|
|
10323
11048
|
[class.dt-row-clickable]="isRowClickable(item)"
|
|
10324
11049
|
[class.dt-row-selected]="_isSelectable() && _selectedIds().has(item['id'])"
|
|
11050
|
+
[class.dt-row-dragging]="_dragFrom() === $index"
|
|
11051
|
+
[class.dt-row-over-before]="_reorderOn() && _dragFrom() !== null && _dragOver() === $index && _dragFrom()! > $index"
|
|
11052
|
+
[class.dt-row-over-after]="_reorderOn() && _dragFrom() !== null && _dragOver() === $index && _dragFrom()! < $index"
|
|
11053
|
+
[attr.data-row-key]="_reorderOn() ? trackItem(item, $index) : null"
|
|
10325
11054
|
[attr.tabindex]="isRowClickable(item) ? 0 : null"
|
|
10326
11055
|
[attr.aria-label]="rowLabel(item)"
|
|
10327
11056
|
(keydown)="onRowKeydown($event, item)"
|
|
11057
|
+
(dragover)="onRowDragOver($event, $index)"
|
|
11058
|
+
(drop)="onRowDrop($event, $index)"
|
|
10328
11059
|
(click)="onRowClick(item)">
|
|
11060
|
+
@if (_reorderOn()) {
|
|
11061
|
+
<td class="dt-td-grip" (click)="$event.stopPropagation()">
|
|
11062
|
+
<span class="dt-grip" role="button" [attr.tabindex]="_reorderActive() ? 0 : null"
|
|
11063
|
+
[attr.draggable]="_reorderActive() ? 'true' : null"
|
|
11064
|
+
[attr.aria-label]="reorderLabel(item)"
|
|
11065
|
+
[attr.aria-disabled]="_reorderActive() ? null : 'true'"
|
|
11066
|
+
[attr.aria-roledescription]="'drag handle'"
|
|
11067
|
+
[attr.aria-describedby]="_reorderHelpId"
|
|
11068
|
+
[attr.title]="_reorderActive() ? 'Drag to reorder, or use the up and down arrow keys' : _reorderHint()"
|
|
11069
|
+
[class.dt-grip-off]="!_reorderActive()"
|
|
11070
|
+
(dragstart)="onGripDragStart($event, $index)"
|
|
11071
|
+
(dragend)="onGripDragEnd()"
|
|
11072
|
+
(keydown)="onGripKeydown($event, $index)">
|
|
11073
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><circle cx="9" cy="6" r="1.6"/><circle cx="15" cy="6" r="1.6"/><circle cx="9" cy="12" r="1.6"/><circle cx="15" cy="12" r="1.6"/><circle cx="9" cy="18" r="1.6"/><circle cx="15" cy="18" r="1.6"/></svg>
|
|
11074
|
+
</span>
|
|
11075
|
+
<!-- Touch screens (coarse primary pointer, e.g. a tablet) cannot rely on native drag: they get Move up / Move down instead of the grip. -->
|
|
11076
|
+
<span class="dt-row-move">
|
|
11077
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' up'"
|
|
11078
|
+
[disabled]="!_reorderActive() || $first" (click)="moveByButton($index, -1)">
|
|
11079
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 15l6-6 6 6"/></svg>
|
|
11080
|
+
</ui-button>
|
|
11081
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' down'"
|
|
11082
|
+
[disabled]="!_reorderActive() || $last" (click)="moveByButton($index, 1)">
|
|
11083
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
11084
|
+
</ui-button>
|
|
11085
|
+
</span>
|
|
11086
|
+
</td>
|
|
11087
|
+
}
|
|
10329
11088
|
@if (_isSelectable()) {
|
|
10330
11089
|
<td class="dt-td-cb" (click)="$event.stopPropagation()">
|
|
10331
11090
|
<ui-checkbox
|
|
@@ -10531,6 +11290,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10531
11290
|
@for (item of _items(); track trackItem(item, $index)) {
|
|
10532
11291
|
<div
|
|
10533
11292
|
class="dt-card alive-row"
|
|
11293
|
+
[attr.data-row-key]="_reorderOn() ? trackItem(item, $index) : null"
|
|
10534
11294
|
[style.--i]="$index < 8 ? $index : 8"
|
|
10535
11295
|
role="listitem"
|
|
10536
11296
|
[class.dt-card-clickable]="isRowClickable(item)"
|
|
@@ -10576,6 +11336,18 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10576
11336
|
</span>
|
|
10577
11337
|
}
|
|
10578
11338
|
}
|
|
11339
|
+
@if (_reorderOn()) {
|
|
11340
|
+
<span class="dt-card-move" (click)="$event.stopPropagation()">
|
|
11341
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' up'"
|
|
11342
|
+
[disabled]="!_reorderActive() || $first" (click)="moveByButton($index, -1)">
|
|
11343
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 15l6-6 6 6"/></svg>
|
|
11344
|
+
</ui-button>
|
|
11345
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' down'"
|
|
11346
|
+
[disabled]="!_reorderActive() || $last" (click)="moveByButton($index, 1)">
|
|
11347
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
11348
|
+
</ui-button>
|
|
11349
|
+
</span>
|
|
11350
|
+
}
|
|
10579
11351
|
@if (_cardCols().actionsCol; as ac) {
|
|
10580
11352
|
@let cardActions = _rowActions(ac, item);
|
|
10581
11353
|
@if (cardActions.length) {
|
|
@@ -10639,6 +11411,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10639
11411
|
</div>
|
|
10640
11412
|
}
|
|
10641
11413
|
|
|
11414
|
+
@if (_reorderOn()) {
|
|
11415
|
+
<span class="dt-sr-only" [id]="_reorderHelpId">{{ _reorderActive()
|
|
11416
|
+
? 'Drag to reorder with a mouse, or use the up and down arrow keys; Home moves to the top and End to the bottom.'
|
|
11417
|
+
: _reorderHint() }}</span>
|
|
11418
|
+
<span class="dt-sr-only" role="status" aria-live="polite" aria-atomic="true">{{ _reorderAnnouncement() }}</span>
|
|
11419
|
+
}
|
|
11420
|
+
|
|
10642
11421
|
<!-- ── PAGINATION ─────────────────────────────────────────── -->
|
|
10643
11422
|
@if (_total() > pageSize()) {
|
|
10644
11423
|
<ui-pagination
|
|
@@ -10697,7 +11476,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10697
11476
|
</div>
|
|
10698
11477
|
`,
|
|
10699
11478
|
isInline: true,
|
|
10700
|
-
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-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"],
|
|
11479
|
+
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"],
|
|
10701
11480
|
dependencies: [
|
|
10702
11481
|
{
|
|
10703
11482
|
kind: "directive",
|
|
@@ -10840,7 +11619,13 @@ var DataTableComponent = class DataTableComponent {
|
|
|
10840
11619
|
kind: "component",
|
|
10841
11620
|
type: StarComponent,
|
|
10842
11621
|
selector: "ui-star",
|
|
10843
|
-
inputs: [
|
|
11622
|
+
inputs: [
|
|
11623
|
+
"tooltip",
|
|
11624
|
+
"size",
|
|
11625
|
+
"filled",
|
|
11626
|
+
"interactive"
|
|
11627
|
+
],
|
|
11628
|
+
outputs: ["starClick"]
|
|
10844
11629
|
},
|
|
10845
11630
|
{
|
|
10846
11631
|
kind: "component",
|
|
@@ -11208,6 +11993,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11208
11993
|
<table [attr.aria-label]="tableLabel()" [attr.aria-busy]="_loading()">
|
|
11209
11994
|
<thead>
|
|
11210
11995
|
<tr>
|
|
11996
|
+
@if (_reorderOn()) {
|
|
11997
|
+
<th class="dt-th-grip" scope="col"><span class="dt-sr-only">Reorder</span></th>
|
|
11998
|
+
}
|
|
11211
11999
|
@if (_isSelectable()) {
|
|
11212
12000
|
<th class="dt-th-cb" scope="col">
|
|
11213
12001
|
<ui-checkbox
|
|
@@ -11262,6 +12050,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11262
12050
|
@if (_loading()) {
|
|
11263
12051
|
@for (_ of skeletonRows(); track $index) {
|
|
11264
12052
|
<tr class="dt-sk-reload-row">
|
|
12053
|
+
@if (_reorderOn()) {
|
|
12054
|
+
<td class="dt-td-grip"></td>
|
|
12055
|
+
}
|
|
11265
12056
|
@if (_isSelectable()) {
|
|
11266
12057
|
<td class="dt-td-cb"></td>
|
|
11267
12058
|
}
|
|
@@ -11275,7 +12066,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11275
12066
|
<!-- Error -->
|
|
11276
12067
|
@else if (_error()) {
|
|
11277
12068
|
<tr>
|
|
11278
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
12069
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
11279
12070
|
<ui-error-state [message]="_error()!" [retryLabel]="_retryLabel()" (retry)="load()" />
|
|
11280
12071
|
</td>
|
|
11281
12072
|
</tr>
|
|
@@ -11284,7 +12075,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11284
12075
|
<!-- Empty (no filters active) -->
|
|
11285
12076
|
@else if (_items().length === 0 && !_hasActiveFilters()) {
|
|
11286
12077
|
<tr>
|
|
11287
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
12078
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
11288
12079
|
<ui-empty-state iconType="table" [message]="emptyMessage()" />
|
|
11289
12080
|
</td>
|
|
11290
12081
|
</tr>
|
|
@@ -11293,7 +12084,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11293
12084
|
<!-- No match -->
|
|
11294
12085
|
@else if (_items().length === 0 && _hasActiveFilters()) {
|
|
11295
12086
|
<tr>
|
|
11296
|
-
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0)" class="dt-state-cell">
|
|
12087
|
+
<td [attr.colspan]="visibleCols().length + (_isSelectable() ? 1 : 0) + (_reorderOn() ? 1 : 0)" class="dt-state-cell">
|
|
11297
12088
|
<ui-empty-state iconType="search" message="No results match your search or filters.">
|
|
11298
12089
|
<ui-button variant="secondary" size="sm" (click)="clearFilters()">Clear filters</ui-button>
|
|
11299
12090
|
</ui-empty-state>
|
|
@@ -11309,10 +12100,44 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11309
12100
|
[style.--i]="$index < 8 ? $index : 8"
|
|
11310
12101
|
[class.dt-row-clickable]="isRowClickable(item)"
|
|
11311
12102
|
[class.dt-row-selected]="_isSelectable() && _selectedIds().has(item['id'])"
|
|
12103
|
+
[class.dt-row-dragging]="_dragFrom() === $index"
|
|
12104
|
+
[class.dt-row-over-before]="_reorderOn() && _dragFrom() !== null && _dragOver() === $index && _dragFrom()! > $index"
|
|
12105
|
+
[class.dt-row-over-after]="_reorderOn() && _dragFrom() !== null && _dragOver() === $index && _dragFrom()! < $index"
|
|
12106
|
+
[attr.data-row-key]="_reorderOn() ? trackItem(item, $index) : null"
|
|
11312
12107
|
[attr.tabindex]="isRowClickable(item) ? 0 : null"
|
|
11313
12108
|
[attr.aria-label]="rowLabel(item)"
|
|
11314
12109
|
(keydown)="onRowKeydown($event, item)"
|
|
12110
|
+
(dragover)="onRowDragOver($event, $index)"
|
|
12111
|
+
(drop)="onRowDrop($event, $index)"
|
|
11315
12112
|
(click)="onRowClick(item)">
|
|
12113
|
+
@if (_reorderOn()) {
|
|
12114
|
+
<td class="dt-td-grip" (click)="$event.stopPropagation()">
|
|
12115
|
+
<span class="dt-grip" role="button" [attr.tabindex]="_reorderActive() ? 0 : null"
|
|
12116
|
+
[attr.draggable]="_reorderActive() ? 'true' : null"
|
|
12117
|
+
[attr.aria-label]="reorderLabel(item)"
|
|
12118
|
+
[attr.aria-disabled]="_reorderActive() ? null : 'true'"
|
|
12119
|
+
[attr.aria-roledescription]="'drag handle'"
|
|
12120
|
+
[attr.aria-describedby]="_reorderHelpId"
|
|
12121
|
+
[attr.title]="_reorderActive() ? 'Drag to reorder, or use the up and down arrow keys' : _reorderHint()"
|
|
12122
|
+
[class.dt-grip-off]="!_reorderActive()"
|
|
12123
|
+
(dragstart)="onGripDragStart($event, $index)"
|
|
12124
|
+
(dragend)="onGripDragEnd()"
|
|
12125
|
+
(keydown)="onGripKeydown($event, $index)">
|
|
12126
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><circle cx="9" cy="6" r="1.6"/><circle cx="15" cy="6" r="1.6"/><circle cx="9" cy="12" r="1.6"/><circle cx="15" cy="12" r="1.6"/><circle cx="9" cy="18" r="1.6"/><circle cx="15" cy="18" r="1.6"/></svg>
|
|
12127
|
+
</span>
|
|
12128
|
+
<!-- Touch screens (coarse primary pointer, e.g. a tablet) cannot rely on native drag: they get Move up / Move down instead of the grip. -->
|
|
12129
|
+
<span class="dt-row-move">
|
|
12130
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' up'"
|
|
12131
|
+
[disabled]="!_reorderActive() || $first" (click)="moveByButton($index, -1)">
|
|
12132
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 15l6-6 6 6"/></svg>
|
|
12133
|
+
</ui-button>
|
|
12134
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' down'"
|
|
12135
|
+
[disabled]="!_reorderActive() || $last" (click)="moveByButton($index, 1)">
|
|
12136
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
12137
|
+
</ui-button>
|
|
12138
|
+
</span>
|
|
12139
|
+
</td>
|
|
12140
|
+
}
|
|
11316
12141
|
@if (_isSelectable()) {
|
|
11317
12142
|
<td class="dt-td-cb" (click)="$event.stopPropagation()">
|
|
11318
12143
|
<ui-checkbox
|
|
@@ -11518,6 +12343,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11518
12343
|
@for (item of _items(); track trackItem(item, $index)) {
|
|
11519
12344
|
<div
|
|
11520
12345
|
class="dt-card alive-row"
|
|
12346
|
+
[attr.data-row-key]="_reorderOn() ? trackItem(item, $index) : null"
|
|
11521
12347
|
[style.--i]="$index < 8 ? $index : 8"
|
|
11522
12348
|
role="listitem"
|
|
11523
12349
|
[class.dt-card-clickable]="isRowClickable(item)"
|
|
@@ -11563,6 +12389,18 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11563
12389
|
</span>
|
|
11564
12390
|
}
|
|
11565
12391
|
}
|
|
12392
|
+
@if (_reorderOn()) {
|
|
12393
|
+
<span class="dt-card-move" (click)="$event.stopPropagation()">
|
|
12394
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' up'"
|
|
12395
|
+
[disabled]="!_reorderActive() || $first" (click)="moveByButton($index, -1)">
|
|
12396
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 15l6-6 6 6"/></svg>
|
|
12397
|
+
</ui-button>
|
|
12398
|
+
<ui-button variant="icon" size="sm" [ariaLabel]="'Move ' + (rowAccessibleName(item) || 'row') + ' down'"
|
|
12399
|
+
[disabled]="!_reorderActive() || $last" (click)="moveByButton($index, 1)">
|
|
12400
|
+
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
12401
|
+
</ui-button>
|
|
12402
|
+
</span>
|
|
12403
|
+
}
|
|
11566
12404
|
@if (_cardCols().actionsCol; as ac) {
|
|
11567
12405
|
@let cardActions = _rowActions(ac, item);
|
|
11568
12406
|
@if (cardActions.length) {
|
|
@@ -11626,6 +12464,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11626
12464
|
</div>
|
|
11627
12465
|
}
|
|
11628
12466
|
|
|
12467
|
+
@if (_reorderOn()) {
|
|
12468
|
+
<span class="dt-sr-only" [id]="_reorderHelpId">{{ _reorderActive()
|
|
12469
|
+
? 'Drag to reorder with a mouse, or use the up and down arrow keys; Home moves to the top and End to the bottom.'
|
|
12470
|
+
: _reorderHint() }}</span>
|
|
12471
|
+
<span class="dt-sr-only" role="status" aria-live="polite" aria-atomic="true">{{ _reorderAnnouncement() }}</span>
|
|
12472
|
+
}
|
|
12473
|
+
|
|
11629
12474
|
<!-- ── PAGINATION ─────────────────────────────────────────── -->
|
|
11630
12475
|
@if (_total() > pageSize()) {
|
|
11631
12476
|
<ui-pagination
|
|
@@ -11683,7 +12528,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11683
12528
|
}
|
|
11684
12529
|
</div>
|
|
11685
12530
|
`,
|
|
11686
|
-
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-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"]
|
|
12531
|
+
styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0}.dt-host{display:flex;flex-direction:column;height:100%;min-height:0}.dt-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;justify-content:space-between;position:relative;z-index:10}.dt-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}.dt-header-right{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.dt-sk-shimmer{position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-shimmer:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}@keyframes dt-shimmer{to{transform:translate(200%)}}.dt-sk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dt-sk-toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dt-sk-toolbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.dt-sk-search{display:flex;align-items:center;gap:10px;width:380px;height:36px;padding:0 12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;box-sizing:border-box}.dt-sk-search-icon{width:16px;height:16px;border-radius:50%;flex-shrink:0}.dt-sk-search-text{flex:1;height:11px;border-radius:4px}.dt-sk-tab-strip{display:flex;gap:2px;padding:3px;background:#f1f5f9;border-radius:8px}.dt-sk-tab{height:28px;width:70px;border-radius:6px}.dt-sk-icon-btn{width:32px;height:32px;border-radius:6px}.dt-skeleton{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dt-sk-header{display:flex;gap:24px;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.dt-sk-row{display:flex;gap:24px;padding:13px 16px;border-bottom:1px solid #f1f5f9}.dt-sk-row:last-child{border-bottom:none}.dt-sk-cell{flex:1;height:13px;border-radius:4px;position:relative;overflow:hidden;background:#f1f5f9}.dt-sk-cell:first-child{max-width:100px}.dt-sk-cell:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translate(-100%);animation:dt-shimmer 1.4s ease-in-out infinite}.dt-sk-head{height:10px}.dt-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #e2e8f0;border-radius:10px 10px 0 0}.dt-sk-reload-row td{padding:10px 14px;border-bottom:1px solid #f1f5f9}table{width:100%;border-collapse:collapse;font-size:.875rem}thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}thead{position:sticky;top:0;z-index:2}th{padding:10px 14px;font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-right:1px solid #e2e8f0;text-align:center;background:#f8fafc}th:last-child{border-right:none}th.dt-th-sorted{background:#f1f5f9}th.dt-th-actions{width:48px}.dt-th-inner{display:flex;align-items:center;justify-content:center;gap:4px}.dt-sort-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:inherit;font-weight:inherit;color:inherit;font-family:inherit;padding:0;text-transform:inherit;letter-spacing:inherit}.dt-sort-btn:hover{color:#1e293b}.dt-sort-btn:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:2px}@media(pointer:coarse){.dt-sort-btn{position:relative}.dt-sort-btn:after{content:\"\";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}}.dt-sort-icon{transition:transform .15s}.dt-sort-desc{transform:rotate(180deg)}.dt-sort-inactive{opacity:.4}tbody tr{border-bottom:1px solid #f1f5f9;background:#fff;transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}.dt-row-clickable{cursor:pointer}.dt-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}td{padding:10px 14px;color:#334155;vertical-align:middle;white-space:nowrap;border-right:1px solid #f1f5f9}td:last-child{border-right:none}.dt-td-actions{text-align:center;padding:6px 8px}.dt-td-width{overflow:hidden;text-overflow:ellipsis}.dt-img{display:inline-block;vertical-align:middle;object-fit:cover;border:1px solid #e2e8f0;background:#f1f5f9;flex-shrink:0}.dt-img-ph{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0;flex-shrink:0}.dt-img-ph svg{width:55%;height:55%}.dt-img-circle-md{width:40px;height:40px;border-radius:50%}.dt-img-circle-sm{width:28px;height:28px;border-radius:50%}.dt-img-rounded-md{width:48px;height:32px;border-radius:6px}.dt-img-rounded-sm{width:36px;height:24px;border-radius:5px}.dt-avatar-name{display:flex;align-items:center;gap:8px}.dt-name-text{color:#1e293b}.dt-overdue{color:#dc2626;font-weight:500}.dt-none{color:#94a3b8}.dt-link{position:relative;display:inline-block;max-width:100%;padding:1px 2px;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb;text-decoration:none;border-radius:3px;cursor:pointer}.dt-link:hover{text-decoration:underline;color:#1d4ed8}.dt-link:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px;text-decoration:underline}.dt-card-detail-value .dt-link,.dt-card-name .dt-link{white-space:normal;overflow-wrap:anywhere}.dt-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dt-tags{display:flex;align-items:center;gap:4px}.dt-tags-more{font-size:.75rem;font-weight:600;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 7px;cursor:default;-webkit-user-select:none;user-select:none;border:1px solid #e2e8f0}.dt-tags-more:focus-visible{outline:2px solid #60a5fa;outline-offset:2px;border-radius:999px}.dt-tag-tooltip{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 6px #0000000f,0 10px 24px #00000024;transform:translate(-50%) translateY(-100%);animation:dt-tip-in .12s ease;max-width:220px}@keyframes dt-tip-in{0%{opacity:0;transform:translate(-50%) translateY(calc(-100% + 4px))}to{opacity:1;transform:translate(-50%) translateY(-100%)}}.dt-cell-star{margin-right:6px}.dt-actions-cell{display:flex;align-items:center;justify-content:center}.dt-bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;align-self:flex-start;padding:10px 14px;margin-bottom:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px}.dt-bulk-count{font-size:.875rem;font-weight:600;color:#1e40af;white-space:nowrap;flex-shrink:0}.dt-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.dt-bulk-actions ui-select{max-width:180px;min-width:120px}.dt-bulk-hint{font-size:.8125rem;line-height:1.35;color:#475569}.dt-card-cb{display:flex;align-items:center;padding:0 0 6px}.dt-card-selected{background:#eff6ff!important;border-color:#bfdbfe!important}.dt-th-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-cb{width:44px;padding:0 10px!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-th-grip{width:36px;padding:0!important;border-right:1px solid #e2e8f0;background:#f8fafc}.dt-td-grip{width:36px;padding:0!important;text-align:center!important;border-right:1px solid #f1f5f9}.dt-grip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:#64748b;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.dt-grip:hover{background:#f1f5f9;color:#334155}.dt-grip:active{cursor:grabbing}.dt-grip:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}.dt-grip-off{color:#cbd5e1;cursor:not-allowed}.dt-grip-off:hover{background:none;color:#cbd5e1}.dt-row-move{display:none}@media(pointer:coarse){.dt-grip{display:none}.dt-row-move{display:inline-flex;flex-direction:column;align-items:center}.dt-th-grip,.dt-td-grip{width:56px}}.dt-row-dragging{opacity:.45}.dt-row-over-before>td{box-shadow:inset 0 2px #3b82f6}.dt-row-over-after>td{box-shadow:inset 0 -2px #3b82f6}.dt-card-move{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}@media(forced-colors:active){.dt-row-over-before>td{box-shadow:inset 0 2px 0 Highlight}.dt-row-over-after>td{box-shadow:inset 0 -2px 0 Highlight}.dt-grip:focus-visible{outline-color:Highlight}}.dt-row-selected{background:#eff6ff!important}.dt-row-selected:hover{background:#dbeafe!important}.dt-state-cell{padding:0!important;border:none!important;background:#fff!important}@media(max-width:1024px){th{padding:10px 12px}td{padding:11px 12px}.dt-sort-btn{padding:4px 0}.dt-td-actions{padding:6px}.dt-bulk-bar{align-self:stretch}}@media(max-width:820px){.dt-header-left{flex-basis:100%}.dt-header-right{flex-basis:100%;justify-content:flex-start}}@media(max-width:768px){th{padding:9px 10px;font-size:.8125rem}td{padding:10px;font-size:.8125rem}.dt-sk-search{width:100%}}@media(max-width:640px){.dt-header{flex-direction:column;align-items:stretch}.dt-header-left,.dt-header-right{width:100%}.dt-table-wrap{display:none}.dt-sk-search{width:100%}.dt-sk-toolbar{flex-direction:column;align-items:stretch;gap:8px}.dt-sk-toolbar-right{align-self:flex-end}.dt-bulk-bar{align-self:stretch;padding:10px 12px;row-gap:8px}.dt-bulk-count{flex:1}.dt-bulk-actions{width:100%}.dt-bulk-hint{flex-basis:100%}.dt-bulk-actions ui-select{max-width:100%;flex:1}}.dt-confirm-msg{margin:0;font-size:.9375rem;color:#334155;line-height:1.5;overflow-wrap:anywhere;word-break:break-word;white-space:pre-line}.dt-confirm-details{margin:10px 0 0;padding-left:20px;font-size:.875rem;color:#64748b;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}.dt-confirm-details li+li{margin-top:4px}ui-pagination{flex-shrink:0}.dt-phone-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;flex-shrink:0}.dt-phone-sort{display:flex;align-items:center;gap:8px}.dt-phone-sort-label{font-size:.8125rem;font-weight:600;color:#64748b;flex-shrink:0}.dt-phone-sort-select{flex:1;min-width:0;min-height:44px;box-sizing:border-box;padding:0 12px;font-family:inherit;font-size:1rem;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.dt-phone-filters{display:flex;flex-wrap:wrap;gap:8px}.dt-card-list{display:none;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){.dt-card-list{display:flex;padding-bottom:8px}}.dt-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;contain:layout style;padding:14px 16px;display:flex;flex-direction:column;gap:10px;transition:background .1s}.dt-card:has(.mm-dropdown){position:relative;z-index:1}.dt-card-clickable{cursor:pointer}.dt-card-clickable:active{background:#f8fafc}.dt-card-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.dt-card-header{display:flex;align-items:center;gap:10px}.dt-card-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.dt-card-name{min-width:0;font-weight:600;color:#1e293b;font-size:.9375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-card-name-plain{flex:1}.dt-card-actions{margin-left:auto;flex-shrink:0}.dt-card-badges{display:flex;flex-wrap:wrap;gap:6px}.dt-card-tags{display:flex;flex-wrap:wrap;gap:4px}.dt-card-details{display:flex;flex-direction:column;gap:5px}.dt-card-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.8125rem}.dt-card-detail-label{color:#64748b;flex-shrink:0}.dt-card-detail-value{color:#334155;font-weight:500;text-align:right;min-width:0;overflow-wrap:anywhere;word-break:break-word}.dt-card-sk{gap:12px}.dt-card-sk-header{display:flex;align-items:center;gap:10px}.dt-card-sk-badges{display:flex;gap:6px}.dt-card-sk-rows{display:flex;flex-direction:column;gap:8px}\n"]
|
|
11687
12532
|
}]
|
|
11688
12533
|
}],
|
|
11689
12534
|
ctorParameters: () => [],
|
|
@@ -11936,6 +12781,18 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11936
12781
|
type: i0.Output,
|
|
11937
12782
|
args: ["rowDeleted"]
|
|
11938
12783
|
}],
|
|
12784
|
+
reorderable: [{
|
|
12785
|
+
type: i0.Input,
|
|
12786
|
+
args: [{
|
|
12787
|
+
isSignal: true,
|
|
12788
|
+
alias: "reorderable",
|
|
12789
|
+
required: false
|
|
12790
|
+
}]
|
|
12791
|
+
}],
|
|
12792
|
+
rowReorder: [{
|
|
12793
|
+
type: i0.Output,
|
|
12794
|
+
args: ["rowReorder"]
|
|
12795
|
+
}],
|
|
11939
12796
|
_ieRef: [{
|
|
11940
12797
|
type: i0.ViewChild,
|
|
11941
12798
|
args: ["ieRef", { isSignal: true }]
|
|
@@ -15963,6 +16820,9 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
|
|
|
15963
16820
|
"ariaLabel",
|
|
15964
16821
|
"placeholder",
|
|
15965
16822
|
"prefix",
|
|
16823
|
+
"revealable",
|
|
16824
|
+
"passwordRequirements",
|
|
16825
|
+
"passwordRules",
|
|
15966
16826
|
"type",
|
|
15967
16827
|
"maxlength",
|
|
15968
16828
|
"required",
|
|
@@ -16516,7 +17376,7 @@ var PillTabsComponent = class PillTabsComponent {
|
|
|
16516
17376
|
</div>
|
|
16517
17377
|
`,
|
|
16518
17378
|
isInline: true,
|
|
16519
|
-
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"],
|
|
17379
|
+
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}.pill-tab:last-child .pill-info-tip{left:auto;right:0}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"],
|
|
16520
17380
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
16521
17381
|
});
|
|
16522
17382
|
}
|
|
@@ -16562,7 +17422,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
16562
17422
|
<span class="pill-fade pill-fade--end" [class.visible]="canScrollEnd()" aria-hidden="true" data-testid="pill-fade-end"></span>
|
|
16563
17423
|
</div>
|
|
16564
17424
|
`,
|
|
16565
|
-
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"]
|
|
17425
|
+
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}.pill-tab:last-child .pill-info-tip{left:auto;right:0}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"]
|
|
16566
17426
|
}]
|
|
16567
17427
|
}],
|
|
16568
17428
|
ctorParameters: () => [],
|
|
@@ -18103,6 +18963,9 @@ var BulkMessagePanelComponent = class BulkMessagePanelComponent {
|
|
|
18103
18963
|
"ariaLabel",
|
|
18104
18964
|
"placeholder",
|
|
18105
18965
|
"prefix",
|
|
18966
|
+
"revealable",
|
|
18967
|
+
"passwordRequirements",
|
|
18968
|
+
"passwordRules",
|
|
18106
18969
|
"type",
|
|
18107
18970
|
"maxlength",
|
|
18108
18971
|
"required",
|
|
@@ -26969,281 +27832,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
26969
27832
|
}]
|
|
26970
27833
|
}]
|
|
26971
27834
|
});
|
|
26972
|
-
const EXTRA_ICONS = {
|
|
26973
|
-
"delete": "M3 6h18 M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2 M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14 M10 11v6 M14 11v6",
|
|
26974
|
-
"add": "M12 5v14 M5 12h14",
|
|
26975
|
-
"close": "M18 6L6 18 M6 6l12 12",
|
|
26976
|
-
"check": "M20 6L9 17l-5-5",
|
|
26977
|
-
"upload": "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4 M17 8l-5-5-5 5 M12 3v12",
|
|
26978
|
-
"image": "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z M8.5 8.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z M21 15l-5-5L5 21",
|
|
26979
|
-
"chevron-up": "M18 15l-6-6-6 6",
|
|
26980
|
-
"chevron-down": "M6 9l6 6 6-6",
|
|
26981
|
-
"arrow-left": "M19 12H5 M12 19l-7-7 7-7",
|
|
26982
|
-
"bell": "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9 M13.73 21a2 2 0 0 1-3.46 0",
|
|
26983
|
-
"print": "M6 9V2h12v7 M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2 M6 14h12v8H6z",
|
|
26984
|
-
"shield": "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z",
|
|
26985
|
-
"lock": "M5 11h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2z M7 11V7a5 5 0 0 1 10 0v4",
|
|
26986
|
-
"arrow-up": "M12 19V5 M5 12l7-7 7 7",
|
|
26987
|
-
"arrow-down": "M12 5v14 M19 12l-7 7-7-7",
|
|
26988
|
-
"arrow-right": "M5 12h14 M12 5l7 7-7 7",
|
|
26989
|
-
"document": "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M16 13H8 M16 17H8 M10 9H8",
|
|
26990
|
-
"grip": "M9 5h.01 M15 5h.01 M9 12h.01 M15 12h.01 M9 19h.01 M15 19h.01",
|
|
26991
|
-
"card": "M3 4h18a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M1 10h22",
|
|
26992
|
-
"bank": "M3 21h18 M3 10h18 M5 6l7-3 7 3 M4 10v11 M20 10v11 M8 14v3 M12 14v3 M16 14v3"
|
|
26993
|
-
};
|
|
26994
|
-
function iconPath(name) {
|
|
26995
|
-
return Object.prototype.hasOwnProperty.call(EXTRA_ICONS, name) ? EXTRA_ICONS[name] : builtInActionIcon(name);
|
|
26996
|
-
}
|
|
26997
|
-
var IconComponent = class IconComponent {
|
|
26998
|
-
constructor() {
|
|
26999
|
-
this.name = input.required(...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
27000
|
-
this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
|
|
27001
|
-
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
27002
|
-
this.size = input(16, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
27003
|
-
this.variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
27004
|
-
this.disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
27005
|
-
this.loading = input(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
27006
|
-
this.interactive = input(true, ...ngDevMode ? [{ debugName: "interactive" }] : /* istanbul ignore next */ []);
|
|
27007
|
-
this.iconClick = output();
|
|
27008
|
-
this.accessibleName = computed(() => this.ariaLabel() || this.tooltip(), ...ngDevMode ? [{ debugName: "accessibleName" }] : /* istanbul ignore next */ []);
|
|
27009
|
-
this.path = computed(() => iconPath(this.name()), ...ngDevMode ? [{ debugName: "path" }] : /* istanbul ignore next */ []);
|
|
27010
|
-
}
|
|
27011
|
-
onClick(event) {
|
|
27012
|
-
event.stopPropagation();
|
|
27013
|
-
this.iconClick.emit(event);
|
|
27014
|
-
}
|
|
27015
|
-
static {
|
|
27016
|
-
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27017
|
-
minVersion: "12.0.0",
|
|
27018
|
-
version: "22.2.2",
|
|
27019
|
-
ngImport: i0,
|
|
27020
|
-
type: IconComponent,
|
|
27021
|
-
deps: [],
|
|
27022
|
-
target: i0.ɵɵFactoryTarget.Component
|
|
27023
|
-
});
|
|
27024
|
-
}
|
|
27025
|
-
static {
|
|
27026
|
-
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27027
|
-
minVersion: "17.0.0",
|
|
27028
|
-
version: "22.2.2",
|
|
27029
|
-
type: IconComponent,
|
|
27030
|
-
isStandalone: true,
|
|
27031
|
-
selector: "ui-icon",
|
|
27032
|
-
inputs: {
|
|
27033
|
-
name: {
|
|
27034
|
-
classPropertyName: "name",
|
|
27035
|
-
publicName: "name",
|
|
27036
|
-
isSignal: true,
|
|
27037
|
-
isRequired: true,
|
|
27038
|
-
transformFunction: null
|
|
27039
|
-
},
|
|
27040
|
-
tooltip: {
|
|
27041
|
-
classPropertyName: "tooltip",
|
|
27042
|
-
publicName: "tooltip",
|
|
27043
|
-
isSignal: true,
|
|
27044
|
-
isRequired: false,
|
|
27045
|
-
transformFunction: null
|
|
27046
|
-
},
|
|
27047
|
-
ariaLabel: {
|
|
27048
|
-
classPropertyName: "ariaLabel",
|
|
27049
|
-
publicName: "ariaLabel",
|
|
27050
|
-
isSignal: true,
|
|
27051
|
-
isRequired: false,
|
|
27052
|
-
transformFunction: null
|
|
27053
|
-
},
|
|
27054
|
-
size: {
|
|
27055
|
-
classPropertyName: "size",
|
|
27056
|
-
publicName: "size",
|
|
27057
|
-
isSignal: true,
|
|
27058
|
-
isRequired: false,
|
|
27059
|
-
transformFunction: null
|
|
27060
|
-
},
|
|
27061
|
-
variant: {
|
|
27062
|
-
classPropertyName: "variant",
|
|
27063
|
-
publicName: "variant",
|
|
27064
|
-
isSignal: true,
|
|
27065
|
-
isRequired: false,
|
|
27066
|
-
transformFunction: null
|
|
27067
|
-
},
|
|
27068
|
-
disabled: {
|
|
27069
|
-
classPropertyName: "disabled",
|
|
27070
|
-
publicName: "disabled",
|
|
27071
|
-
isSignal: true,
|
|
27072
|
-
isRequired: false,
|
|
27073
|
-
transformFunction: null
|
|
27074
|
-
},
|
|
27075
|
-
loading: {
|
|
27076
|
-
classPropertyName: "loading",
|
|
27077
|
-
publicName: "loading",
|
|
27078
|
-
isSignal: true,
|
|
27079
|
-
isRequired: false,
|
|
27080
|
-
transformFunction: null
|
|
27081
|
-
},
|
|
27082
|
-
interactive: {
|
|
27083
|
-
classPropertyName: "interactive",
|
|
27084
|
-
publicName: "interactive",
|
|
27085
|
-
isSignal: true,
|
|
27086
|
-
isRequired: false,
|
|
27087
|
-
transformFunction: null
|
|
27088
|
-
}
|
|
27089
|
-
},
|
|
27090
|
-
outputs: { iconClick: "iconClick" },
|
|
27091
|
-
ngImport: i0,
|
|
27092
|
-
template: `
|
|
27093
|
-
@if (interactive()) {
|
|
27094
|
-
<button type="button" class="icon-btn" [class.danger]="variant() === 'danger'"
|
|
27095
|
-
[class.loading]="loading()" [disabled]="disabled() || loading()" [attr.aria-busy]="loading() ? 'true' : null"
|
|
27096
|
-
[attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" (click)="onClick($event)">
|
|
27097
|
-
<ng-container *ngTemplateOutlet="glyph" />
|
|
27098
|
-
</button>
|
|
27099
|
-
} @else {
|
|
27100
|
-
<span class="icon-static" [class.danger]="variant() === 'danger'" [attr.aria-busy]="loading() ? 'true' : null"
|
|
27101
|
-
[attr.role]="accessibleName() ? 'img' : null" [attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" [attr.aria-hidden]="accessibleName() ? null : 'true'">
|
|
27102
|
-
<ng-container *ngTemplateOutlet="glyph" />
|
|
27103
|
-
</span>
|
|
27104
|
-
}
|
|
27105
|
-
<ng-template #glyph>
|
|
27106
|
-
@if (loading()) {
|
|
27107
|
-
<span class="spinner" [style.width.px]="size()" [style.height.px]="size()" aria-hidden="true"></span>
|
|
27108
|
-
} @else if (path(); as d) {
|
|
27109
|
-
<svg viewBox="0 0 24 24" [attr.width]="size()" [attr.height]="size()" fill="none" stroke="currentColor"
|
|
27110
|
-
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
27111
|
-
<path [attr.d]="d" />
|
|
27112
|
-
</svg>
|
|
27113
|
-
}
|
|
27114
|
-
</ng-template>
|
|
27115
|
-
`,
|
|
27116
|
-
isInline: true,
|
|
27117
|
-
styles: [":host{display:inline-flex}.icon-static{display:inline-flex;align-items:center;justify-content:center;color:inherit}.icon-static.danger{color:#b91c1c}.icon-static svg{display:block}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#475569;cursor:pointer;-webkit-appearance:none;appearance:none;font:inherit;transition:background .15s ease,color .15s ease}.icon-btn:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.icon-btn.danger{color:#b91c1c}.icon-btn.danger:hover:not(:disabled){background:#fef2f2;color:#991b1b}.icon-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn.loading:disabled{opacity:1;cursor:progress}.spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:ui-icon-spin .6s linear infinite}@keyframes ui-icon-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.icon-btn:after{content:\"\";position:absolute;inset:-8px}\n"],
|
|
27118
|
-
dependencies: [{
|
|
27119
|
-
kind: "directive",
|
|
27120
|
-
type: NgTemplateOutlet,
|
|
27121
|
-
selector: "[ngTemplateOutlet]",
|
|
27122
|
-
inputs: [
|
|
27123
|
-
"ngTemplateOutletContext",
|
|
27124
|
-
"ngTemplateOutlet",
|
|
27125
|
-
"ngTemplateOutletInjector"
|
|
27126
|
-
]
|
|
27127
|
-
}, {
|
|
27128
|
-
kind: "directive",
|
|
27129
|
-
type: TooltipDirective,
|
|
27130
|
-
selector: "[uiTooltip]",
|
|
27131
|
-
inputs: ["uiTooltip", "tooltipPosition"]
|
|
27132
|
-
}],
|
|
27133
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
27134
|
-
});
|
|
27135
|
-
}
|
|
27136
|
-
};
|
|
27137
|
-
i0.ɵɵngDeclareClassMetadata({
|
|
27138
|
-
minVersion: "12.0.0",
|
|
27139
|
-
version: "22.2.2",
|
|
27140
|
-
ngImport: i0,
|
|
27141
|
-
type: IconComponent,
|
|
27142
|
-
decorators: [{
|
|
27143
|
-
type: Component,
|
|
27144
|
-
args: [{
|
|
27145
|
-
selector: "ui-icon",
|
|
27146
|
-
standalone: true,
|
|
27147
|
-
imports: [NgTemplateOutlet, TooltipDirective],
|
|
27148
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27149
|
-
template: `
|
|
27150
|
-
@if (interactive()) {
|
|
27151
|
-
<button type="button" class="icon-btn" [class.danger]="variant() === 'danger'"
|
|
27152
|
-
[class.loading]="loading()" [disabled]="disabled() || loading()" [attr.aria-busy]="loading() ? 'true' : null"
|
|
27153
|
-
[attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" (click)="onClick($event)">
|
|
27154
|
-
<ng-container *ngTemplateOutlet="glyph" />
|
|
27155
|
-
</button>
|
|
27156
|
-
} @else {
|
|
27157
|
-
<span class="icon-static" [class.danger]="variant() === 'danger'" [attr.aria-busy]="loading() ? 'true' : null"
|
|
27158
|
-
[attr.role]="accessibleName() ? 'img' : null" [attr.aria-label]="accessibleName() || null" [uiTooltip]="tooltip()" [attr.aria-hidden]="accessibleName() ? null : 'true'">
|
|
27159
|
-
<ng-container *ngTemplateOutlet="glyph" />
|
|
27160
|
-
</span>
|
|
27161
|
-
}
|
|
27162
|
-
<ng-template #glyph>
|
|
27163
|
-
@if (loading()) {
|
|
27164
|
-
<span class="spinner" [style.width.px]="size()" [style.height.px]="size()" aria-hidden="true"></span>
|
|
27165
|
-
} @else if (path(); as d) {
|
|
27166
|
-
<svg viewBox="0 0 24 24" [attr.width]="size()" [attr.height]="size()" fill="none" stroke="currentColor"
|
|
27167
|
-
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
|
|
27168
|
-
<path [attr.d]="d" />
|
|
27169
|
-
</svg>
|
|
27170
|
-
}
|
|
27171
|
-
</ng-template>
|
|
27172
|
-
`,
|
|
27173
|
-
styles: [":host{display:inline-flex}.icon-static{display:inline-flex;align-items:center;justify-content:center;color:inherit}.icon-static.danger{color:#b91c1c}.icon-static svg{display:block}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#475569;cursor:pointer;-webkit-appearance:none;appearance:none;font:inherit;transition:background .15s ease,color .15s ease}.icon-btn:hover:not(:disabled){background:#f1f5f9;color:#0f172a}.icon-btn.danger{color:#b91c1c}.icon-btn.danger:hover:not(:disabled){background:#fef2f2;color:#991b1b}.icon-btn:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn.loading:disabled{opacity:1;cursor:progress}.spinner{display:block;box-sizing:border-box;border:2px solid rgba(100,116,139,.3);border-top-color:currentColor;border-radius:50%;animation:ui-icon-spin .6s linear infinite}@keyframes ui-icon-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.icon-btn:after{content:\"\";position:absolute;inset:-8px}\n"]
|
|
27174
|
-
}]
|
|
27175
|
-
}],
|
|
27176
|
-
propDecorators: {
|
|
27177
|
-
name: [{
|
|
27178
|
-
type: i0.Input,
|
|
27179
|
-
args: [{
|
|
27180
|
-
isSignal: true,
|
|
27181
|
-
alias: "name",
|
|
27182
|
-
required: true
|
|
27183
|
-
}]
|
|
27184
|
-
}],
|
|
27185
|
-
tooltip: [{
|
|
27186
|
-
type: i0.Input,
|
|
27187
|
-
args: [{
|
|
27188
|
-
isSignal: true,
|
|
27189
|
-
alias: "tooltip",
|
|
27190
|
-
required: false
|
|
27191
|
-
}]
|
|
27192
|
-
}],
|
|
27193
|
-
ariaLabel: [{
|
|
27194
|
-
type: i0.Input,
|
|
27195
|
-
args: [{
|
|
27196
|
-
isSignal: true,
|
|
27197
|
-
alias: "ariaLabel",
|
|
27198
|
-
required: false
|
|
27199
|
-
}]
|
|
27200
|
-
}],
|
|
27201
|
-
size: [{
|
|
27202
|
-
type: i0.Input,
|
|
27203
|
-
args: [{
|
|
27204
|
-
isSignal: true,
|
|
27205
|
-
alias: "size",
|
|
27206
|
-
required: false
|
|
27207
|
-
}]
|
|
27208
|
-
}],
|
|
27209
|
-
variant: [{
|
|
27210
|
-
type: i0.Input,
|
|
27211
|
-
args: [{
|
|
27212
|
-
isSignal: true,
|
|
27213
|
-
alias: "variant",
|
|
27214
|
-
required: false
|
|
27215
|
-
}]
|
|
27216
|
-
}],
|
|
27217
|
-
disabled: [{
|
|
27218
|
-
type: i0.Input,
|
|
27219
|
-
args: [{
|
|
27220
|
-
isSignal: true,
|
|
27221
|
-
alias: "disabled",
|
|
27222
|
-
required: false
|
|
27223
|
-
}]
|
|
27224
|
-
}],
|
|
27225
|
-
loading: [{
|
|
27226
|
-
type: i0.Input,
|
|
27227
|
-
args: [{
|
|
27228
|
-
isSignal: true,
|
|
27229
|
-
alias: "loading",
|
|
27230
|
-
required: false
|
|
27231
|
-
}]
|
|
27232
|
-
}],
|
|
27233
|
-
interactive: [{
|
|
27234
|
-
type: i0.Input,
|
|
27235
|
-
args: [{
|
|
27236
|
-
isSignal: true,
|
|
27237
|
-
alias: "interactive",
|
|
27238
|
-
required: false
|
|
27239
|
-
}]
|
|
27240
|
-
}],
|
|
27241
|
-
iconClick: [{
|
|
27242
|
-
type: i0.Output,
|
|
27243
|
-
args: ["iconClick"]
|
|
27244
|
-
}]
|
|
27245
|
-
}
|
|
27246
|
-
});
|
|
27247
27835
|
var TimelineComponent = class TimelineComponent {
|
|
27248
27836
|
constructor() {
|
|
27249
27837
|
this.items = input([], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
|
|
@@ -36511,6 +37099,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
36511
37099
|
}]
|
|
36512
37100
|
}
|
|
36513
37101
|
});
|
|
36514
|
-
export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
|
|
37102
|
+
export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PasswordRequirementsComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
|
|
36515
37103
|
|
|
36516
37104
|
//# sourceMappingURL=forgeroute-ui.mjs.map
|