@hmcts/ccd-case-ui-toolkit 6.16.0-query-management-query-list-v3 → 6.16.0-query-management-sorting

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +156 -82
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/palette/palette.module.js +2 -2
  6. package/esm2015/lib/shared/components/palette/query-management/components/query-list/query-list.component.js +110 -49
  7. package/esm2015/lib/shared/components/palette/query-management/domain/column/column.model.js +2 -0
  8. package/esm2015/lib/shared/components/palette/query-management/domain/index.js +2 -1
  9. package/esm2015/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.js +9 -7
  10. package/esm2015/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.js +17 -14
  11. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +144 -78
  12. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  13. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +6 -1
  14. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +1 -1
  15. package/lib/shared/components/palette/query-management/domain/column/column.model.d.ts +7 -0
  16. package/lib/shared/components/palette/query-management/domain/column/column.model.d.ts.map +1 -0
  17. package/lib/shared/components/palette/query-management/domain/index.d.ts +1 -0
  18. package/lib/shared/components/palette/query-management/domain/index.d.ts.map +1 -1
  19. package/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.d.ts +1 -0
  20. package/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.d.ts.map +1 -1
  21. package/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.d.ts +2 -4
  22. package/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.d.ts.map +1 -1
  23. package/lib/shared/components/search-result/search-result.component.d.ts +1 -1
  24. package/package.json +1 -1
@@ -17023,22 +17023,31 @@ QueryDetailComponent.ɵcmp = i0.ɵɵdefineComponent({ type: QueryDetailComponent
17023
17023
  }]
17024
17024
  }], function () { return []; }, null); })();
17025
17025
 
17026
- var QueryListResponseStatus;
17027
- (function (QueryListResponseStatus) {
17028
- QueryListResponseStatus["NEW"] = "New";
17029
- QueryListResponseStatus["RESPONDED"] = "Responded";
17030
- })(QueryListResponseStatus || (QueryListResponseStatus = {}));
17026
+ var SortOrder;
17027
+ (function (SortOrder) {
17028
+ SortOrder[SortOrder["ASCENDING"] = 0] = "ASCENDING";
17029
+ SortOrder[SortOrder["DESCENDING"] = 1] = "DESCENDING";
17030
+ SortOrder[SortOrder["UNSORTED"] = 2] = "UNSORTED";
17031
+ })(SortOrder || (SortOrder = {}));
17031
17032
 
