@memberjunction/ng-conversations 5.36.0 → 5.37.0

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.
Files changed (42) hide show
  1. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +62 -2
  2. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  3. package/dist/lib/components/conversation/conversation-chat-area.component.js +300 -24
  4. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  5. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +31 -0
  6. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -0
  7. package/dist/lib/components/dialogs/rating-dialog.component.js +290 -0
  8. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -0
  9. package/dist/lib/components/mention/mention-editor.component.d.ts +1 -1
  10. package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
  11. package/dist/lib/components/mention/mention-editor.component.js +1 -0
  12. package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
  13. package/dist/lib/components/message/conversation-message-rating.component.d.ts +43 -18
  14. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  15. package/dist/lib/components/message/conversation-message-rating.component.js +235 -193
  16. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  17. package/dist/lib/components/message/message-input-box.component.d.ts +1 -1
  18. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  19. package/dist/lib/components/message/message-input-box.component.js +1 -1
  20. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  21. package/dist/lib/components/message/message-input.component.d.ts +7 -1
  22. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  23. package/dist/lib/components/message/message-input.component.js +28 -3
  24. package/dist/lib/components/message/message-input.component.js.map +1 -1
  25. package/dist/lib/components/message/message-item.component.js +20 -20
  26. package/dist/lib/components/message/message-item.component.js.map +1 -1
  27. package/dist/lib/components/overlay/chat-overlay.component.d.ts +73 -5
  28. package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
  29. package/dist/lib/components/overlay/chat-overlay.component.js +202 -37
  30. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  31. package/dist/lib/conversations.module.d.ts +24 -23
  32. package/dist/lib/conversations.module.d.ts.map +1 -1
  33. package/dist/lib/conversations.module.js +4 -0
  34. package/dist/lib/conversations.module.js.map +1 -1
  35. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  36. package/dist/lib/services/data-cache.service.js +0 -1
  37. package/dist/lib/services/data-cache.service.js.map +1 -1
  38. package/dist/lib/services/dialog.service.d.ts +24 -0
  39. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  40. package/dist/lib/services/dialog.service.js +45 -0
  41. package/dist/lib/services/dialog.service.js.map +1 -1
  42. package/package.json +22 -22
