@hmcts/ccd-case-ui-toolkit 7.1.43 → 7.1.44-exui-2792-task-completion

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.
@@ -79,7 +79,7 @@ export class QueryWriteRespondToQueryComponent {
79
79
  caseId;
80
80
  queryItemId;
81
81
  caseDetails;
82
- totalNumberOfQueryChildren;
82
+ queryResponseStatus;
83
83
  queryItemDisplay;
84
84
  hasRespondedToQuery = false;
85
85
  static QUERY_ITEM_RESPOND = '3';
@@ -107,8 +107,7 @@ export class QueryWriteRespondToQueryComponent {
107
107
  console.error('caseQueriesCollections[0] is undefined!', this.caseQueriesCollections);
108
108
  return;
109
109
  }
110
- const numberOfQueryChildren = new QueryListData(this.caseQueriesCollections[0]);
111
- this.totalNumberOfQueryChildren = numberOfQueryChildren?.queries?.[0]?.children?.length || 0;
110
+ const queryWithChildren = new QueryListData(this.caseQueriesCollections[0]);
112
111
  const messageId = this.route.snapshot.params.dataid;
113
112
  if (!messageId) {
114
113
  console.warn('No messageId found in route params:', this.route.snapshot.params);
@@ -120,6 +119,8 @@ export class QueryWriteRespondToQueryComponent {
120
119
  .filter((message) => message?.value?.id === messageId); // Safe access
121
120
  if (filteredMessages.length > 0) {
122
121
  const matchingMessage = filteredMessages[0]?.value;
122
+ const filteredQuery = queryWithChildren?.queries.filter((message) => filteredMessages[0]?.value?.parentId === message?.id);
123
+ this.queryResponseStatus = filteredQuery[0]?.responseStatus;
123
124
  if (matchingMessage) {
124
125
  this.queryItemDisplay = new QueryListItem();
125
126
  Object.assign(this.queryItemDisplay, matchingMessage);
@@ -133,7 +134,7 @@ export class QueryWriteRespondToQueryComponent {
133
134
  this.hasRespondedToQueryTask.emit(value);
134
135
  }
135
136
  static ɵfac = function QueryWriteRespondToQueryComponent_Factory(t) { return new (t || QueryWriteRespondToQueryComponent)(i0.ɵɵdirectiveInject(i1.CaseNotifier), i0.ɵɵdirectiveInject(i2.ActivatedRoute)); };
136
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRespondToQueryComponent, selectors: [["ccd-query-write-respond-to-query"]], inputs: { queryItem: "queryItem", formGroup: "formGroup", queryCreateContext: "queryCreateContext", submitted: "submitted", caseQueriesCollections: "caseQueriesCollections", showForm: "showForm" }, outputs: { hasRespondedToQueryTask: "hasRespondedToQueryTask" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 10, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-0"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], [3, "hasResponded", "query", "totalNumberOfQueryChildren"], ["class", "query-respond", 4, "ngIf"], [1, "query-respond"], [4, "ngIf"], [1, "govuk-heading-m"], [3, "formGroup"], [1, "govuk-form-group", "body-textarea"], [1, "govuk-label-wrapper"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], ["id", "body-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"]], template: function QueryWriteRespondToQueryComponent_Template(rf, ctx) { if (rf & 1) {
137
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRespondToQueryComponent, selectors: [["ccd-query-write-respond-to-query"]], inputs: { queryItem: "queryItem", formGroup: "formGroup", queryCreateContext: "queryCreateContext", submitted: "submitted", caseQueriesCollections: "caseQueriesCollections", showForm: "showForm" }, outputs: { hasRespondedToQueryTask: "hasRespondedToQueryTask" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 10, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-0"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], [3, "hasResponded", "query", "queryResponseStatus"], ["class", "query-respond", 4, "ngIf"], [1, "query-respond"], [4, "ngIf"], [1, "govuk-heading-m"], [3, "formGroup"], [1, "govuk-form-group", "body-textarea"], [1, "govuk-label-wrapper"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], ["id", "body-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"]], template: function QueryWriteRespondToQueryComponent_Template(rf, ctx) { if (rf & 1) {
137
138
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 0)(2, "div", 1);
138
139
  i0.ɵɵtext(3);
139
140
  i0.ɵɵpipe(4, "rpxTranslate");
@@ -157,14 +158,14 @@ export class QueryWriteRespondToQueryComponent {
157
158
  i0.ɵɵadvance(3);
158
159
  i0.ɵɵproperty("caseDetails", ctx.caseDetails);
159
160
  i0.ɵɵadvance(2);
160
- i0.ɵɵproperty("query", ctx.queryItem)("totalNumberOfQueryChildren", ctx.totalNumberOfQueryChildren);
161
+ i0.ɵɵproperty("query", ctx.queryItem)("queryResponseStatus", ctx.queryResponseStatus);
161
162
  i0.ɵɵadvance();
162
163
  i0.ɵɵproperty("ngIf", ctx.showForm);
163
164
  } }, styles: [".query-respond[_ngcontent-%COMP%]{width:100%;max-width:720px}"] });
164
165
  }
165
166
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryWriteRespondToQueryComponent, [{
166
167
  type: Component,
167
- args: [{ selector: 'ccd-query-write-respond-to-query', template: "<div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-caption-l\">{{ 'Respond to a query' | rpxTranslate }}</div>\n <h1 class=\"govuk-heading-l govuk-!-margin-bottom-0\">{{ 'Query details' | rpxTranslate }}</h1>\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <div>\n <ccd-query-details [query]=\"queryItem\"\n [totalNumberOfQueryChildren]=\"totalNumberOfQueryChildren\"\n (hasResponded)=\"hasResponded($event)\"></ccd-query-details>\n </div>\n</div>\n<div class=\"query-respond\" *ngIf=\"showForm\">\n <div *ngIf=\"!hasRespondedToQuery\">\n <h1 class=\"govuk-heading-m\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Respond to a query' : 'Ask a follow-up question' | rpxTranslate }}\n </h1>\n\n <div [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group body-textarea\"\n [class.govuk-form-group--error]=\"submitted && formGroup.get('body')?.hasError('required')\">\n <div class=\"govuk-label-wrapper\">\n <label class=\"govuk-label govuk-label--m govuk-!-font-weight-bold\" for=\"body\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query Body' | rpxTranslate }}\n </label>\n </div>\n <p id=\"body-error\" class=\"govuk-error-message\"\n *ngIf=\"submitted && formGroup.get('body')?.hasError('required')\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate }} </span>{{ queryCreateContext === queryCreateContextEnum.RESPOND ? raiseQueryErrorMessages.RESPOND_QUERY_BODY : raiseQueryErrorMessages.QUERY_BODY | rpxTranslate }}\n </p>\n <textarea [formControlName]=\"'body'\" class=\"govuk-textarea\"\n [class.govuk-textarea--error]=\"submitted && formGroup.get('body')?.hasError('required')\" id=\"body\"\n name=\"body\" rows=\"5\" aria-describedby=\"body-hint body-error\">\n </textarea>\n </div>\n </div>\n </div>\n</div>\n", styles: [".query-respond{width:100%;max-width:720px}\n"] }]
168
+ args: [{ selector: 'ccd-query-write-respond-to-query', template: "<div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-caption-l\">{{ 'Respond to a query' | rpxTranslate }}</div>\n <h1 class=\"govuk-heading-l govuk-!-margin-bottom-0\">{{ 'Query details' | rpxTranslate }}</h1>\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <div>\n <ccd-query-details [query]=\"queryItem\"\n [queryResponseStatus]=\"queryResponseStatus\"\n (hasResponded)=\"hasResponded($event)\"></ccd-query-details>\n </div>\n</div>\n<div class=\"query-respond\" *ngIf=\"showForm\">\n <div *ngIf=\"!hasRespondedToQuery\">\n <h1 class=\"govuk-heading-m\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Respond to a query' : 'Ask a follow-up question' | rpxTranslate }}\n </h1>\n\n <div [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group body-textarea\"\n [class.govuk-form-group--error]=\"submitted && formGroup.get('body')?.hasError('required')\">\n <div class=\"govuk-label-wrapper\">\n <label class=\"govuk-label govuk-label--m govuk-!-font-weight-bold\" for=\"body\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query Body' | rpxTranslate }}\n </label>\n </div>\n <p id=\"body-error\" class=\"govuk-error-message\"\n *ngIf=\"submitted && formGroup.get('body')?.hasError('required')\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate }} </span>{{ queryCreateContext === queryCreateContextEnum.RESPOND ? raiseQueryErrorMessages.RESPOND_QUERY_BODY : raiseQueryErrorMessages.QUERY_BODY | rpxTranslate }}\n </p>\n <textarea [formControlName]=\"'body'\" class=\"govuk-textarea\"\n [class.govuk-textarea--error]=\"submitted && formGroup.get('body')?.hasError('required')\" id=\"body\"\n name=\"body\" rows=\"5\" aria-describedby=\"body-hint body-error\">\n </textarea>\n </div>\n </div>\n </div>\n</div>\n", styles: [".query-respond{width:100%;max-width:720px}\n"] }]
168
169
  }], () => [{ type: i1.CaseNotifier }, { type: i2.ActivatedRoute }], { queryItem: [{
169
170
  type: Input
170
171
  }], formGroup: [{
@@ -181,4 +182,4 @@ export class QueryWriteRespondToQueryComponent {
181
182
  type: Output
182
183
  }] }); })();