17032
17033
  class QueryListItem {
17034
+ constructor() {
17035
+ this.children = [];
17036
+ }
17033
17037
  get lastSubmittedMessage() {
17034
- if (this.children && this.children.length > 0) {
17035
- return this.children.reduce((prev, current) => {
17036
- return (prev.createdOn > current.createdOn) ? prev : current;
17037
- });
17038
- }
17039
- else {
17040
- return this;
17041
- }
17038
+ const getLastSubmittedMessage = (item) => {
17039
+ let lastSubmittedMessage = item;
17040
+ if (item.children && item.children.length > 0) {
17041
+ for (const child of item.children) {
17042
+ const childLastSubmittedMessage = getLastSubmittedMessage(child);
17043
+ if (childLastSubmittedMessage.createdOn > lastSubmittedMessage.createdOn) {
17044
+ lastSubmittedMessage = childLastSubmittedMessage;
17045
+ }
17046
+ }
17047
+ }
17048
+ return lastSubmittedMessage;
17049
+ };
17050
+ return getLastSubmittedMessage(this);
17042
17051
  }
17043
17052
  get lastSubmittedBy() {
17044
17053
  return this.lastSubmittedMessage.name;
@@ -17054,10 +17063,6 @@ class QueryListItem {
17054
17063
  var _a;
17055
17064
  return ((_a = this.children) === null || _a === void 0 ? void 0 : _a.length) > 0 ? new Date(this.lastSubmittedMessage.createdOn) : null;
17056
17065
  }
17057
- get responseStatus() {
17058
- var _a;
17059
- return ((_a = this.children) === null || _a === void 0 ? void 0 : _a.length) > 0 ? QueryListResponseStatus.RESPONDED : QueryListResponseStatus.NEW;
17060
- }
17061
17066
  }
17062
17067
 
17063
17068
  class QueryListData {
@@ -17066,49 +17071,74 @@ class QueryListData {
17066
17071
  this.roleOnCase = partyMessagesGroup.roleOnCase;
17067
17072
  // get the parent messages (messages without parentId) and add the children to them
17068
17073
  const parentMessages = partyMessagesGroup.partyMessages.filter((message) => !message.parentId);
17069
- this.partyMessages = parentMessages.map((message) => {
17070
- const parentMessage = new QueryListItem();
17071
- Object.assign(parentMessage, Object.assign(Object.assign({}, message), { children: partyMessagesGroup.partyMessages
17072
- .filter((childMessage) => childMessage.parentId === message.id) }));
17073
- return parentMessage;
17074
- });
17074
+ this.partyMessages = parentMessages.map((message) => this.buildQueryListItem(message, partyMessagesGroup.partyMessages));
17075
+ }
17076
+ buildQueryListItem(message, allMessages) {
17077
+ const queryListItem = new QueryListItem();
17078
+ Object.assign(queryListItem, Object.assign(Object.assign({}, message), { children: allMessages
17079
+ .filter((childMessage) => childMessage.parentId === message.id)
17080
+ .map((childMessage) => this.buildQueryListItem(childMessage, allMessages)) }));
17081
+ return queryListItem;
17075
17082
  }
17076
17083
  }
17077
17084
 
17078
- function QueryListComponent_ng_container_0_tr_23_Template(rf, ctx) { if (rf & 1) {
17085
+ var QueryListResponseStatus;
17086
+ (function (QueryListResponseStatus) {
17087
+ QueryListResponseStatus["NEW"] = "New";
17088
+ QueryListResponseStatus["RESPONDED"] = "Responded";
17089
+ })(QueryListResponseStatus || (QueryListResponseStatus = {}));
17090
+
17091
+ function QueryListComponent_ng_container_0_th_7_Template(rf, ctx) { if (rf & 1) {
17092
+ const _r5 = i0.ɵɵgetCurrentView();
17093
+ i0.ɵɵelementStart(0, "th", 8);
17094
+ i0.ɵɵtext(1);
17095
+ i0.ɵɵpipe(2, "rpxTranslate");
17096
+ i0.ɵɵelementStart(3, "a", 9);
17097
+ i0.ɵɵlistener("click", function QueryListComponent_ng_container_0_th_7_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r5); const col_r3 = ctx.$implicit; const ctx_r4 = i0.ɵɵnextContext(2); return ctx_r4.sortTable(col_r3); });
17098
+ i0.ɵɵelementEnd();
17099
+ i0.ɵɵelementEnd();
17100
+ } if (rf & 2) {
17101
+ const col_r3 = ctx.$implicit;
17102
+ const ctx_r1 = i0.ɵɵnextContext(2);
17103
+ i0.ɵɵadvance(1);
17104
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, col_r3.displayName), " ");
17105
+ i0.ɵɵadvance(2);
17106
+ i0.ɵɵproperty("innerHTML", ctx_r1.sortWidget(col_r3), i0.ɵɵsanitizeHtml);
17107
+ } }
17108
+ function QueryListComponent_ng_container_0_tr_9_Template(rf, ctx) { if (rf & 1) {
17079
17109
  i0.ɵɵelementStart(0, "tr", 4);
17080
- i0.ɵɵelementStart(1, "td", 8);
17081
- i0.ɵɵelementStart(2, "a", 9);
17110
+ i0.ɵɵelementStart(1, "td", 10);
17111
+ i0.ɵɵelementStart(2, "a", 11);
17082
17112
  i0.ɵɵtext(3);
17083
17113
  i0.ɵɵelementEnd();
17084
17114
  i0.ɵɵelementEnd();
17085
- i0.ɵɵelementStart(4, "td", 10);
17115
+ i0.ɵɵelementStart(4, "td", 12);
17086
17116
  i0.ɵɵtext(5);
17087
17117
  i0.ɵɵelementEnd();
17088
- i0.ɵɵelementStart(6, "td", 10);
17118
+ i0.ɵɵelementStart(6, "td", 12);
17089
17119
  i0.ɵɵtext(7);
17090
17120
  i0.ɵɵpipe(8, "date");
17091
17121
  i0.ɵɵelementEnd();
17092
- i0.ɵɵelementStart(9, "td", 10);
17122
+ i0.ɵɵelementStart(9, "td", 12);
17093
17123
  i0.ɵɵtext(10);
17094
17124
  i0.ɵɵpipe(11, "date");
17095
17125
  i0.ɵɵelementEnd();
17096
- i0.ɵɵelementStart(12, "td", 10);
17126
+ i0.ɵɵelementStart(12, "td", 12);
17097
17127
  i0.ɵɵtext(13);
17098
17128
  i0.ɵɵelementEnd();
17099
17129
  i0.ɵɵelementEnd();
17100
17130
  } if (rf & 2) {
17101
- const message_r2 = ctx.$implicit;
17131
+ const message_r6 = ctx.$implicit;
17102
17132
  i0.ɵɵadvance(3);
17103
- i0.ɵɵtextInterpolate(message_r2.subject);
17133
+ i0.ɵɵtextInterpolate(message_r6.subject);
17104
17134
  i0.ɵɵadvance(2);
17105
- i0.ɵɵtextInterpolate(message_r2.lastSubmittedBy);
17135
+ i0.ɵɵtextInterpolate(message_r6.lastSubmittedBy);
17106
17136
  i0.ɵɵadvance(2);
17107
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 5, message_r2.lastSubmittedDate, "dd MMM YYYY"));
17137
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 5, message_r6.lastSubmittedDate, "dd MMM YYYY"));
17108
17138
  i0.ɵɵadvance(3);