@@ -0,0 +1,31 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class RatingDialogComponent {
3
+ message: string;
4
+ initialRating: number | null;
5
+ initialComments: string;
6
+ /** When true, the user must check the consent box before submitting. */
7
+ requireConsent: boolean;
8
+ readonly scale: number[];
9
+ selectedRating: number | null;
10
+ hoveredRating: number | null;
11
+ comments: string;
12
+ consentChecked: boolean;
13
+ ngOnInit(): void;
14
+ get effectiveRating(): number | null;
15
+ get effectiveBand(): string | null;
16
+ bandFor(n: number): 'low' | 'mid' | 'high';
17
+ isFilled(n: number): boolean;
18
+ selectRating(n: number): void;
19
+ onScaleMouseLeave(): void;
20
+ onPipBlur(): void;
21
+ getDescriptor(n: number): string;
22
+ getRating(): number | null;
23
+ getComments(): string;
24
+ /** True if the consent requirement is met (not required, or required and checked). */
25
+ isConsentValid(): boolean;
26
+ /** True only when the user *just* acknowledged consent in this dialog session. */
27
+ wasConsentNewlyAcknowledged(): boolean;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<RatingDialogComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<RatingDialogComponent, "mj-rating-dialog", never, { "message": { "alias": "message"; "required": false; }; "initialRating": { "alias": "initialRating"; "required": false; }; "initialComments": { "alias": "initialComments"; "required": false; }; "requireConsent": { "alias": "requireConsent"; "required": false; }; }, {}, never, never, false, never>;
30
+ }
31
+ //# sourceMappingURL=rating-dialog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/rating-dialog.component.ts"],"names":[],"mappings":";AAEA,qBA8Ra,qBAAqB;IACvB,OAAO,EAAE,MAAM,CAAM;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,eAAe,EAAE,MAAM,CAAM;IAEtC,wEAAwE;IAC/D,cAAc,EAAE,OAAO,CAAS;IAEzC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAmC;IAC3D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,QAAQ,EAAE,MAAM,CAAM;IACtB,cAAc,EAAE,OAAO,CAAS;IAEhC,QAAQ,IAAI,IAAI;IAKhB,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAGjC;IAED,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM;IAM1C,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK5B,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7B,iBAAiB,IAAI,IAAI;IAIzB,SAAS,IAAI,IAAI;IAIjB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAQhC,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,MAAM;IAIrB,sFAAsF;IACtF,cAAc,IAAI,OAAO;IAIzB,kFAAkF;IAClF,2BAA2B,IAAI,OAAO;yCAzE3B,qBAAqB;2CAArB,qBAAqB;CA4EjC"}
@@ -0,0 +1,290 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ function RatingDialogComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵelementStart(0, "p", 1);
6
+ i0.ɵɵtext(1);
7
+ i0.ɵɵelementEnd();
8
+ } if (rf & 2) {
9
+ const ctx_r0 = i0.ɵɵnextContext();
10
+ i0.ɵɵadvance();
11
+ i0.ɵɵtextInterpolate(ctx_r0.message);
12
+ } }
13
+ function RatingDialogComponent_For_4_Template(rf, ctx) { if (rf & 1) {
14
+ const _r2 = i0.ɵɵgetCurrentView();
15
+ i0.ɵɵelementStart(0, "button", 18);
16
+ i0.ɵɵlistener("click", function RatingDialogComponent_For_4_Template_button_click_0_listener() { const n_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.selectRating(n_r3)); })("mouseenter", function RatingDialogComponent_For_4_Template_button_mouseenter_0_listener() { const n_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.hoveredRating = n_r3); })("focus", function RatingDialogComponent_For_4_Template_button_focus_0_listener() { const n_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.hoveredRating = n_r3); })("blur", function RatingDialogComponent_For_4_Template_button_blur_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onPipBlur()); });
17
+ i0.ɵɵtext(1);
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const n_r3 = ctx.$implicit;
21
+ const ctx_r0 = i0.ɵɵnextContext();
22
+ i0.ɵɵclassProp("filled", ctx_r0.isFilled(n_r3))("selected", ctx_r0.selectedRating === n_r3);
23
+ i0.ɵɵattribute("data-band", ctx_r0.bandFor(n_r3))("aria-checked", ctx_r0.selectedRating === n_r3);
24
+ i0.ɵɵadvance();
25
+ i0.ɵɵtextInterpolate1(" ", n_r3, " ");
26
+ } }
27
+ function RatingDialogComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "strong");
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵelementEnd();
31
+ i0.ɵɵelementStart(2, "span", 19);
32
+ i0.ɵɵtext(3, "\u00B7");
33
+ i0.ɵɵelementEnd();
34
+ i0.ɵɵelementStart(4, "span");
35
+ i0.ɵɵtext(5);
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ const ctx_r0 = i0.ɵɵnextContext();
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate1("", ctx_r0.effectiveRating, "/10");
41
+ i0.ɵɵadvance(4);
42
+ i0.ɵɵtextInterpolate(ctx_r0.getDescriptor(ctx_r0.effectiveRating));
43
+ } }
44
+ function RatingDialogComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "span", 7);
46
+ i0.ɵɵtext(1, "Pick a number");
47
+ i0.ɵɵelementEnd();
48
+ } }
49
+ function RatingDialogComponent_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "p", 22);
51
+ i0.ɵɵtext(1, "Required to submit your feedback.");
52
+ i0.ɵɵelementEnd();
53
+ } }
54
+ function RatingDialogComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
55
+ const _r4 = i0.ɵɵgetCurrentView();
56
+ i0.ɵɵelementStart(0, "label", 20)(1, "input", 21);
57
+ i0.ɵɵtwoWayListener("ngModelChange", function RatingDialogComponent_Conditional_32_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.consentChecked, $event) || (ctx_r0.consentChecked = $event); return i0.ɵɵresetView($event); });
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(2, "span");
60
+ i0.ɵɵtext(3, "I understand and accept this.");
61
+ i0.ɵɵelementEnd()();
62
+ i0.ɵɵconditionalCreate(4, RatingDialogComponent_Conditional_32_Conditional_4_Template, 2, 0, "p", 22);
63
+ } if (rf & 2) {
64
+ const ctx_r0 = i0.ɵɵnextContext();
65
+ i0.ɵɵadvance();
66
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.consentChecked);
67
+ i0.ɵɵadvance(3);
68
+ i0.ɵɵconditional(!ctx_r0.consentChecked ? 4 : -1);
69
+ } }
70
+ export class RatingDialogComponent {
71
+ message = '';
72
+ initialRating = null;
73
+ initialComments = '';
74
+ /** When true, the user must check the consent box before submitting. */
75
+ requireConsent = false;
76
+ scale = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
77
+ selectedRating = null;
78
+ hoveredRating = null;
79
+ comments = '';
80
+ consentChecked = false;
81
+ ngOnInit() {
82
+ this.selectedRating = this.initialRating;
83
+ this.comments = this.initialComments ?? '';
84
+ }
85
+ get effectiveRating() {
86
+ return this.hoveredRating ?? this.selectedRating;
87
+ }
88
+ get effectiveBand() {
89
+ const r = this.effectiveRating;
90
+ return r === null ? null : this.bandFor(r);
91
+ }
92
+ bandFor(n) {
93
+ if (n <= 3)
94
+ return 'low';
95
+ if (n <= 7)
96
+ return 'mid';
97
+ return 'high';
98
+ }
99
+ isFilled(n) {
100
+ const r = this.effectiveRating;
101
+ return r !== null && r >= n;
102
+ }
103
+ selectRating(n) {
104
+ this.selectedRating = n;
105
+ }
106
+ onScaleMouseLeave() {
107
+ this.hoveredRating = null;
108
+ }
109
+ onPipBlur() {
110
+ this.hoveredRating = null;
111
+ }
112
+ getDescriptor(n) {
113
+ if (n <= 2)
114
+ return 'Very Poor';
115
+ if (n <= 4)
116
+ return 'Needs Improvement';
117
+ if (n <= 6)
118
+ return 'Okay';
119
+ if (n <= 8)
120
+ return 'Good';
121
+ return 'Excellent';
122
+ }
123
+ getRating() {
124
+ return this.selectedRating;
125
+ }
126
+ getComments() {
127
+ return (this.comments ?? '').trim();
128
+ }
129
+ /** True if the consent requirement is met (not required, or required and checked). */
130
+ isConsentValid() {
131
+ return !this.requireConsent || this.consentChecked;
132
+ }
133
+ /** True only when the user *just* acknowledged consent in this dialog session. */
134
+ wasConsentNewlyAcknowledged() {
135
+ return this.requireConsent && this.consentChecked;
136
+ }
137
+ static ɵfac = function RatingDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RatingDialogComponent)(); };
138
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RatingDialogComponent, selectors: [["mj-rating-dialog"]], inputs: { message: "message", initialRating: "initialRating", initialComments: "initialComments", requireConsent: "requireConsent" }, standalone: false, decls: 33, vars: 7, consts: [[1, "rating-dialog"], [1, "dialog-message"], ["role", "radiogroup", "aria-label", "Rating from 1 to 10", 1, "rating-scale", 3, "mouseleave"], ["type", "button", "role", "radio", 1, "rating-pip", 3, "filled", "selected"], [1, "rating-meta"], [1, "legend-edge"], [1, "selected-caption"], [1, "muted"], [1, "legend-edge", "legend-right"], [1, "field"], [1, "field-header"], ["for", "rating-comments", 1, "field-label"], [1, "field-hint"], ["id", "rating-comments", "placeholder", "What was good or bad about this response?", "rows", "4", "maxlength", "2000", 1, "comment-textarea", 3, "ngModelChange", "ngModel"], [1, "consent-note"], [1, "fa-solid", "fa-shield-halved"], [1, "consent-body"], [1, "consent-text"], ["type", "button", "role", "radio", 1, "rating-pip", 3, "click", "mouseenter", "focus", "blur"], [1, "dot"], [1, "consent-checkbox"], ["type", "checkbox", "aria-label", "I understand and accept the access authorization above", 3, "ngModelChange", "ngModel"], [1, "consent-warning"]], template: function RatingDialogComponent_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelementStart(0, "div", 0);
140
+ i0.ɵɵconditionalCreate(1, RatingDialogComponent_Conditional_1_Template, 2, 1, "p", 1);
141
+ i0.ɵɵelementStart(2, "div", 2);
142
+ i0.ɵɵlistener("mouseleave", function RatingDialogComponent_Template_div_mouseleave_2_listener() { return ctx.onScaleMouseLeave(); });
143
+ i0.ɵɵrepeaterCreate(3, RatingDialogComponent_For_4_Template, 2, 7, "button", 3, i0.ɵɵrepeaterTrackByIdentity);
144
+ i0.ɵɵelementEnd();
145
+ i0.ɵɵelementStart(5, "div", 4)(6, "span", 5);
146
+ i0.ɵɵtext(7, "1 \u2014 Worst");
147
+ i0.ɵɵelementEnd();
148
+ i0.ɵɵelementStart(8, "span", 6);
149
+ i0.ɵɵconditionalCreate(9, RatingDialogComponent_Conditional_9_Template, 6, 2)(10, RatingDialogComponent_Conditional_10_Template, 2, 0, "span", 7);
150
+ i0.ɵɵelementEnd();
151
+ i0.ɵɵelementStart(11, "span", 8);
152
+ i0.ɵɵtext(12, "10 \u2014 Best");
153
+ i0.ɵɵelementEnd()();
154
+ i0.ɵɵelementStart(13, "div", 9)(14, "div", 10)(15, "label", 11);
155
+ i0.ɵɵtext(16, "Tell us more");
156
+ i0.ɵɵelementEnd();
157
+ i0.ɵɵelementStart(17, "span", 12);
158
+ i0.ɵɵtext(18, "Optional");
159
+ i0.ɵɵelementEnd()();
160
+ i0.ɵɵelementStart(19, "textarea", 13);
161
+ i0.ɵɵtwoWayListener("ngModelChange", function RatingDialogComponent_Template_textarea_ngModelChange_19_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.comments, $event) || (ctx.comments = $event); return $event; });
162
+ i0.ɵɵtext(20, " ");
163
+ i0.ɵɵelementEnd()();
164
+ i0.ɵɵelementStart(21, "div", 14);
165
+ i0.ɵɵelement(22, "i", 15);
166
+ i0.ɵɵelementStart(23, "div", 16)(24, "p", 17);
167
+ i0.ɵɵtext(25, " By submitting, you authorize the ");
168
+ i0.ɵɵelementStart(26, "strong");
169
+ i0.ɵɵtext(27, "Integrations");
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵtext(28, " and ");
172
+ i0.ɵɵelementStart(29, "strong");
173
+ i0.ɵɵtext(30, "Developer");
174
+ i0.ɵɵelementEnd();
175
+ i0.ɵɵtext(31, " teams to view this conversation and the rated component so they can improve agent quality. ");
176
+ i0.ɵɵelementEnd();
177
+ i0.ɵɵconditionalCreate(32, RatingDialogComponent_Conditional_32_Template, 5, 2);
178
+ i0.ɵɵelementEnd()()();
179
+ } if (rf & 2) {
180
+ i0.ɵɵadvance();
181
+ i0.ɵɵconditional(ctx.message ? 1 : -1);
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵrepeater(ctx.scale);
184
+ i0.ɵɵadvance(5);
185
+ i0.ɵɵattribute("data-band", ctx.effectiveBand);
186
+ i0.ɵɵadvance();
187
+ i0.ɵɵconditional(ctx.effectiveRating !== null ? 9 : 10);
188
+ i0.ɵɵadvance(10);
189
+ i0.ɵɵtwoWayProperty("ngModel", ctx.comments);
190
+ i0.ɵɵadvance(2);
191
+ i0.ɵɵclassProp("requires-consent", ctx.requireConsent);
192
+ i0.ɵɵadvance(11);
193
+ i0.ɵɵconditional(ctx.requireConsent ? 32 : -1);
194
+ } }, dependencies: [i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MaxLengthValidator, i1.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n --rd-text-primary: var(--mj-text-primary, #18181b);\n --rd-text-secondary: var(--mj-text-secondary, #52525b);\n --rd-text-muted: var(--mj-text-muted, #71717a);\n --rd-text-disabled: var(--mj-text-disabled, #a1a1aa);\n --rd-surface: var(--mj-bg-surface, #ffffff);\n --rd-border: var(--mj-border-default, #e4e4e7);\n --rd-border-strong: var(--mj-border-strong, #d4d4d8);\n --rd-brand: var(--mj-brand-primary, #6366f1);\n --rd-on-brand: var(--mj-text-on-brand, #ffffff);\n\n --rd-low: var(--mj-status-error, #ef4444);\n --rd-mid: var(--mj-status-warning, #f59e0b);\n --rd-high: var(--mj-status-success, #10b981);\n }\n\n .rating-dialog[_ngcontent-%COMP%] {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 4px 20px 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n }\n .rating-dialog[_ngcontent-%COMP%] *[_ngcontent-%COMP%] { box-sizing: border-box; }\n\n .dialog-message[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--rd-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n \n\n .rating-scale[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(10, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n }\n .rating-pip[_ngcontent-%COMP%] {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-width: 0;\n height: 40px;\n padding: 0;\n background: var(--rd-surface);\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n font-family: inherit;\n font-size: 13px;\n font-weight: 600;\n color: var(--rd-text-secondary);\n cursor: pointer;\n transition: transform 100ms ease, background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;\n font-variant-numeric: tabular-nums;\n }\n .rating-pip[_ngcontent-%COMP%]:hover {\n border-color: var(--rd-border-strong);\n color: var(--rd-text-primary);\n }\n .rating-pip[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 25%, transparent);\n }\n .rating-pip.filled[data-band=\"low\"][_ngcontent-%COMP%] { background: var(--rd-low); border-color: var(--rd-low); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"mid\"][_ngcontent-%COMP%] { background: var(--rd-mid); border-color: var(--rd-mid); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"high\"][_ngcontent-%COMP%] { background: var(--rd-high); border-color: var(--rd-high); color: var(--rd-on-brand); }\n .rating-pip.selected[_ngcontent-%COMP%] { transform: translateY(-1px); }\n\n \n\n .rating-meta[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: 8px;\n padding: 0 2px;\n margin-top: -2px;\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .legend-edge[_ngcontent-%COMP%] { font-weight: 500; }\n .legend-right[_ngcontent-%COMP%] { text-align: right; }\n\n .selected-caption[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n text-transform: none;\n letter-spacing: 0;\n color: var(--rd-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n .selected-caption[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { font-weight: 700; font-size: 13px; }\n .selected-caption[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%] { color: var(--rd-text-disabled); }\n .selected-caption[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] { color: var(--rd-text-disabled); font-weight: 500; }\n .selected-caption[data-band=\"low\"][_ngcontent-%COMP%] { color: var(--rd-low); }\n .selected-caption[data-band=\"mid\"][_ngcontent-%COMP%] { color: var(--rd-mid); }\n .selected-caption[data-band=\"high\"][_ngcontent-%COMP%] { color: var(--rd-high); }\n\n \n\n .field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .field-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n }\n .field-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 13px;\n color: var(--rd-text-primary);\n }\n .field-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .comment-textarea[_ngcontent-%COMP%] {\n width: 100%;\n min-height: 88px;\n padding: 10px 12px;\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n background: var(--rd-surface);\n color: var(--rd-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.5;\n resize: vertical;\n transition: border-color 140ms ease, box-shadow 140ms ease;\n }\n .comment-textarea[_ngcontent-%COMP%]::placeholder { color: var(--rd-text-disabled); }\n .comment-textarea[_ngcontent-%COMP%]:hover { border-color: var(--rd-border-strong); }\n .comment-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--rd-brand);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 18%, transparent);\n }\n\n \n\n .consent-note[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--rd-brand) 6%, var(--rd-surface));\n border: 1px solid color-mix(in srgb, var(--rd-brand) 22%, var(--rd-border));\n border-radius: 8px;\n }\n .consent-note[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--rd-brand);\n font-size: 14px;\n margin-top: 2px;\n flex-shrink: 0;\n }\n .consent-body[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .consent-text[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12.5px;\n line-height: 1.5;\n color: var(--rd-text-secondary);\n }\n .consent-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { color: var(--rd-text-primary); font-weight: 600; }\n .consent-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n font-size: 12.5px;\n color: var(--rd-text-primary);\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n .consent-checkbox[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 15px;\n height: 15px;\n cursor: pointer;\n accent-color: var(--rd-brand);\n }\n .consent-warning[_ngcontent-%COMP%] {\n margin: 6px 0 0 23px;\n font-size: 11px;\n color: var(--rd-low);\n font-weight: 500;\n }"] });
195
+ }
196
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RatingDialogComponent, [{
197
+ type: Component,
198
+ args: [{ standalone: false, selector: 'mj-rating-dialog', template: `
199
+ <div class="rating-dialog">
200
+ @if (message) {
201
+ <p class="dialog-message">{{ message }}</p>
202
+ }
203
+
204
+ <div
205
+ class="rating-scale"
206
+ role="radiogroup"
207
+ aria-label="Rating from 1 to 10"
208
+ (mouseleave)="onScaleMouseLeave()">
209
+ @for (n of scale; track n) {
210
+ <button
211
+ type="button"
212
+ class="rating-pip"
213
+ [class.filled]="isFilled(n)"
214
+ [class.selected]="selectedRating === n"
215
+ [attr.data-band]="bandFor(n)"
216
+ [attr.aria-checked]="selectedRating === n"
217
+ role="radio"
218
+ (click)="selectRating(n)"
219
+ (mouseenter)="hoveredRating = n"
220
+ (focus)="hoveredRating = n"
221
+ (blur)="onPipBlur()">
222
+ {{ n }}
223
+ </button>
224
+ }
225
+ </div>
226
+
227
+ <div class="rating-meta">
228
+ <span class="legend-edge">1 — Worst</span>
229
+ <span class="selected-caption" [attr.data-band]="effectiveBand">
230
+ @if (effectiveRating !== null) {
231
+ <strong>{{ effectiveRating }}/10</strong>
232
+ <span class="dot">·</span>
233
+ <span>{{ getDescriptor(effectiveRating) }}</span>
234
+ } @else {
235
+ <span class="muted">Pick a number</span>
236
+ }
237
+ </span>
238
+ <span class="legend-edge legend-right">10 — Best</span>
239
+ </div>
240
+
241
+ <div class="field">
242
+ <div class="field-header">
243
+ <label class="field-label" for="rating-comments">Tell us more</label>
244
+ <span class="field-hint">Optional</span>
245
+ </div>
246
+ <textarea
247
+ id="rating-comments"
248
+ [(ngModel)]="comments"
249
+ class="comment-textarea"
250
+ placeholder="What was good or bad about this response?"
251
+ rows="4"
252
+ maxlength="2000">
253
+ </textarea>
254
+ </div>
255
+
256
+ <div class="consent-note" [class.requires-consent]="requireConsent">
257
+ <i class="fa-solid fa-shield-halved"></i>
258
+ <div class="consent-body">
259
+ <p class="consent-text">
260
+ By submitting, you authorize the <strong>Integrations</strong> and
261
+ <strong>Developer</strong> teams to view this conversation and the
262
+ rated component so they can improve agent quality.
263
+ </p>
264
+ @if (requireConsent) {
265
+ <label class="consent-checkbox">
266
+ <input
267
+ type="checkbox"
268
+ [(ngModel)]="consentChecked"
269
+ aria-label="I understand and accept the access authorization above" />
270
+ <span>I understand and accept this.</span>
271
+ </label>
272
+ @if (!consentChecked) {
273
+ <p class="consent-warning">Required to submit your feedback.</p>
274
+ }
275
+ }
276
+ </div>
277
+ </div>
278
+ </div>
279
+ `, styles: ["\n :host {\n display: block;\n --rd-text-primary: var(--mj-text-primary, #18181b);\n --rd-text-secondary: var(--mj-text-secondary, #52525b);\n --rd-text-muted: var(--mj-text-muted, #71717a);\n --rd-text-disabled: var(--mj-text-disabled, #a1a1aa);\n --rd-surface: var(--mj-bg-surface, #ffffff);\n --rd-border: var(--mj-border-default, #e4e4e7);\n --rd-border-strong: var(--mj-border-strong, #d4d4d8);\n --rd-brand: var(--mj-brand-primary, #6366f1);\n --rd-on-brand: var(--mj-text-on-brand, #ffffff);\n\n --rd-low: var(--mj-status-error, #ef4444);\n --rd-mid: var(--mj-status-warning, #f59e0b);\n --rd-high: var(--mj-status-success, #10b981);\n }\n\n .rating-dialog {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 4px 20px 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n }\n .rating-dialog * { box-sizing: border-box; }\n\n .dialog-message {\n margin: 0;\n color: var(--rd-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* \u2500\u2500\u2500 Pill row \u2500\u2500\u2500 */\n .rating-scale {\n display: grid;\n grid-template-columns: repeat(10, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n }\n .rating-pip {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-width: 0;\n height: 40px;\n padding: 0;\n background: var(--rd-surface);\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n font-family: inherit;\n font-size: 13px;\n font-weight: 600;\n color: var(--rd-text-secondary);\n cursor: pointer;\n transition: transform 100ms ease, background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;\n font-variant-numeric: tabular-nums;\n }\n .rating-pip:hover {\n border-color: var(--rd-border-strong);\n color: var(--rd-text-primary);\n }\n .rating-pip:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 25%, transparent);\n }\n .rating-pip.filled[data-band=\"low\"] { background: var(--rd-low); border-color: var(--rd-low); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"mid\"] { background: var(--rd-mid); border-color: var(--rd-mid); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"high\"] { background: var(--rd-high); border-color: var(--rd-high); color: var(--rd-on-brand); }\n .rating-pip.selected { transform: translateY(-1px); }\n\n /* \u2500\u2500\u2500 Meta row: edge legend + center caption \u2500\u2500\u2500 */\n .rating-meta {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: 8px;\n padding: 0 2px;\n margin-top: -2px;\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .legend-edge { font-weight: 500; }\n .legend-right { text-align: right; }\n\n .selected-caption {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n text-transform: none;\n letter-spacing: 0;\n color: var(--rd-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n .selected-caption strong { font-weight: 700; font-size: 13px; }\n .selected-caption .dot { color: var(--rd-text-disabled); }\n .selected-caption .muted { color: var(--rd-text-disabled); font-weight: 500; }\n .selected-caption[data-band=\"low\"] { color: var(--rd-low); }\n .selected-caption[data-band=\"mid\"] { color: var(--rd-mid); }\n .selected-caption[data-band=\"high\"] { color: var(--rd-high); }\n\n /* \u2500\u2500\u2500 Comment field \u2500\u2500\u2500 */\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .field-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n }\n .field-label {\n font-weight: 600;\n font-size: 13px;\n color: var(--rd-text-primary);\n }\n .field-hint {\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .comment-textarea {\n width: 100%;\n min-height: 88px;\n padding: 10px 12px;\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n background: var(--rd-surface);\n color: var(--rd-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.5;\n resize: vertical;\n transition: border-color 140ms ease, box-shadow 140ms ease;\n }\n .comment-textarea::placeholder { color: var(--rd-text-disabled); }\n .comment-textarea:hover { border-color: var(--rd-border-strong); }\n .comment-textarea:focus {\n outline: none;\n border-color: var(--rd-brand);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 18%, transparent);\n }\n\n /* \u2500\u2500\u2500 Consent note \u2500\u2500\u2500 */\n .consent-note {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--rd-brand) 6%, var(--rd-surface));\n border: 1px solid color-mix(in srgb, var(--rd-brand) 22%, var(--rd-border));\n border-radius: 8px;\n }\n .consent-note > i {\n color: var(--rd-brand);\n font-size: 14px;\n margin-top: 2px;\n flex-shrink: 0;\n }\n .consent-body { flex: 1; min-width: 0; }\n .consent-text {\n margin: 0;\n font-size: 12.5px;\n line-height: 1.5;\n color: var(--rd-text-secondary);\n }\n .consent-text strong { color: var(--rd-text-primary); font-weight: 600; }\n .consent-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n font-size: 12.5px;\n color: var(--rd-text-primary);\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n .consent-checkbox input {\n width: 15px;\n height: 15px;\n cursor: pointer;\n accent-color: var(--rd-brand);\n }\n .consent-warning {\n margin: 6px 0 0 23px;\n font-size: 11px;\n color: var(--rd-low);\n font-weight: 500;\n }\n "] }]
280
+ }], null, { message: [{
281
+ type: Input
282
+ }], initialRating: [{
283
+ type: Input
284
+ }], initialComments: [{
285
+ type: Input
286
+ }], requireConsent: [{
287
+ type: Input
288
+ }] }); })();
289
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RatingDialogComponent, { className: "RatingDialogComponent", filePath: "src/lib/components/dialogs/rating-dialog.component.ts", lineNumber: 289 }); })();
290
+ //# sourceMappingURL=rating-dialog.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/rating-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-rating-dialog',\n template: `\n <div class=\"rating-dialog\">\n @if (message) {\n <p class=\"dialog-message\">{{ message }}</p>\n }\n\n <div\n class=\"rating-scale\"\n role=\"radiogroup\"\n aria-label=\"Rating from 1 to 10\"\n (mouseleave)=\"onScaleMouseLeave()\">\n @for (n of scale; track n) {\n <button\n type=\"button\"\n class=\"rating-pip\"\n [class.filled]=\"isFilled(n)\"\n [class.selected]=\"selectedRating === n\"\n [attr.data-band]=\"bandFor(n)\"\n [attr.aria-checked]=\"selectedRating === n\"\n role=\"radio\"\n (click)=\"selectRating(n)\"\n (mouseenter)=\"hoveredRating = n\"\n (focus)=\"hoveredRating = n\"\n (blur)=\"onPipBlur()\">\n {{ n }}\n </button>\n }\n </div>\n\n <div class=\"rating-meta\">\n <span class=\"legend-edge\">1 — Worst</span>\n <span class=\"selected-caption\" [attr.data-band]=\"effectiveBand\">\n @if (effectiveRating !== null) {\n <strong>{{ effectiveRating }}/10</strong>\n <span class=\"dot\">·</span>\n <span>{{ getDescriptor(effectiveRating) }}</span>\n } @else {\n <span class=\"muted\">Pick a number</span>\n }\n </span>\n <span class=\"legend-edge legend-right\">10 — Best</span>\n </div>\n\n <div class=\"field\">\n <div class=\"field-header\">\n <label class=\"field-label\" for=\"rating-comments\">Tell us more</label>\n <span class=\"field-hint\">Optional</span>\n </div>\n <textarea\n id=\"rating-comments\"\n [(ngModel)]=\"comments\"\n class=\"comment-textarea\"\n placeholder=\"What was good or bad about this response?\"\n rows=\"4\"\n maxlength=\"2000\">\n </textarea>\n </div>\n\n <div class=\"consent-note\" [class.requires-consent]=\"requireConsent\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n <div class=\"consent-body\">\n <p class=\"consent-text\">\n By submitting, you authorize the <strong>Integrations</strong> and\n <strong>Developer</strong> teams to view this conversation and the\n rated component so they can improve agent quality.\n </p>\n @if (requireConsent) {\n <label class=\"consent-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"consentChecked\"\n aria-label=\"I understand and accept the access authorization above\" />\n <span>I understand and accept this.</span>\n </label>\n @if (!consentChecked) {\n <p class=\"consent-warning\">Required to submit your feedback.</p>\n }\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n --rd-text-primary: var(--mj-text-primary, #18181b);\n --rd-text-secondary: var(--mj-text-secondary, #52525b);\n --rd-text-muted: var(--mj-text-muted, #71717a);\n --rd-text-disabled: var(--mj-text-disabled, #a1a1aa);\n --rd-surface: var(--mj-bg-surface, #ffffff);\n --rd-border: var(--mj-border-default, #e4e4e7);\n --rd-border-strong: var(--mj-border-strong, #d4d4d8);\n --rd-brand: var(--mj-brand-primary, #6366f1);\n --rd-on-brand: var(--mj-text-on-brand, #ffffff);\n\n --rd-low: var(--mj-status-error, #ef4444);\n --rd-mid: var(--mj-status-warning, #f59e0b);\n --rd-high: var(--mj-status-success, #10b981);\n }\n\n .rating-dialog {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 4px 20px 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n }\n .rating-dialog * { box-sizing: border-box; }\n\n .dialog-message {\n margin: 0;\n color: var(--rd-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n /* ─── Pill row ─── */\n .rating-scale {\n display: grid;\n grid-template-columns: repeat(10, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n }\n .rating-pip {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-width: 0;\n height: 40px;\n padding: 0;\n background: var(--rd-surface);\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n font-family: inherit;\n font-size: 13px;\n font-weight: 600;\n color: var(--rd-text-secondary);\n cursor: pointer;\n transition: transform 100ms ease, background 140ms ease, border-color 140ms ease, color 140ms ease, box-shadow 140ms ease;\n font-variant-numeric: tabular-nums;\n }\n .rating-pip:hover {\n border-color: var(--rd-border-strong);\n color: var(--rd-text-primary);\n }\n .rating-pip:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 25%, transparent);\n }\n .rating-pip.filled[data-band=\"low\"] { background: var(--rd-low); border-color: var(--rd-low); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"mid\"] { background: var(--rd-mid); border-color: var(--rd-mid); color: var(--rd-on-brand); }\n .rating-pip.filled[data-band=\"high\"] { background: var(--rd-high); border-color: var(--rd-high); color: var(--rd-on-brand); }\n .rating-pip.selected { transform: translateY(-1px); }\n\n /* ─── Meta row: edge legend + center caption ─── */\n .rating-meta {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: 8px;\n padding: 0 2px;\n margin-top: -2px;\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .legend-edge { font-weight: 500; }\n .legend-right { text-align: right; }\n\n .selected-caption {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n text-transform: none;\n letter-spacing: 0;\n color: var(--rd-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n .selected-caption strong { font-weight: 700; font-size: 13px; }\n .selected-caption .dot { color: var(--rd-text-disabled); }\n .selected-caption .muted { color: var(--rd-text-disabled); font-weight: 500; }\n .selected-caption[data-band=\"low\"] { color: var(--rd-low); }\n .selected-caption[data-band=\"mid\"] { color: var(--rd-mid); }\n .selected-caption[data-band=\"high\"] { color: var(--rd-high); }\n\n /* ─── Comment field ─── */\n .field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n .field-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n }\n .field-label {\n font-weight: 600;\n font-size: 13px;\n color: var(--rd-text-primary);\n }\n .field-hint {\n font-size: 11px;\n color: var(--rd-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n }\n .comment-textarea {\n width: 100%;\n min-height: 88px;\n padding: 10px 12px;\n border: 1px solid var(--rd-border);\n border-radius: 8px;\n background: var(--rd-surface);\n color: var(--rd-text-primary);\n font-family: inherit;\n font-size: 13.5px;\n line-height: 1.5;\n resize: vertical;\n transition: border-color 140ms ease, box-shadow 140ms ease;\n }\n .comment-textarea::placeholder { color: var(--rd-text-disabled); }\n .comment-textarea:hover { border-color: var(--rd-border-strong); }\n .comment-textarea:focus {\n outline: none;\n border-color: var(--rd-brand);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--rd-brand) 18%, transparent);\n }\n\n /* ─── Consent note ─── */\n .consent-note {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 12px 14px;\n background: color-mix(in srgb, var(--rd-brand) 6%, var(--rd-surface));\n border: 1px solid color-mix(in srgb, var(--rd-brand) 22%, var(--rd-border));\n border-radius: 8px;\n }\n .consent-note > i {\n color: var(--rd-brand);\n font-size: 14px;\n margin-top: 2px;\n flex-shrink: 0;\n }\n .consent-body { flex: 1; min-width: 0; }\n .consent-text {\n margin: 0;\n font-size: 12.5px;\n line-height: 1.5;\n color: var(--rd-text-secondary);\n }\n .consent-text strong { color: var(--rd-text-primary); font-weight: 600; }\n .consent-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n font-size: 12.5px;\n color: var(--rd-text-primary);\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n .consent-checkbox input {\n width: 15px;\n height: 15px;\n cursor: pointer;\n accent-color: var(--rd-brand);\n }\n .consent-warning {\n margin: 6px 0 0 23px;\n font-size: 11px;\n color: var(--rd-low);\n font-weight: 500;\n }\n `]\n})\nexport class RatingDialogComponent {\n @Input() message: string = '';\n @Input() initialRating: number | null = null;\n @Input() initialComments: string = '';\n\n /** When true, the user must check the consent box before submitting. */\n @Input() requireConsent: boolean = false;\n\n readonly scale: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n selectedRating: number | null = null;\n hoveredRating: number | null = null;\n comments: string = '';\n consentChecked: boolean = false;\n\n ngOnInit(): void {\n this.selectedRating = this.initialRating;\n this.comments = this.initialComments ?? '';\n }\n\n get effectiveRating(): number | null {\n return this.hoveredRating ?? this.selectedRating;\n }\n\n get effectiveBand(): string | null {\n const r = this.effectiveRating;\n return r === null ? null : this.bandFor(r);\n }\n\n bandFor(n: number): 'low' | 'mid' | 'high' {\n if (n <= 3) return 'low';\n if (n <= 7) return 'mid';\n return 'high';\n }\n\n isFilled(n: number): boolean {\n const r = this.effectiveRating;\n return r !== null && r >= n;\n }\n\n selectRating(n: number): void {\n this.selectedRating = n;\n }\n\n onScaleMouseLeave(): void {\n this.hoveredRating = null;\n }\n\n onPipBlur(): void {\n this.hoveredRating = null;\n }\n\n getDescriptor(n: number): string {\n if (n <= 2) return 'Very Poor';\n if (n <= 4) return 'Needs Improvement';\n if (n <= 6) return 'Okay';\n if (n <= 8) return 'Good';\n return 'Excellent';\n }\n\n getRating(): number | null {\n return this.selectedRating;\n }\n\n getComments(): string {\n return (this.comments ?? '').trim();\n }\n\n /** True if the consent requirement is met (not required, or required and checked). */\n isConsentValid(): boolean {\n return !this.requireConsent || this.consentChecked;\n }\n\n /** True only when the user *just* acknowledged consent in this dialog session. */\n wasConsentNewlyAcknowledged(): boolean {\n return this.requireConsent && this.consentChecked;\n }\n}\n"]}
@@ -229,7 +229,7 @@ export declare class MentionEditorComponent implements OnInit, AfterViewInit, Co
229
229
  mimeType: string;
230
230
  sizeBytes: number;
231
231
  artifactVersionId?: string;
232
- }): void;
232
+ }): PendingAttachment;
233
233
  /**
234
234
  * Clear all pending attachments
235
235
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mention-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-editor.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mention-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-editor.component.ts"],"names":[],"mappings":"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"}
@@ -1088,6 +1088,7 @@ export class MentionEditorComponent {
1088
1088
  };
1089
1089
  this.pendingAttachments.push(attachment);
1090
1090
  this.attachmentsChanged.emit([...this.pendingAttachments]);
1091
+ return attachment;
1091
1092
  }
1092
1093
  /**
1093
1094
  * Clear all pending attachments