@forgeroute/ui 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/forgeroute-ui.mjs +228 -67
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui.d.ts +29 -5
|
@@ -7,8 +7,8 @@ import { Subject, catchError as catchError$1, debounceTime as debounceTime$1, fi
|
|
|
7
7
|
import { DOCUMENT, DatePipe, DecimalPipe, NgTemplateOutlet } from "@angular/common";
|
|
8
8
|
import * as i1 from "@angular/forms";
|
|
9
9
|
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
10
|
-
import { BarController, BarElement, CategoryScale, Chart, LinearScale, Tooltip } from "chart.js";
|
|
11
10
|
import { NavigationEnd, Router, RouterLink, RouterLinkActive } from "@angular/router";
|
|
11
|
+
import { BarController, BarElement, CategoryScale, Chart, LinearScale, Tooltip } from "chart.js";
|
|
12
12
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
13
13
|
const FORGEROUTE_CONFIG = new InjectionToken("FORGEROUTE_CONFIG");
|
|
14
14
|
const DROPDOWN_GROUP = new InjectionToken("DROPDOWN_GROUP");
|
|
@@ -2719,6 +2719,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2719
2719
|
var ButtonComponent = class ButtonComponent {
|
|
2720
2720
|
constructor() {
|
|
2721
2721
|
this.variant = input("primary", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
2722
|
+
this.routerLink = input(null, ...ngDevMode ? [{ debugName: "routerLink" }] : /* istanbul ignore next */ []);
|
|
2723
|
+
this.queryParams = input(null, ...ngDevMode ? [{ debugName: "queryParams" }] : /* istanbul ignore next */ []);
|
|
2722
2724
|
this.color = input(void 0, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
|
|
2723
2725
|
this.active = input(false, ...ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []);
|
|
2724
2726
|
this.size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
@@ -2756,6 +2758,20 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2756
2758
|
isRequired: false,
|
|
2757
2759
|
transformFunction: null
|
|
2758
2760
|
},
|
|
2761
|
+
routerLink: {
|
|
2762
|
+
classPropertyName: "routerLink",
|
|
2763
|
+
publicName: "routerLink",
|
|
2764
|
+
isSignal: true,
|
|
2765
|
+
isRequired: false,
|
|
2766
|
+
transformFunction: null
|
|
2767
|
+
},
|
|
2768
|
+
queryParams: {
|
|
2769
|
+
classPropertyName: "queryParams",
|
|
2770
|
+
publicName: "queryParams",
|
|
2771
|
+
isSignal: true,
|
|
2772
|
+
isRequired: false,
|
|
2773
|
+
transformFunction: null
|
|
2774
|
+
},
|
|
2759
2775
|
color: {
|
|
2760
2776
|
classPropertyName: "color",
|
|
2761
2777
|
publicName: "color",
|
|
@@ -2850,6 +2866,23 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2850
2866
|
},
|
|
2851
2867
|
ngImport: i0,
|
|
2852
2868
|
template: `
|
|
2869
|
+
<ng-template #content>
|
|
2870
|
+
@if (loading()) {
|
|
2871
|
+
<span class="spinner"></span>
|
|
2872
|
+
}
|
|
2873
|
+
<ng-content />
|
|
2874
|
+
</ng-template>
|
|
2875
|
+
@if (routerLink() !== null) {
|
|
2876
|
+
<!-- A real link (middle-click, open in new tab, screen readers say "link"): same look as the button of this variant, underlined. -->
|
|
2877
|
+
<a
|
|
2878
|
+
[routerLink]="routerLink()"
|
|
2879
|
+
[queryParams]="queryParams()"
|
|
2880
|
+
[class]="'btn btn-anchor btn-' + variant() + ' btn-' + size()"
|
|
2881
|
+
[class.btn-full]="fullWidth()"
|
|
2882
|
+
[attr.aria-label]="ariaLabel()"
|
|
2883
|
+
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2884
|
+
><ng-container [ngTemplateOutlet]="content" /></a>
|
|
2885
|
+
} @else {
|
|
2853
2886
|
<button
|
|
2854
2887
|
[type]="type()"
|
|
2855
2888
|
[class]="'btn btn-' + variant() + ' btn-' + size()"
|
|
@@ -2862,15 +2895,39 @@ var ButtonComponent = class ButtonComponent {
|
|
|
2862
2895
|
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2863
2896
|
[style.background]="color() || null"
|
|
2864
2897
|
[style.border-color]="color() || null"
|
|
2865
|
-
>
|
|
2866
|
-
|
|
2867
|
-
<span class="spinner"></span>
|
|
2868
|
-
}
|
|
2869
|
-
<ng-content />
|
|
2870
|
-
</button>
|
|
2898
|
+
><ng-container [ngTemplateOutlet]="content" /></button>
|
|
2899
|
+
}
|
|
2871
2900
|
`,
|
|
2872
2901
|
isInline: true,
|
|
2873
|
-
styles: [":host{display:inline-flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.btn-full{width:100%}.btn-primary{background:#3b82f6;color:#fff;border:1px solid #3B82F6}.btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.btn-secondary{background:#fff;color:#334155;border:1px solid #e2e8f0}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.btn-ghost{background:transparent;color:#64748b;border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:#f8fafc;color:#334155}.btn-danger{background:#dc2626;color:#fff;border:1px solid #dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-link{background:none;color:#3b82f6;border:none;padding:0;font-weight:500}.btn-link:hover:not(:disabled){color:#60a5fa}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{padding:0}.btn-warning{background:#f97316;color:#fff;border:1px solid #f97316}.btn-warning:hover:not(:disabled){background:#ea6c0a;border-color:#ea6c0a}.btn-tab{background:none;color:#64748b;border:none;border-bottom:2px solid transparent;border-radius:0;font-weight:600;font-size:.875rem;transition:all .15s}.btn-tab:hover:not(:disabled){background:none;color:#1e293b}.btn-tab.active{color:#3b82f6;border-bottom-color:#3b82f6}.btn-tab.btn-xs,.btn-tab.btn-sm,.btn-tab.btn-md,.btn-tab.btn-lg{padding:10px 20px;border-radius:0}.btn-icon{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon:hover:not(:disabled){background:#f1f5f9;color:#334155}.btn-icon-danger{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon-danger:hover:not(:disabled){background:#fee2e2;color:#dc2626}.btn-xs{padding:3px 8px;font-size:.75rem;border-radius:5px;gap:4px}.btn-sm{padding:6px 12px;font-size:.8125rem;border-radius:6px}.btn-md{padding:10px 16px;font-size:.875rem}.btn-lg{padding:14px 20px;font-size:1rem}@media(pointer:coarse),(max-width:480px){.btn-xs,.btn-sm,.btn-md,.btn-lg,.btn-tab{min-height:44px}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{min-height:0}.btn-icon,.btn-icon-danger{position:relative}.btn-icon:after,.btn-icon-danger:after{content:\"\";position:absolute;inset:-8px}}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"],
|
|
2902
|
+
styles: [":host{display:inline-flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.btn-full{width:100%}.btn-primary{background:#3b82f6;color:#fff;border:1px solid #3B82F6}.btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.btn-secondary{background:#fff;color:#334155;border:1px solid #e2e8f0}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.btn-ghost{background:transparent;color:#64748b;border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:#f8fafc;color:#334155}.btn-danger{background:#dc2626;color:#fff;border:1px solid #dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-link{background:none;color:#3b82f6;border:none;padding:0;font-weight:500}.btn-link:hover:not(:disabled){color:#60a5fa}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{padding:0}.btn-anchor{text-decoration:none}.btn-anchor.btn-link{text-decoration:underline;text-underline-offset:2px}.btn-warning{background:#f97316;color:#fff;border:1px solid #f97316}.btn-warning:hover:not(:disabled){background:#ea6c0a;border-color:#ea6c0a}.btn-tab{background:none;color:#64748b;border:none;border-bottom:2px solid transparent;border-radius:0;font-weight:600;font-size:.875rem;transition:all .15s}.btn-tab:hover:not(:disabled){background:none;color:#1e293b}.btn-tab.active{color:#3b82f6;border-bottom-color:#3b82f6}.btn-tab.btn-xs,.btn-tab.btn-sm,.btn-tab.btn-md,.btn-tab.btn-lg{padding:10px 20px;border-radius:0}.btn-icon{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon:hover:not(:disabled){background:#f1f5f9;color:#334155}.btn-icon-danger{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon-danger:hover:not(:disabled){background:#fee2e2;color:#dc2626}.btn-xs{padding:3px 8px;font-size:.75rem;border-radius:5px;gap:4px}.btn-sm{padding:6px 12px;font-size:.8125rem;border-radius:6px}.btn-md{padding:10px 16px;font-size:.875rem}.btn-lg{padding:14px 20px;font-size:1rem}@media(pointer:coarse),(max-width:480px){.btn-xs,.btn-sm,.btn-md,.btn-lg,.btn-tab{min-height:44px}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{min-height:0}.btn-icon,.btn-icon-danger{position:relative}.btn-icon:after,.btn-icon-danger:after{content:\"\";position:absolute;inset:-8px}}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"],
|
|
2903
|
+
dependencies: [{
|
|
2904
|
+
kind: "directive",
|
|
2905
|
+
type: NgTemplateOutlet,
|
|
2906
|
+
selector: "[ngTemplateOutlet]",
|
|
2907
|
+
inputs: [
|
|
2908
|
+
"ngTemplateOutletContext",
|
|
2909
|
+
"ngTemplateOutlet",
|
|
2910
|
+
"ngTemplateOutletInjector"
|
|
2911
|
+
]
|
|
2912
|
+
}, {
|
|
2913
|
+
kind: "directive",
|
|
2914
|
+
type: RouterLink,
|
|
2915
|
+
selector: "[routerLink]",
|
|
2916
|
+
inputs: [
|
|
2917
|
+
"target",
|
|
2918
|
+
"queryParams",
|
|
2919
|
+
"fragment",
|
|
2920
|
+
"queryParamsHandling",
|
|
2921
|
+
"state",
|
|
2922
|
+
"info",
|
|
2923
|
+
"relativeTo",
|
|
2924
|
+
"preserveFragment",
|
|
2925
|
+
"skipLocationChange",
|
|
2926
|
+
"replaceUrl",
|
|
2927
|
+
"browserUrl",
|
|
2928
|
+
"routerLink"
|
|
2929
|
+
]
|
|
2930
|
+
}],
|
|
2874
2931
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
2875
2932
|
});
|
|
2876
2933
|
}
|
|
@@ -2885,8 +2942,26 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2885
2942
|
args: [{
|
|
2886
2943
|
selector: "ui-button",
|
|
2887
2944
|
standalone: true,
|
|
2945
|
+
imports: [NgTemplateOutlet, RouterLink],
|
|
2888
2946
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2889
2947
|
template: `
|
|
2948
|
+
<ng-template #content>
|
|
2949
|
+
@if (loading()) {
|
|
2950
|
+
<span class="spinner"></span>
|
|
2951
|
+
}
|
|
2952
|
+
<ng-content />
|
|
2953
|
+
</ng-template>
|
|
2954
|
+
@if (routerLink() !== null) {
|
|
2955
|
+
<!-- A real link (middle-click, open in new tab, screen readers say "link"): same look as the button of this variant, underlined. -->
|
|
2956
|
+
<a
|
|
2957
|
+
[routerLink]="routerLink()"
|
|
2958
|
+
[queryParams]="queryParams()"
|
|
2959
|
+
[class]="'btn btn-anchor btn-' + variant() + ' btn-' + size()"
|
|
2960
|
+
[class.btn-full]="fullWidth()"
|
|
2961
|
+
[attr.aria-label]="ariaLabel()"
|
|
2962
|
+
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2963
|
+
><ng-container [ngTemplateOutlet]="content" /></a>
|
|
2964
|
+
} @else {
|
|
2890
2965
|
<button
|
|
2891
2966
|
[type]="type()"
|
|
2892
2967
|
[class]="'btn btn-' + variant() + ' btn-' + size()"
|
|
@@ -2899,14 +2974,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2899
2974
|
[attr.aria-describedby]="ariaDescribedBy() || null"
|
|
2900
2975
|
[style.background]="color() || null"
|
|
2901
2976
|
[style.border-color]="color() || null"
|
|
2902
|
-
>
|
|
2903
|
-
|
|
2904
|
-
<span class="spinner"></span>
|
|
2905
|
-
}
|
|
2906
|
-
<ng-content />
|
|
2907
|
-
</button>
|
|
2977
|
+
><ng-container [ngTemplateOutlet]="content" /></button>
|
|
2978
|
+
}
|
|
2908
2979
|
`,
|
|
2909
|
-
styles: [":host{display:inline-flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.btn-full{width:100%}.btn-primary{background:#3b82f6;color:#fff;border:1px solid #3B82F6}.btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.btn-secondary{background:#fff;color:#334155;border:1px solid #e2e8f0}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.btn-ghost{background:transparent;color:#64748b;border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:#f8fafc;color:#334155}.btn-danger{background:#dc2626;color:#fff;border:1px solid #dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-link{background:none;color:#3b82f6;border:none;padding:0;font-weight:500}.btn-link:hover:not(:disabled){color:#60a5fa}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{padding:0}.btn-warning{background:#f97316;color:#fff;border:1px solid #f97316}.btn-warning:hover:not(:disabled){background:#ea6c0a;border-color:#ea6c0a}.btn-tab{background:none;color:#64748b;border:none;border-bottom:2px solid transparent;border-radius:0;font-weight:600;font-size:.875rem;transition:all .15s}.btn-tab:hover:not(:disabled){background:none;color:#1e293b}.btn-tab.active{color:#3b82f6;border-bottom-color:#3b82f6}.btn-tab.btn-xs,.btn-tab.btn-sm,.btn-tab.btn-md,.btn-tab.btn-lg{padding:10px 20px;border-radius:0}.btn-icon{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon:hover:not(:disabled){background:#f1f5f9;color:#334155}.btn-icon-danger{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon-danger:hover:not(:disabled){background:#fee2e2;color:#dc2626}.btn-xs{padding:3px 8px;font-size:.75rem;border-radius:5px;gap:4px}.btn-sm{padding:6px 12px;font-size:.8125rem;border-radius:6px}.btn-md{padding:10px 16px;font-size:.875rem}.btn-lg{padding:14px 20px;font-size:1rem}@media(pointer:coarse),(max-width:480px){.btn-xs,.btn-sm,.btn-md,.btn-lg,.btn-tab{min-height:44px}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{min-height:0}.btn-icon,.btn-icon-danger{position:relative}.btn-icon:after,.btn-icon-danger:after{content:\"\";position:absolute;inset:-8px}}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"]
|
|
2980
|
+
styles: [":host{display:inline-flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.btn-full{width:100%}.btn-primary{background:#3b82f6;color:#fff;border:1px solid #3B82F6}.btn-primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.btn-secondary{background:#fff;color:#334155;border:1px solid #e2e8f0}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.btn-ghost{background:transparent;color:#64748b;border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:#f8fafc;color:#334155}.btn-danger{background:#dc2626;color:#fff;border:1px solid #dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-link{background:none;color:#3b82f6;border:none;padding:0;font-weight:500}.btn-link:hover:not(:disabled){color:#60a5fa}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{padding:0}.btn-anchor{text-decoration:none}.btn-anchor.btn-link{text-decoration:underline;text-underline-offset:2px}.btn-warning{background:#f97316;color:#fff;border:1px solid #f97316}.btn-warning:hover:not(:disabled){background:#ea6c0a;border-color:#ea6c0a}.btn-tab{background:none;color:#64748b;border:none;border-bottom:2px solid transparent;border-radius:0;font-weight:600;font-size:.875rem;transition:all .15s}.btn-tab:hover:not(:disabled){background:none;color:#1e293b}.btn-tab.active{color:#3b82f6;border-bottom-color:#3b82f6}.btn-tab.btn-xs,.btn-tab.btn-sm,.btn-tab.btn-md,.btn-tab.btn-lg{padding:10px 20px;border-radius:0}.btn-icon{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon:hover:not(:disabled){background:#f1f5f9;color:#334155}.btn-icon-danger{width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:#94a3b8}.btn-icon-danger:hover:not(:disabled){background:#fee2e2;color:#dc2626}.btn-xs{padding:3px 8px;font-size:.75rem;border-radius:5px;gap:4px}.btn-sm{padding:6px 12px;font-size:.8125rem;border-radius:6px}.btn-md{padding:10px 16px;font-size:.875rem}.btn-lg{padding:14px 20px;font-size:1rem}@media(pointer:coarse),(max-width:480px){.btn-xs,.btn-sm,.btn-md,.btn-lg,.btn-tab{min-height:44px}.btn-link.btn-xs,.btn-link.btn-sm,.btn-link.btn-md,.btn-link.btn-lg{min-height:0}.btn-icon,.btn-icon-danger{position:relative}.btn-icon:after,.btn-icon-danger:after{content:\"\";position:absolute;inset:-8px}}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"]
|
|
2910
2981
|
}]
|
|
2911
2982
|
}],
|
|
2912
2983
|
propDecorators: {
|
|
@@ -2918,6 +2989,22 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2918
2989
|
required: false
|
|
2919
2990
|
}]
|
|
2920
2991
|
}],
|
|
2992
|
+
routerLink: [{
|
|
2993
|
+
type: i0.Input,
|
|
2994
|
+
args: [{
|
|
2995
|
+
isSignal: true,
|
|
2996
|
+
alias: "routerLink",
|
|
2997
|
+
required: false
|
|
2998
|
+
}]
|
|
2999
|
+
}],
|
|
3000
|
+
queryParams: [{
|
|
3001
|
+
type: i0.Input,
|
|
3002
|
+
args: [{
|
|
3003
|
+
isSignal: true,
|
|
3004
|
+
alias: "queryParams",
|
|
3005
|
+
required: false
|
|
3006
|
+
}]
|
|
3007
|
+
}],
|
|
2921
3008
|
color: [{
|
|
2922
3009
|
type: i0.Input,
|
|
2923
3010
|
args: [{
|
|
@@ -3967,6 +4054,8 @@ var TableToolbarComponent = class TableToolbarComponent {
|
|
|
3967
4054
|
selector: "ui-button",
|
|
3968
4055
|
inputs: [
|
|
3969
4056
|
"variant",
|
|
4057
|
+
"routerLink",
|
|
4058
|
+
"queryParams",
|
|
3970
4059
|
"color",
|
|
3971
4060
|
"active",
|
|
3972
4061
|
"size",
|
|
@@ -4303,6 +4392,30 @@ function decodeFilterValues(raw) {
|
|
|
4303
4392
|
out.push(current);
|
|
4304
4393
|
return out.map((v) => v.trim()).filter(Boolean);
|
|
4305
4394
|
}
|
|
4395
|
+
var PlusSafeParamCodec = class {
|
|
4396
|
+
encode(v) {
|
|
4397
|
+
return encodeURIComponent(v).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/gi, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%3D/gi, "=").replace(/%3F/gi, "?").replace(/%2F/gi, "/");
|
|
4398
|
+
}
|
|
4399
|
+
encodeKey(key) {
|
|
4400
|
+
return this.encode(key);
|
|
4401
|
+
}
|
|
4402
|
+
encodeValue(value) {
|
|
4403
|
+
return this.encode(value);
|
|
4404
|
+
}
|
|
4405
|
+
decodeKey(key) {
|
|
4406
|
+
return decodeURIComponent(key);
|
|
4407
|
+
}
|
|
4408
|
+
decodeValue(value) {
|
|
4409
|
+
return decodeURIComponent(value);
|
|
4410
|
+
}
|
|
4411
|
+
};
|
|
4412
|
+
const CODEC = new PlusSafeParamCodec();
|
|
4413
|
+
function tableQueryParams(values = {}) {
|
|
4414
|
+
return new HttpParams({
|
|
4415
|
+
encoder: CODEC,
|
|
4416
|
+
fromObject: values
|
|
4417
|
+
});
|
|
4418
|
+
}
|
|
4306
4419
|
function getEligibleOptions(options, selectedItems, field) {
|
|
4307
4420
|
if (selectedItems.length === 0) return options;
|
|
4308
4421
|
return options.filter((opt) => !selectedItems.every((item) => String(item[field] ?? "") === opt.value));
|
|
@@ -4716,6 +4829,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4716
4829
|
}]
|
|
4717
4830
|
}
|
|
4718
4831
|
});
|
|
4832
|
+
const MIN_VISIBLE_PERCENT = 2;
|
|
4719
4833
|
var ProgressBarComponent = class ProgressBarComponent {
|
|
4720
4834
|
constructor() {
|
|
4721
4835
|
this.value = input(0, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
@@ -4725,7 +4839,10 @@ var ProgressBarComponent = class ProgressBarComponent {
|
|
|
4725
4839
|
this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
|
|
4726
4840
|
this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
4727
4841
|
this.clampedValue = computed(() => Math.min(Math.max(this.value(), 0), this.max()), ...ngDevMode ? [{ debugName: "clampedValue" }] : /* istanbul ignore next */ []);
|
|
4728
|
-
this.percent = computed(() =>
|
|
4842
|
+
this.percent = computed(() => {
|
|
4843
|
+
if (this.max() <= 0 || this.clampedValue() <= 0) return 0;
|
|
4844
|
+
return Math.max(Math.round(this.clampedValue() / this.max() * 100), MIN_VISIBLE_PERCENT);
|
|
4845
|
+
}, ...ngDevMode ? [{ debugName: "percent" }] : /* istanbul ignore next */ []);
|
|
4729
4846
|
this.effectiveVariant = computed(() => {
|
|
4730
4847
|
const fixed = this.variant();
|
|
4731
4848
|
if (fixed) return fixed;
|
|
@@ -5607,7 +5724,7 @@ var ImportExportComponent = class ImportExportComponent {
|
|
|
5607
5724
|
if (this.exporting) return;
|
|
5608
5725
|
this.exporting = true;
|
|
5609
5726
|
this.cdr.detectChanges();
|
|
5610
|
-
let params =
|
|
5727
|
+
let params = tableQueryParams().set("size", "10000");
|
|
5611
5728
|
Object.entries(this.exportParams()).forEach(([k, v]) => {
|
|
5612
5729
|
if (v) params = params.set(k, v);
|
|
5613
5730
|
});
|
|
@@ -6161,6 +6278,8 @@ var ImportExportComponent = class ImportExportComponent {
|
|
|
6161
6278
|
selector: "ui-button",
|
|
6162
6279
|
inputs: [
|
|
6163
6280
|
"variant",
|
|
6281
|
+
"routerLink",
|
|
6282
|
+
"queryParams",
|
|
6164
6283
|
"color",
|
|
6165
6284
|
"active",
|
|
6166
6285
|
"size",
|
|
@@ -6648,6 +6767,8 @@ var ConfirmOutletComponent = class ConfirmOutletComponent {
|
|
|
6648
6767
|
selector: "ui-button",
|
|
6649
6768
|
inputs: [
|
|
6650
6769
|
"variant",
|
|
6770
|
+
"routerLink",
|
|
6771
|
+
"queryParams",
|
|
6651
6772
|
"color",
|
|
6652
6773
|
"active",
|
|
6653
6774
|
"size",
|
|
@@ -6993,6 +7114,8 @@ var ErrorStateComponent = class ErrorStateComponent {
|
|
|
6993
7114
|
selector: "ui-button",
|
|
6994
7115
|
inputs: [
|
|
6995
7116
|
"variant",
|
|
7117
|
+
"routerLink",
|
|
7118
|
+
"queryParams",
|
|
6996
7119
|
"color",
|
|
6997
7120
|
"active",
|
|
6998
7121
|
"size",
|
|
@@ -7747,7 +7870,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7747
7870
|
this._searchLoading.set(this._searchPending);
|
|
7748
7871
|
this._searchPending = false;
|
|
7749
7872
|
this._error.set(null);
|
|
7750
|
-
let params =
|
|
7873
|
+
let params = tableQueryParams(this._extraParams()).set("page", this._page() - 1).set("size", this.pageSize());
|
|
7751
7874
|
if (this._search()) {
|
|
7752
7875
|
params = params.set("search", this._searchParam());
|
|
7753
7876
|
const searchFields = this._searchFields();
|
|
@@ -7792,7 +7915,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7792
7915
|
if (ep) {
|
|
7793
7916
|
const params = this._countParams();
|
|
7794
7917
|
this._tabCountsSub?.unsubscribe();
|
|
7795
|
-
this._tabCountsSub = this.http.get(`${this.config.baseUrl}${ep}`, { params }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
7918
|
+
this._tabCountsSub = this.http.get(`${this.config.baseUrl}${ep}`, { params: tableQueryParams(params) }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
7796
7919
|
next: (counts) => {
|
|
7797
7920
|
const { all: allCount, ...tabCounts } = counts;
|
|
7798
7921
|
const total = allCount ?? Object.values(tabCounts).reduce((a, b) => a + b, 0);
|
|
@@ -7808,7 +7931,7 @@ var DataTableComponent = class DataTableComponent {
|
|
|
7808
7931
|
if (fep) {
|
|
7809
7932
|
const params = this._countParams();
|
|
7810
7933
|
this._filterCountsSub?.unsubscribe();
|
|
7811
|
-
this._filterCountsSub = this.http.get(`${this.config.baseUrl}${fep}`, { params }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
7934
|
+
this._filterCountsSub = this.http.get(`${this.config.baseUrl}${fep}`, { params: tableQueryParams(params) }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
7812
7935
|
next: (counts) => this._filterCounts.set(counts),
|
|
7813
7936
|
error: () => {}
|
|
7814
7937
|
});
|
|
@@ -9171,6 +9294,8 @@ var DataTableComponent = class DataTableComponent {
|
|
|
9171
9294
|
selector: "ui-button",
|
|
9172
9295
|
inputs: [
|
|
9173
9296
|
"variant",
|
|
9297
|
+
"routerLink",
|
|
9298
|
+
"queryParams",
|
|
9174
9299
|
"color",
|
|
9175
9300
|
"active",
|
|
9176
9301
|
"size",
|
|
@@ -10560,7 +10685,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10560
10685
|
}]
|
|
10561
10686
|
}
|
|
10562
10687
|
});
|
|
10563
|
-
|
|
10688
|
+
let registered = false;
|
|
10689
|
+
function registerChartParts() {
|
|
10690
|
+
if (registered) return;
|
|
10691
|
+
Chart.register(BarController, BarElement, CategoryScale, LinearScale, Tooltip);
|
|
10692
|
+
registered = true;
|
|
10693
|
+
}
|
|
10564
10694
|
const VALUE_LABELS = {
|
|
10565
10695
|
id: "uiBarChartValueLabels",
|
|
10566
10696
|
afterDatasetsDraw(chart) {
|
|
@@ -10606,53 +10736,56 @@ var BarChartComponent = class BarChartComponent {
|
|
|
10606
10736
|
effect(() => {
|
|
10607
10737
|
const s = this.series();
|
|
10608
10738
|
const canvas = this.canvas().nativeElement;
|
|
10609
|
-
if (!this.chart)
|
|
10610
|
-
|
|
10611
|
-
|
|
10612
|
-
|
|
10613
|
-
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
|
|
10617
|
-
|
|
10618
|
-
|
|
10619
|
-
|
|
10620
|
-
|
|
10621
|
-
|
|
10622
|
-
|
|
10623
|
-
responsive: true,
|
|
10624
|
-
maintainAspectRatio: false,
|
|
10625
|
-
animation: false,
|
|
10626
|
-
layout: { padding: { top: 20 } },
|
|
10627
|
-
plugins: {
|
|
10628
|
-
legend: { display: false },
|
|
10629
|
-
tooltip: { callbacks: { label: (item) => this.tooltipText(Number(item.raw)) } }
|
|
10739
|
+
if (!this.chart) {
|
|
10740
|
+
registerChartParts();
|
|
10741
|
+
this.zone.runOutsideAngular(() => {
|
|
10742
|
+
this.chart = new Chart(canvas, {
|
|
10743
|
+
type: "bar",
|
|
10744
|
+
data: {
|
|
10745
|
+
labels: s.labels,
|
|
10746
|
+
datasets: [{
|
|
10747
|
+
data: s.data,
|
|
10748
|
+
backgroundColor: s.color,
|
|
10749
|
+
hoverBackgroundColor: s.hoverColor,
|
|
10750
|
+
borderRadius: 3,
|
|
10751
|
+
borderSkipped: false
|
|
10752
|
+
}]
|
|
10630
10753
|
},
|
|
10631
|
-
|
|
10632
|
-
|
|
10633
|
-
|
|
10634
|
-
|
|
10635
|
-
|
|
10636
|
-
|
|
10637
|
-
|
|
10638
|
-
}
|
|
10639
|
-
grid: { color: "#e2e8f0" },
|
|
10640
|
-
border: { display: false }
|
|
10754
|
+
options: {
|
|
10755
|
+
responsive: true,
|
|
10756
|
+
maintainAspectRatio: false,
|
|
10757
|
+
animation: false,
|
|
10758
|
+
layout: { padding: { top: 20 } },
|
|
10759
|
+
plugins: {
|
|
10760
|
+
legend: { display: false },
|
|
10761
|
+
tooltip: { callbacks: { label: (item) => this.tooltipText(Number(item.raw)) } }
|
|
10641
10762
|
},
|
|
10642
|
-
|
|
10643
|
-
|
|
10644
|
-
|
|
10645
|
-
|
|
10646
|
-
|
|
10647
|
-
|
|
10763
|
+
scales: {
|
|
10764
|
+
y: {
|
|
10765
|
+
beginAtZero: true,
|
|
10766
|
+
ticks: {
|
|
10767
|
+
precision: 0,
|
|
10768
|
+
color: "#94a3b8",
|
|
10769
|
+
font: { size: 11 }
|
|
10770
|
+
},
|
|
10771
|
+
grid: { color: "#e2e8f0" },
|
|
10772
|
+
border: { display: false }
|
|
10648
10773
|
},
|
|
10649
|
-
|
|
10774
|
+
x: {
|
|
10775
|
+
grid: { display: false },
|
|
10776
|
+
ticks: {
|
|
10777
|
+
maxRotation: 0,
|
|
10778
|
+
color: "#94a3b8",
|
|
10779
|
+
font: { size: 10 }
|
|
10780
|
+
},
|
|
10781
|
+
border: { display: false }
|
|
10782
|
+
}
|
|
10650
10783
|
}
|
|
10651
|
-
}
|
|
10652
|
-
|
|
10653
|
-
|
|
10784
|
+
},
|
|
10785
|
+
plugins: [VALUE_LABELS]
|
|
10786
|
+
});
|
|
10654
10787
|
});
|
|
10655
|
-
}
|
|
10788
|
+
}
|
|
10656
10789
|
const chart = this.chart;
|
|
10657
10790
|
chart.data.labels = s.labels;
|
|
10658
10791
|
const ds = chart.data.datasets[0];
|
|
@@ -10759,7 +10892,7 @@ var BarChartComponent = class BarChartComponent {
|
|
|
10759
10892
|
ngImport: i0,
|
|
10760
10893
|
template: `
|
|
10761
10894
|
<div class="bc-wrap" [class.bc-default-height]="height() === 240" [style.height.px]="height()"
|
|
10762
|
-
role="img" [attr.aria-label]="ariaLabel() || null">
|
|
10895
|
+
[attr.role]="ariaLabel() ? 'img' : null" [attr.aria-label]="ariaLabel() || null">
|
|
10763
10896
|
<canvas #canvas></canvas>
|
|
10764
10897
|
</div>
|
|
10765
10898
|
`,
|
|
@@ -10782,7 +10915,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10782
10915
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10783
10916
|
template: `
|
|
10784
10917
|
<div class="bc-wrap" [class.bc-default-height]="height() === 240" [style.height.px]="height()"
|
|
10785
|
-
role="img" [attr.aria-label]="ariaLabel() || null">
|
|
10918
|
+
[attr.role]="ariaLabel() ? 'img' : null" [attr.aria-label]="ariaLabel() || null">
|
|
10786
10919
|
<canvas #canvas></canvas>
|
|
10787
10920
|
</div>
|
|
10788
10921
|
`,
|
|
@@ -16709,6 +16842,8 @@ var SendEmailComponent = class SendEmailComponent {
|
|
|
16709
16842
|
selector: "ui-button",
|
|
16710
16843
|
inputs: [
|
|
16711
16844
|
"variant",
|
|
16845
|
+
"routerLink",
|
|
16846
|
+
"queryParams",
|
|
16712
16847
|
"color",
|
|
16713
16848
|
"active",
|
|
16714
16849
|
"size",
|
|
@@ -17929,6 +18064,8 @@ var SendTextComponent = class SendTextComponent {
|
|
|
17929
18064
|
selector: "ui-button",
|
|
17930
18065
|
inputs: [
|
|
17931
18066
|
"variant",
|
|
18067
|
+
"routerLink",
|
|
18068
|
+
"queryParams",
|
|
17932
18069
|
"color",
|
|
17933
18070
|
"active",
|
|
17934
18071
|
"size",
|
|
@@ -22962,6 +23099,8 @@ var QrCodeComponent = class QrCodeComponent {
|
|
|
22962
23099
|
selector: "ui-button",
|
|
22963
23100
|
inputs: [
|
|
22964
23101
|
"variant",
|
|
23102
|
+
"routerLink",
|
|
23103
|
+
"queryParams",
|
|
22965
23104
|
"color",
|
|
22966
23105
|
"active",
|
|
22967
23106
|
"size",
|
|
@@ -23230,6 +23369,8 @@ var PanelInfoListComponent = class PanelInfoListComponent {
|
|
|
23230
23369
|
selector: "ui-button",
|
|
23231
23370
|
inputs: [
|
|
23232
23371
|
"variant",
|
|
23372
|
+
"routerLink",
|
|
23373
|
+
"queryParams",
|
|
23233
23374
|
"color",
|
|
23234
23375
|
"active",
|
|
23235
23376
|
"size",
|
|
@@ -24981,6 +25122,7 @@ var DateRangePickerComponent = class DateRangePickerComponent {
|
|
|
24981
25122
|
this.activePreset = input("ytd", ...ngDevMode ? [{ debugName: "activePreset" }] : /* istanbul ignore next */ []);
|
|
24982
25123
|
this.showPresets = input(true, ...ngDevMode ? [{ debugName: "showPresets" }] : /* istanbul ignore next */ []);
|
|
24983
25124
|
this.includeAllTime = input(false, ...ngDevMode ? [{ debugName: "includeAllTime" }] : /* istanbul ignore next */ []);
|
|
25125
|
+
this.ariaLabel = input("Date range", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
24984
25126
|
this.rangeChange = output();
|
|
24985
25127
|
this.selectedPreset = linkedSignal(() => this.activePreset(), ...ngDevMode ? [{ debugName: "selectedPreset" }] : /* istanbul ignore next */ []);
|
|
24986
25128
|
this.customStart = signal("", ...ngDevMode ? [{ debugName: "customStart" }] : /* istanbul ignore next */ []);
|
|
@@ -25053,6 +25195,13 @@ var DateRangePickerComponent = class DateRangePickerComponent {
|
|
|
25053
25195
|
isSignal: true,
|
|
25054
25196
|
isRequired: false,
|
|
25055
25197
|
transformFunction: null
|
|
25198
|
+
},
|
|
25199
|
+
ariaLabel: {
|
|
25200
|
+
classPropertyName: "ariaLabel",
|
|
25201
|
+
publicName: "ariaLabel",
|
|
25202
|
+
isSignal: true,
|
|
25203
|
+
isRequired: false,
|
|
25204
|
+
transformFunction: null
|
|
25056
25205
|
}
|
|
25057
25206
|
},
|
|
25058
25207
|
outputs: { rangeChange: "rangeChange" },
|
|
@@ -25060,7 +25209,7 @@ var DateRangePickerComponent = class DateRangePickerComponent {
|
|
|
25060
25209
|
template: `
|
|
25061
25210
|
<div class="date-range-picker">
|
|
25062
25211
|
@if (showPresets()) {
|
|
25063
|
-
<ui-pill-tabs [tabs]="presetTabs()" [activeKey]="selectedPreset()" (tabChange)="selectPreset($any($event))" />
|
|
25212
|
+
<ui-pill-tabs [tabs]="presetTabs()" [activeKey]="selectedPreset()" [ariaLabel]="ariaLabel()" (tabChange)="selectPreset($any($event))" />
|
|
25064
25213
|
}
|
|
25065
25214
|
@if (selectedPreset() === 'custom' || !showPresets()) {
|
|
25066
25215
|
<div class="custom-range">
|
|
@@ -25131,6 +25280,8 @@ var DateRangePickerComponent = class DateRangePickerComponent {
|
|
|
25131
25280
|
selector: "ui-button",
|
|
25132
25281
|
inputs: [
|
|
25133
25282
|
"variant",
|
|
25283
|
+
"routerLink",
|
|
25284
|
+
"queryParams",
|
|
25134
25285
|
"color",
|
|
25135
25286
|
"active",
|
|
25136
25287
|
"size",
|
|
@@ -25171,7 +25322,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
25171
25322
|
template: `
|
|
25172
25323
|
<div class="date-range-picker">
|
|
25173
25324
|
@if (showPresets()) {
|
|
25174
|
-
<ui-pill-tabs [tabs]="presetTabs()" [activeKey]="selectedPreset()" (tabChange)="selectPreset($any($event))" />
|
|
25325
|
+
<ui-pill-tabs [tabs]="presetTabs()" [activeKey]="selectedPreset()" [ariaLabel]="ariaLabel()" (tabChange)="selectPreset($any($event))" />
|
|
25175
25326
|
}
|
|
25176
25327
|
@if (selectedPreset() === 'custom' || !showPresets()) {
|
|
25177
25328
|
<div class="custom-range">
|
|
@@ -25211,6 +25362,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
25211
25362
|
required: false
|
|
25212
25363
|
}]
|
|
25213
25364
|
}],
|
|
25365
|
+
ariaLabel: [{
|
|
25366
|
+
type: i0.Input,
|
|
25367
|
+
args: [{
|
|
25368
|
+
isSignal: true,
|
|
25369
|
+
alias: "ariaLabel",
|
|
25370
|
+
required: false
|
|
25371
|
+
}]
|
|
25372
|
+
}],
|
|
25214
25373
|
rangeChange: [{
|
|
25215
25374
|
type: i0.Output,
|
|
25216
25375
|
args: ["rangeChange"]
|
|
@@ -27928,6 +28087,8 @@ var DetailCardComponent = class DetailCardComponent {
|
|
|
27928
28087
|
selector: "ui-button",
|
|
27929
28088
|
inputs: [
|
|
27930
28089
|
"variant",
|
|
28090
|
+
"routerLink",
|
|
28091
|
+
"queryParams",
|
|
27931
28092
|
"color",
|
|
27932
28093
|
"active",
|
|
27933
28094
|
"size",
|