17109
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(11, 8, message_r2.lastResponseDate, "dd MMM YYYY"));
17139
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(11, 8, message_r6.lastResponseDate, "dd MMM YYYY"));
17110
17140
  i0.ɵɵadvance(3);
17111
- i0.ɵɵtextInterpolate(message_r2.lastResponseBy);
17141
+ i0.ɵɵtextInterpolate(message_r6.lastResponseBy);
17112
17142
  } }
17113
17143
  function QueryListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
17114
17144
  i0.ɵɵelementContainerStart(0);
@@ -17120,30 +17150,11 @@ function QueryListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
17120
17150
  i0.ɵɵelementEnd();
17121
17151
  i0.ɵɵelementStart(5, "thead", 3);
17122
17152
  i0.ɵɵelementStart(6, "tr", 4);
17123
- i0.ɵɵelementStart(7, "th", 5);
17124
- i0.ɵɵtext(8);
17125
- i0.ɵɵpipe(9, "rpxTranslate");
17153
+ i0.ɵɵtemplate(7, QueryListComponent_ng_container_0_th_7_Template, 4, 4, "th", 5);
17126
17154
  i0.ɵɵelementEnd();
17127
- i0.ɵɵelementStart(10, "th", 5);
17128
- i0.ɵɵtext(11);
17129
- i0.ɵɵpipe(12, "rpxTranslate");
17130
17155
  i0.ɵɵelementEnd();
17131
- i0.ɵɵelementStart(13, "th", 5);
17132
- i0.ɵɵtext(14);
17133
- i0.ɵɵpipe(15, "rpxTranslate");
17134
- i0.ɵɵelementEnd();
17135
- i0.ɵɵelementStart(16, "th", 5);
17136
- i0.ɵɵtext(17);
17137
- i0.ɵɵpipe(18, "rpxTranslate");
17138
- i0.ɵɵelementEnd();
17139
- i0.ɵɵelementStart(19, "th", 5);
17140
- i0.ɵɵtext(20);
17141
- i0.ɵɵpipe(21, "rpxTranslate");
17142
- i0.ɵɵelementEnd();
17143
- i0.ɵɵelementEnd();
17144
- i0.ɵɵelementEnd();
17145
- i0.ɵɵelementStart(22, "tbody", 6);
17146
- i0.ɵɵtemplate(23, QueryListComponent_ng_container_0_tr_23_Template, 14, 11, "tr", 7);
17156
+ i0.ɵɵelementStart(8, "tbody", 6);
17157
+ i0.ɵɵtemplate(9, QueryListComponent_ng_container_0_tr_9_Template, 14, 11, "tr", 7);
17147
17158
  i0.ɵɵelementEnd();
17148
17159
  i0.ɵɵelementEnd();
17149
17160
  i0.ɵɵelementContainerEnd();
@@ -17151,20 +17162,21 @@ function QueryListComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
17151
17162
  const ctx_r0 = i0.ɵɵnextContext();
17152
17163
  i0.ɵɵadvance(4);
17153
17164
  i0.ɵɵtextInterpolate(ctx_r0.queryListData.partyName);
17154
- i0.ɵɵadvance(4);
17155
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 7, "Queries"));
17156
- i0.ɵɵadvance(3);
17157
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 9, "Last submitted by"));
17158
- i0.ɵɵadvance(3);
17159
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 11, "Last submission date"));
17160
- i0.ɵɵadvance(3);
17161
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(18, 13, "Last response date"));
17162
- i0.ɵɵadvance(3);
17163
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(21, 15, "Response by"));
17164
17165
  i0.ɵɵadvance(3);
