@posiwise/resource-contact-us 0.0.2 → 0.0.3
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/esm2022/index.mjs +3 -1
- package/esm2022/lib/edit-footer-links-modal/edit-footer-links-modal.component.mjs +198 -0
- package/esm2022/lib/edit-questions-modal/edit-questions-modal.component.mjs +156 -0
- package/esm2022/lib/resource-header/resource-header.component.mjs +3 -4
- package/esm2022/resource-contact-us/resource-contact-us.component.mjs +67 -75
- package/esm2022/resource-contact-us/resource-contact-us.module.mjs +7 -5
- package/fesm2022/{posiwise-resource-contact-us-edit-navbar-modal.component-BtICpJJx.mjs → posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs} +5 -5
- package/fesm2022/{posiwise-resource-contact-us-edit-navbar-modal.component-BtICpJJx.mjs.map → posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs.map} +1 -1
- package/fesm2022/posiwise-resource-contact-us.mjs +428 -85
- package/fesm2022/posiwise-resource-contact-us.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/edit-footer-links-modal/edit-footer-links-modal.component.d.ts +22 -0
- package/lib/edit-questions-modal/edit-questions-modal.component.d.ts +21 -0
- package/package.json +1 -1
- package/resource-contact-us/resource-contact-us.component.d.ts +4 -17
- package/resource-contact-us/resource-contact-us.module.d.ts +12 -10
package/esm2022/index.mjs
CHANGED
|
@@ -8,4 +8,6 @@ export * from './lib/image-cropper/profile-image-cropper.module';
|
|
|
8
8
|
export * from './lib/image-cropper/image-cropper.component';
|
|
9
9
|
export * from './lib/field-error-display/field-error-display.component';
|
|
10
10
|
export * from './lib/field-error-display/field-error-display.module';
|
|
11
|
-
|
|
11
|
+
export * from './lib/edit-footer-links-modal/edit-footer-links-modal.component';
|
|
12
|
+
export * from './lib/edit-questions-modal/edit-questions-modal.component';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsa0RBQWtELENBQUE7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDJEQUEyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS1jb250YWN0LXVzL3Jlc291cmNlLWNvbnRhY3QtdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UtY29udGFjdC11cy9yZXNvdXJjZS1jb250YWN0LXVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcmVzb3VyY2UtbW9kYWwuaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtaGVhZGVyL3Jlc291cmNlLWhlYWRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtaGVhZGVyL3Jlc291cmNlLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWFnZS1jcm9wcGVyL3Byb2ZpbGUtaW1hZ2UtY3JvcHBlci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLWVycm9yLWRpc3BsYXkvZmllbGQtZXJyb3ItZGlzcGxheS5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZGl0LWZvb3Rlci1saW5rcy1tb2RhbC9lZGl0LWZvb3Rlci1saW5rcy1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdC1xdWVzdGlvbnMtbW9kYWwvZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50JzsiXX0=
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@angular/cdk/drag-drop";
|
|
10
|
+
/**
|
|
11
|
+
* Edit Footer Links Modal Component
|
|
12
|
+
* Contains drag-drop functionality for reordering footer links
|
|
13
|
+
* This component is lazy-loaded only when the edit modal is opened
|
|
14
|
+
*/
|
|
15
|
+
export class EditFooterLinksModalComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.editingFooterLinks = { items: [] };
|
|
18
|
+
this.save = new EventEmitter();
|
|
19
|
+
this.close = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
dropFooterLinks(event) {
|
|
22
|
+
moveItemInArray(this.editingFooterLinks.items, event.previousIndex, event.currentIndex);
|
|
23
|
+
}
|
|
24
|
+
dropSubtitles(footerIndex, event) {
|
|
25
|
+
moveItemInArray(this.editingFooterLinks.items[footerIndex].subtitles, event.previousIndex, event.currentIndex);
|
|
26
|
+
}
|
|
27
|
+
addFooterLink() {
|
|
28
|
+
this.editingFooterLinks.items.push({
|
|
29
|
+
title: '',
|
|
30
|
+
path: '',
|
|
31
|
+
subtitles: []
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
removeFooterLink(index) {
|
|
35
|
+
this.editingFooterLinks.items.splice(index, 1);
|
|
36
|
+
}
|
|
37
|
+
addSubtitle(footerIndex) {
|
|
38
|
+
this.editingFooterLinks.items[footerIndex].subtitles.push({
|
|
39
|
+
title: '',
|
|
40
|
+
path: ''
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
removeSubtitle(footerIndex, subtitleIndex) {
|
|
44
|
+
this.editingFooterLinks.items[footerIndex].subtitles.splice(subtitleIndex, 1);
|
|
45
|
+
}
|
|
46
|
+
onSave() {
|
|
47
|
+
this.save.emit(this.editingFooterLinks);
|
|
48
|
+
}
|
|
49
|
+
onClose() {
|
|
50
|
+
this.close.emit();
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditFooterLinksModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EditFooterLinksModalComponent, isStandalone: true, selector: "pw-edit-footer-links-modal", inputs: { editingFooterLinks: "editingFooterLinks" }, outputs: { save: "save", close: "close" }, ngImport: i0, template: `
|
|
54
|
+
<div class="modal-header">
|
|
55
|
+
<h5 class="modal-title">Edit Footer Links</h5>
|
|
56
|
+
<button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div class="modal-body">
|
|
60
|
+
<h4 class="mb-3">Footer Links Section</h4>
|
|
61
|
+
<div cdkDropList (cdkDropListDropped)="dropFooterLinks($event)">
|
|
62
|
+
<div *ngFor="let footer of editingFooterLinks.items; let i = index" class="border p-3 mb-3" cdkDrag>
|
|
63
|
+
<div class="row">
|
|
64
|
+
<div class="col-md-5 mb-2">
|
|
65
|
+
<label [for]="'footerTitle' + i" class="form-label">Title</label>
|
|
66
|
+
<input [id]="'footerTitle' + i" class="form-control" [(ngModel)]="footer.title" />
|
|
67
|
+
</div>
|
|
68
|
+
<div class="col-md-5 mb-2">
|
|
69
|
+
<label [for]="'footerPath' + i" class="form-label">Path</label>
|
|
70
|
+
<input [id]="'footerPath' + i" class="form-control" [(ngModel)]="footer.path" />
|
|
71
|
+
</div>
|
|
72
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
73
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
74
|
+
(click)="removeFooterLink(i)"
|
|
75
|
+
(keydown.enter)="removeFooterLink(i)"
|
|
76
|
+
(keydown.space)="removeFooterLink(i)"></i>
|
|
77
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<!-- Subtitles -->
|
|
82
|
+
<div cdkDropList (cdkDropListDropped)="dropSubtitles(i, $event)">
|
|
83
|
+
<div *ngFor="let sub of footer.subtitles; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
|
|
84
|
+
<div class="col-md-5">
|
|
85
|
+
<label [for]="'subtitleTitle' + i + j" class="form-label">Subtitle Title</label>
|
|
86
|
+
<input [id]="'subtitleTitle' + i + j" class="form-control" [(ngModel)]="sub.title" />
|
|
87
|
+
</div>
|
|
88
|
+
<div class="col-md-5">
|
|
89
|
+
<label [for]="'subtitlePath' + i + j" class="form-label">Subtitle Path</label>
|
|
90
|
+
<input [id]="'subtitlePath' + i + j" class="form-control" [(ngModel)]="sub.path" />
|
|
91
|
+
</div>
|
|
92
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
93
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
94
|
+
(click)="removeSubtitle(i, j)"
|
|
95
|
+
(keydown.enter)="removeSubtitle(i, j)"
|
|
96
|
+
(keydown.space)="removeSubtitle(i, j)"></i>
|
|
97
|
+
<i class="fa fa-bars cursor-move in-page-bars-icon" cdkDragHandle></i>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<button class="btn btn-outline-primary btn-sm mt-2" (click)="addSubtitle(i)">
|
|
103
|
+
+ Add Subtitle
|
|
104
|
+
</button>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<button class="btn btn-primary mt-3" (click)="addFooterLink()">
|
|
109
|
+
+ Add Footer Link
|
|
110
|
+
</button>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<div class="modal-footer">
|
|
114
|
+
<button class="btn btn-secondary" (click)="onClose()">Cancel</button>
|
|
115
|
+
<button class="btn btn-primary" (click)="onSave()">Save</button>
|
|
116
|
+
</div>
|
|
117
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditFooterLinksModalComponent, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{
|
|
122
|
+
selector: 'pw-edit-footer-links-modal',
|
|
123
|
+
standalone: true,
|
|
124
|
+
imports: [CommonModule, FormsModule, DragDropModule],
|
|
125
|
+
template: `
|
|
126
|
+
<div class="modal-header">
|
|
127
|
+
<h5 class="modal-title">Edit Footer Links</h5>
|
|
128
|
+
<button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
<div class="modal-body">
|
|
132
|
+
<h4 class="mb-3">Footer Links Section</h4>
|
|
133
|
+
<div cdkDropList (cdkDropListDropped)="dropFooterLinks($event)">
|
|
134
|
+
<div *ngFor="let footer of editingFooterLinks.items; let i = index" class="border p-3 mb-3" cdkDrag>
|
|
135
|
+
<div class="row">
|
|
136
|
+
<div class="col-md-5 mb-2">
|
|
137
|
+
<label [for]="'footerTitle' + i" class="form-label">Title</label>
|
|
138
|
+
<input [id]="'footerTitle' + i" class="form-control" [(ngModel)]="footer.title" />
|
|
139
|
+
</div>
|
|
140
|
+
<div class="col-md-5 mb-2">
|
|
141
|
+
<label [for]="'footerPath' + i" class="form-label">Path</label>
|
|
142
|
+
<input [id]="'footerPath' + i" class="form-control" [(ngModel)]="footer.path" />
|
|
143
|
+
</div>
|
|
144
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
145
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
146
|
+
(click)="removeFooterLink(i)"
|
|
147
|
+
(keydown.enter)="removeFooterLink(i)"
|
|
148
|
+
(keydown.space)="removeFooterLink(i)"></i>
|
|
149
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<!-- Subtitles -->
|
|
154
|
+
<div cdkDropList (cdkDropListDropped)="dropSubtitles(i, $event)">
|
|
155
|
+
<div *ngFor="let sub of footer.subtitles; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
|
|
156
|
+
<div class="col-md-5">
|
|
157
|
+
<label [for]="'subtitleTitle' + i + j" class="form-label">Subtitle Title</label>
|
|
158
|
+
<input [id]="'subtitleTitle' + i + j" class="form-control" [(ngModel)]="sub.title" />
|
|
159
|
+
</div>
|
|
160
|
+
<div class="col-md-5">
|
|
161
|
+
<label [for]="'subtitlePath' + i + j" class="form-label">Subtitle Path</label>
|
|
162
|
+
<input [id]="'subtitlePath' + i + j" class="form-control" [(ngModel)]="sub.path" />
|
|
163
|
+
</div>
|
|
164
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
165
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
166
|
+
(click)="removeSubtitle(i, j)"
|
|
167
|
+
(keydown.enter)="removeSubtitle(i, j)"
|
|
168
|
+
(keydown.space)="removeSubtitle(i, j)"></i>
|
|
169
|
+
<i class="fa fa-bars cursor-move in-page-bars-icon" cdkDragHandle></i>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
<button class="btn btn-outline-primary btn-sm mt-2" (click)="addSubtitle(i)">
|
|
175
|
+
+ Add Subtitle
|
|
176
|
+
</button>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<button class="btn btn-primary mt-3" (click)="addFooterLink()">
|
|
181
|
+
+ Add Footer Link
|
|
182
|
+
</button>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<div class="modal-footer">
|
|
186
|
+
<button class="btn btn-secondary" (click)="onClose()">Cancel</button>
|
|
187
|
+
<button class="btn btn-primary" (click)="onSave()">Save</button>
|
|
188
|
+
</div>
|
|
189
|
+
`
|
|
190
|
+
}]
|
|
191
|
+
}], propDecorators: { editingFooterLinks: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], save: [{
|
|
194
|
+
type: Output
|
|
195
|
+
}], close: [{
|
|
196
|
+
type: Output
|
|
197
|
+
}] } });
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1mb290ZXItbGlua3MtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZWRpdC1mb290ZXItbGlua3MtbW9kYWwvZWRpdC1mb290ZXItbGlua3MtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV4RDs7OztHQUlHO0FBdUVILE1BQU0sT0FBTyw2QkFBNkI7SUF0RTFDO1FBdUVhLHVCQUFrQixHQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBNEM5QztJQTFDRyxlQUFlLENBQUMsS0FBVTtRQUN0QixlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQW1CLEVBQUUsS0FBVTtRQUN6QyxlQUFlLENBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQ3BELEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQjtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDdEQsS0FBSyxFQUFFLEVBQUU7WUFDVCxJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBbUIsRUFBRSxhQUFxQjtRQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7K0dBOUNRLDZCQUE2QjttR0FBN0IsNkJBQTZCLHVMQWxFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRVQsMkRBakVTLFlBQVksMkpBQUUsV0FBVyw4bUJBQUUsY0FBYzs7NEZBbUUxQyw2QkFBNkI7a0JBdEV6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztvQkFDcEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0VUO2lCQUNKOzhCQUVZLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuLyoqXG4gKiBFZGl0IEZvb3RlciBMaW5rcyBNb2RhbCBDb21wb25lbnRcbiAqIENvbnRhaW5zIGRyYWctZHJvcCBmdW5jdGlvbmFsaXR5IGZvciByZW9yZGVyaW5nIGZvb3RlciBsaW5rc1xuICogVGhpcyBjb21wb25lbnQgaXMgbGF6eS1sb2FkZWQgb25seSB3aGVuIHRoZSBlZGl0IG1vZGFsIGlzIG9wZW5lZFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVkaXQtZm9vdGVyLWxpbmtzLW1vZGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IEZvb3RlciBMaW5rczwvaDU+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1iLTNcIj5Gb290ZXIgTGlua3MgU2VjdGlvbjwvaDQ+XG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEZvb3RlckxpbmtzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmb290ZXIgb2YgZWRpdGluZ0Zvb3RlckxpbmtzLml0ZW1zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidmb290ZXJUaXRsZScgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VGl0bGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiJ2Zvb3RlclRpdGxlJyArIGlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9vdGVyLnRpdGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZm9vdGVyUGF0aCcgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGF0aDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCInZm9vdGVyUGF0aCcgKyBpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImZvb3Rlci5wYXRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggaW4tcGFnZS10cmFzaC1pY29uIHRleHQtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1YnRpdGxlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BTdWJ0aXRsZXMoaSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViIG9mIGZvb3Rlci5zdWJ0aXRsZXM7IGxldCBqID0gaW5kZXhcIiBjbGFzcz1cInJvdyBib3JkZXIgcC0zIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3N1YnRpdGxlVGl0bGUnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdWJ0aXRsZSBUaXRsZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiJ3N1YnRpdGxlVGl0bGUnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic3ViLnRpdGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3N1YnRpdGxlUGF0aCcgKyBpICsgalwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN1YnRpdGxlIFBhdGg8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2lkXT1cIidzdWJ0aXRsZVBhdGgnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic3ViLnBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gdGV4dC1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlU3VidGl0bGUoaSwgailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVTdWJ0aXRsZShpLCBqKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInJlbW92ZVN1YnRpdGxlKGksIGopXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnMgY3Vyc29yLW1vdmUgaW4tcGFnZS1iYXJzLWljb25cIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtIG10LTJcIiAoY2xpY2spPVwiYWRkU3VidGl0bGUoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIFN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXQtM1wiIChjbGljayk9XCJhZGRGb290ZXJMaW5rKClcIj5cbiAgICAgICAgICAgICAgICArIEFkZCBGb290ZXIgTGlua1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib25TYXZlKClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgRWRpdEZvb3RlckxpbmtzTW9kYWxDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGVkaXRpbmdGb290ZXJMaW5rczogYW55ID0geyBpdGVtczogW10gfTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGRyb3BGb290ZXJMaW5rcyhldmVudDogYW55KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdGb290ZXJMaW5rcy5pdGVtcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9XG5cbiAgICBkcm9wU3VidGl0bGVzKGZvb3RlckluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXNbZm9vdGVySW5kZXhdLnN1YnRpdGxlcyxcbiAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhZGRGb290ZXJMaW5rKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdGb290ZXJMaW5rcy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgc3VidGl0bGVzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVGb290ZXJMaW5rKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBhZGRTdWJ0aXRsZShmb290ZXJJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Zvb3RlckxpbmtzLml0ZW1zW2Zvb3RlckluZGV4XS5zdWJ0aXRsZXMucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICBwYXRoOiAnJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVTdWJ0aXRsZShmb290ZXJJbmRleDogbnVtYmVyLCBzdWJ0aXRsZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXNbZm9vdGVySW5kZXhdLnN1YnRpdGxlcy5zcGxpY2Uoc3VidGl0bGVJbmRleCwgMSk7XG4gICAgfVxuXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLmVkaXRpbmdGb290ZXJMaW5rcyk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@angular/cdk/drag-drop";
|
|
10
|
+
/**
|
|
11
|
+
* Edit Questions Modal Component
|
|
12
|
+
* Contains drag-drop functionality for reordering questions and options
|
|
13
|
+
* This component is lazy-loaded only when the edit modal is opened
|
|
14
|
+
*/
|
|
15
|
+
export class EditQuestionsModalComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.editingQuestions = [];
|
|
18
|
+
this.save = new EventEmitter();
|
|
19
|
+
this.close = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
dropQuestions(event) {
|
|
22
|
+
moveItemInArray(this.editingQuestions, event.previousIndex, event.currentIndex);
|
|
23
|
+
}
|
|
24
|
+
dropQuestionOptions(qIndex, event) {
|
|
25
|
+
moveItemInArray(this.editingQuestions[qIndex].options, event.previousIndex, event.currentIndex);
|
|
26
|
+
}
|
|
27
|
+
addNewQuestion() {
|
|
28
|
+
this.editingQuestions.push({ question: '', options: [] });
|
|
29
|
+
}
|
|
30
|
+
addQuestionOption(qIndex) {
|
|
31
|
+
this.editingQuestions[qIndex].options.push({ option: '' });
|
|
32
|
+
}
|
|
33
|
+
removeQuestionOption(qIndex, optIndex) {
|
|
34
|
+
this.editingQuestions[qIndex].options.splice(optIndex, 1);
|
|
35
|
+
}
|
|
36
|
+
onSave() {
|
|
37
|
+
this.save.emit(this.editingQuestions);
|
|
38
|
+
}
|
|
39
|
+
onClose() {
|
|
40
|
+
this.close.emit();
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditQuestionsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EditQuestionsModalComponent, isStandalone: true, selector: "pw-edit-questions-modal", inputs: { editingQuestions: "editingQuestions" }, outputs: { save: "save", close: "close" }, ngImport: i0, template: `
|
|
44
|
+
<div class="modal-header">
|
|
45
|
+
<h5 class="modal-title">Edit Questions</h5>
|
|
46
|
+
<button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div class="modal-body">
|
|
50
|
+
<h4 class="mb-3">Questions Section</h4>
|
|
51
|
+
<div cdkDropList (cdkDropListDropped)="dropQuestions($event)">
|
|
52
|
+
<div *ngFor="let q of editingQuestions; let i = index" class="border p-3 mb-3" cdkDrag>
|
|
53
|
+
<div class="row">
|
|
54
|
+
<div class="col-md-11 mb-2">
|
|
55
|
+
<label [for]="'questionText' + i" class="form-label">Question</label>
|
|
56
|
+
<input [id]="'questionText' + i" class="form-control" [(ngModel)]="q.question" placeholder="Enter question" />
|
|
57
|
+
</div>
|
|
58
|
+
<div class="col-md-1 d-flex justify-content-end align-items-start mt-4">
|
|
59
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<!-- Options Section -->
|
|
64
|
+
<div cdkDropList (cdkDropListDropped)="dropQuestionOptions(i, $event)">
|
|
65
|
+
<div *ngFor="let opt of q.options; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
|
|
66
|
+
<div class="col-md-7 mb-2">
|
|
67
|
+
<label [for]="'questionOption' + i + j" class="form-label">Option</label>
|
|
68
|
+
<input [id]="'questionOption' + i + j" class="form-control" [(ngModel)]="opt.option" placeholder="Enter option" />
|
|
69
|
+
</div>
|
|
70
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
71
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
72
|
+
(click)="removeQuestionOption(i, j)"
|
|
73
|
+
(keydown.enter)="removeQuestionOption(i, j)"
|
|
74
|
+
(keydown.space)="removeQuestionOption(i, j)"></i>
|
|
75
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<button class="btn btn-outline-primary btn-sm mt-2" (click)="addQuestionOption(i)">+ Add Option</button>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<button class="btn btn-primary mt-3" (click)="addNewQuestion()">+ Add Question</button>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<div class="modal-footer">
|
|
88
|
+
<button class="btn btn-secondary" (click)="onClose()">Cancel</button>
|
|
89
|
+
<button class="btn btn-primary" (click)="onSave()">Save</button>
|
|
90
|
+
</div>
|
|
91
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditQuestionsModalComponent, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{
|
|
96
|
+
selector: 'pw-edit-questions-modal',
|
|
97
|
+
standalone: true,
|
|
98
|
+
imports: [CommonModule, FormsModule, DragDropModule],
|
|
99
|
+
template: `
|
|
100
|
+
<div class="modal-header">
|
|
101
|
+
<h5 class="modal-title">Edit Questions</h5>
|
|
102
|
+
<button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="modal-body">
|
|
106
|
+
<h4 class="mb-3">Questions Section</h4>
|
|
107
|
+
<div cdkDropList (cdkDropListDropped)="dropQuestions($event)">
|
|
108
|
+
<div *ngFor="let q of editingQuestions; let i = index" class="border p-3 mb-3" cdkDrag>
|
|
109
|
+
<div class="row">
|
|
110
|
+
<div class="col-md-11 mb-2">
|
|
111
|
+
<label [for]="'questionText' + i" class="form-label">Question</label>
|
|
112
|
+
<input [id]="'questionText' + i" class="form-control" [(ngModel)]="q.question" placeholder="Enter question" />
|
|
113
|
+
</div>
|
|
114
|
+
<div class="col-md-1 d-flex justify-content-end align-items-start mt-4">
|
|
115
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<!-- Options Section -->
|
|
120
|
+
<div cdkDropList (cdkDropListDropped)="dropQuestionOptions(i, $event)">
|
|
121
|
+
<div *ngFor="let opt of q.options; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
|
|
122
|
+
<div class="col-md-7 mb-2">
|
|
123
|
+
<label [for]="'questionOption' + i + j" class="form-label">Option</label>
|
|
124
|
+
<input [id]="'questionOption' + i + j" class="form-control" [(ngModel)]="opt.option" placeholder="Enter option" />
|
|
125
|
+
</div>
|
|
126
|
+
<div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
|
|
127
|
+
<i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
|
|
128
|
+
(click)="removeQuestionOption(i, j)"
|
|
129
|
+
(keydown.enter)="removeQuestionOption(i, j)"
|
|
130
|
+
(keydown.space)="removeQuestionOption(i, j)"></i>
|
|
131
|
+
<i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
<button class="btn btn-outline-primary btn-sm mt-2" (click)="addQuestionOption(i)">+ Add Option</button>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<button class="btn btn-primary mt-3" (click)="addNewQuestion()">+ Add Question</button>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div class="modal-footer">
|
|
144
|
+
<button class="btn btn-secondary" (click)="onClose()">Cancel</button>
|
|
145
|
+
<button class="btn btn-primary" (click)="onSave()">Save</button>
|
|
146
|
+
</div>
|
|
147
|
+
`
|
|
148
|
+
}]
|
|
149
|
+
}], propDecorators: { editingQuestions: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], save: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], close: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}] } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZWRpdC1xdWVzdGlvbnMtbW9kYWwvZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV4RDs7OztHQUlHO0FBdURILE1BQU0sT0FBTywyQkFBMkI7SUF0RHhDO1FBdURhLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM1QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQWlDOUM7SUEvQkcsYUFBYSxDQUFDLEtBQVU7UUFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQVU7UUFDMUMsZUFBZSxDQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQ3JDLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FuQ1EsMkJBQTJCO21HQUEzQiwyQkFBMkIsZ0xBbEQxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0RULDJEQWpEUyxZQUFZLDJKQUFFLFdBQVcsOG1CQUFFLGNBQWM7OzRGQW1EMUMsMkJBQTJCO2tCQXREdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUM7b0JBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0RUO2lCQUNKOzhCQUVZLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuLyoqXG4gKiBFZGl0IFF1ZXN0aW9ucyBNb2RhbCBDb21wb25lbnRcbiAqIENvbnRhaW5zIGRyYWctZHJvcCBmdW5jdGlvbmFsaXR5IGZvciByZW9yZGVyaW5nIHF1ZXN0aW9ucyBhbmQgb3B0aW9uc1xuICogVGhpcyBjb21wb25lbnQgaXMgbGF6eS1sb2FkZWQgb25seSB3aGVuIHRoZSBlZGl0IG1vZGFsIGlzIG9wZW5lZFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVkaXQtcXVlc3Rpb25zLW1vZGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IFF1ZXN0aW9uczwvaDU+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1iLTNcIj5RdWVzdGlvbnMgU2VjdGlvbjwvaDQ+XG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcFF1ZXN0aW9ucygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcSBvZiBlZGl0aW5nUXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTExIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCIncXVlc3Rpb25UZXh0JyArIGlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5RdWVzdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCIncXVlc3Rpb25UZXh0JyArIGlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwicS5xdWVzdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcXVlc3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtc3RhcnQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFycyBpbi1wYWdlLWJhcnMtaWNvbiBjdXJzb3ItbW92ZVwiIGNka0RyYWdIYW5kbGU+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gT3B0aW9ucyBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcFF1ZXN0aW9uT3B0aW9ucyhpLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHQgb2YgcS5vcHRpb25zOyBsZXQgaiA9IGluZGV4XCIgY2xhc3M9XCJyb3cgYm9yZGVyIHAtMyBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlclwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3F1ZXN0aW9uT3B0aW9uJyArIGkgKyBqXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+T3B0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCIncXVlc3Rpb25PcHRpb24nICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwib3B0Lm9wdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgb3B0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggaW4tcGFnZS10cmFzaC1pY29uIHRleHQtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uT3B0aW9uKGksIGopXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlUXVlc3Rpb25PcHRpb24oaSwgailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJyZW1vdmVRdWVzdGlvbk9wdGlvbihpLCBqKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzIGluLXBhZ2UtYmFycy1pY29uIGN1cnNvci1tb3ZlXCIgY2RrRHJhZ0hhbmRsZT48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1zbSBtdC0yXCIgKGNsaWNrKT1cImFkZFF1ZXN0aW9uT3B0aW9uKGkpXCI+KyBBZGQgT3B0aW9uPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC0zXCIgKGNsaWNrKT1cImFkZE5ld1F1ZXN0aW9uKClcIj4rIEFkZCBRdWVzdGlvbjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRRdWVzdGlvbnNNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZWRpdGluZ1F1ZXN0aW9uczogYW55W10gPSBbXTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgZHJvcFF1ZXN0aW9ucyhldmVudDogYW55KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdRdWVzdGlvbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuXG4gICAgZHJvcFF1ZXN0aW9uT3B0aW9ucyhxSW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnNbcUluZGV4XS5vcHRpb25zLFxuICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZE5ld1F1ZXN0aW9uKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnMucHVzaCh7IHF1ZXN0aW9uOiAnJywgb3B0aW9uczogW10gfSk7XG4gICAgfVxuXG4gICAgYWRkUXVlc3Rpb25PcHRpb24ocUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nUXVlc3Rpb25zW3FJbmRleF0ub3B0aW9ucy5wdXNoKHsgb3B0aW9uOiAnJyB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVRdWVzdGlvbk9wdGlvbihxSW5kZXg6IG51bWJlciwgb3B0SW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnNbcUluZGV4XS5vcHRpb25zLnNwbGljZShvcHRJbmRleCwgMSk7XG4gICAgfVxuXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLmVkaXRpbmdRdWVzdGlvbnMpO1xuICAgIH1cblxuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgIH1cbn1cblxuIl19
|