@memberjunction/ng-feedback 0.0.1 → 5.29.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.
- package/dist/lib/components/feedback-button.component.d.ts +59 -0
- package/dist/lib/components/feedback-button.component.d.ts.map +1 -0
- package/dist/lib/components/feedback-button.component.js +108 -0
- package/dist/lib/components/feedback-button.component.js.map +1 -0
- package/dist/lib/components/feedback-form.component.d.ts +101 -0
- package/dist/lib/components/feedback-form.component.d.ts.map +1 -0
- package/dist/lib/components/feedback-form.component.js +920 -0
- package/dist/lib/components/feedback-form.component.js.map +1 -0
- package/dist/lib/feedback.config.d.ts +67 -0
- package/dist/lib/feedback.config.d.ts.map +1 -0
- package/dist/lib/feedback.config.js +33 -0
- package/dist/lib/feedback.config.js.map +1 -0
- package/dist/lib/feedback.constants.d.ts +14 -0
- package/dist/lib/feedback.constants.d.ts.map +1 -0
- package/dist/lib/feedback.constants.js +60 -0
- package/dist/lib/feedback.constants.js.map +1 -0
- package/dist/lib/feedback.module.d.ts +77 -0
- package/dist/lib/feedback.module.d.ts.map +1 -0
- package/dist/lib/feedback.module.js +121 -0
- package/dist/lib/feedback.module.js.map +1 -0
- package/dist/lib/feedback.types.d.ts +73 -0
- package/dist/lib/feedback.types.d.ts.map +1 -0
- package/dist/lib/feedback.types.js +2 -0
- package/dist/lib/feedback.types.js.map +1 -0
- package/dist/lib/services/feedback-dialog.service.d.ts +85 -0
- package/dist/lib/services/feedback-dialog.service.d.ts.map +1 -0
- package/dist/lib/services/feedback-dialog.service.js +177 -0
- package/dist/lib/services/feedback-dialog.service.js.map +1 -0
- package/dist/lib/services/feedback.service.d.ts +63 -0
- package/dist/lib/services/feedback.service.d.ts.map +1 -0
- package/dist/lib/services/feedback.service.js +240 -0
- package/dist/lib/services/feedback.service.js.map +1 -0
- package/dist/public-api.d.ts +9 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +18 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +37 -7
- package/README.md +0 -45
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { FeedbackDialogService } from '../services/feedback-dialog.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Position options for the floating feedback button
|
|
5
|
+
*/
|
|
6
|
+
export type FeedbackButtonPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
7
|
+
/**
|
|
8
|
+
* Floating feedback button component
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```html
|
|
12
|
+
* <!-- Basic usage - bottom right corner -->
|
|
13
|
+
* <mj-feedback-button></mj-feedback-button>
|
|
14
|
+
*
|
|
15
|
+
* <!-- With label visible -->
|
|
16
|
+
* <mj-feedback-button [ShowLabel]="true" ButtonText="Report Issue"></mj-feedback-button>
|
|
17
|
+
*
|
|
18
|
+
* <!-- Different position -->
|
|
19
|
+
* <mj-feedback-button Position="bottom-left"></mj-feedback-button>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class FeedbackButtonComponent {
|
|
23
|
+
private dialogService;
|
|
24
|
+
/**
|
|
25
|
+
* Position of the floating button
|
|
26
|
+
*/
|
|
27
|
+
Position: FeedbackButtonPosition;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to show the text label
|
|
30
|
+
*/
|
|
31
|
+
ShowLabel: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Button text (shown as tooltip or label)
|
|
34
|
+
*/
|
|
35
|
+
ButtonText: string;
|
|
36
|
+
/**
|
|
37
|
+
* Optional callback to get the current page/view name.
|
|
38
|
+
* Use this for apps where URL doesn't reflect navigation (e.g., tab-based apps).
|
|
39
|
+
* @example
|
|
40
|
+
* ```html
|
|
41
|
+
* <mj-feedback-button [CurrentPageProvider]="getCurrentPage"></mj-feedback-button>
|
|
42
|
+
* ```
|
|
43
|
+
* ```typescript
|
|
44
|
+
* getCurrentPage = (): string => {
|
|
45
|
+
* return this.workspaceManager.GetConfiguration()?.tabs
|
|
46
|
+
* .find(t => t.id === this.workspaceManager.GetActiveTabId())?.title || '';
|
|
47
|
+
* };
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
CurrentPageProvider?: () => string | undefined;
|
|
51
|
+
constructor(dialogService: FeedbackDialogService);
|
|
52
|
+
/**
|
|
53
|
+
* Open the feedback dialog
|
|
54
|
+
*/
|
|
55
|
+
OpenFeedbackDialog(): void;
|
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackButtonComponent, never>;
|
|
57
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FeedbackButtonComponent, "mj-feedback-button", never, { "Position": { "alias": "Position"; "required": false; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "ButtonText": { "alias": "ButtonText"; "required": false; }; "CurrentPageProvider": { "alias": "CurrentPageProvider"; "required": false; }; }, {}, never, never, false, never>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=feedback-button.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-button.component.d.ts","sourceRoot":"","sources":["../../../src/lib/components/feedback-button.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;;AAE5E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/F;;;;;;;;;;;;;;GAcG;AACH,qBA4Ea,uBAAuB;IAiChC,OAAO,CAAC,aAAa;IAhCvB;;OAEG;IACM,QAAQ,EAAE,sBAAsB,CAAkB;IAE3D;;OAEG;IACM,SAAS,UAAS;IAE3B;;OAEG;IACM,UAAU,SAAc;IAEjC;;;;;;;;;;;;;OAaG;IACM,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;gBAG9C,aAAa,EAAE,qBAAqB;IAG9C;;OAEG;IACH,kBAAkB,IAAI,IAAI;yCAvCf,uBAAuB;2CAAvB,uBAAuB;CA6CnC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../services/feedback-dialog.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
function FeedbackButtonComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
i0.ɵɵelementStart(0, "span", 2);
|
|
7
|
+
i0.ɵɵtext(1);
|
|
8
|
+
i0.ɵɵelementEnd();
|
|
9
|
+
} if (rf & 2) {
|
|
10
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
11
|
+
i0.ɵɵadvance();
|
|
12
|
+
i0.ɵɵtextInterpolate(ctx_r0.ButtonText);
|
|
13
|
+
} }
|
|
14
|
+
/**
|
|
15
|
+
* Floating feedback button component
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```html
|
|
19
|
+
* <!-- Basic usage - bottom right corner -->
|
|
20
|
+
* <mj-feedback-button></mj-feedback-button>
|
|
21
|
+
*
|
|
22
|
+
* <!-- With label visible -->
|
|
23
|
+
* <mj-feedback-button [ShowLabel]="true" ButtonText="Report Issue"></mj-feedback-button>
|
|
24
|
+
*
|
|
25
|
+
* <!-- Different position -->
|
|
26
|
+
* <mj-feedback-button Position="bottom-left"></mj-feedback-button>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class FeedbackButtonComponent {
|
|
30
|
+
dialogService;
|
|
31
|
+
/**
|
|
32
|
+
* Position of the floating button
|
|
33
|
+
*/
|
|
34
|
+
Position = 'bottom-right';
|
|
35
|
+
/**
|
|
36
|
+
* Whether to show the text label
|
|
37
|
+
*/
|
|
38
|
+
ShowLabel = false;
|
|
39
|
+
/**
|
|
40
|
+
* Button text (shown as tooltip or label)
|
|
41
|
+
*/
|
|
42
|
+
ButtonText = 'Feedback';
|
|
43
|
+
/**
|
|
44
|
+
* Optional callback to get the current page/view name.
|
|
45
|
+
* Use this for apps where URL doesn't reflect navigation (e.g., tab-based apps).
|
|
46
|
+
* @example
|
|
47
|
+
* ```html
|
|
48
|
+
* <mj-feedback-button [CurrentPageProvider]="getCurrentPage"></mj-feedback-button>
|
|
49
|
+
* ```
|
|
50
|
+
* ```typescript
|
|
51
|
+
* getCurrentPage = (): string => {
|
|
52
|
+
* return this.workspaceManager.GetConfiguration()?.tabs
|
|
53
|
+
* .find(t => t.id === this.workspaceManager.GetActiveTabId())?.title || '';
|
|
54
|
+
* };
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
CurrentPageProvider;
|
|
58
|
+
constructor(dialogService) {
|
|
59
|
+
this.dialogService = dialogService;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Open the feedback dialog
|
|
63
|
+
*/
|
|
64
|
+
OpenFeedbackDialog() {
|
|
65
|
+
const currentPage = this.CurrentPageProvider?.();
|
|
66
|
+
this.dialogService.OpenFeedbackDialog({
|
|
67
|
+
currentPage
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
static ɵfac = function FeedbackButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FeedbackButtonComponent)(i0.ɵɵdirectiveInject(i1.FeedbackDialogService)); };
|
|
71
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FeedbackButtonComponent, selectors: [["mj-feedback-button"]], inputs: { Position: "Position", ShowLabel: "ShowLabel", ButtonText: "ButtonText", CurrentPageProvider: "CurrentPageProvider" }, standalone: false, decls: 3, vars: 3, consts: [["type", "button", 1, "feedback-floating-button", 3, "click", "ngClass", "title"], [1, "fas", "fa-comment-dots"], [1, "button-label"]], template: function FeedbackButtonComponent_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
i0.ɵɵelementStart(0, "button", 0);
|
|
73
|
+
i0.ɵɵlistener("click", function FeedbackButtonComponent_Template_button_click_0_listener() { return ctx.OpenFeedbackDialog(); });
|
|
74
|
+
i0.ɵɵelement(1, "i", 1);
|
|
75
|
+
i0.ɵɵconditionalCreate(2, FeedbackButtonComponent_Conditional_2_Template, 2, 1, "span", 2);
|
|
76
|
+
i0.ɵɵelementEnd();
|
|
77
|
+
} if (rf & 2) {
|
|
78
|
+
i0.ɵɵproperty("ngClass", "position-" + ctx.Position)("title", ctx.ButtonText);
|
|
79
|
+
i0.ɵɵadvance(2);
|
|
80
|
+
i0.ɵɵconditional(ctx.ShowLabel ? 2 : -1);
|
|
81
|
+
} }, dependencies: [i2.NgClass], styles: [".feedback-floating-button[_ngcontent-%COMP%] {\n position: fixed;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-3) var(--mj-space-4);\n border-radius: var(--mj-space-6);\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n cursor: pointer;\n box-shadow: var(--mj-shadow-brand-md);\n transition: var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: var(--mj-font-family);\n }\n\n .feedback-floating-button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n }\n\n .feedback-floating-button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n }\n\n .feedback-floating-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .button-label[_ngcontent-%COMP%] {\n white-space: nowrap;\n }\n\n \n\n .position-bottom-right[_ngcontent-%COMP%] {\n bottom: var(--mj-space-6);\n right: var(--mj-space-6);\n }\n\n .position-bottom-left[_ngcontent-%COMP%] {\n bottom: var(--mj-space-6);\n left: var(--mj-space-6);\n }\n\n .position-top-right[_ngcontent-%COMP%] {\n top: var(--mj-space-6);\n right: var(--mj-space-6);\n }\n\n .position-top-left[_ngcontent-%COMP%] {\n top: var(--mj-space-6);\n left: var(--mj-space-6);\n }"] });
|
|
82
|
+
}
|
|
83
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeedbackButtonComponent, [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ standalone: false, selector: 'mj-feedback-button', template: `
|
|
86
|
+
<button
|
|
87
|
+
class="feedback-floating-button"
|
|
88
|
+
[ngClass]="'position-' + Position"
|
|
89
|
+
(click)="OpenFeedbackDialog()"
|
|
90
|
+
[title]="ButtonText"
|
|
91
|
+
type="button">
|
|
92
|
+
<i class="fas fa-comment-dots"></i>
|
|
93
|
+
@if (ShowLabel) {
|
|
94
|
+
<span class="button-label">{{ ButtonText }}</span>
|
|
95
|
+
}
|
|
96
|
+
</button>
|
|
97
|
+
`, styles: ["\n .feedback-floating-button {\n position: fixed;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-3) var(--mj-space-4);\n border-radius: var(--mj-space-6);\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n cursor: pointer;\n box-shadow: var(--mj-shadow-brand-md);\n transition: var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: var(--mj-font-family);\n }\n\n .feedback-floating-button:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-lg);\n }\n\n .feedback-floating-button:active {\n transform: translateY(0);\n }\n\n .feedback-floating-button i {\n font-size: 18px;\n }\n\n .button-label {\n white-space: nowrap;\n }\n\n /* Position variants */\n .position-bottom-right {\n bottom: var(--mj-space-6);\n right: var(--mj-space-6);\n }\n\n .position-bottom-left {\n bottom: var(--mj-space-6);\n left: var(--mj-space-6);\n }\n\n .position-top-right {\n top: var(--mj-space-6);\n right: var(--mj-space-6);\n }\n\n .position-top-left {\n top: var(--mj-space-6);\n left: var(--mj-space-6);\n }\n "] }]
|
|
98
|
+
}], () => [{ type: i1.FeedbackDialogService }], { Position: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], ShowLabel: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], ButtonText: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], CurrentPageProvider: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}] }); })();
|
|
107
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FeedbackButtonComponent, { className: "FeedbackButtonComponent", filePath: "src/lib/components/feedback-button.component.ts", lineNumber: 100 }); })();
|
|
108
|
+
//# sourceMappingURL=feedback-button.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-button.component.js","sourceRoot":"","sources":["../../../src/lib/components/feedback-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;;IAmCzC,+BAA2B;IAAA,YAAgB;IAAA,iBAAO;;;IAAvB,cAAgB;IAAhB,uCAAgB;;AA3BnD;;;;;;;;;;;;;;GAcG;AA6EH,MAAM,OAAO,uBAAuB;IAiCxB;IAhCV;;OAEG;IACM,QAAQ,GAA2B,cAAc,CAAC;IAE3D;;OAEG;IACM,SAAS,GAAG,KAAK,CAAC;IAE3B;;OAEG;IACM,UAAU,GAAG,UAAU,CAAC;IAEjC;;;;;;;;;;;;;OAaG;IACM,mBAAmB,CAA4B;IAExD,YACU,aAAoC;QAApC,kBAAa,GAAb,aAAa,CAAuB;IAC3C,CAAC;IAEJ;;OAEG;IACH,kBAAkB;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;YACpC,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;iHA5CU,uBAAuB;6DAAvB,uBAAuB;YAxEhC,iCAKgB;YAFd,oGAAS,wBAAoB,IAAC;YAG9B,uBAAmC;YACnC,0FAAiB;YAGnB,iBAAS;;YANP,AAFA,oDAAkC,yBAEd;YAGpB,eAEC;YAFD,wCAEC;;;iFA+DM,uBAAuB;cA5EnC,SAAS;6BACI,KAAK,YACP,oBAAoB,YACpB;;;;;;;;;;;;GAYT;;kBAiEA,KAAK;;kBAKL,KAAK;;kBAKL,KAAK;;kBAgBL,KAAK;;kFA9BK,uBAAuB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { OnInit, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { FeedbackSubmission, FeedbackResponse, FeedbackCategory, FeedbackSeverity, FeedbackEnvironment } from '../feedback.types';
|
|
3
|
+
import { FeedbackConfig, FeedbackFieldConfig } from '../feedback.config';
|
|
4
|
+
import { FeedbackService } from '../services/feedback.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class FeedbackFormComponent implements OnInit {
|
|
7
|
+
config: FeedbackConfig;
|
|
8
|
+
private feedbackService;
|
|
9
|
+
private cdr;
|
|
10
|
+
/** Controls mj-dialog visibility — set by FeedbackDialogService */
|
|
11
|
+
DialogVisible: boolean;
|
|
12
|
+
PrefilledCategory?: FeedbackCategory | string;
|
|
13
|
+
PrefilledTitle?: string;
|
|
14
|
+
ContextData?: Record<string, unknown>;
|
|
15
|
+
/** Current page/view name (for apps where URL doesn't reflect navigation) */
|
|
16
|
+
CurrentPage?: string;
|
|
17
|
+
Submitted: EventEmitter<FeedbackSubmission>;
|
|
18
|
+
Success: EventEmitter<FeedbackResponse>;
|
|
19
|
+
Error: EventEmitter<Error>;
|
|
20
|
+
Cancelled: EventEmitter<void>;
|
|
21
|
+
DialogClosed: EventEmitter<{
|
|
22
|
+
success: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
Category: string;
|
|
25
|
+
Title: string;
|
|
26
|
+
Description: string;
|
|
27
|
+
StepsToReproduce: string;
|
|
28
|
+
ExpectedBehavior: string;
|
|
29
|
+
ActualBehavior: string;
|
|
30
|
+
Severity: FeedbackSeverity;
|
|
31
|
+
UseCase: string;
|
|
32
|
+
ProposedSolution: string;
|
|
33
|
+
Environment: FeedbackEnvironment | '';
|
|
34
|
+
AffectedArea: string;
|
|
35
|
+
Name: string;
|
|
36
|
+
Email: string;
|
|
37
|
+
IsSubmitting: boolean;
|
|
38
|
+
IsClassifying: boolean;
|
|
39
|
+
WasAutoClassified: boolean;
|
|
40
|
+
SubmissionSuccess: boolean;
|
|
41
|
+
ErrorMessage: string;
|
|
42
|
+
private lastClassifiedTitle;
|
|
43
|
+
private lastClassifiedDescription;
|
|
44
|
+
IssueNumber?: number;
|
|
45
|
+
IssueUrl?: string;
|
|
46
|
+
ScreenshotDataUrl?: string;
|
|
47
|
+
ScreenshotIncluded: boolean;
|
|
48
|
+
IsCapturingScreenshot: boolean;
|
|
49
|
+
CertificationAccepted: boolean;
|
|
50
|
+
private classifyTimeout?;
|
|
51
|
+
FieldConfig: Required<FeedbackFieldConfig>;
|
|
52
|
+
constructor(config: FeedbackConfig, feedbackService: FeedbackService, cdr: ChangeDetectorRef);
|
|
53
|
+
ngOnInit(): void;
|
|
54
|
+
/**
|
|
55
|
+
* User opts in to include the screenshot
|
|
56
|
+
*/
|
|
57
|
+
IncludeScreenshot(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove the attached screenshot (opt back out)
|
|
60
|
+
*/
|
|
61
|
+
RemoveScreenshot(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Handle field value changes to ensure button state updates.
|
|
64
|
+
* Triggers LLM auto-classification after a debounce when description is long enough.
|
|
65
|
+
*/
|
|
66
|
+
OnFieldChange(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Schedule LLM classification with debounce (1 second after user stops typing)
|
|
69
|
+
*/
|
|
70
|
+
private scheduleClassification;
|
|
71
|
+
/**
|
|
72
|
+
* Run LLM classification and apply suggestions
|
|
73
|
+
*/
|
|
74
|
+
private runClassification;
|
|
75
|
+
/**
|
|
76
|
+
* Check if form is valid for submission
|
|
77
|
+
*/
|
|
78
|
+
CanSubmit(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Submit the feedback
|
|
81
|
+
*/
|
|
82
|
+
OnSubmit(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Build the feedback submission object from current form state
|
|
85
|
+
*/
|
|
86
|
+
private buildSubmission;
|
|
87
|
+
private applyBugFields;
|
|
88
|
+
private applyFeatureFields;
|
|
89
|
+
private applyOptionalFields;
|
|
90
|
+
/**
|
|
91
|
+
* Cancel and close the dialog
|
|
92
|
+
*/
|
|
93
|
+
OnCancel(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Reset the form
|
|
96
|
+
*/
|
|
97
|
+
Reset(): void;
|
|
98
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackFormComponent, never>;
|
|
99
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FeedbackFormComponent, "mj-feedback-form", never, { "PrefilledCategory": { "alias": "PrefilledCategory"; "required": false; }; "PrefilledTitle": { "alias": "PrefilledTitle"; "required": false; }; "ContextData": { "alias": "ContextData"; "required": false; }; "CurrentPage": { "alias": "CurrentPage"; "required": false; }; }, { "Submitted": "Submitted"; "Success": "Success"; "Error": "Error"; "Cancelled": "Cancelled"; "DialogClosed": "DialogClosed"; }, never, never, true, never>;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=feedback-form.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-form.component.d.ts","sourceRoot":"","sources":["../../../src/lib/components/feedback-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAiB,YAAY,EAAU,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE1G,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClI,OAAO,EAAE,cAAc,EAAmB,mBAAmB,EAAoB,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAI/D,qBA6ea,qBAAsB,YAAW,MAAM;IAsDhB,MAAM,EAAE,cAAc;IACtD,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,GAAG;IAvDb,mEAAmE;IACnE,aAAa,UAAQ;IAGZ,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,6EAA6E;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,mCAA0C;IACnD,OAAO,iCAAwC;IAC/C,KAAK,sBAA6B;IAClC,SAAS,qBAA4B;IACrC,YAAY;iBAA+B,OAAO;OAAM;IAGlE,QAAQ,EAAE,MAAM,CAAS;IACzB,KAAK,EAAE,MAAM,CAAM;IACnB,WAAW,EAAE,MAAM,CAAM;IACzB,gBAAgB,EAAE,MAAM,CAAM;IAC9B,gBAAgB,EAAE,MAAM,CAAM;IAC9B,cAAc,EAAE,MAAM,CAAM;IAC5B,QAAQ,EAAE,gBAAgB,CAAW;IACrC,OAAO,EAAE,MAAM,CAAM;IACrB,gBAAgB,EAAE,MAAM,CAAM;IAC9B,WAAW,EAAE,mBAAmB,GAAG,EAAE,CAAM;IAC3C,YAAY,EAAE,MAAM,CAAM;IAC1B,IAAI,EAAE,MAAM,CAAM;IAClB,KAAK,EAAE,MAAM,CAAM;IAInB,YAAY,UAAS;IACrB,aAAa,UAAS;IACtB,iBAAiB,UAAS;IAC1B,iBAAiB,UAAS;IAC1B,YAAY,SAAM;IAClB,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,yBAAyB,CAAM;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,UAAS;IAC3B,qBAAqB,UAAQ;IAC7B,qBAAqB,UAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAgC;IAGxD,WAAW,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAGT,MAAM,EAAE,cAAc,EAC9C,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,iBAAiB;IAKhC,QAAQ,IAAI,IAAI;IAehB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAWzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;;OAGG;IACH,aAAa,IAAI,IAAI;IAKrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;IACH,SAAS,IAAI,OAAO;IAgBpB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,KAAK,IAAI,IAAI;yCA3RF,qBAAqB;2CAArB,qBAAqB;CAySjC"}
|