17166
+ i0.ɵɵproperty("ngForOf", ctx_r0.displayedColumns);
17167
+ i0.ɵɵadvance(2);
17165
17168
  i0.ɵɵproperty("ngForOf", ctx_r0.queryListData.partyMessages);
17166
17169
  } }
17167
17170
  class QueryListComponent {
17171
+ constructor() {
17172
+ this.displayedColumns = [
17173
+ { name: 'subject', displayName: 'Queries', sortOrder: SortOrder.UNSORTED },
17174
+ { name: 'lastSubmittedBy', displayName: 'Last submitted by', sortOrder: SortOrder.UNSORTED },
17175
+ { name: 'lastSubmittedDate', displayName: 'Last submission date', sortOrder: SortOrder.UNSORTED },
17176
+ { name: 'lastResponseDate', displayName: 'Last response date', sortOrder: SortOrder.UNSORTED },
17177
+ { name: 'lastResponseBy', displayName: 'Response by', sortOrder: SortOrder.UNSORTED }
17178
+ ];
17179
+ }
17168
17180
  ngOnChanges(simpleChanges) {
17169
17181
  var _a;
17170
17182
  const currentPartyMessageGroup = (_a = simpleChanges.partyMessageGroup) === null || _a === void 0 ? void 0 : _a.currentValue;
@@ -17172,13 +17184,74 @@ class QueryListComponent {
17172
17184
  this.queryListData = new QueryListData(currentPartyMessageGroup);
17173
17185
  }
17174
17186
  }
17187
+ sortTable(col) {
17188
+ switch (col.displayName) {
17189
+ case 'Queries': {
17190
+ this.sort(col);
17191
+ break;
17192
+ }
17193
+ case 'Last submitted by': {
17194
+ this.sort(col);
17195
+ break;
17196
+ }
17197
+ case 'Last submission date': {
17198
+ this.sortDate(col);
17199
+ break;
17200
+ }
17201
+ case 'Last response date': {
17202
+ this.sortDate(col);
17203
+ break;
17204
+ }
17205
+ case 'Response by': {
17206
+ this.sort(col);
17207
+ break;
17208
+ }
17209
+ }
17210
+ }
17211
+ sortWidget(col) {
17212
+ switch (col.sortOrder) {
17213
+ case SortOrder.DESCENDING: {
17214
+ return '▲';
17215
+ }
17216
+ case SortOrder.ASCENDING: {
17217
+ return '▼';
17218
+ }
17219
+ default: {
17220
+ return '⬧';
17221
+ }
17222
+ }
17223
+ }
17224
+ sort(col) {
17225
+ if (col.sortOrder && col.sortOrder === SortOrder.DESCENDING) {
17226
+ this.queryListData.partyMessages.sort((a, b) => (a[col.name] < b[col.name]) ? 1 : -1);
17227
+ this.displayedColumns.forEach((c) => c.sortOrder = SortOrder.UNSORTED);
17228
+ col.sortOrder = SortOrder.ASCENDING;
17229
+ }
17230
+ else {
17231
+ this.queryListData.partyMessages.sort((a, b) => (a[col.name] > b[col.name]) ? 1 : -1);
17232
+ this.displayedColumns.forEach((c) => c.sortOrder = SortOrder.UNSORTED);
17233
+ col.sortOrder = SortOrder.DESCENDING;
17234
+ }
17235
+ }
17236
+ sortDate(col) {
17237
+ if (col.sortOrder && col.sortOrder === SortOrder.DESCENDING) {
17238
+ this.queryListData.partyMessages.sort((a, b) => b[col.name] - a[col.name]);
17239
+ this.displayedColumns.forEach((c) => c.sortOrder = SortOrder.UNSORTED);
17240
+ col.sortOrder = SortOrder.ASCENDING;
17241
+ }
17242
+ else {
17243
+ this.queryListData.partyMessages.sort((a, b) => a[col.name] - b[col.name]);
17244
+ this.displayedColumns.forEach((c) => c.sortOrder = SortOrder.UNSORTED);
17245
+ col.sortOrder = SortOrder.DESCENDING;
17246
+ }
17247
+ }
17175
17248
  }
17176
17249
  QueryListComponent.ɵfac = function QueryListComponent_Factory(t) { return new (t || QueryListComponent)(); };