183
184
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryWriteRespondToQueryComponent, { className: "QueryWriteRespondToQueryComponent", filePath: "lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.ts", lineNumber: 14 }); })();
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktd3JpdGUvcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBeUIsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztJQzBCaEcs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O2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7MkZBNUVVLGlDQUFpQzs2REFBakMsaUNBQWlDO1lDWDFDLEFBREYsQUFERiw4QkFBcUMsYUFDRSxhQUNOO1lBQUEsWUFBeUM7O1lBQUEsaUJBQU07WUFDNUUsNkJBQW9EO1lBQUEsWUFBb0M7O1lBQzFGLEFBRDBGLGlCQUFLLEVBQ3pGO1lBRU4sOEJBQXFDO1lBQ25DLG1EQUEyRjtZQUM3RixpQkFBTTtZQUdKLEFBREYsNEJBQUssNEJBR3FDO1lBQXRDLDhJQUFnQix3QkFBb0IsSUFBQztZQUUzQyxBQURFLEFBRDBDLGlCQUFvQixFQUN4RCxFQUNGO1lBQ04sb0ZBQTRDOztZQWRYLGVBQXlDO1lBQXpDLGdFQUF5QztZQUNsQixlQUFvQztZQUFwQywyREFBb0M7WUFJekQsZUFBMkI7WUFBM0IsNkNBQTJCO1lBSXZDLGVBQW1CO1lBQ3BDLEFBRGlCLHFDQUFtQiw4REFDcUI7WUFJbkMsY0FBYztZQUFkLG1DQUFjOzs7aUZESDdCLGlDQUFpQztjQU43QyxTQUFTOzJCQUNFLGtDQUFrQzswRUFNNUIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxrQkFBa0I7a0JBQWpDLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usc0JBQXNCO2tCQUFyQyxLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNXLHVCQUF1QjtrQkFBdkMsTUFBTTs7a0ZBUEksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMnO1xuaW1wb3J0IHsgUmFpc2VRdWVyeUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3REYXRhLCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgQElucHV0KCkgcHVibGljIHNob3dGb3JtO1xuICBAT3V0cHV0KCkgcHVibGljIGhhc1Jlc3BvbmRlZFRvUXVlcnlUYXNrOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0gPSBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIHB1YmxpYyByZWFkb25seSByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcyA9IFJhaXNlUXVlcnlFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyBjYXNlSWQ6IHN0cmluZztcbiAgcHVibGljIHF1ZXJ5SXRlbUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlscztcbiAgcHVibGljIHRvdGFsTnVtYmVyT2ZRdWVyeUNoaWxkcmVuOiBudW1iZXI7XG4gIHB1YmxpYyBxdWVyeUl0ZW1EaXNwbGF5OiBRdWVyeUxpc3RJdGVtO1xuXG4gIHB1YmxpYyBoYXNSZXNwb25kZWRUb1F1ZXJ5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUVVFUllfSVRFTV9SRVNQT05EID0gJzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX0ZPTExPV1VQID0gJzQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlJdGVtSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5xaWQ7XG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICAgIHRoaXMuY2FzZUlkID0gY2FzZURldGFpbHM/LmNhc2VfaWQgPz8gJyc7XG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMgPSBjYXNlRGV0YWlscztcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXRyaWV2aW5nIGNhc2UgZGV0YWlsczonLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnF1ZXJ5SXRlbUlkID09PSBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQuUVVFUllfSVRFTV9SRVNQT05EXG4gICAgICAmJiB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnM/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zWzBdKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Nhc2VRdWVyaWVzQ29sbGVjdGlvbnNbMF0gaXMgdW5kZWZpbmVkIScsIHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbnVtYmVyT2ZRdWVyeUNoaWxkcmVuID0gbmV3IFF1ZXJ5TGlzdERhdGEodGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zWzBdKTtcbiAgICAgIHRoaXMudG90YWxOdW1iZXJPZlF1ZXJ5Q2hpbGRyZW4gPSBudW1iZXJPZlF1ZXJ5Q2hpbGRyZW4/LnF1ZXJpZXM/LlswXT8uY2hpbGRyZW4/Lmxlbmd0aCB8fCAwO1xuXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG4gICAgICBpZiAoIW1lc3NhZ2VJZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05vIG1lc3NhZ2VJZCBmb3VuZCBpbiByb3V0ZSBwYXJhbXM6JywgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZXMgPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnNcbiAgICAgICAgLm1hcCgoY2FzZURhdGEpID0+IGNhc2VEYXRhPy5jYXNlTWVzc2FnZXMgfHwgW10pIC8vIEVuc3VyZSBjYXNlTWVzc2FnZXMgaXMgYWx3YXlzIGFuIGFycmF5XG4gICAgICAgIC5mbGF0KCkgLy8gRmxhdHRlbiBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIG1lc3NhZ2VzXG4gICAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2U/LnZhbHVlPy5pZCA9PT0gbWVzc2FnZUlkKTsgLy8gU2FmZSBhY2Nlc3NcblxuICAgICAgaWYgKGZpbHRlcmVkTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBtYXRjaGluZ01lc3NhZ2UgPSBmaWx0ZXJlZE1lc3NhZ2VzWzBdPy52YWx1ZTtcblxuICAgICAgICBpZiAobWF0Y2hpbmdNZXNzYWdlKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeUl0ZW1EaXNwbGF5ID0gbmV3IFF1ZXJ5TGlzdEl0ZW0oKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMucXVlcnlJdGVtRGlzcGxheSwgbWF0Y2hpbmdNZXNzYWdlKTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5SXRlbSA9IHRoaXMucXVlcnlJdGVtRGlzcGxheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXNwb25kZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Jlc3BvbmRlZFRvUXVlcnkgPSB2YWx1ZTtcbiAgICB0aGlzLmhhc1Jlc3BvbmRlZFRvUXVlcnlUYXNrLmVtaXQodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS02XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiPnt7ICdSZXNwb25kIHRvIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+e3sgJ1F1ZXJ5IGRldGFpbHMnIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+XG4gICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGNjZC1xdWVyeS1kZXRhaWxzIFtxdWVyeV09XCJxdWVyeUl0ZW1cIlxuICAgICAgW3RvdGFsTnVtYmVyT2ZRdWVyeUNoaWxkcmVuXT1cInRvdGFsTnVtYmVyT2ZRdWVyeUNoaWxkcmVuXCJcbiAgICAgIChoYXNSZXNwb25kZWQpPVwiaGFzUmVzcG9uZGVkKCRldmVudClcIj48L2NjZC1xdWVyeS1kZXRhaWxzPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInF1ZXJ5LXJlc3BvbmRcIiAqbmdJZj1cInNob3dGb3JtXCI+XG4gIDxkaXYgKm5nSWY9XCIhaGFzUmVzcG9uZGVkVG9RdWVyeVwiPlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPlxuICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uZCB0byBhIHF1ZXJ5JyA6ICdBc2sgYSBmb2xsb3ctdXAgcXVlc3Rpb24nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgPC9oMT5cblxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwIGJvZHktdGV4dGFyZWFcIlxuICAgICAgICAgICBbY2xhc3MuZ292dWstZm9ybS1ncm91cC0tZXJyb3JdPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbSBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIiBmb3I9XCJib2R5XCI+XG4gICAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25zZSBkZXRhaWwnIDogJ1F1ZXJ5IEJvZHknIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGlkPVwiYm9keS1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdFcnJvcjonIHwgcnB4VHJhbnNsYXRlIH19IDwvc3Bhbj57eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/IHJhaXNlUXVlcnlFcnJvck1lc3NhZ2VzLlJFU1BPTkRfUVVFUllfQk9EWSA6IHJhaXNlUXVlcnlFcnJvck1lc3NhZ2VzLlFVRVJZX0JPRFkgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8dGV4dGFyZWEgW2Zvcm1Db250cm9sTmFtZV09XCInYm9keSdcIiBjbGFzcz1cImdvdnVrLXRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5nb3Z1ay10ZXh0YXJlYS0tZXJyb3JdPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiBpZD1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImJvZHlcIiByb3dzPVwiNVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJib2R5LWhpbnQgYm9keS1lcnJvclwiPlxuICAgICAgPC90ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktd3JpdGUvcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBeUIsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztJQzBCaEcs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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMnO1xuaW1wb3J0IHsgUmFpc2VRdWVyeUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3REYXRhLCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgQElucHV0KCkgcHVibGljIHNob3dGb3JtO1xuICBAT3V0cHV0KCkgcHVibGljIGhhc1Jlc3BvbmRlZFRvUXVlcnlUYXNrOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0gPSBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIHB1YmxpYyByZWFkb25seSByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcyA9IFJhaXNlUXVlcnlFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyBjYXNlSWQ6IHN0cmluZztcbiAgcHVibGljIHF1ZXJ5SXRlbUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlscztcbiAgcHVibGljIHF1ZXJ5UmVzcG9uc2VTdGF0dXM6IHN0cmluZztcbiAgcHVibGljIHF1ZXJ5SXRlbURpc3BsYXk6IFF1ZXJ5TGlzdEl0ZW07XG5cbiAgcHVibGljIGhhc1Jlc3BvbmRlZFRvUXVlcnk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX1JFU1BPTkQgPSAnMyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFFVRVJZX0lURU1fRk9MTE9XVVAgPSAnNCc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUl0ZW1JZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnFpZDtcbiAgICB0aGlzLmNhc2VOb3RpZmllci5jYXNlVmlldy5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY2FzZURldGFpbHMpID0+IHtcbiAgICAgICAgdGhpcy5jYXNlSWQgPSBjYXNlRGV0YWlscz8uY2FzZV9pZCA/PyAnJztcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscyA9IGNhc2VEZXRhaWxzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJldHJpZXZpbmcgY2FzZSBkZXRhaWxzOicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVlcnlJdGVtSWQgPT09IFF1ZXJ5V3JpdGVSZXNwb25kVG9RdWVyeUNvbXBvbmVudC5RVUVSWV9JVEVNX1JFU1BPTkRcbiAgICAgICYmIHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucz8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgaWYgKCF0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnNbMF0pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1swXSBpcyB1bmRlZmluZWQhJywgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVdpdGhDaGlsZHJlbiA9IG5ldyBRdWVyeUxpc3REYXRhKHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1swXSk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDtcbiAgICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTm8gbWVzc2FnZUlkIGZvdW5kIGluIHJvdXRlIHBhcmFtczonLCB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyZWRNZXNzYWdlcyA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1xuICAgICAgICAubWFwKChjYXNlRGF0YSkgPT4gY2FzZURhdGE/LmNhc2VNZXNzYWdlcyB8fCBbXSkgLy8gRW5zdXJlIGNhc2VNZXNzYWdlcyBpcyBhbHdheXMgYW4gYXJyYXlcbiAgICAgICAgLmZsYXQoKSAvLyBGbGF0dGVuIGludG8gYSBzaW5nbGUgYXJyYXkgb2YgbWVzc2FnZXNcbiAgICAgICAgLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZT8udmFsdWU/LmlkID09PSBtZXNzYWdlSWQpOyAvLyBTYWZlIGFjY2Vzc1xuXG4gICAgICBpZiAoZmlsdGVyZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nTWVzc2FnZSA9IGZpbHRlcmVkTWVzc2FnZXNbMF0/LnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUXVlcnkgPSBxdWVyeVdpdGhDaGlsZHJlbj8ucXVlcmllcy5maWx0ZXIoKG1lc3NhZ2UpID0+IGZpbHRlcmVkTWVzc2FnZXNbMF0/LnZhbHVlPy5wYXJlbnRJZCA9PT0gbWVzc2FnZT8uaWQpO1xuICAgICAgICB0aGlzLnF1ZXJ5UmVzcG9uc2VTdGF0dXMgPSBmaWx0ZXJlZFF1ZXJ5WzBdPy5yZXNwb25zZVN0YXR1cztcblxuICAgICAgICBpZiAobWF0Y2hpbmdNZXNzYWdlKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeUl0ZW1EaXNwbGF5ID0gbmV3IFF1ZXJ5TGlzdEl0ZW0oKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMucXVlcnlJdGVtRGlzcGxheSwgbWF0Y2hpbmdNZXNzYWdlKTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5SXRlbSA9IHRoaXMucXVlcnlJdGVtRGlzcGxheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXNwb25kZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Jlc3BvbmRlZFRvUXVlcnkgPSB2YWx1ZTtcbiAgICB0aGlzLmhhc1Jlc3BvbmRlZFRvUXVlcnlUYXNrLmVtaXQodmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS02XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiPnt7ICdSZXNwb25kIHRvIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+e3sgJ1F1ZXJ5IGRldGFpbHMnIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+XG4gICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGNjZC1xdWVyeS1kZXRhaWxzIFtxdWVyeV09XCJxdWVyeUl0ZW1cIlxuICAgICAgW3F1ZXJ5UmVzcG9uc2VTdGF0dXNdPVwicXVlcnlSZXNwb25zZVN0YXR1c1wiXG4gICAgICAoaGFzUmVzcG9uZGVkKT1cImhhc1Jlc3BvbmRlZCgkZXZlbnQpXCI+PC9jY2QtcXVlcnktZGV0YWlscz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJxdWVyeS1yZXNwb25kXCIgKm5nSWY9XCJzaG93Rm9ybVwiPlxuICA8ZGl2ICpuZ0lmPVwiIWhhc1Jlc3BvbmRlZFRvUXVlcnlcIj5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj5cbiAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1Jlc3BvbmQgdG8gYSBxdWVyeScgOiAnQXNrIGEgZm9sbG93LXVwIHF1ZXN0aW9uJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgIDwvaDE+XG5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cCBib2R5LXRleHRhcmVhXCJcbiAgICAgICAgICAgW2NsYXNzLmdvdnVrLWZvcm0tZ3JvdXAtLWVycm9yXT1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1sYWJlbC13cmFwcGVyXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstbGFiZWwtLW0gZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgZm9yPVwiYm9keVwiPlxuICAgICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uc2UgZGV0YWlsJyA6ICdRdWVyeSBCb2R5JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBpZD1cImJvZHktZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eyAnRXJyb3I6JyB8IHJweFRyYW5zbGF0ZSB9fSA8L3NwYW4+e3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcy5SRVNQT05EX1FVRVJZX0JPRFkgOiByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcy5RVUVSWV9CT0RZIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2JvZHknXCIgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZ292dWstdGV4dGFyZWEtLWVycm9yXT1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgaWQ9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJib2R5XCIgcm93cz1cIjVcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiYm9keS1oaW50IGJvZHktZXJyb3JcIj5cbiAgICAgIDwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -20339,7 +20339,7 @@ class QueryCheckYourAnswersComponent {
20339
20339
  fieldId;
20340
20340
  attachments;
20341
20341
  errorMessages = [];
20342
- filteredTask = [];
20342
+ filteredTasks = [];
20343
20343
  constructor(route, router, casesService, caseNotifier, workAllocationService, sessionStorageService, qualifyingQuestionService) {
20344
20344
  this.route = route;
20345
20345
  this.router = router;
@@ -20369,11 +20369,11 @@ class QueryCheckYourAnswersComponent {
20369
20369
  .subscribe({
20370
20370
  next: (response) => {
20371
20371
  // Filter task by query id
20372
- if (response.tasks?.length > 1) {
20373
- this.filteredTask = response.tasks?.find((task) => task.case_id === this.tid);
20372
+ if (this.tid && response.tasks?.length > 1) {
20373
+ this.filteredTasks = response.tasks?.filter((task) => task.id === this.tid);
20374
20374
  }
20375
20375
  else {
20376
- this.filteredTask = response.tasks;
20376
+ this.filteredTasks = response.tasks;
20377
20377
  }
20378
20378
  },
20379
20379
  error: (error) => {
@@ -20405,13 +20405,18 @@ class QueryCheckYourAnswersComponent {
20405
20405
  const data = this.generateCaseQueriesCollectionData();
20406
20406
  const createEvent$ = this.createEvent(data);
20407
20407
  if (this.queryCreateContext === QueryCreateContext.RESPOND) {
20408
- const completeTask$ = this.workAllocationService.completeTask(this.filteredTask[0].id, this.caseViewTrigger.name);
20409
- this.createEventSubscription = forkJoin([createEvent$, completeTask$]).subscribe({
20410
- next: ([createEventResponse, tasksResponse]) => {
20411
- this.finaliseSubmission();
20412
- },
20413
- error: (error) => this.handleError(error)
20414
- });
20408
+ if (this.filteredTasks?.length > 0) {
20409
+ const completeTask$ = this.workAllocationService.completeTask(this.filteredTasks[0].id, this.caseViewTrigger.name);
20410
+ this.createEventSubscription = forkJoin([createEvent$, completeTask$]).subscribe({
20411
+ next: ([createEventResponse, tasksResponse]) => {
20412
+ this.finaliseSubmission();
20413
+ },
20414
+ error: (error) => this.handleError(error)
20415
+ });
20416
+ }
20417
+ else {
20418
+ console.error('Error: No task to complete found');
20419
+ }
20415
20420
  }
20416
20421
  else {
20417
20422
  this.createEventSubscription = createEvent$.subscribe({
@@ -20648,7 +20653,7 @@ class QueryCheckYourAnswersComponent {
20648
20653
  }], querySubmitted: [{
20649
20654
  type: Output
20650
20655
  }] }); })();
20651
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 26 }); })();
20656
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 27 }); })();
20652
20657
 
