@eric-emg/symphiq-components 1.2.250 → 1.2.251
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/symphiq-components.mjs +460 -378
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +55 -38
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/styles.css +0 -9
|
@@ -54818,6 +54818,7 @@ function PacingStatusBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
|
|
|
54818
54818
|
} if (rf & 2) {
|
|
54819
54819
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
54820
54820
|
i0.ɵɵclassMap(ctx_r0.containerSizeClasses());
|
|
54821
|
+
i0.ɵɵstyleProp("transform", ctx_r0.rotationStyle());
|
|
54821
54822
|
i0.ɵɵproperty("ngClass", ctx_r0.containerClasses());
|
|
54822
54823
|
i0.ɵɵadvance();
|
|
54823
54824
|
i0.ɵɵclassMap(ctx_r0.overlaySizeClasses());
|
|
@@ -54844,6 +54845,7 @@ function PacingStatusBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
54844
54845
|
} if (rf & 2) {
|
|
54845
54846
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
54846
54847
|
i0.ɵɵclassMap(ctx_r0.fullBadgeSizeClasses());
|
|
54848
|
+
i0.ɵɵstyleProp("transform", ctx_r0.fullBadgeRotationStyle());
|
|
54847
54849
|
i0.ɵɵproperty("ngClass", ctx_r0.badgeClasses());
|
|
54848
54850
|
i0.ɵɵadvance();
|
|
54849
54851
|
i0.ɵɵclassMap(ctx_r0.iconSizeClasses());
|
|
@@ -54854,7 +54856,8 @@ function PacingStatusBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1
|
|
|
54854
54856
|
i0.ɵɵtextInterpolate(ctx_r0.displayText());
|
|
54855
54857
|
} }
|
|
54856
54858
|
class PacingStatusBadgeComponent {
|
|
54857
|
-
constructor() {
|
|
54859
|
+
constructor(elementRef) {
|
|
54860
|
+
this.elementRef = elementRef;
|
|
54858
54861
|
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
54859
54862
|
this.pacingPercentage = input(0, ...(ngDevMode ? [{ debugName: "pacingPercentage" }] : []));
|
|
54860
54863
|
this.status = input('on-pace', ...(ngDevMode ? [{ debugName: "status" }] : []));
|
|
@@ -54862,6 +54865,9 @@ class PacingStatusBadgeComponent {
|
|
|
54862
54865
|
this.isCompact = input(false, ...(ngDevMode ? [{ debugName: "isCompact" }] : []));
|
|
54863
54866
|
this.showEmphasizedPercentage = input(false, ...(ngDevMode ? [{ debugName: "showEmphasizedPercentage" }] : []));
|
|
54864
54867
|
this.animatedValue = signal(0, ...(ngDevMode ? [{ debugName: "animatedValue" }] : []));
|
|
54868
|
+
this.animationProgress = signal(0, ...(ngDevMode ? [{ debugName: "animationProgress" }] : []));
|
|
54869
|
+
this.hasAnimated = signal(false, ...(ngDevMode ? [{ debugName: "hasAnimated" }] : []));
|
|
54870
|
+
this.observer = null;
|
|
54865
54871
|
this.displayInfo = computed(() => {
|
|
54866
54872
|
const isDark = this.viewMode() === ViewModeEnum.DARK;
|
|
54867
54873
|
return getPacingDisplayInfo(this.pacingPercentage(), this.status(), isDark);
|
|
@@ -54870,14 +54876,28 @@ class PacingStatusBadgeComponent {
|
|
|
54870
54876
|
const info = this.displayInfo();
|
|
54871
54877
|
return `${info.bgClass} ${info.borderClass} border`;
|
|
54872
54878
|
}, ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
|
|
54879
|
+
this.targetRotation = computed(() => {
|
|
54880
|
+
const status = this.status();
|
|
54881
|
+
return status === 'ahead' ? -1 : status === 'behind' ? 1 : 0;
|
|
54882
|
+
}, ...(ngDevMode ? [{ debugName: "targetRotation" }] : []));
|
|
54883
|
+
this.rotationStyle = computed(() => {
|
|
54884
|
+
const progress = this.animationProgress();
|
|
54885
|
+
const target = this.targetRotation();
|
|
54886
|
+
const currentRotation = progress * target;
|
|
54887
|
+
return `rotate(${currentRotation}deg)`;
|
|
54888
|
+
}, ...(ngDevMode ? [{ debugName: "rotationStyle" }] : []));
|
|
54889
|
+
this.fullBadgeRotationStyle = computed(() => {
|
|
54890
|
+
const progress = this.animationProgress();
|
|
54891
|
+
const target = this.targetRotation();
|
|
54892
|
+
const currentRotation = progress * target;
|
|
54893
|
+
return `rotate(${currentRotation}deg)`;
|
|
54894
|
+
}, ...(ngDevMode ? [{ debugName: "fullBadgeRotationStyle" }] : []));
|
|
54873
54895
|
this.containerSizeClasses = computed(() => {
|
|
54874
54896
|
const compact = this.isCompact();
|
|
54875
|
-
const status = this.status();
|
|
54876
|
-
const tiltClass = status === 'ahead' ? '-rotate-1' : status === 'behind' ? 'rotate-1' : '';
|
|
54877
54897
|
const baseClasses = 'inline-flex flex-row items-center rounded-xl border-2 overflow-visible transition-transform hover:rotate-0';
|
|
54878
54898
|
return compact
|
|
54879
|
-
? `${baseClasses} pl-1.5
|
|
54880
|
-
: `${baseClasses} pl-2
|
|
54899
|
+
? `${baseClasses} pl-1.5`
|
|
54900
|
+
: `${baseClasses} pl-2`;
|
|
54881
54901
|
}, ...(ngDevMode ? [{ debugName: "containerSizeClasses" }] : []));
|
|
54882
54902
|
this.badgeClasses = computed(() => {
|
|
54883
54903
|
const info = this.displayInfo();
|
|
@@ -54893,9 +54913,7 @@ class PacingStatusBadgeComponent {
|
|
|
54893
54913
|
}, ...(ngDevMode ? [{ debugName: "sizeClasses" }] : []));
|
|
54894
54914
|
this.fullBadgeSizeClasses = computed(() => {
|
|
54895
54915
|
const isCompact = this.isCompact();
|
|
54896
|
-
const
|
|
54897
|
-
const tiltClass = status === 'ahead' ? '-rotate-1' : status === 'behind' ? 'rotate-1' : '';
|
|
54898
|
-
const baseClasses = `inline-flex items-center gap-1.5 rounded-xl border-2 font-bold tracking-wide shadow-md transition-all hover:rotate-0 ${tiltClass}`;
|
|
54916
|
+
const baseClasses = 'inline-flex items-center gap-1.5 rounded-xl border-2 font-bold tracking-wide shadow-md transition-all hover:rotate-0';
|
|
54899
54917
|
if (isCompact) {
|
|
54900
54918
|
return `${baseClasses} px-2.5 py-1 text-xs`;
|
|
54901
54919
|
}
|
|
@@ -54964,14 +54982,34 @@ class PacingStatusBadgeComponent {
|
|
|
54964
54982
|
this.overlaySizeClasses = computed(() => {
|
|
54965
54983
|
const compact = this.isCompact();
|
|
54966
54984
|
return compact
|
|
54967
|
-
? 'px-2 py-1.5 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5'
|
|
54968
|
-
: 'px-2.5 py-2 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1';
|
|
54985
|
+
? 'px-2 py-1.5 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5 tabular-nums'
|
|
54986
|
+
: 'px-2.5 py-2 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1 tabular-nums';
|
|
54969
54987
|
}, ...(ngDevMode ? [{ debugName: "overlaySizeClasses" }] : []));
|
|
54988
|
+
this.setupIntersectionObserver();
|
|
54970
54989
|
effect(() => {
|
|
54971
54990
|
const target = Math.abs(this.pacingPercentage());
|
|
54972
|
-
this.
|
|
54991
|
+
if (this.hasAnimated()) {
|
|
54992
|
+
this.animateValue(target);
|
|
54993
|
+
}
|
|
54973
54994
|
});
|
|
54974
54995
|
}
|
|
54996
|
+
ngOnDestroy() {
|
|
54997
|
+
if (this.observer) {
|
|
54998
|
+
this.observer.disconnect();
|
|
54999
|
+
}
|
|
55000
|
+
}
|
|
55001
|
+
setupIntersectionObserver() {
|
|
55002
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
55003
|
+
entries.forEach((entry) => {
|
|
55004
|
+
if (entry.isIntersecting && !this.hasAnimated()) {
|
|
55005
|
+
this.hasAnimated.set(true);
|
|
55006
|
+
const target = Math.abs(this.pacingPercentage());
|
|
55007
|
+
this.animateValue(target);
|
|
55008
|
+
}
|
|
55009
|
+
});
|
|
55010
|
+
}, { threshold: 0.1 });
|
|
55011
|
+
this.observer.observe(this.elementRef.nativeElement);
|
|
55012
|
+
}
|
|
54975
55013
|
animateValue(target) {
|
|
54976
55014
|
const start = 0;
|
|
54977
55015
|
const duration = 800;
|
|
@@ -54982,15 +55020,16 @@ class PacingStatusBadgeComponent {
|
|
|
54982
55020
|
const easeOutQuart = 1 - Math.pow(1 - progress, 4);
|
|
54983
55021
|
const current = start + (target - start) * easeOutQuart;
|
|
54984
55022
|
this.animatedValue.set(current);
|
|
55023
|
+
this.animationProgress.set(progress);
|
|
54985
55024
|
if (progress < 1) {
|
|
54986
55025
|
requestAnimationFrame(animate);
|
|
54987
55026
|
}
|
|
54988
55027
|
};
|
|
54989
55028
|
requestAnimationFrame(animate);
|
|
54990
55029
|
}
|
|
54991
|
-
static { this.ɵfac = function PacingStatusBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PacingStatusBadgeComponent)(); }; }
|
|
54992
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PacingStatusBadgeComponent, selectors: [["symphiq-pacing-status-badge"]], inputs: { viewMode: [1, "viewMode"], pacingPercentage: [1, "pacingPercentage"], status: [1, "status"], showAsFullText: [1, "showAsFullText"], isCompact: [1, "isCompact"], showEmphasizedPercentage: [1, "showEmphasizedPercentage"] }, decls: 2, vars: 1, consts: [[3, "ngClass", "class"], [3, "ngClass"]], template: function PacingStatusBadgeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
54993
|
-
i0.ɵɵconditionalCreate(0, PacingStatusBadgeComponent_Conditional_0_Template, 8,
|
|
55030
|
+
static { this.ɵfac = function PacingStatusBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PacingStatusBadgeComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
55031
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PacingStatusBadgeComponent, selectors: [["symphiq-pacing-status-badge"]], inputs: { viewMode: [1, "viewMode"], pacingPercentage: [1, "pacingPercentage"], status: [1, "status"], showAsFullText: [1, "showAsFullText"], isCompact: [1, "isCompact"], showEmphasizedPercentage: [1, "showEmphasizedPercentage"] }, decls: 2, vars: 1, consts: [[3, "ngClass", "class", "transform"], [3, "ngClass"]], template: function PacingStatusBadgeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55032
|
+
i0.ɵɵconditionalCreate(0, PacingStatusBadgeComponent_Conditional_0_Template, 8, 16, "div", 0)(1, PacingStatusBadgeComponent_Conditional_1_Template, 5, 10, "div", 0);
|
|
54994
55033
|
} if (rf & 2) {
|
|
54995
55034
|
i0.ɵɵconditional(ctx.showEmphasizedPercentage() && ctx.hasPercentage() ? 0 : 1);
|
|
54996
55035
|
} }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
|
|
@@ -55004,7 +55043,11 @@ class PacingStatusBadgeComponent {
|
|
|
55004
55043
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55005
55044
|
template: `
|
|
55006
55045
|
@if (showEmphasizedPercentage() && hasPercentage()) {
|
|
55007
|
-
<div
|
|
55046
|
+
<div
|
|
55047
|
+
[ngClass]="containerClasses()"
|
|
55048
|
+
[class]="containerSizeClasses()"
|
|
55049
|
+
[style.transform]="rotationStyle()"
|
|
55050
|
+
>
|
|
55008
55051
|
<div [ngClass]="overlayBadgeClasses()" [class]="overlaySizeClasses()">
|
|
55009
55052
|
<span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
|
|
55010
55053
|
{{ iconSymbol() }}
|
|
@@ -55021,6 +55064,7 @@ class PacingStatusBadgeComponent {
|
|
|
55021
55064
|
<div
|
|
55022
55065
|
[ngClass]="badgeClasses()"
|
|
55023
55066
|
[class]="fullBadgeSizeClasses()"
|
|
55067
|
+
[style.transform]="fullBadgeRotationStyle()"
|
|
55024
55068
|
>
|
|
55025
55069
|
<span [ngClass]="iconClasses()" [class]="iconSizeClasses()">
|
|
55026
55070
|
{{ iconSymbol() }}
|
|
@@ -55030,18 +55074,22 @@ class PacingStatusBadgeComponent {
|
|
|
55030
55074
|
}
|
|
55031
55075
|
`
|
|
55032
55076
|
}]
|
|
55033
|
-
}], () => [], { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], pacingPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingPercentage", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], showAsFullText: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAsFullText", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }], showEmphasizedPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEmphasizedPercentage", required: false }] }] }); })();
|
|
55034
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PacingStatusBadgeComponent, { className: "PacingStatusBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/pacing-status-badge.component.ts", lineNumber:
|
|
55077
|
+
}], () => [{ type: i0.ElementRef }], { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], pacingPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingPercentage", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], showAsFullText: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAsFullText", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }], showEmphasizedPercentage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEmphasizedPercentage", required: false }] }] }); })();
|
|
55078
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PacingStatusBadgeComponent, { className: "PacingStatusBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/pacing-status-badge.component.ts", lineNumber: 44 }); })();
|
|
55035
55079
|
|
|
55036
55080
|
class TargetChangeBadgeComponent {
|
|
55037
|
-
constructor() {
|
|
55081
|
+
constructor(elementRef) {
|
|
55082
|
+
this.elementRef = elementRef;
|
|
55038
55083
|
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
55039
55084
|
this.percentageChange = input(0, ...(ngDevMode ? [{ debugName: "percentageChange" }] : []));
|
|
55040
55085
|
this.metric = input('', ...(ngDevMode ? [{ debugName: "metric" }] : []));
|
|
55041
55086
|
this.priorYear = input(new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
|
|
55042
55087
|
this.isCompact = input(false, ...(ngDevMode ? [{ debugName: "isCompact" }] : []));
|
|
55043
55088
|
this.animatedValue = signal(0, ...(ngDevMode ? [{ debugName: "animatedValue" }] : []));
|
|
55089
|
+
this.animationProgress = signal(0, ...(ngDevMode ? [{ debugName: "animationProgress" }] : []));
|
|
55090
|
+
this.hasAnimated = signal(false, ...(ngDevMode ? [{ debugName: "hasAnimated" }] : []));
|
|
55044
55091
|
this.isDark = computed(() => this.viewMode() === ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "isDark" }] : []));
|
|
55092
|
+
this.observer = null;
|
|
55045
55093
|
this.isIncreaseBad = computed(() => {
|
|
55046
55094
|
const metricStr = this.metric();
|
|
55047
55095
|
if (!metricStr)
|
|
@@ -55072,14 +55120,22 @@ class TargetChangeBadgeComponent {
|
|
|
55072
55120
|
: 'bg-purple-50 border-purple-200';
|
|
55073
55121
|
}, ...(ngDevMode ? [{ debugName: "containerClasses" }] : []));
|
|
55074
55122
|
this.isIncrease = computed(() => this.percentageChange() > 0, ...(ngDevMode ? [{ debugName: "isIncrease" }] : []));
|
|
55123
|
+
this.targetRotation = computed(() => {
|
|
55124
|
+
const change = this.percentageChange();
|
|
55125
|
+
return change > 0 ? -1 : change < 0 ? 1 : 0;
|
|
55126
|
+
}, ...(ngDevMode ? [{ debugName: "targetRotation" }] : []));
|
|
55127
|
+
this.rotationStyle = computed(() => {
|
|
55128
|
+
const progress = this.animationProgress();
|
|
55129
|
+
const target = this.targetRotation();
|
|
55130
|
+
const currentRotation = progress * target;
|
|
55131
|
+
return `rotate(${currentRotation}deg)`;
|
|
55132
|
+
}, ...(ngDevMode ? [{ debugName: "rotationStyle" }] : []));
|
|
55075
55133
|
this.containerSizeClasses = computed(() => {
|
|
55076
55134
|
const compact = this.isCompact();
|
|
55077
|
-
const change = this.percentageChange();
|
|
55078
|
-
const tiltClass = change > 0 ? '-rotate-1' : change < 0 ? 'rotate-1' : '';
|
|
55079
55135
|
const baseClasses = 'inline-flex flex-row items-center rounded-xl border-2 overflow-visible transition-transform hover:rotate-0';
|
|
55080
55136
|
return compact
|
|
55081
|
-
? `${baseClasses} pl-1.5
|
|
55082
|
-
: `${baseClasses} pl-2
|
|
55137
|
+
? `${baseClasses} pl-1.5`
|
|
55138
|
+
: `${baseClasses} pl-2`;
|
|
55083
55139
|
}, ...(ngDevMode ? [{ debugName: "containerSizeClasses" }] : []));
|
|
55084
55140
|
this.overlayClasses = computed(() => {
|
|
55085
55141
|
const dark = this.isDark();
|
|
@@ -55090,8 +55146,8 @@ class TargetChangeBadgeComponent {
|
|
|
55090
55146
|
this.overlaySizeClasses = computed(() => {
|
|
55091
55147
|
const compact = this.isCompact();
|
|
55092
55148
|
return compact
|
|
55093
|
-
? 'px-2 py-1.5 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5'
|
|
55094
|
-
: 'px-2.5 py-2 rounded-lg font-extrabold text-base tracking-wide shadow-md transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1';
|
|
55149
|
+
? 'px-2 py-1.5 rounded-lg text-sm font-extrabold tracking-wide shadow-md transition-all duration-200 -my-1 -mr-1 z-10 inline-flex items-center gap-0.5 tabular-nums'
|
|
55150
|
+
: 'px-2.5 py-2 rounded-lg font-extrabold text-base tracking-wide shadow-md transition-all duration-200 -my-1.5 -mr-1 z-10 inline-flex items-center gap-1 tabular-nums';
|
|
55095
55151
|
}, ...(ngDevMode ? [{ debugName: "overlaySizeClasses" }] : []));
|
|
55096
55152
|
this.iconSizeClass = computed(() => {
|
|
55097
55153
|
return this.isCompact() ? 'text-sm' : 'text-base';
|
|
@@ -55102,11 +55158,31 @@ class TargetChangeBadgeComponent {
|
|
|
55102
55158
|
? 'px-2.5 py-0.5 text-xs font-semibold inline-block'
|
|
55103
55159
|
: 'px-3 py-0.5 font-semibold text-xs inline-block';
|
|
55104
55160
|
}, ...(ngDevMode ? [{ debugName: "descriptionSizeClasses" }] : []));
|
|
55161
|
+
this.setupIntersectionObserver();
|
|
55105
55162
|
effect(() => {
|
|
55106
55163
|
const target = this.percentageChange();
|
|
55107
|
-
this.
|
|
55164
|
+
if (this.hasAnimated()) {
|
|
55165
|
+
this.animateValue(target);
|
|
55166
|
+
}
|
|
55108
55167
|
});
|
|
55109
55168
|
}
|
|
55169
|
+
ngOnDestroy() {
|
|
55170
|
+
if (this.observer) {
|
|
55171
|
+
this.observer.disconnect();
|
|
55172
|
+
}
|
|
55173
|
+
}
|
|
55174
|
+
setupIntersectionObserver() {
|
|
55175
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
55176
|
+
entries.forEach((entry) => {
|
|
55177
|
+
if (entry.isIntersecting && !this.hasAnimated()) {
|
|
55178
|
+
this.hasAnimated.set(true);
|
|
55179
|
+
const target = this.percentageChange();
|
|
55180
|
+
this.animateValue(target);
|
|
55181
|
+
}
|
|
55182
|
+
});
|
|
55183
|
+
}, { threshold: 0.1 });
|
|
55184
|
+
this.observer.observe(this.elementRef.nativeElement);
|
|
55185
|
+
}
|
|
55110
55186
|
animateValue(target) {
|
|
55111
55187
|
const start = 0;
|
|
55112
55188
|
const duration = 800;
|
|
@@ -55117,14 +55193,15 @@ class TargetChangeBadgeComponent {
|
|
|
55117
55193
|
const easeOutQuart = 1 - Math.pow(1 - progress, 4);
|
|
55118
55194
|
const current = start + (target - start) * easeOutQuart;
|
|
55119
55195
|
this.animatedValue.set(current);
|
|
55196
|
+
this.animationProgress.set(progress);
|
|
55120
55197
|
if (progress < 1) {
|
|
55121
55198
|
requestAnimationFrame(animate);
|
|
55122
55199
|
}
|
|
55123
55200
|
};
|
|
55124
55201
|
requestAnimationFrame(animate);
|
|
55125
55202
|
}
|
|
55126
|
-
static { this.ɵfac = function TargetChangeBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TargetChangeBadgeComponent)(); }; }
|
|
55127
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TargetChangeBadgeComponent, selectors: [["symphiq-target-change-badge"]], inputs: { viewMode: [1, "viewMode"], percentageChange: [1, "percentageChange"], metric: [1, "metric"], priorYear: [1, "priorYear"], isCompact: [1, "isCompact"] }, decls: 7, vars:
|
|
55203
|
+
static { this.ɵfac = function TargetChangeBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TargetChangeBadgeComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
55204
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TargetChangeBadgeComponent, selectors: [["symphiq-target-change-badge"]], inputs: { viewMode: [1, "viewMode"], percentageChange: [1, "percentageChange"], metric: [1, "metric"], priorYear: [1, "priorYear"], isCompact: [1, "isCompact"] }, decls: 7, vars: 15, consts: [[3, "ngClass"]], template: function TargetChangeBadgeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55128
55205
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 0)(2, "span");
|
|
55129
55206
|
i0.ɵɵtext(3);
|
|
55130
55207
|
i0.ɵɵelementEnd();
|
|
@@ -55135,6 +55212,7 @@ class TargetChangeBadgeComponent {
|
|
|
55135
55212
|
i0.ɵɵelementEnd()();
|
|
55136
55213
|
} if (rf & 2) {
|
|
55137
55214
|
i0.ɵɵclassMap(ctx.containerSizeClasses());
|
|
55215
|
+
i0.ɵɵstyleProp("transform", ctx.rotationStyle());
|
|
55138
55216
|
i0.ɵɵproperty("ngClass", ctx.containerClasses());
|
|
55139
55217
|
i0.ɵɵadvance();
|
|
55140
55218
|
i0.ɵɵclassMap(ctx.overlaySizeClasses());
|
|
@@ -55159,7 +55237,11 @@ class TargetChangeBadgeComponent {
|
|
|
55159
55237
|
imports: [CommonModule],
|
|
55160
55238
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55161
55239
|
template: `
|
|
55162
|
-
<div
|
|
55240
|
+
<div
|
|
55241
|
+
[ngClass]="containerClasses()"
|
|
55242
|
+
[class]="containerSizeClasses()"
|
|
55243
|
+
[style.transform]="rotationStyle()"
|
|
55244
|
+
>
|
|
55163
55245
|
<div [ngClass]="overlayClasses()" [class]="overlaySizeClasses()">
|
|
55164
55246
|
<span [class]="iconSizeClass()">{{ iconSymbol() }}</span>
|
|
55165
55247
|
{{ animatedPercentageText() }}
|
|
@@ -55170,8 +55252,8 @@ class TargetChangeBadgeComponent {
|
|
|
55170
55252
|
</div>
|
|
55171
55253
|
`
|
|
55172
55254
|
}]
|
|
55173
|
-
}], () => [], { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], percentageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "percentageChange", required: false }] }], metric: [{ type: i0.Input, args: [{ isSignal: true, alias: "metric", required: false }] }], priorYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "priorYear", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }] }); })();
|
|
55174
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TargetChangeBadgeComponent, { className: "TargetChangeBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/target-change-badge.component.ts", lineNumber:
|
|
55255
|
+
}], () => [{ type: i0.ElementRef }], { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], percentageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "percentageChange", required: false }] }], metric: [{ type: i0.Input, args: [{ isSignal: true, alias: "metric", required: false }] }], priorYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "priorYear", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }] }); })();
|
|
55256
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TargetChangeBadgeComponent, { className: "TargetChangeBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/target-change-badge.component.ts", lineNumber: 27 }); })();
|
|
55175
55257
|
|
|
55176
55258
|
const _forTrack0$j = ($index, $item) => $item.stageMetric.metric;
|
|
55177
55259
|
const _forTrack1$3 = ($index, $item) => $item.calc.metric;
|
|
@@ -57071,10 +57153,10 @@ class LineChartComponent {
|
|
|
57071
57153
|
}
|
|
57072
57154
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LineChartComponent, [{
|
|
57073
57155
|
type: Component,
|
|
57074
|
-
args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
57075
|
-
<div class="chart-container" [class.mini-mode]="!showAxisLabels()">
|
|
57076
|
-
<div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
|
|
57077
|
-
</div>
|
|
57156
|
+
args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
57157
|
+
<div class="chart-container" [class.mini-mode]="!showAxisLabels()">
|
|
57158
|
+
<div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
|
|
57159
|
+
</div>
|
|
57078
57160
|
`, styles: [".chart-container{width:100%;padding:1rem}.chart-container.mini-mode{padding:.25rem}\n"] }]
|
|
57079
57161
|
}], () => [], { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: false }] }], showAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAxisLabels", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], chartDiv: [{
|
|
57080
57162
|
type: ViewChild,
|
|
@@ -57365,12 +57447,12 @@ const _forTrack0$i = ($index, $item) => $item.metric;
|
|
|
57365
57447
|
function MetricReportModalComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
57366
57448
|
i0.ɵɵelementStart(0, "button", 11);
|
|
57367
57449
|
i0.ɵɵnamespaceSVG();
|
|
57368
|
-
i0.ɵɵelementStart(1, "svg",
|
|
57369
|
-
i0.ɵɵelement(2, "path",
|
|
57450
|
+
i0.ɵɵelementStart(1, "svg", 33);
|
|
57451
|
+
i0.ɵɵelement(2, "path", 34);
|
|
57370
57452
|
i0.ɵɵelementEnd()();
|
|
57371
57453
|
} if (rf & 2) {
|
|
57372
57454
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57373
|
-
i0.ɵɵproperty("ngClass", ctx_r1.headerInfoIconClasses())("libSymphiqTooltip", ctx_r1.metricData().description);
|
|
57455
|
+
i0.ɵɵproperty("ngClass", ctx_r1.headerInfoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(ctx_r1.metricData().description, ctx_r1.metricTitle()));
|
|
57374
57456
|
} }
|
|
57375
57457
|
function MetricReportModalComponent_Conditional_0_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
57376
57458
|
i0.ɵɵelement(0, "symphiq-target-change-badge", 23);
|
|
@@ -57380,13 +57462,13 @@ function MetricReportModalComponent_Conditional_0_Conditional_32_Template(rf, ct
|
|
|
57380
57462
|
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", ctx_r1.ytdChangePercentage())("metric", ((tmp_4_0 = ctx_r1.metricData()) == null ? null : tmp_4_0.metric) || "")("priorYear", ctx_r1.priorYear())("isCompact", true);
|
|
57381
57463
|
} }
|
|
57382
57464
|
function MetricReportModalComponent_Conditional_0_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
57383
|
-
i0.ɵɵelementStart(0, "div")(1, "p",
|
|
57465
|
+
i0.ɵɵelementStart(0, "div")(1, "p", 25);
|
|
57384
57466
|
i0.ɵɵtext(2);
|
|
57385
57467
|
i0.ɵɵelementEnd();
|
|
57386
57468
|
i0.ɵɵelementStart(3, "p", 22);
|
|
57387
57469
|
i0.ɵɵtext(4);
|
|
57388
57470
|
i0.ɵɵelementEnd();
|
|
57389
|
-
i0.ɵɵelement(5, "symphiq-pacing-status-badge",
|
|
57471
|
+
i0.ɵɵelement(5, "symphiq-pacing-status-badge", 35);
|
|
57390
57472
|
i0.ɵɵelementEnd();
|
|
57391
57473
|
} if (rf & 2) {
|
|
57392
57474
|
let tmp_5_0;
|
|
@@ -57403,13 +57485,13 @@ function MetricReportModalComponent_Conditional_0_Conditional_48_Template(rf, ct
|
|
|
57403
57485
|
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", ctx_r1.pacingInfo().pacingPercentage)("status", ctx_r1.pacingInfo().status)("showAsFullText", false)("isCompact", true)("showEmphasizedPercentage", true);
|
|
57404
57486
|
} }
|
|
57405
57487
|
function MetricReportModalComponent_Conditional_0_Conditional_64_Template(rf, ctx) { if (rf & 1) {
|
|
57406
|
-
i0.ɵɵelementStart(0, "div",
|
|
57407
|
-
i0.ɵɵelement(1, "symphiq-pacing-status-badge",
|
|
57488
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
57489
|
+
i0.ɵɵelement(1, "symphiq-pacing-status-badge", 35);
|
|
57408
57490
|
i0.ɵɵelementEnd();
|
|
57409
|
-
i0.ɵɵelementStart(2, "div",
|
|
57491
|
+
i0.ɵɵelementStart(2, "div", 26)(3, "p", 29);
|
|
57410
57492
|
i0.ɵɵtext(4);
|
|
57411
57493
|
i0.ɵɵelementEnd()();
|
|
57412
|
-
i0.ɵɵelement(5, "symphiq-progress-to-target-chart",
|
|
57494
|
+
i0.ɵɵelement(5, "symphiq-progress-to-target-chart", 36);
|
|
57413
57495
|
} if (rf & 2) {
|
|
57414
57496
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57415
57497
|
i0.ɵɵadvance();
|
|
@@ -57422,10 +57504,10 @@ function MetricReportModalComponent_Conditional_0_Conditional_64_Template(rf, ct
|
|
|
57422
57504
|
i0.ɵɵproperty("data", ctx_r1.progressToTargetData())("viewMode", ctx_r1.viewMode());
|
|
57423
57505
|
} }
|
|
57424
57506
|
function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
57425
|
-
i0.ɵɵelementStart(0, "button",
|
|
57507
|
+
i0.ɵɵelementStart(0, "button", 46);
|
|
57426
57508
|
i0.ɵɵnamespaceSVG();
|
|
57427
|
-
i0.ɵɵelementStart(1, "svg",
|
|
57428
|
-
i0.ɵɵelement(2, "path",
|
|
57509
|
+
i0.ɵɵelementStart(1, "svg", 52);
|
|
57510
|
+
i0.ɵɵelement(2, "path", 34);
|
|
57429
57511
|
i0.ɵɵelementEnd()();
|
|
57430
57512
|
} if (rf & 2) {
|
|
57431
57513
|
const metric_r3 = i0.ɵɵnextContext().$implicit;
|
|
@@ -57433,20 +57515,20 @@ function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditio
|
|
|
57433
57515
|
i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r3.description, ctx_r1.getMetricTitle(metric_r3)));
|
|
57434
57516
|
} }
|
|
57435
57517
|
function MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template(rf, ctx) { if (rf & 1) {
|
|
57436
|
-
i0.ɵɵelementStart(0, "tr",
|
|
57518
|
+
i0.ɵɵelementStart(0, "tr", 42)(1, "td", 43)(2, "div", 44)(3, "span", 45);
|
|
57437
57519
|
i0.ɵɵtext(4);
|
|
57438
57520
|
i0.ɵɵelementEnd();
|
|
57439
|
-
i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template, 3, 2, "button",
|
|
57521
|
+
i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Conditional_5_Template, 3, 2, "button", 46);
|
|
57440
57522
|
i0.ɵɵelementEnd()();
|
|
57441
|
-
i0.ɵɵelementStart(6, "td",
|
|
57523
|
+
i0.ɵɵelementStart(6, "td", 47)(7, "span", 48);
|
|
57442
57524
|
i0.ɵɵtext(8);
|
|
57443
57525
|
i0.ɵɵelementEnd()();
|
|
57444
|
-
i0.ɵɵelementStart(9, "td",
|
|
57526
|
+
i0.ɵɵelementStart(9, "td", 47)(10, "div", 49)(11, "span", 45);
|
|
57445
57527
|
i0.ɵɵtext(12);
|
|
57446
57528
|
i0.ɵɵelementEnd();
|
|
57447
57529
|
i0.ɵɵnamespaceSVG();
|
|
57448
|
-
i0.ɵɵelementStart(13, "svg",
|
|
57449
|
-
i0.ɵɵelement(14, "path",
|
|
57530
|
+
i0.ɵɵelementStart(13, "svg", 50);
|
|
57531
|
+
i0.ɵɵelement(14, "path", 51);
|
|
57450
57532
|
i0.ɵɵelementEnd()()()();
|
|
57451
57533
|
} if (rf & 2) {
|
|
57452
57534
|
const metric_r3 = ctx.$implicit;
|
|
@@ -57469,17 +57551,17 @@ function MetricReportModalComponent_Conditional_0_Conditional_65_Template(rf, ct
|
|
|
57469
57551
|
i0.ɵɵelementStart(0, "div", 16)(1, "h4", 17);
|
|
57470
57552
|
i0.ɵɵtext(2, " Contributing Metric Targets ");
|
|
57471
57553
|
i0.ɵɵelementEnd();
|
|
57472
|
-
i0.ɵɵelementStart(3, "div",
|
|
57554
|
+
i0.ɵɵelementStart(3, "div", 37)(4, "table", 38)(5, "thead")(6, "tr", 39)(7, "th", 40);
|
|
57473
57555
|
i0.ɵɵtext(8, "Metric");
|
|
57474
57556
|
i0.ɵɵelementEnd();
|
|
57475
|
-
i0.ɵɵelementStart(9, "th",
|
|
57557
|
+
i0.ɵɵelementStart(9, "th", 41);
|
|
57476
57558
|
i0.ɵɵtext(10, "Target");
|
|
57477
57559
|
i0.ɵɵelementEnd();
|
|
57478
|
-
i0.ɵɵelementStart(11, "th",
|
|
57560
|
+
i0.ɵɵelementStart(11, "th", 41);
|
|
57479
57561
|
i0.ɵɵtext(12, "Improve by");
|
|
57480
57562
|
i0.ɵɵelementEnd()()();
|
|
57481
57563
|
i0.ɵɵelementStart(13, "tbody");
|
|
57482
|
-
i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template, 15, 7, "tr",
|
|
57564
|
+
i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_65_For_15_Template, 15, 7, "tr", 42, _forTrack0$i);
|
|
57483
57565
|
i0.ɵɵelementEnd()()()();
|
|
57484
57566
|
} if (rf & 2) {
|
|
57485
57567
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -57492,19 +57574,19 @@ function MetricReportModalComponent_Conditional_0_Conditional_65_Template(rf, ct
|
|
|
57492
57574
|
i0.ɵɵrepeater(ctx_r1.contributingMetrics());
|
|
57493
57575
|
} }
|
|
57494
57576
|
function MetricReportModalComponent_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
|
|
57495
|
-
i0.ɵɵelementStart(0, "div",
|
|
57577
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "h4", 17);
|
|
57496
57578
|
i0.ɵɵtext(2, " Pace ");
|
|
57497
57579
|
i0.ɵɵelementEnd();
|
|
57498
|
-
i0.ɵɵelementStart(3, "div",
|
|
57499
|
-
i0.ɵɵelement(4, "symphiq-line-chart",
|
|
57580
|
+
i0.ɵɵelementStart(3, "div", 53);
|
|
57581
|
+
i0.ɵɵelement(4, "symphiq-line-chart", 54);
|
|
57500
57582
|
i0.ɵɵelementEnd();
|
|
57501
|
-
i0.ɵɵelementStart(5, "p",
|
|
57583
|
+
i0.ɵɵelementStart(5, "p", 55);
|
|
57502
57584
|
i0.ɵɵtext(6);
|
|
57503
57585
|
i0.ɵɵelementEnd();
|
|
57504
|
-
i0.ɵɵelementStart(7, "p",
|
|
57586
|
+
i0.ɵɵelementStart(7, "p", 56);
|
|
57505
57587
|
i0.ɵɵtext(8);
|
|
57506
57588
|
i0.ɵɵelementEnd();
|
|
57507
|
-
i0.ɵɵelementStart(9, "p",
|
|
57589
|
+
i0.ɵɵelementStart(9, "p", 56);
|
|
57508
57590
|
i0.ɵɵtext(10);
|
|
57509
57591
|
i0.ɵɵelementEnd()();
|
|
57510
57592
|
} if (rf & 2) {
|
|
@@ -57578,40 +57660,40 @@ function MetricReportModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
|
|
|
57578
57660
|
i0.ɵɵelementStart(39, "p", 21);
|
|
57579
57661
|
i0.ɵɵtext(40);
|
|
57580
57662
|
i0.ɵɵelementEnd()();
|
|
57581
|
-
i0.ɵɵelementStart(41, "p",
|
|
57663
|
+
i0.ɵɵelementStart(41, "p", 24);
|
|
57582
57664
|
i0.ɵɵtext(42);
|
|
57583
57665
|
i0.ɵɵelementEnd()();
|
|
57584
|
-
i0.ɵɵelementStart(43, "div")(44, "p",
|
|
57666
|
+
i0.ɵɵelementStart(43, "div")(44, "p", 25);
|
|
57585
57667
|
i0.ɵɵtext(45);
|
|
57586
57668
|
i0.ɵɵelementEnd();
|
|
57587
|
-
i0.ɵɵelementStart(46, "p",
|
|
57669
|
+
i0.ɵɵelementStart(46, "p", 24);
|
|
57588
57670
|
i0.ɵɵtext(47);
|
|
57589
57671
|
i0.ɵɵelementEnd()();
|
|
57590
57672
|
i0.ɵɵconditionalCreate(48, MetricReportModalComponent_Conditional_0_Conditional_48_Template, 6, 10, "div");
|
|
57591
|
-
i0.ɵɵelementStart(49, "div")(50, "p",
|
|
57673
|
+
i0.ɵɵelementStart(49, "div")(50, "p", 25);
|
|
57592
57674
|
i0.ɵɵtext(51);
|
|
57593
57675
|
i0.ɵɵelementEnd();
|
|
57594
|
-
i0.ɵɵelementStart(52, "p",
|
|
57676
|
+
i0.ɵɵelementStart(52, "p", 24);
|
|
57595
57677
|
i0.ɵɵtext(53);
|
|
57596
57678
|
i0.ɵɵelementEnd()()()();
|
|
57597
57679
|
i0.ɵɵelementStart(54, "div", 16)(55, "h4", 17);
|
|
57598
57680
|
i0.ɵɵtext(56, " Target Analysis ");
|
|
57599
57681
|
i0.ɵɵelementEnd();
|
|
57600
|
-
i0.ɵɵelementStart(57, "div",
|
|
57682
|
+
i0.ɵɵelementStart(57, "div", 26)(58, "p", 27);
|
|
57601
57683
|
i0.ɵɵtext(59, " Your Target ");
|
|
57602
57684
|
i0.ɵɵelementEnd();
|
|
57603
|
-
i0.ɵɵelementStart(60, "p",
|
|
57685
|
+
i0.ɵɵelementStart(60, "p", 28);
|
|
57604
57686
|
i0.ɵɵtext(61);
|
|
57605
57687
|
i0.ɵɵelementEnd();
|
|
57606
|
-
i0.ɵɵelementStart(62, "p",
|
|
57688
|
+
i0.ɵɵelementStart(62, "p", 29);
|
|
57607
57689
|
i0.ɵɵtext(63);
|
|
57608
57690
|
i0.ɵɵelementEnd()();
|
|
57609
57691
|
i0.ɵɵconditionalCreate(64, MetricReportModalComponent_Conditional_0_Conditional_64_Template, 6, 10);
|
|
57610
57692
|
i0.ɵɵelementEnd();
|
|
57611
57693
|
i0.ɵɵconditionalCreate(65, MetricReportModalComponent_Conditional_0_Conditional_65_Template, 16, 3, "div", 16);
|
|
57612
|
-
i0.ɵɵconditionalCreate(66, MetricReportModalComponent_Conditional_0_Conditional_66_Template, 11, 12, "div",
|
|
57694
|
+
i0.ɵɵconditionalCreate(66, MetricReportModalComponent_Conditional_0_Conditional_66_Template, 11, 12, "div", 30);
|
|
57613
57695
|
i0.ɵɵelementEnd();
|
|
57614
|
-
i0.ɵɵelementStart(67, "div",
|
|
57696
|
+
i0.ɵɵelementStart(67, "div", 31)(68, "button", 32);
|
|
57615
57697
|
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
57616
57698
|
i0.ɵɵtext(69, " Close ");
|
|
57617
57699
|
i0.ɵɵelementEnd()()()()();
|
|
@@ -57881,7 +57963,7 @@ class MetricReportModalComponent {
|
|
|
57881
57963
|
const metric = this.metricTitle();
|
|
57882
57964
|
const currentYear = this.currentYear();
|
|
57883
57965
|
const priorYear = this.priorYear();
|
|
57884
|
-
return `This chart shows the ${metric} performance trend for ${currentYear} (solid line), compared to ${priorYear} (dashed line), with the target projection (dotted line) for the remainder of the year.`;
|
|
57966
|
+
return `This chart shows the ${metric} performance trend for ${currentYear} (solid yellow line, this month includes projections), compared to ${priorYear} (dashed green line), with the target projection (dotted blue line) for the remainder of the year.`;
|
|
57885
57967
|
}, ...(ngDevMode ? [{ debugName: "chartLegendDescription" }] : []));
|
|
57886
57968
|
this.chartDescriptionSentence1 = computed(() => {
|
|
57887
57969
|
const metricData = this.metricData();
|
|
@@ -58138,7 +58220,7 @@ class MetricReportModalComponent {
|
|
|
58138
58220
|
: 'bg-slate-700 hover:bg-slate-600 text-white';
|
|
58139
58221
|
}
|
|
58140
58222
|
static { this.ɵfac = function MetricReportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MetricReportModalComponent)(); }; }
|
|
58141
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "flex", "items-center", "gap-3", "mb-2"], [1, "text-xl", "font-bold", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-7", "h-7", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors",
|
|
58223
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "flex", "items-center", "gap-3", "mb-2"], [1, "text-xl", "font-bold", "leading-none", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-7", "h-7", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "ml-4", "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-6", "max-h-[70vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [1, "rounded-xl", "p-6", "mb-6", 3, "ngClass"], [1, "text-sm", "font-semibold", "uppercase", "tracking-wider", "mb-4", 3, "ngClass"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6"], [1, "mb-1.5"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-xs", 3, "ngClass"], [1, "text-xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [1, "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-3xl", "font-extrabold", "mb-3", 3, "ngClass"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "rounded-xl", "p-6", 3, "ngClass"], [1, "px-6", "py-4", "border-t", 3, "ngClass"], [1, "w-full", "px-4", "py-2", "rounded-lg", "transition-all", "font-medium", "hover:scale-[1.02]", "active:scale-[0.98]", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"], [3, "data", "viewMode"], [1, "overflow-x-auto"], [1, "w-full"], [1, "border-b", 3, "ngClass"], [1, "text-left", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "text-right", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "border-b", "transition-colors", 3, "ngClass"], [1, "py-3", "px-4"], [1, "flex", "items-center", "gap-2"], [1, "text-sm", "font-medium"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-5", "h-5", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "py-3", "px-4", "text-right"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "justify-end", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-emerald-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], [1, "min-h-[400px]"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol"], [1, "text-sm", "leading-relaxed", "mt-4", 3, "ngClass"], [1, "text-sm", "leading-relaxed", "mt-2", 3, "ngClass"]], template: function MetricReportModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
58142
58224
|
i0.ɵɵconditionalCreate(0, MetricReportModalComponent_Conditional_0_Template, 70, 51, "div", 0);
|
|
58143
58225
|
} if (rf & 2) {
|
|
58144
58226
|
i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
|
|
@@ -58191,310 +58273,310 @@ class MetricReportModalComponent {
|
|
|
58191
58273
|
])
|
|
58192
58274
|
])
|
|
58193
58275
|
],
|
|
58194
|
-
template: `
|
|
58195
|
-
@if (isOpen()) {
|
|
58196
|
-
<div class="fixed inset-0 overflow-y-auto z-50" (click)="close()">
|
|
58197
|
-
<div class="flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:block sm:p-0">
|
|
58198
|
-
<div
|
|
58199
|
-
[ngClass]="backdropClasses()"
|
|
58200
|
-
class="fixed inset-0 backdrop-blur-md"
|
|
58201
|
-
aria-hidden="true"
|
|
58202
|
-
@fadeIn>
|
|
58203
|
-
</div>
|
|
58204
|
-
|
|
58205
|
-
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span>
|
|
58206
|
-
|
|
58207
|
-
<div
|
|
58208
|
-
(click)="$event.stopPropagation()"
|
|
58209
|
-
[ngClass]="modalContainerClasses()"
|
|
58210
|
-
class="relative inline-block align-bottom rounded-2xl text-left overflow-hidden shadow-xl sm:my-8 sm:align-middle sm:w-full sm:max-w-4xl border backdrop-blur-xl"
|
|
58211
|
-
@slideUpFade>
|
|
58212
|
-
|
|
58213
|
-
<!-- Header -->
|
|
58214
|
-
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b backdrop-blur-sm sticky top-0 z-10">
|
|
58215
|
-
<div class="flex items-start justify-between">
|
|
58216
|
-
<div class="flex-1">
|
|
58217
|
-
<div class="flex items-center gap-3 mb-2">
|
|
58218
|
-
<h3 [ngClass]="titleClasses()" class="text-xl font-bold">
|
|
58219
|
-
{{ metricTitle() }}
|
|
58220
|
-
</h3>
|
|
58221
|
-
@if (metricData()?.description) {
|
|
58222
|
-
<button
|
|
58223
|
-
type="button"
|
|
58224
|
-
[ngClass]="headerInfoIconClasses()"
|
|
58225
|
-
class="flex-shrink-0 w-7 h-7 rounded-full inline-flex items-center justify-center transition-colors
|
|
58226
|
-
[libSymphiqTooltip]="metricData()!.description
|
|
58227
|
-
tooltipType="markdown"
|
|
58228
|
-
tooltipPosition="right">
|
|
58229
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58230
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
58231
|
-
</svg>
|
|
58232
|
-
</button>
|
|
58233
|
-
}
|
|
58234
|
-
</div>
|
|
58235
|
-
</div>
|
|
58236
|
-
<button
|
|
58237
|
-
(click)="close()"
|
|
58238
|
-
[ngClass]="closeButtonClasses()"
|
|
58239
|
-
class="ml-4 transition-all rounded-lg p-1 hover:scale-110 active:scale-90">
|
|
58240
|
-
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58241
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
58242
|
-
</svg>
|
|
58243
|
-
</button>
|
|
58244
|
-
</div>
|
|
58245
|
-
</div>
|
|
58246
|
-
|
|
58247
|
-
<!-- Content -->
|
|
58248
|
-
<div [ngClass]="contentClasses()" class="px-6 py-6 max-h-[70vh] overflow-y-auto backdrop-blur-sm">
|
|
58249
|
-
<symphiq-tooltip-container />
|
|
58250
|
-
|
|
58251
|
-
<!-- At a Glance Summary -->
|
|
58252
|
-
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58253
|
-
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58254
|
-
At a Glance
|
|
58255
|
-
</h4>
|
|
58256
|
-
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
58257
|
-
<!-- YTD Value -->
|
|
58258
|
-
<div>
|
|
58259
|
-
<div class="mb-1.5">
|
|
58260
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
58261
|
-
Year to date
|
|
58262
|
-
</p>
|
|
58263
|
-
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58264
|
-
{{ ytdStartDate() }}
|
|
58265
|
-
</p>
|
|
58266
|
-
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58267
|
-
{{ ytdEndDate() }}
|
|
58268
|
-
</p>
|
|
58269
|
-
</div>
|
|
58270
|
-
<p [ngClass]="valueClasses()" class="text-xl font-bold mb-2">
|
|
58271
|
-
{{ formatMetricValue(ytdValue(), metricData()?.metric || '') }}
|
|
58272
|
-
</p>
|
|
58273
|
-
@if (ytdChangePercentage() !== null) {
|
|
58274
|
-
<symphiq-target-change-badge
|
|
58275
|
-
[viewMode]="viewMode()"
|
|
58276
|
-
[percentageChange]="ytdChangePercentage()!"
|
|
58277
|
-
[metric]="metricData()?.metric || ''"
|
|
58278
|
-
[priorYear]="priorYear()"
|
|
58279
|
-
[isCompact]="true"
|
|
58280
|
-
/>
|
|
58281
|
-
}
|
|
58282
|
-
</div>
|
|
58283
|
-
|
|
58284
|
-
<!-- Same Period Last Year -->
|
|
58285
|
-
<div>
|
|
58286
|
-
<div class="mb-1.5">
|
|
58287
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
58288
|
-
Same period last year
|
|
58289
|
-
</p>
|
|
58290
|
-
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58291
|
-
{{ priorYearStartDate() }}
|
|
58292
|
-
</p>
|
|
58293
|
-
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58294
|
-
{{ priorYearEndDate() }}
|
|
58295
|
-
</p>
|
|
58296
|
-
</div>
|
|
58297
|
-
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
58298
|
-
{{ formatMetricValue(samePeriodLastYearValue(), metricData()?.metric || '') }}
|
|
58299
|
-
</p>
|
|
58300
|
-
</div>
|
|
58301
|
-
|
|
58302
|
-
<!-- Full Last Year -->
|
|
58303
|
-
<div>
|
|
58304
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58305
|
-
Full {{ priorYear() }} Actual
|
|
58306
|
-
</p>
|
|
58307
|
-
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
58308
|
-
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}
|
|
58309
|
-
</p>
|
|
58310
|
-
</div>
|
|
58311
|
-
|
|
58312
|
-
<!-- Current Pace -->
|
|
58313
|
-
@if (pacingInfo()) {
|
|
58314
|
-
<div>
|
|
58315
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58316
|
-
Pace for {{ currentYear() }}
|
|
58317
|
-
</p>
|
|
58318
|
-
<p [ngClass]="projectedValueClasses()" class="text-xl font-bold mb-2">
|
|
58319
|
-
{{ formatMetricValue(pacingInfo()!.projectedValue, metricData()?.metric || '', false) }}
|
|
58320
|
-
</p>
|
|
58321
|
-
<symphiq-pacing-status-badge
|
|
58322
|
-
[viewMode]="viewMode()"
|
|
58323
|
-
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
58324
|
-
[status]="pacingInfo()!.status"
|
|
58325
|
-
[showAsFullText]="false"
|
|
58326
|
-
[isCompact]="true"
|
|
58327
|
-
[showEmphasizedPercentage]="true"
|
|
58328
|
-
/>
|
|
58329
|
-
</div>
|
|
58330
|
-
}
|
|
58331
|
-
|
|
58332
|
-
<!-- Current Target -->
|
|
58333
|
-
<div>
|
|
58334
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58335
|
-
{{ currentYear() }} Target
|
|
58336
|
-
</p>
|
|
58337
|
-
<p [ngClass]="targetValueClasses()" class="text-xl font-bold">
|
|
58338
|
-
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
58339
|
-
</p>
|
|
58340
|
-
</div>
|
|
58341
|
-
</div>
|
|
58342
|
-
</div>
|
|
58343
|
-
|
|
58344
|
-
<!-- Target Analysis -->
|
|
58345
|
-
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58346
|
-
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58347
|
-
Target Analysis
|
|
58348
|
-
</h4>
|
|
58349
|
-
|
|
58350
|
-
<div class="mb-4">
|
|
58351
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
58352
|
-
Your Target
|
|
58353
|
-
</p>
|
|
58354
|
-
<p [ngClass]="targetValueClasses()" class="text-3xl font-extrabold mb-3">
|
|
58355
|
-
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
58356
|
-
</p>
|
|
58357
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
58358
|
-
Your target represents a {{ formatPercentage(Math.abs(metricData()?.percentageIncrease || 0), 1) }}
|
|
58359
|
-
{{ (metricData()?.percentageIncrease || 0) >= 0 ? 'increase' : 'decrease' }}
|
|
58360
|
-
from your {{ priorYear() }} actual of
|
|
58361
|
-
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}.
|
|
58362
|
-
</p>
|
|
58363
|
-
</div>
|
|
58364
|
-
|
|
58365
|
-
@if (pacingInfo()) {
|
|
58366
|
-
<div class="mb-4">
|
|
58367
|
-
<symphiq-pacing-status-badge
|
|
58368
|
-
[viewMode]="viewMode()"
|
|
58369
|
-
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
58370
|
-
[status]="pacingInfo()!.status"
|
|
58371
|
-
[showAsFullText]="true"
|
|
58372
|
-
[isCompact]="false"
|
|
58373
|
-
[showEmphasizedPercentage]="true"
|
|
58374
|
-
/>
|
|
58375
|
-
</div>
|
|
58376
|
-
|
|
58377
|
-
<div class="mb-4">
|
|
58378
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
58379
|
-
{{ gapAnalysisText() }}
|
|
58380
|
-
</p>
|
|
58381
|
-
</div>
|
|
58382
|
-
|
|
58383
|
-
<!-- Progress to Target Chart -->
|
|
58384
|
-
<symphiq-progress-to-target-chart
|
|
58385
|
-
[data]="progressToTargetData()"
|
|
58386
|
-
[viewMode]="viewMode()"
|
|
58387
|
-
/>
|
|
58388
|
-
}
|
|
58389
|
-
</div>
|
|
58390
|
-
|
|
58391
|
-
<!-- Contributing Metrics Table (only for funnel stage metrics) -->
|
|
58392
|
-
@if (contributingMetrics().length > 0) {
|
|
58393
|
-
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58394
|
-
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58395
|
-
Contributing Metric Targets
|
|
58396
|
-
</h4>
|
|
58397
|
-
<div class="overflow-x-auto">
|
|
58398
|
-
<table class="w-full">
|
|
58399
|
-
<thead>
|
|
58400
|
-
<tr [ngClass]="tableHeaderClasses()" class="border-b">
|
|
58401
|
-
<th class="text-left py-3 px-4 text-xs font-semibold uppercase tracking-wider">Metric</th>
|
|
58402
|
-
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Target</th>
|
|
58403
|
-
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Improve by</th>
|
|
58404
|
-
</tr>
|
|
58405
|
-
</thead>
|
|
58406
|
-
<tbody>
|
|
58407
|
-
@for (metric of contributingMetrics(); track metric.metric) {
|
|
58408
|
-
<tr [ngClass]="tableRowClasses()" class="border-b transition-colors">
|
|
58409
|
-
<td class="py-3 px-4">
|
|
58410
|
-
<div class="flex items-center gap-2">
|
|
58411
|
-
<span class="text-sm font-medium">{{ getMetricTitle(metric) }}</span>
|
|
58412
|
-
@if (metric.description) {
|
|
58413
|
-
<button
|
|
58414
|
-
type="button"
|
|
58415
|
-
[ngClass]="infoIconClasses()"
|
|
58416
|
-
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
58417
|
-
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.description, getMetricTitle(metric))"
|
|
58418
|
-
tooltipType="markdown"
|
|
58419
|
-
tooltipPosition="right">
|
|
58420
|
-
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58421
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
58422
|
-
</svg>
|
|
58423
|
-
</button>
|
|
58424
|
-
}
|
|
58425
|
-
</div>
|
|
58426
|
-
</td>
|
|
58427
|
-
<td class="py-3 px-4 text-right">
|
|
58428
|
-
<span [ngClass]="targetValueClasses()" class="text-sm font-semibold">
|
|
58429
|
-
{{ formatMetricValue(metric.targetValue, metric.metric, false) }}
|
|
58430
|
-
</span>
|
|
58431
|
-
</td>
|
|
58432
|
-
<td class="py-3 px-4 text-right">
|
|
58433
|
-
<div class="flex items-center justify-end gap-2">
|
|
58434
|
-
<span class="text-sm font-medium">
|
|
58435
|
-
{{ formatPercentage(Math.abs(metric.percentageIncrease), 1) }}
|
|
58436
|
-
</span>
|
|
58437
|
-
<svg
|
|
58438
|
-
class="w-4 h-4 text-emerald-500"
|
|
58439
|
-
fill="none"
|
|
58440
|
-
stroke="currentColor"
|
|
58441
|
-
viewBox="0 0 24 24">
|
|
58442
|
-
<path
|
|
58443
|
-
stroke-linecap="round"
|
|
58444
|
-
stroke-linejoin="round"
|
|
58445
|
-
stroke-width="2"
|
|
58446
|
-
[attr.d]="metric.percentageIncrease >= 0 ? 'M5 10l7-7m0 0l7 7m-7-7v18' : 'M19 14l-7 7m0 0l-7-7m7 7V3'" />
|
|
58447
|
-
</svg>
|
|
58448
|
-
</div>
|
|
58449
|
-
</td>
|
|
58450
|
-
</tr>
|
|
58451
|
-
}
|
|
58452
|
-
</tbody>
|
|
58453
|
-
</table>
|
|
58454
|
-
</div>
|
|
58455
|
-
</div>
|
|
58456
|
-
}
|
|
58457
|
-
|
|
58458
|
-
<!-- Pacing Chart -->
|
|
58459
|
-
@if (pacingChartData()) {
|
|
58460
|
-
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6">
|
|
58461
|
-
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58462
|
-
Pace
|
|
58463
|
-
</h4>
|
|
58464
|
-
<div class="min-h-[400px]">
|
|
58465
|
-
<symphiq-line-chart
|
|
58466
|
-
[chart]="pacingChartData()!"
|
|
58467
|
-
[showAxisLabels]="true"
|
|
58468
|
-
[viewMode]="viewMode()"
|
|
58469
|
-
[currencySymbol]="'$'"
|
|
58470
|
-
/>
|
|
58471
|
-
</div>
|
|
58472
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-4">
|
|
58473
|
-
{{ chartLegendDescription() }}
|
|
58474
|
-
</p>
|
|
58475
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-2">
|
|
58476
|
-
{{ chartDescriptionSentence1() }}
|
|
58477
|
-
</p>
|
|
58478
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-2">
|
|
58479
|
-
{{ chartDescriptionSentence2() }}
|
|
58480
|
-
</p>
|
|
58481
|
-
</div>
|
|
58482
|
-
}
|
|
58483
|
-
</div>
|
|
58484
|
-
|
|
58485
|
-
<!-- Footer -->
|
|
58486
|
-
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t">
|
|
58487
|
-
<button
|
|
58488
|
-
(click)="close()"
|
|
58489
|
-
[ngClass]="closeFooterButtonClasses()"
|
|
58490
|
-
class="w-full px-4 py-2 rounded-lg transition-all font-medium hover:scale-[1.02] active:scale-[0.98]">
|
|
58491
|
-
Close
|
|
58492
|
-
</button>
|
|
58493
|
-
</div>
|
|
58494
|
-
</div>
|
|
58495
|
-
</div>
|
|
58496
|
-
</div>
|
|
58497
|
-
}
|
|
58276
|
+
template: `
|
|
58277
|
+
@if (isOpen()) {
|
|
58278
|
+
<div class="fixed inset-0 overflow-y-auto z-50" (click)="close()">
|
|
58279
|
+
<div class="flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:block sm:p-0">
|
|
58280
|
+
<div
|
|
58281
|
+
[ngClass]="backdropClasses()"
|
|
58282
|
+
class="fixed inset-0 backdrop-blur-md"
|
|
58283
|
+
aria-hidden="true"
|
|
58284
|
+
@fadeIn>
|
|
58285
|
+
</div>
|
|
58286
|
+
|
|
58287
|
+
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span>
|
|
58288
|
+
|
|
58289
|
+
<div
|
|
58290
|
+
(click)="$event.stopPropagation()"
|
|
58291
|
+
[ngClass]="modalContainerClasses()"
|
|
58292
|
+
class="relative inline-block align-bottom rounded-2xl text-left overflow-hidden shadow-xl sm:my-8 sm:align-middle sm:w-full sm:max-w-4xl border backdrop-blur-xl"
|
|
58293
|
+
@slideUpFade>
|
|
58294
|
+
|
|
58295
|
+
<!-- Header -->
|
|
58296
|
+
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b backdrop-blur-sm sticky top-0 z-10">
|
|
58297
|
+
<div class="flex items-start justify-between">
|
|
58298
|
+
<div class="flex-1">
|
|
58299
|
+
<div class="flex items-center gap-3 mb-2">
|
|
58300
|
+
<h3 [ngClass]="titleClasses()" class="text-xl font-bold leading-none">
|
|
58301
|
+
{{ metricTitle() }}
|
|
58302
|
+
</h3>
|
|
58303
|
+
@if (metricData()?.description) {
|
|
58304
|
+
<button
|
|
58305
|
+
type="button"
|
|
58306
|
+
[ngClass]="headerInfoIconClasses()"
|
|
58307
|
+
class="flex-shrink-0 w-7 h-7 rounded-full inline-flex items-center justify-center transition-colors"
|
|
58308
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metricData()!.description!, metricTitle())"
|
|
58309
|
+
tooltipType="markdown"
|
|
58310
|
+
tooltipPosition="right">
|
|
58311
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58312
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
58313
|
+
</svg>
|
|
58314
|
+
</button>
|
|
58315
|
+
}
|
|
58316
|
+
</div>
|
|
58317
|
+
</div>
|
|
58318
|
+
<button
|
|
58319
|
+
(click)="close()"
|
|
58320
|
+
[ngClass]="closeButtonClasses()"
|
|
58321
|
+
class="ml-4 transition-all rounded-lg p-1 hover:scale-110 active:scale-90">
|
|
58322
|
+
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58323
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
58324
|
+
</svg>
|
|
58325
|
+
</button>
|
|
58326
|
+
</div>
|
|
58327
|
+
</div>
|
|
58328
|
+
|
|
58329
|
+
<!-- Content -->
|
|
58330
|
+
<div [ngClass]="contentClasses()" class="px-6 py-6 max-h-[70vh] overflow-y-auto backdrop-blur-sm">
|
|
58331
|
+
<symphiq-tooltip-container />
|
|
58332
|
+
|
|
58333
|
+
<!-- At a Glance Summary -->
|
|
58334
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58335
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58336
|
+
At a Glance
|
|
58337
|
+
</h4>
|
|
58338
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
58339
|
+
<!-- YTD Value -->
|
|
58340
|
+
<div>
|
|
58341
|
+
<div class="mb-1.5">
|
|
58342
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
58343
|
+
Year to date
|
|
58344
|
+
</p>
|
|
58345
|
+
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58346
|
+
{{ ytdStartDate() }}
|
|
58347
|
+
</p>
|
|
58348
|
+
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58349
|
+
{{ ytdEndDate() }}
|
|
58350
|
+
</p>
|
|
58351
|
+
</div>
|
|
58352
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold mb-2">
|
|
58353
|
+
{{ formatMetricValue(ytdValue(), metricData()?.metric || '') }}
|
|
58354
|
+
</p>
|
|
58355
|
+
@if (ytdChangePercentage() !== null) {
|
|
58356
|
+
<symphiq-target-change-badge
|
|
58357
|
+
[viewMode]="viewMode()"
|
|
58358
|
+
[percentageChange]="ytdChangePercentage()!"
|
|
58359
|
+
[metric]="metricData()?.metric || ''"
|
|
58360
|
+
[priorYear]="priorYear()"
|
|
58361
|
+
[isCompact]="true"
|
|
58362
|
+
/>
|
|
58363
|
+
}
|
|
58364
|
+
</div>
|
|
58365
|
+
|
|
58366
|
+
<!-- Same Period Last Year -->
|
|
58367
|
+
<div>
|
|
58368
|
+
<div class="mb-1.5">
|
|
58369
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
58370
|
+
Same period last year
|
|
58371
|
+
</p>
|
|
58372
|
+
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58373
|
+
{{ priorYearStartDate() }}
|
|
58374
|
+
</p>
|
|
58375
|
+
<p [ngClass]="dateLabelClasses()" class="text-xs">
|
|
58376
|
+
{{ priorYearEndDate() }}
|
|
58377
|
+
</p>
|
|
58378
|
+
</div>
|
|
58379
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
58380
|
+
{{ formatMetricValue(samePeriodLastYearValue(), metricData()?.metric || '') }}
|
|
58381
|
+
</p>
|
|
58382
|
+
</div>
|
|
58383
|
+
|
|
58384
|
+
<!-- Full Last Year -->
|
|
58385
|
+
<div>
|
|
58386
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58387
|
+
Full {{ priorYear() }} Actual
|
|
58388
|
+
</p>
|
|
58389
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
58390
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}
|
|
58391
|
+
</p>
|
|
58392
|
+
</div>
|
|
58393
|
+
|
|
58394
|
+
<!-- Current Pace -->
|
|
58395
|
+
@if (pacingInfo()) {
|
|
58396
|
+
<div>
|
|
58397
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58398
|
+
Pace for {{ currentYear() }}
|
|
58399
|
+
</p>
|
|
58400
|
+
<p [ngClass]="projectedValueClasses()" class="text-xl font-bold mb-2">
|
|
58401
|
+
{{ formatMetricValue(pacingInfo()!.projectedValue, metricData()?.metric || '', false) }}
|
|
58402
|
+
</p>
|
|
58403
|
+
<symphiq-pacing-status-badge
|
|
58404
|
+
[viewMode]="viewMode()"
|
|
58405
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
58406
|
+
[status]="pacingInfo()!.status"
|
|
58407
|
+
[showAsFullText]="false"
|
|
58408
|
+
[isCompact]="true"
|
|
58409
|
+
[showEmphasizedPercentage]="true"
|
|
58410
|
+
/>
|
|
58411
|
+
</div>
|
|
58412
|
+
}
|
|
58413
|
+
|
|
58414
|
+
<!-- Current Target -->
|
|
58415
|
+
<div>
|
|
58416
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
58417
|
+
{{ currentYear() }} Target
|
|
58418
|
+
</p>
|
|
58419
|
+
<p [ngClass]="targetValueClasses()" class="text-xl font-bold">
|
|
58420
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
58421
|
+
</p>
|
|
58422
|
+
</div>
|
|
58423
|
+
</div>
|
|
58424
|
+
</div>
|
|
58425
|
+
|
|
58426
|
+
<!-- Target Analysis -->
|
|
58427
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58428
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58429
|
+
Target Analysis
|
|
58430
|
+
</h4>
|
|
58431
|
+
|
|
58432
|
+
<div class="mb-4">
|
|
58433
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
58434
|
+
Your Target
|
|
58435
|
+
</p>
|
|
58436
|
+
<p [ngClass]="targetValueClasses()" class="text-3xl font-extrabold mb-3">
|
|
58437
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
58438
|
+
</p>
|
|
58439
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
58440
|
+
Your target represents a {{ formatPercentage(Math.abs(metricData()?.percentageIncrease || 0), 1) }}
|
|
58441
|
+
{{ (metricData()?.percentageIncrease || 0) >= 0 ? 'increase' : 'decrease' }}
|
|
58442
|
+
from your {{ priorYear() }} actual of
|
|
58443
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}.
|
|
58444
|
+
</p>
|
|
58445
|
+
</div>
|
|
58446
|
+
|
|
58447
|
+
@if (pacingInfo()) {
|
|
58448
|
+
<div class="mb-4">
|
|
58449
|
+
<symphiq-pacing-status-badge
|
|
58450
|
+
[viewMode]="viewMode()"
|
|
58451
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
58452
|
+
[status]="pacingInfo()!.status"
|
|
58453
|
+
[showAsFullText]="true"
|
|
58454
|
+
[isCompact]="false"
|
|
58455
|
+
[showEmphasizedPercentage]="true"
|
|
58456
|
+
/>
|
|
58457
|
+
</div>
|
|
58458
|
+
|
|
58459
|
+
<div class="mb-4">
|
|
58460
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
58461
|
+
{{ gapAnalysisText() }}
|
|
58462
|
+
</p>
|
|
58463
|
+
</div>
|
|
58464
|
+
|
|
58465
|
+
<!-- Progress to Target Chart -->
|
|
58466
|
+
<symphiq-progress-to-target-chart
|
|
58467
|
+
[data]="progressToTargetData()"
|
|
58468
|
+
[viewMode]="viewMode()"
|
|
58469
|
+
/>
|
|
58470
|
+
}
|
|
58471
|
+
</div>
|
|
58472
|
+
|
|
58473
|
+
<!-- Contributing Metrics Table (only for funnel stage metrics) -->
|
|
58474
|
+
@if (contributingMetrics().length > 0) {
|
|
58475
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
58476
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58477
|
+
Contributing Metric Targets
|
|
58478
|
+
</h4>
|
|
58479
|
+
<div class="overflow-x-auto">
|
|
58480
|
+
<table class="w-full">
|
|
58481
|
+
<thead>
|
|
58482
|
+
<tr [ngClass]="tableHeaderClasses()" class="border-b">
|
|
58483
|
+
<th class="text-left py-3 px-4 text-xs font-semibold uppercase tracking-wider">Metric</th>
|
|
58484
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Target</th>
|
|
58485
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Improve by</th>
|
|
58486
|
+
</tr>
|
|
58487
|
+
</thead>
|
|
58488
|
+
<tbody>
|
|
58489
|
+
@for (metric of contributingMetrics(); track metric.metric) {
|
|
58490
|
+
<tr [ngClass]="tableRowClasses()" class="border-b transition-colors">
|
|
58491
|
+
<td class="py-3 px-4">
|
|
58492
|
+
<div class="flex items-center gap-2">
|
|
58493
|
+
<span class="text-sm font-medium">{{ getMetricTitle(metric) }}</span>
|
|
58494
|
+
@if (metric.description) {
|
|
58495
|
+
<button
|
|
58496
|
+
type="button"
|
|
58497
|
+
[ngClass]="infoIconClasses()"
|
|
58498
|
+
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
58499
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.description, getMetricTitle(metric))"
|
|
58500
|
+
tooltipType="markdown"
|
|
58501
|
+
tooltipPosition="right">
|
|
58502
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58503
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
58504
|
+
</svg>
|
|
58505
|
+
</button>
|
|
58506
|
+
}
|
|
58507
|
+
</div>
|
|
58508
|
+
</td>
|
|
58509
|
+
<td class="py-3 px-4 text-right">
|
|
58510
|
+
<span [ngClass]="targetValueClasses()" class="text-sm font-semibold">
|
|
58511
|
+
{{ formatMetricValue(metric.targetValue, metric.metric, false) }}
|
|
58512
|
+
</span>
|
|
58513
|
+
</td>
|
|
58514
|
+
<td class="py-3 px-4 text-right">
|
|
58515
|
+
<div class="flex items-center justify-end gap-2">
|
|
58516
|
+
<span class="text-sm font-medium">
|
|
58517
|
+
{{ formatPercentage(Math.abs(metric.percentageIncrease), 1) }}
|
|
58518
|
+
</span>
|
|
58519
|
+
<svg
|
|
58520
|
+
class="w-4 h-4 text-emerald-500"
|
|
58521
|
+
fill="none"
|
|
58522
|
+
stroke="currentColor"
|
|
58523
|
+
viewBox="0 0 24 24">
|
|
58524
|
+
<path
|
|
58525
|
+
stroke-linecap="round"
|
|
58526
|
+
stroke-linejoin="round"
|
|
58527
|
+
stroke-width="2"
|
|
58528
|
+
[attr.d]="metric.percentageIncrease >= 0 ? 'M5 10l7-7m0 0l7 7m-7-7v18' : 'M19 14l-7 7m0 0l-7-7m7 7V3'" />
|
|
58529
|
+
</svg>
|
|
58530
|
+
</div>
|
|
58531
|
+
</td>
|
|
58532
|
+
</tr>
|
|
58533
|
+
}
|
|
58534
|
+
</tbody>
|
|
58535
|
+
</table>
|
|
58536
|
+
</div>
|
|
58537
|
+
</div>
|
|
58538
|
+
}
|
|
58539
|
+
|
|
58540
|
+
<!-- Pacing Chart -->
|
|
58541
|
+
@if (pacingChartData()) {
|
|
58542
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6">
|
|
58543
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58544
|
+
Pace
|
|
58545
|
+
</h4>
|
|
58546
|
+
<div class="min-h-[400px]">
|
|
58547
|
+
<symphiq-line-chart
|
|
58548
|
+
[chart]="pacingChartData()!"
|
|
58549
|
+
[showAxisLabels]="true"
|
|
58550
|
+
[viewMode]="viewMode()"
|
|
58551
|
+
[currencySymbol]="'$'"
|
|
58552
|
+
/>
|
|
58553
|
+
</div>
|
|
58554
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-4">
|
|
58555
|
+
{{ chartLegendDescription() }}
|
|
58556
|
+
</p>
|
|
58557
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-2">
|
|
58558
|
+
{{ chartDescriptionSentence1() }}
|
|
58559
|
+
</p>
|
|
58560
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-2">
|
|
58561
|
+
{{ chartDescriptionSentence2() }}
|
|
58562
|
+
</p>
|
|
58563
|
+
</div>
|
|
58564
|
+
}
|
|
58565
|
+
</div>
|
|
58566
|
+
|
|
58567
|
+
<!-- Footer -->
|
|
58568
|
+
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t">
|
|
58569
|
+
<button
|
|
58570
|
+
(click)="close()"
|
|
58571
|
+
[ngClass]="closeFooterButtonClasses()"
|
|
58572
|
+
class="w-full px-4 py-2 rounded-lg transition-all font-medium hover:scale-[1.02] active:scale-[0.98]">
|
|
58573
|
+
Close
|
|
58574
|
+
</button>
|
|
58575
|
+
</div>
|
|
58576
|
+
</div>
|
|
58577
|
+
</div>
|
|
58578
|
+
</div>
|
|
58579
|
+
}
|
|
58498
58580
|
`
|
|
58499
58581
|
}]
|
|
58500
58582
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricEnum: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricEnum", required: false }] }], metricData: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricData", required: false }] }], contributingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "contributingMetrics", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] }); })();
|