17177
- QueryListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: QueryListComponent, selectors: [["ccd-query-list"]], inputs: { partyMessageGroup: "partyMessageGroup" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[4, "ngIf"], [1, "govuk-table", "query-list__table"], [1, "govuk-table__cell", "query-list__caption", "query-list__row"], [1, "govuk-table__head"], [1, "govuk-table__row", "query-list__row"], ["scope", "col", 1, "govuk-table__header"], [1, "govuk-table__body"], ["class", "govuk-table__row query-list__row", 4, "ngFor", "ngForOf"], [1, "govuk-table__cell", "query-list__cell", "query-list__cell--first"], ["href", "javascript:void(0)"], [1, "govuk-table__cell", "query-list__cell"]], template: function QueryListComponent_Template(rf, ctx) { if (rf & 1) {
17178
- i0.ɵɵtemplate(0, QueryListComponent_ng_container_0_Template, 24, 17, "ng-container", 0);
17250
+ QueryListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: QueryListComponent, selectors: [["ccd-query-list"]], inputs: { partyMessageGroup: "partyMessageGroup" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[4, "ngIf"], [1, "govuk-table", "query-list__table"], [1, "govuk-table__cell", "query-list__caption", "query-list__row"], [1, "govuk-table__head"], [1, "govuk-table__row", "query-list__row"], ["class", "govuk-table__header", 4, "ngFor", "ngForOf"], [1, "govuk-table__body"], ["class", "govuk-table__row query-list__row", 4, "ngFor", "ngForOf"], [1, "govuk-table__header"], ["href", "javascript:void(0)", 1, "sort-widget", 3, "innerHTML", "click"], [1, "govuk-table__cell", "query-list__cell", "query-list__cell--first"], ["href", "javascript:void(0)"], [1, "govuk-table__cell", "query-list__cell"]], template: function QueryListComponent_Template(rf, ctx) { if (rf & 1) {
17251
+ i0.ɵɵtemplate(0, QueryListComponent_ng_container_0_Template, 10, 3, "ng-container", 0);
17179
17252
  } if (rf & 2) {
17180
17253
  i0.ɵɵproperty("ngIf", ctx.queryListData);
17181
- } }, directives: [i1.NgIf, i1.NgForOf], pipes: [i2$1.RpxTranslatePipe, i1.DatePipe], styles: [".query-list__caption[_ngcontent-%COMP%], .query-list__table[_ngcontent-%COMP%]{border:1px solid #b1b4b6}.query-list__caption[_ngcontent-%COMP%]{background:#f3f2f1;border-bottom:0;font-weight:700}.query-list__row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{padding-left:10px}.query-list__row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:last-child{padding-right:10px}.query-list__cell--first[_ngcontent-%COMP%]{width:33%}"] });
17254
+ } }, directives: [i1.NgIf, i1.NgForOf], pipes: [i2$1.RpxTranslatePipe, i1.DatePipe], styles: [".query-list__caption[_ngcontent-%COMP%], .query-list__table[_ngcontent-%COMP%]{border:1px solid #b1b4b6}.query-list__caption[_ngcontent-%COMP%]{background:#f3f2f1;border-bottom:0;font-weight:700}.query-list__row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{padding-left:10px}.query-list__row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:last-child{padding-right:10px}.query-list__cell--first[_ngcontent-%COMP%]{width:33%}.sort-widget[_ngcontent-%COMP%]{cursor:pointer;text-decoration:none;color:#000}"] });
17182
17255
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryListComponent, [{
17183
17256
  type: Component,
17184
17257
  args: [{
@@ -20440,13 +20513,6 @@ const ɵReadComplexFieldTableComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInh
20440
20513
  type: Input
20441
20514
  }] }); })();
20442
20515
 
20443
- var SortOrder;
20444
- (function (SortOrder) {
20445
- SortOrder[SortOrder["ASCENDING"] = 0] = "ASCENDING";
20446
- SortOrder[SortOrder["DESCENDING"] = 1] = "DESCENDING";
20447
- SortOrder[SortOrder["UNSORTED"] = 2] = "UNSORTED";
20448
- })(SortOrder || (SortOrder = {}));
20449
-
20450
20516
  function ReadComplexFieldCollectionTableComponent_th_9_Template(rf, ctx) { if (rf & 1) {
20451
20517
  const _r4 = i0.ɵɵgetCurrentView();
20452
20518
  i0.ɵɵelementStart(0, "th", 6);