20653
20658
  function QueryDetailsComponent_ng_container_0_cut_alert_1_Template(rf, ctx) { if (rf & 1) {
20654
20659
  i0.ɵɵelementStart(0, "cut-alert", 11);
@@ -20938,9 +20943,9 @@ function QueryDetailsComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
20938
20943
  } if (rf & 2) {
20939
20944
  const ctx_r0 = i0.ɵɵnextContext();
20940
20945
  i0.ɵɵadvance();
20941
- i0.ɵɵproperty("ngIf", ctx_r0.hasRespondedToQuery());
20946
+ i0.ɵɵproperty("ngIf", ctx_r0.hasRespondedToQuery() && !ctx_r0.showItem);
20942
20947
  i0.ɵɵadvance(2);
20943
- i0.ɵɵproperty("ngIf", ctx_r0.showLink);
20948
+ i0.ɵɵproperty("ngIf", ctx_r0.showItem);
20944
20949
  i0.ɵɵadvance(2);
20945
20950
  i0.ɵɵattribute("aria-describedby", i0.ɵɵpipeBind1(6, 21, "Details of the query"));
20946
20951
  i0.ɵɵadvance(4);
@@ -20981,11 +20986,11 @@ class QueryDetailsComponent {
20981
20986
  route;
20982
20987
  router;
20983
20988
  query;
20984
- backClicked = new EventEmitter();
20985
20989
  caseId;
20990
+ queryResponseStatus;
20991
+ backClicked = new EventEmitter();
20986
20992
  hasResponded = new EventEmitter();
20987
- totalNumberOfQueryChildren;
20988
- showLink = true;
20993
+ showItem = true;
20989
20994
  message;
20990
20995
  static QUERY_ITEM_RESPOND = '3';
20991
20996
  queryItemId;
@@ -21009,10 +21014,14 @@ class QueryDetailsComponent {
21009
21014
  }
21010
21015
  toggleLinkVisibility() {
21011
21016
  this.queryItemId = this.route.snapshot.params.qid;
21012
- this.showLink = this.queryItemId !== QueryDetailsComponent.QUERY_ITEM_RESPOND;
21017
+ this.showItem = this.queryItemId !== QueryDetailsComponent.QUERY_ITEM_RESPOND;
21013
21018
  }
21014
21019
  hasRespondedToQuery() {
21015
- if (this.totalNumberOfQueryChildren >= 0 && this.isCaseworker() && this.totalNumberOfQueryChildren % 2 !== 0) {
21020
+ if (this.queryResponseStatus === undefined || this.queryResponseStatus === QueryItemResponseStatus.AWAITING) {
21021
+ this.hasResponded.emit(false);
21022
+ return false;
21023
+ }
21024
+ if (this.isCaseworker() && this.queryResponseStatus !== QueryItemResponseStatus.AWAITING) {
21016
21025
  this.message = Constants.TASK_COMPLETION_ERROR;
21017
21026
  this.hasResponded.emit(true);
21018
21027
  return true;
@@ -21021,7 +21030,7 @@ class QueryDetailsComponent {
21021
21030
  return false;
21022
21031
  }
21023
21032
  static ɵfac = function QueryDetailsComponent_Factory(t) { return new (t || QueryDetailsComponent)(i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(i1$1.Router)); };
21024
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryDetailsComponent, selectors: [["ccd-query-details"]], inputs: { query: "query", caseId: "caseId", totalNumberOfQueryChildren: "totalNumberOfQueryChildren" }, outputs: { backClicked: "backClicked", hasResponded: "hasResponded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["followUpMessage", ""], [4, "ngIf"], ["type", "error", 4, "ngIf"], [1, "govuk-table", "query-details-table"], [1, "govuk-table__caption", "govuk-table__caption--l"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header"], [1, "govuk-table__cell"], ["class", "govuk-table__row govuk-table__row--isHearingRelated", 4, "ngIf"], ["class", "govuk-table__row", 4, "ngIf"], ["type", "error"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], [1, "govuk-table__row", "govuk-table__row--isHearingRelated"], [3, "attachments", 4, "ngIf"], [3, "attachments"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"]], template: function QueryDetailsComponent_Template(rf, ctx) { if (rf & 1) {
21033
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryDetailsComponent, selectors: [["ccd-query-details"]], inputs: { query: "query", caseId: "caseId", queryResponseStatus: "queryResponseStatus" }, outputs: { backClicked: "backClicked", hasResponded: "hasResponded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["followUpMessage", ""], [4, "ngIf"], ["type", "error", 4, "ngIf"], [1, "govuk-table", "query-details-table"], [1, "govuk-table__caption", "govuk-table__caption--l"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header"], [1, "govuk-table__cell"], ["class", "govuk-table__row govuk-table__row--isHearingRelated", 4, "ngIf"], ["class", "govuk-table__row", 4, "ngIf"], ["type", "error"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], [1, "govuk-table__row", "govuk-table__row--isHearingRelated"], [3, "attachments", 4, "ngIf"], [3, "attachments"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"]], template: function QueryDetailsComponent_Template(rf, ctx) { if (rf & 1) {
21025
21034
  i0.ɵɵtemplate(0, QueryDetailsComponent_ng_container_0_Template, 47, 42, "ng-container", 1);
21026
21035
  } if (rf & 2) {
21027
21036
  i0.ɵɵproperty("ngIf", ctx.query);
@@ -21029,19 +21038,19 @@ class QueryDetailsComponent {
21029
21038
  }
21030
21039
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryDetailsComponent, [{
21031
21040
  type: Component,
21032
- args: [{ selector: 'ccd-query-details', template: "<ng-container *ngIf=\"query\">\n <cut-alert type=\"error\" *ngIf=\"hasRespondedToQuery()\">\n <ng-container>{{message}}</ng-container>\n </cut-alert>\n\n <br/>\n <p *ngIf=\"showLink\">\n <a class=\"govuk-link\" href=\"javascript:void(0)\" (click)=\"onBack()\">{{ 'Back to query list' | rpxTranslate }}</a>\n </p>\n <div>\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Details of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Query details' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.lastSubmittedBy }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query subject' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.subject }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query body' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.body }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\" [class.govuk-table__header--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </th>\n <td class=\"govuk-table__cell\" [class.govuk-table__cell--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : (query.isHearingRelated) }}</td>\n </tr>\n <tr class=\"govuk-table__row govuk-table__row--isHearingRelated\" *ngIf=\"query.isHearingRelated === 'Yes'\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'What is the date of the hearing?' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.hearingDate | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"query.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"query.attachments\"\n [attachments]=\"query.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <ng-container *ngIf=\"query.children?.length > 0\">\n <ng-container *ngFor=\"let child of query.children; let i = index;\">\n <ng-container *ngIf=\"i % 2 === 0; else followUpMessage\">\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Response of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Response' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last response date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n\n <tr *ngIf=\"isCaseworker()\" class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Caseworker name' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Response detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-template #followUpMessage>\n <!-- <div class=\"query_details_caption\">{{ 'Follow-up' | rpxTranslate }}</div> -->\n <table class=\"govuk-table query-details-table\"\n [attr.aria-describedby]=\"'Follow-up of the response' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Follow up query' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".query-details-table .govuk-table__header{width:330px}\n"] }]
21041
+ args: [{ selector: 'ccd-query-details', template: "<ng-container *ngIf=\"query\">\n <cut-alert type=\"error\" *ngIf=\"hasRespondedToQuery() && !showItem\">\n <ng-container>{{message}}</ng-container>\n </cut-alert>\n\n <br/>\n <p *ngIf=\"showItem\">\n <a class=\"govuk-link\" href=\"javascript:void(0)\" (click)=\"onBack()\">{{ 'Back to query list' | rpxTranslate }}</a>\n </p>\n <div>\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Details of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Query details' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.lastSubmittedBy }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query subject' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.subject }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query body' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.body }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\" [class.govuk-table__header--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </th>\n <td class=\"govuk-table__cell\" [class.govuk-table__cell--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : (query.isHearingRelated) }}</td>\n </tr>\n <tr class=\"govuk-table__row govuk-table__row--isHearingRelated\" *ngIf=\"query.isHearingRelated === 'Yes'\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'What is the date of the hearing?' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.hearingDate | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"query.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"query.attachments\"\n [attachments]=\"query.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <ng-container *ngIf=\"query.children?.length > 0\">\n <ng-container *ngFor=\"let child of query.children; let i = index;\">\n <ng-container *ngIf=\"i % 2 === 0; else followUpMessage\">\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Response of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Response' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last response date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n\n <tr *ngIf=\"isCaseworker()\" class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Caseworker name' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Response detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-template #followUpMessage>\n <!-- <div class=\"query_details_caption\">{{ 'Follow-up' | rpxTranslate }}</div> -->\n <table class=\"govuk-table query-details-table\"\n [attr.aria-describedby]=\"'Follow-up of the response' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Follow up query' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMM yyyy' }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".query-details-table .govuk-table__header{width:330px}\n"] }]
21033
21042
  }], () => [{ type: SessionStorageService }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }], { query: [{
21034
21043
  type: Input
21035
- }], backClicked: [{
21036
- type: Output
21037
21044
  }], caseId: [{
21038
21045
  type: Input
21046
+ }], queryResponseStatus: [{
21047
+ type: Input
21048
+ }], backClicked: [{
21049
+ type: Output
21039
21050
  }], hasResponded: [{
21040
21051
  type: Output
21041
- }], totalNumberOfQueryChildren: [{
21042
- type: Input
21043
21052
  }] }); })();
21044
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDetailsComponent, { className: "QueryDetailsComponent", filePath: "lib/shared/components/palette/query-management/components/query-details/query-details.component.ts", lineNumber: 11 }); })();
21053
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDetailsComponent, { className: "QueryDetailsComponent", filePath: "lib/shared/components/palette/query-management/components/query-details/query-details.component.ts", lineNumber: 12 }); })();
21045
21054
 
21046
21055
  class QueryEventCompletionComponent {
21047
21056
  eventCompletionParams;
@@ -21704,7 +21713,7 @@ class QueryWriteRespondToQueryComponent {
21704
21713
  caseId;
21705
21714
  queryItemId;
21706
21715
  caseDetails;
21707
- totalNumberOfQueryChildren;
21716
+ queryResponseStatus;
21708
21717
  queryItemDisplay;
21709
21718
  hasRespondedToQuery = false;
21710
21719
  static QUERY_ITEM_RESPOND = '3';
@@ -21732,8 +21741,7 @@ class QueryWriteRespondToQueryComponent {
21732
21741
  console.error('caseQueriesCollections[0] is undefined!', this.caseQueriesCollections);
21733
21742
  return;
21734
21743
  }
21735
- const numberOfQueryChildren = new QueryListData(this.caseQueriesCollections[0]);
21736
- this.totalNumberOfQueryChildren = numberOfQueryChildren?.queries?.[0]?.children?.length || 0;
21744
+ const queryWithChildren = new QueryListData(this.caseQueriesCollections[0]);
21737
21745
  const messageId = this.route.snapshot.params.dataid;
21738
21746
  if (!messageId) {
21739
21747
  console.warn('No messageId found in route params:', this.route.snapshot.params);
@@ -21745,6 +21753,8 @@ class QueryWriteRespondToQueryComponent {
21745
21753
  .filter((message) => message?.value?.id === messageId); // Safe access
21746
21754
  if (filteredMessages.length > 0) {
21747
21755
  const matchingMessage = filteredMessages[0]?.value;
21756
+ const filteredQuery = queryWithChildren?.queries.filter((message) => filteredMessages[0]?.value?.parentId === message?.id);
21757
+ this.queryResponseStatus = filteredQuery[0]?.responseStatus;
21748
21758
  if (matchingMessage) {
21749
21759
  this.queryItemDisplay = new QueryListItem();
21750
21760
  Object.assign(this.queryItemDisplay, matchingMessage);
@@ -21758,7 +21768,7 @@ class QueryWriteRespondToQueryComponent {
21758
21768
  this.hasRespondedToQueryTask.emit(value);
21759
21769
  }
21760
21770
  static ɵfac = function QueryWriteRespondToQueryComponent_Factory(t) { return new (t || QueryWriteRespondToQueryComponent)(i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute)); };
21761
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRespondToQueryComponent, selectors: [["ccd-query-write-respond-to-query"]], inputs: { queryItem: "queryItem", formGroup: "formGroup", queryCreateContext: "queryCreateContext", submitted: "submitted", caseQueriesCollections: "caseQueriesCollections", showForm: "showForm" }, outputs: { hasRespondedToQueryTask: "hasRespondedToQueryTask" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 10, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-0"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], [3, "hasResponded", "query", "totalNumberOfQueryChildren"], ["class", "query-respond", 4, "ngIf"], [1, "query-respond"], [4, "ngIf"], [1, "govuk-heading-m"], [3, "formGroup"], [1, "govuk-form-group", "body-textarea"], [1, "govuk-label-wrapper"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], ["id", "body-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"]], template: function QueryWriteRespondToQueryComponent_Template(rf, ctx) { if (rf & 1) {
21771
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRespondToQueryComponent, selectors: [["ccd-query-write-respond-to-query"]], inputs: { queryItem: "queryItem", formGroup: "formGroup", queryCreateContext: "queryCreateContext", submitted: "submitted", caseQueriesCollections: "caseQueriesCollections", showForm: "showForm" }, outputs: { hasRespondedToQueryTask: "hasRespondedToQueryTask" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 10, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-0"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], [3, "hasResponded", "query", "queryResponseStatus"], ["class", "query-respond", 4, "ngIf"], [1, "query-respond"], [4, "ngIf"], [1, "govuk-heading-m"], [3, "formGroup"], [1, "govuk-form-group", "body-textarea"], [1, "govuk-label-wrapper"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], ["id", "body-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"]], template: function QueryWriteRespondToQueryComponent_Template(rf, ctx) { if (rf & 1) {
21762
21772
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 0)(2, "div", 1);
21763
21773
  i0.ɵɵtext(3);
21764
21774
  i0.ɵɵpipe(4, "rpxTranslate");
@@ -21782,14 +21792,14 @@ class QueryWriteRespondToQueryComponent {
21782
21792
  i0.ɵɵadvance(3);
21783
21793
  i0.ɵɵproperty("caseDetails", ctx.caseDetails);
21784
21794
  i0.ɵɵadvance(2);
21785
- i0.ɵɵproperty("query", ctx.queryItem)("totalNumberOfQueryChildren", ctx.totalNumberOfQueryChildren);
21795
+ i0.ɵɵproperty("query", ctx.queryItem)("queryResponseStatus", ctx.queryResponseStatus);
21786
21796
  i0.ɵɵadvance();
21787
21797
  i0.ɵɵproperty("ngIf", ctx.showForm);
21788
21798
  } }, styles: [".query-respond[_ngcontent-%COMP%]{width:100%;max-width:720px}"] });
21789
21799
  }
21790
21800
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryWriteRespondToQueryComponent, [{
21791
21801
  type: Component,
21792
- args: [{ selector: 'ccd-query-write-respond-to-query', template: "<div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-caption-l\">{{ 'Respond to a query' | rpxTranslate }}</div>\n <h1 class=\"govuk-heading-l govuk-!-margin-bottom-0\">{{ 'Query details' | rpxTranslate }}</h1>\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <div>\n <ccd-query-details [query]=\"queryItem\"\n [totalNumberOfQueryChildren]=\"totalNumberOfQueryChildren\"\n (hasResponded)=\"hasResponded($event)\"></ccd-query-details>\n </div>\n</div>\n<div class=\"query-respond\" *ngIf=\"showForm\">\n <div *ngIf=\"!hasRespondedToQuery\">\n <h1 class=\"govuk-heading-m\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Respond to a query' : 'Ask a follow-up question' | rpxTranslate }}\n </h1>\n\n <div [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group body-textarea\"\n [class.govuk-form-group--error]=\"submitted && formGroup.get('body')?.hasError('required')\">\n <div class=\"govuk-label-wrapper\">\n <label class=\"govuk-label govuk-label--m govuk-!-font-weight-bold\" for=\"body\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query Body' | rpxTranslate }}\n </label>\n </div>\n <p id=\"body-error\" class=\"govuk-error-message\"\n *ngIf=\"submitted && formGroup.get('body')?.hasError('required')\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate }} </span>{{ queryCreateContext === queryCreateContextEnum.RESPOND ? raiseQueryErrorMessages.RESPOND_QUERY_BODY : raiseQueryErrorMessages.QUERY_BODY | rpxTranslate }}\n </p>\n <textarea [formControlName]=\"'body'\" class=\"govuk-textarea\"\n [class.govuk-textarea--error]=\"submitted && formGroup.get('body')?.hasError('required')\" id=\"body\"\n name=\"body\" rows=\"5\" aria-describedby=\"body-hint body-error\">\n </textarea>\n </div>\n </div>\n </div>\n</div>\n", styles: [".query-respond{width:100%;max-width:720px}\n"] }]
21802
+ args: [{ selector: 'ccd-query-write-respond-to-query', template: "<div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-!-margin-bottom-6\">\n <div class=\"govuk-caption-l\">{{ 'Respond to a query' | rpxTranslate }}</div>\n <h1 class=\"govuk-heading-l govuk-!-margin-bottom-0\">{{ 'Query details' | rpxTranslate }}</h1>\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header [caseDetails]=\"caseDetails\"></ccd-query-case-details-header>\n </div>\n\n <div>\n <ccd-query-details [query]=\"queryItem\"\n [queryResponseStatus]=\"queryResponseStatus\"\n (hasResponded)=\"hasResponded($event)\"></ccd-query-details>\n </div>\n</div>\n<div class=\"query-respond\" *ngIf=\"showForm\">\n <div *ngIf=\"!hasRespondedToQuery\">\n <h1 class=\"govuk-heading-m\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Respond to a query' : 'Ask a follow-up question' | rpxTranslate }}\n </h1>\n\n <div [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group body-textarea\"\n [class.govuk-form-group--error]=\"submitted && formGroup.get('body')?.hasError('required')\">\n <div class=\"govuk-label-wrapper\">\n <label class=\"govuk-label govuk-label--m govuk-!-font-weight-bold\" for=\"body\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query Body' | rpxTranslate }}\n </label>\n </div>\n <p id=\"body-error\" class=\"govuk-error-message\"\n *ngIf=\"submitted && formGroup.get('body')?.hasError('required')\">\n <span class=\"govuk-visually-hidden\">{{ 'Error:' | rpxTranslate }} </span>{{ queryCreateContext === queryCreateContextEnum.RESPOND ? raiseQueryErrorMessages.RESPOND_QUERY_BODY : raiseQueryErrorMessages.QUERY_BODY | rpxTranslate }}\n </p>\n <textarea [formControlName]=\"'body'\" class=\"govuk-textarea\"\n [class.govuk-textarea--error]=\"submitted && formGroup.get('body')?.hasError('required')\" id=\"body\"\n name=\"body\" rows=\"5\" aria-describedby=\"body-hint body-error\">\n </textarea>\n </div>\n </div>\n </div>\n</div>\n", styles: [".query-respond{width:100%;max-width:720px}\n"] }]
21793
21803
  }], () => [{ type: CaseNotifier }, { type: i1$1.ActivatedRoute }], { queryItem: [{
21794
21804
  type: Input
21795
21805
  }], formGroup: [{