@hmcts/ccd-case-ui-toolkit 7.3.77-pofcc-131 → 7.3.78-4949-5044

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.
@@ -17,7 +17,6 @@ import moment from 'moment';
17
17
  import { __decorate, __metadata } from 'tslib';
18
18
  import * as _ from 'underscore';
19
19
  import 'reflect-metadata';
20
- import { generate } from 'pegjs';
21
20
  import { StateMachine } from '@edium/fsm';
22
21
  import * as i1$3 from '@angular/material/legacy-dialog';
23
22
  import { MAT_LEGACY_DIALOG_DATA, MatLegacyDialogModule } from '@angular/material/legacy-dialog';
@@ -282,7 +281,7 @@ function NavigationItemComponent_input_4_Template(rf, ctx) { if (rf & 1) {
282
281
  i0.ɵɵelement(0, "input", 2);
283
282
  } if (rf & 2) {
284
283
  const ctx_r0 = i0.ɵɵnextContext();
285
- i0.ɵɵproperty("alt", i0.ɵɵinterpolate1("", ctx_r0.label, " button"))("src", i0.ɵɵinterpolate(ctx_r0.imageLink), i0.ɵɵsanitizeUrl);
284
+ i0.ɵɵproperty("alt", i0.ɵɵinterpolate1("", ctx_r0.label, " button"))("src", i0.ɵɵinterpolate(ctx_r0.imageLink));
286
285
  } }
287
286
  class NavigationItemComponent {
288
287
  label;
@@ -1261,12 +1260,6 @@ class AbstractAppConfig {
1261
1260
  return 'ithc';
1262
1261
  return 'prod';
1263
1262
  }
1264
- getWASupportedRoleCategories() {
1265
- return [];
1266
- }
1267
- getWASupportedRoleTypes() {
1268
- return [];
1269
- }
1270
1263
  getCamRoleAssignmentsApiUrl() {
1271
1264
  return undefined;
1272
1265
  }
@@ -1323,8 +1316,6 @@ class CaseEditorConfig {
1323
1316
  icp_jurisdictions;
1324
1317
  events_to_hide;
1325
1318
  enable_service_specific_multi_followups;
1326
- wa_supported_role_categories;
1327
- wa_supported_role_types;
1328
1319
  }
1329
1320
 
1330
1321
  class StructuredLoggerService {
@@ -1862,13 +1853,13 @@ function getUserDetails(sessionStorageService) {
1862
1853
  }
1863
1854
  function isInternalUser(sessionStorageService) {
1864
1855
  const userDetails = getUserDetails(sessionStorageService);
1865
- return userDetails && userDetails?.roles
1856
+ return !!userDetails?.roles
1866
1857
  && !(userDetails.roles.includes(PUI_CASE_MANAGER)
1867
1858
  || userDetails.roles.some((role) => role.toLowerCase().includes(JUDGE)));
1868
1859
  }
1869
1860
  function isJudiciaryUser(sessionStorageService) {
1870
1861
  const userDetails = getUserDetails(sessionStorageService);
1871
- return userDetails && userDetails?.roles
1862
+ return !!userDetails?.roles
1872
1863
  && (userDetails.roles.some((role) => role.toLowerCase().includes(JUDGE)));
1873
1864
  }
1874
1865
 
@@ -4804,107 +4795,955 @@ class FieldsUtils {
4804
4795
  type: Injectable
4805
4796
  }], null, null); })();
4806
4797
 
4807
- const conditionSource = `{
4798
+ // @ts-nocheck
4799
+ // This file is generated by npm run generate:condition-parser. Do not edit by hand.
4800
+ // @generated by Peggy 5.1.0.
4801
+ //
4802
+ // https://peggyjs.org/
4803
+ class peg$SyntaxError extends SyntaxError {
4804
+ constructor(message, expected, found, location) {
4805
+ super(message);
4806
+ this.expected = expected;
4807
+ this.found = found;
4808
+ this.location = location;
4809
+ this.name = "SyntaxError";
4810
+ }
4811
+ format(sources) {
4812
+ let str = "Error: " + this.message;
4813
+ if (this.location) {
4814
+ let src = null;
4815
+ const st = sources.find(s => s.source === this.location.source);
4816
+ if (st) {
4817
+ src = st.text.split(/\r\n|\n|\r/g);
4818
+ }
4819
+ const s = this.location.start;
4820
+ const offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
4821
+ ? this.location.source.offset(s)
4822
+ : s;
4823
+ const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
4824
+ if (src) {
4825
+ const e = this.location.end;
4826
+ const filler = "".padEnd(offset_s.line.toString().length, " ");
4827
+ const line = src[s.line - 1];
4828
+ const last = s.line === e.line ? e.column : line.length + 1;
4829
+ const hatLen = (last - s.column) || 1;
4830
+ str += "\n --> " + loc + "\n"
4831
+ + filler + " |\n"
4832
+ + offset_s.line + " | " + line + "\n"
4833
+ + filler + " | " + "".padEnd(s.column - 1, " ")
4834
+ + "".padEnd(hatLen, "^");
4835
+ }
4836
+ else {
4837
+ str += "\n at " + loc;
4838
+ }
4839
+ }
4840
+ return str;
4841
+ }
4842
+ static buildMessage(expected, found) {
4843
+ function hex(ch) {
4844
+ return ch.codePointAt(0).toString(16).toUpperCase();
4845
+ }
4846
+ const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode")
4847
+ ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu")
4848
+ : null;
4849
+ function unicodeEscape(s) {
4850
+ if (nonPrintable) {
4851
+ return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}");
4852
+ }
4853
+ return s;
4854
+ }
4855
+ function literalEscape(s) {
4856
+ return unicodeEscape(s
4857
+ .replace(/\\/g, "\\\\")
4858
+ .replace(/"/g, "\\\"")
4859
+ .replace(/\0/g, "\\0")
4860
+ .replace(/\t/g, "\\t")
4861
+ .replace(/\n/g, "\\n")
4862
+ .replace(/\r/g, "\\r")
4863
+ .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch))
4864
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
4865
+ }
4866
+ function classEscape(s) {
4867
+ return unicodeEscape(s
4868
+ .replace(/\\/g, "\\\\")
4869
+ .replace(/\]/g, "\\]")
4870
+ .replace(/\^/g, "\\^")
4871
+ .replace(/-/g, "\\-")
4872
+ .replace(/\0/g, "\\0")
4873
+ .replace(/\t/g, "\\t")
4874
+ .replace(/\n/g, "\\n")
4875
+ .replace(/\r/g, "\\r")
4876
+ .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch))
4877
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
4878
+ }
4879
+ const DESCRIBE_EXPECTATION_FNS = {
4880
+ literal(expectation) {
4881
+ return "\"" + literalEscape(expectation.text) + "\"";
4882
+ },
4883
+ class(expectation) {
4884
+ const escapedParts = expectation.parts.map(part => (Array.isArray(part)
4885
+ ? classEscape(part[0]) + "-" + classEscape(part[1])
4886
+ : classEscape(part)));
4887
+ return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : "");
4888
+ },
4889
+ any() {
4890
+ return "any character";
4891
+ },
4892
+ end() {
4893
+ return "end of input";
4894
+ },
4895
+ other(expectation) {
4896
+ return expectation.description;
4897
+ },
4898
+ };
4899
+ function describeExpectation(expectation) {
4900
+ return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
4901
+ }
4902
+ function describeExpected(expected) {
4903
+ const descriptions = expected.map(describeExpectation);
4904
+ descriptions.sort();
4905
+ if (descriptions.length > 0) {
4906
+ let j = 1;
4907
+ for (let i = 1; i < descriptions.length; i++) {
4908
+ if (descriptions[i - 1] !== descriptions[i]) {
4909
+ descriptions[j] = descriptions[i];
4910
+ j++;
4911
+ }
4912
+ }
4913
+ descriptions.length = j;
4914
+ }
4915
+ switch (descriptions.length) {
4916
+ case 1:
4917
+ return descriptions[0];
4918
+ case 2:
4919
+ return descriptions[0] + " or " + descriptions[1];
4920
+ default:
4921
+ return descriptions.slice(0, -1).join(", ")
4922
+ + ", or "
4923
+ + descriptions[descriptions.length - 1];
4924
+ }
4925
+ }
4926
+ function describeFound(found) {
4927
+ return found ? "\"" + literalEscape(found) + "\"" : "end of input";
4928
+ }
4929
+ return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
4930
+ }
4931
+ }
4932
+ function peg$parse(input, options) {
4933
+ options = options !== undefined ? options : {};
4934
+ const peg$FAILED = {};
4935
+ const peg$source = options.grammarSource;
4936
+ const peg$startRuleFunctions = {
4937
+ Start: peg$parseStart,
4938
+ };
4939
+ let peg$startRuleFunction = peg$parseStart;
4940
+ const peg$c0 = "AND";
4941
+ const peg$c1 = "OR";
4942
+ const peg$c2 = "[";
4943
+ const peg$c3 = "]";
4944
+ const peg$c4 = "\"";
4945
+ const peg$c5 = "(";
4946
+ const peg$c6 = ")";
4947
+ const peg$c7 = "=";
4948
+ const peg$c8 = "!=";
4949
+ const peg$c9 = "CONTAINS";
4950
+ const peg$r0 = /^[a-zA-Z]/;
4951
+ const peg$r1 = /^[A-Za-z0-9._\-]/;
4952
+ const peg$r2 = /^[0-9]/;
4953
+ const peg$r3 = /^[A-Za-z0-9.,* _&()\/\-]/;
4954
+ const peg$r4 = /^[ \t]/;
4955
+ const peg$e0 = peg$literalExpectation("AND", false);
4956
+ const peg$e1 = peg$literalExpectation("OR", false);
4957
+ const peg$e2 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false, false);
4958
+ const peg$e3 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], ".", "_", "-"], false, false, false);
4959
+ const peg$e4 = peg$literalExpectation("[", false);
4960
+ const peg$e5 = peg$literalExpectation("]", false);
4961
+ const peg$e6 = peg$classExpectation([["0", "9"]], false, false, false);
4962
+ const peg$e7 = peg$literalExpectation("\"", false);
4963
+ const peg$e8 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], ".", ",", "*", " ", "_", "&", "(", ")", "/", "-"], false, false, false);
4964
+ const peg$e9 = peg$literalExpectation("(", false);
4965
+ const peg$e10 = peg$literalExpectation(")", false);
4966
+ const peg$e11 = peg$literalExpectation("=", false);
4967
+ const peg$e12 = peg$literalExpectation("!=", false);
4968
+ const peg$e13 = peg$literalExpectation("CONTAINS", false);
4969
+ const peg$e14 = peg$otherExpectation("Whitespace");
4970
+ const peg$e15 = peg$classExpectation([" ", "\t"], false, false, false);
4971
+ const peg$e16 = peg$otherExpectation("One or more whitespaces");
4972
+ function peg$f0(term, joins) { return [term].concat(flat(joins)); }
4973
+ function peg$f1(formula) { return formula.length === 1 ? formula[0] : formula; }
4974
+ function peg$f2(comp, term) { return [comp, term]; }
4975
+ function peg$f3(fr, op, val) { return { fieldReference: fr, comparator: op, value: val }; }
4976
+ function peg$f4(c) { return c; }
4977
+ function peg$f5(c) { return c; }
4978
+ function peg$f6(l) { return l.join(""); }
4979
+ function peg$f7(v) { return v.join(""); }
4980
+ function peg$f8(v) { return parseInt(v.join("")); }
4981
+ function peg$f9(s1, fr, s2) { return s1 + fr + s2; }
4982
+ function peg$f10(characters) { return characters.join(""); }
4983
+ function peg$f11(val) { return val.join(""); }
4984
+ let peg$currPos = options.peg$currPos | 0;
4985
+ let peg$savedPos = peg$currPos;
4986
+ const peg$posDetailsCache = [{ line: 1, column: 1 }];
4987
+ let peg$maxFailPos = peg$currPos;
4988
+ let peg$maxFailExpected = options.peg$maxFailExpected || [];
4989
+ let peg$silentFails = options.peg$silentFails | 0;
4990
+ let peg$result;
4991
+ if (options.startRule) {
4992
+ if (!(options.startRule in peg$startRuleFunctions)) {
4993
+ throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
4994
+ }
4995
+ peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
4996
+ }
4997
+ function text() {
4998
+ return input.substring(peg$savedPos, peg$currPos);
4999
+ }
5000
+ function offset() {
5001
+ return peg$savedPos;
5002
+ }
5003
+ function range() {
5004
+ return {
5005
+ source: peg$source,
5006
+ start: peg$savedPos,
5007
+ end: peg$currPos,
5008
+ };
5009
+ }
5010
+ function location() {
5011
+ return peg$computeLocation(peg$savedPos, peg$currPos);
5012
+ }
5013
+ function expected(description, location) {
5014
+ location = location !== undefined
5015
+ ? location
5016
+ : peg$computeLocation(peg$savedPos, peg$currPos);
5017
+ throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location);
5018
+ }
5019
+ function error(message, location) {
5020
+ location = location !== undefined
5021
+ ? location
5022
+ : peg$computeLocation(peg$savedPos, peg$currPos);
5023
+ throw peg$buildSimpleError(message, location);
5024
+ }
5025
+ function peg$getUnicode(pos = peg$currPos) {
5026
+ const cp = input.codePointAt(pos);
5027
+ if (cp === undefined) {
5028
+ return "";
5029
+ }
5030
+ return String.fromCodePoint(cp);
5031
+ }
5032
+ function peg$literalExpectation(text, ignoreCase) {
5033
+ return { type: "literal", text, ignoreCase };
5034
+ }
5035
+ function peg$classExpectation(parts, inverted, ignoreCase, unicode) {
5036
+ return { type: "class", parts, inverted, ignoreCase, unicode };
5037
+ }
5038
+ function peg$anyExpectation() {
5039
+ return { type: "any" };
5040
+ }
5041
+ function peg$endExpectation() {
5042
+ return { type: "end" };
5043
+ }
5044
+ function peg$otherExpectation(description) {
5045
+ return { type: "other", description };
5046
+ }
5047
+ function peg$computePosDetails(pos) {
5048
+ let details = peg$posDetailsCache[pos];
5049
+ let p;
5050
+ if (details) {
5051
+ return details;
5052
+ }
5053
+ else {
5054
+ if (pos >= peg$posDetailsCache.length) {
5055
+ p = peg$posDetailsCache.length - 1;
5056
+ }
5057
+ else {
5058
+ p = pos;
5059
+ while (!peg$posDetailsCache[--p]) { }
5060
+ }
5061
+ details = peg$posDetailsCache[p];
5062
+ details = {
5063
+ line: details.line,
5064
+ column: details.column,
5065
+ };
5066
+ while (p < pos) {
5067
+ if (input.charCodeAt(p) === 10) {
5068
+ details.line++;
5069
+ details.column = 1;
5070
+ }
5071
+ else {
5072
+ details.column++;
5073
+ }
5074
+ p++;
5075
+ }
5076
+ peg$posDetailsCache[pos] = details;
5077
+ return details;
5078
+ }
5079
+ }
5080
+ function peg$computeLocation(startPos, endPos, offset) {
5081
+ const startPosDetails = peg$computePosDetails(startPos);
5082
+ const endPosDetails = peg$computePosDetails(endPos);
5083
+ const res = {
5084
+ source: peg$source,
5085
+ start: {
5086
+ offset: startPos,
5087
+ line: startPosDetails.line,
5088
+ column: startPosDetails.column,
5089
+ },
5090
+ end: {
5091
+ offset: endPos,
5092
+ line: endPosDetails.line,
5093
+ column: endPosDetails.column,
5094
+ },
5095
+ };
5096
+ if (offset && peg$source && (typeof peg$source.offset === "function")) {
5097
+ res.start = peg$source.offset(res.start);
5098
+ res.end = peg$source.offset(res.end);
5099
+ }
5100
+ return res;
5101
+ }
5102
+ function peg$fail(expected) {
5103
+ if (peg$currPos < peg$maxFailPos) {
5104
+ return;
5105
+ }
5106
+ if (peg$currPos > peg$maxFailPos) {
5107
+ peg$maxFailPos = peg$currPos;
5108
+ peg$maxFailExpected = [];
5109
+ }
5110
+ peg$maxFailExpected.push(expected);
5111
+ }
5112
+ function peg$buildSimpleError(message, location) {
5113
+ return new peg$SyntaxError(message, null, null, location);
5114
+ }
5115
+ function peg$buildStructuredError(expected, found, location) {
5116
+ return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected, found), expected, found, location);
5117
+ }
5118
+ function peg$parseStart() {
5119
+ let s0;
5120
+ s0 = peg$parseFormula();
5121
+ return s0;
5122
+ }
5123
+ function peg$parseFormula() {
5124
+ let s0, s1, s2, s3;
5125
+ s0 = peg$currPos;
5126
+ s1 = peg$parseFormulaTerm();
5127
+ if (s1 !== peg$FAILED) {
5128
+ s2 = [];
5129
+ s3 = peg$parseJoinComparator();
5130
+ while (s3 !== peg$FAILED) {
5131
+ s2.push(s3);
5132
+ s3 = peg$parseJoinComparator();
5133
+ }
5134
+ peg$savedPos = s0;
5135
+ s0 = peg$f0(s1, s2);
5136
+ }
5137
+ else {
5138
+ peg$currPos = s0;
5139
+ s0 = peg$FAILED;
5140
+ }
5141
+ return s0;
5142
+ }
5143
+ function peg$parseFormulaTerm() {
5144
+ let s0;
5145
+ s0 = peg$parseEnclosedFormula();
5146
+ if (s0 === peg$FAILED) {
5147
+ s0 = peg$parseOpenEqualityCheck();
5148
+ }
5149
+ return s0;
5150
+ }
5151
+ function peg$parseEnclosedFormula() {
5152
+ let s0, s1, s2, s3;
5153
+ s0 = peg$currPos;
5154
+ s1 = peg$parseopenBracket();
5155
+ if (s1 !== peg$FAILED) {
5156
+ s2 = peg$parseFormula();
5157
+ if (s2 !== peg$FAILED) {
5158
+ s3 = peg$parsecloseBracket();
5159
+ if (s3 !== peg$FAILED) {
5160
+ peg$savedPos = s0;
5161
+ s0 = peg$f1(s2);
5162
+ }
5163
+ else {
5164
+ peg$currPos = s0;
5165
+ s0 = peg$FAILED;
5166
+ }
5167
+ }
5168
+ else {
5169
+ peg$currPos = s0;
5170
+ s0 = peg$FAILED;
5171
+ }
5172
+ }
5173
+ else {
5174
+ peg$currPos = s0;
5175
+ s0 = peg$FAILED;
5176
+ }
5177
+ return s0;
5178
+ }
5179
+ function peg$parseJoinComparator() {
5180
+ let s0, s1, s2;
5181
+ s0 = peg$currPos;
5182
+ s1 = peg$parseComparator();
5183
+ if (s1 !== peg$FAILED) {
5184
+ s2 = peg$parseFormulaTerm();
5185
+ if (s2 !== peg$FAILED) {
5186
+ peg$savedPos = s0;
5187
+ s0 = peg$f2(s1, s2);
5188
+ }
5189
+ else {
5190
+ peg$currPos = s0;
5191
+ s0 = peg$FAILED;
5192
+ }
5193
+ }
5194
+ else {
5195
+ peg$currPos = s0;
5196
+ s0 = peg$FAILED;
5197
+ }
5198
+ return s0;
5199
+ }
5200
+ function peg$parseOpenEqualityCheck() {
5201
+ let s0, s1, s2, s3, s4, s5;
5202
+ s0 = peg$currPos;
5203
+ s1 = peg$parseFieldRef();
5204
+ if (s1 !== peg$FAILED) {
5205
+ s2 = peg$parse_();
5206
+ if (s2 === peg$FAILED) {
5207
+ s2 = null;
5208
+ }
5209
+ s3 = peg$parseoperator();
5210
+ if (s3 !== peg$FAILED) {
5211
+ s4 = peg$parse_();
5212
+ if (s4 === peg$FAILED) {
5213
+ s4 = null;
5214
+ }
5215
+ s5 = peg$parseValue();
5216
+ if (s5 !== peg$FAILED) {
5217
+ peg$savedPos = s0;
5218
+ s0 = peg$f3(s1, s3, s5);
5219
+ }
5220
+ else {
5221
+ peg$currPos = s0;
5222
+ s0 = peg$FAILED;
5223
+ }
5224
+ }
5225
+ else {
5226
+ peg$currPos = s0;
5227
+ s0 = peg$FAILED;
5228
+ }
5229
+ }
5230
+ else {
5231
+ peg$currPos = s0;
5232
+ s0 = peg$FAILED;
5233
+ }
5234
+ return s0;
5235
+ }
5236
+ function peg$parseComparator() {
5237
+ let s0, s1, s2, s3;
5238
+ s0 = peg$currPos;
5239
+ s1 = peg$parse_();
5240
+ if (s1 === peg$FAILED) {
5241
+ s1 = null;
5242
+ }
5243
+ if (input.substr(peg$currPos, 3) === peg$c0) {
5244
+ s2 = peg$c0;
5245
+ peg$currPos += 3;
5246
+ }
5247
+ else {
5248
+ s2 = peg$FAILED;
5249
+ if (peg$silentFails === 0) {
5250
+ peg$fail(peg$e0);
5251
+ }
5252
+ }
5253
+ if (s2 !== peg$FAILED) {
5254
+ s3 = peg$parse_();
5255
+ if (s3 === peg$FAILED) {
5256
+ s3 = null;
5257
+ }
5258
+ peg$savedPos = s0;
5259
+ s0 = peg$f4(s2);
5260
+ }
5261
+ else {
5262
+ peg$currPos = s0;
5263
+ s0 = peg$FAILED;
5264
+ }
5265
+ if (s0 === peg$FAILED) {
5266
+ s0 = peg$currPos;
5267
+ s1 = peg$parse_();
5268
+ if (s1 === peg$FAILED) {
5269
+ s1 = null;
5270
+ }
5271
+ if (input.substr(peg$currPos, 2) === peg$c1) {
5272
+ s2 = peg$c1;
5273
+ peg$currPos += 2;
5274
+ }
5275
+ else {
5276
+ s2 = peg$FAILED;
5277
+ if (peg$silentFails === 0) {
5278
+ peg$fail(peg$e1);
5279
+ }
5280
+ }
5281
+ if (s2 !== peg$FAILED) {
5282
+ s3 = peg$parse_();
5283
+ if (s3 === peg$FAILED) {
5284
+ s3 = null;
5285
+ }
5286
+ peg$savedPos = s0;
5287
+ s0 = peg$f5(s2);
5288
+ }
5289
+ else {
5290
+ peg$currPos = s0;
5291
+ s0 = peg$FAILED;
5292
+ }
5293
+ }
5294
+ return s0;
5295
+ }
5296
+ function peg$parseWord() {
5297
+ let s0, s1, s2;
5298
+ s0 = peg$currPos;
5299
+ s1 = [];
5300
+ s2 = peg$parseLetter();
5301
+ if (s2 !== peg$FAILED) {
5302
+ while (s2 !== peg$FAILED) {
5303
+ s1.push(s2);
5304
+ s2 = peg$parseLetter();
5305
+ }
5306
+ }
5307
+ else {
5308
+ s1 = peg$FAILED;
5309
+ }
5310
+ if (s1 !== peg$FAILED) {
5311
+ peg$savedPos = s0;
5312
+ s1 = peg$f6(s1);
5313
+ }
5314
+ s0 = s1;
5315
+ return s0;
5316
+ }
5317
+ function peg$parseLetter() {
5318
+ let s0;
5319
+ s0 = input.charAt(peg$currPos);
5320
+ if (peg$r0.test(s0)) {
5321
+ peg$currPos++;
5322
+ }
5323
+ else {
5324
+ s0 = peg$FAILED;
5325
+ if (peg$silentFails === 0) {
5326
+ peg$fail(peg$e2);
5327
+ }
5328
+ }
5329
+ return s0;
5330
+ }
5331
+ function peg$parseValue() {
5332
+ let s0, s1;
5333
+ s0 = peg$parsequotedValue();
5334
+ if (s0 === peg$FAILED) {
5335
+ s0 = peg$currPos;
5336
+ s1 = peg$parseWord();
5337
+ if (s1 !== peg$FAILED) {
5338
+ peg$savedPos = s0;
5339
+ s1 = peg$f7(s1);
5340
+ }
5341
+ s0 = s1;
5342
+ if (s0 === peg$FAILED) {
5343
+ s0 = peg$currPos;
5344
+ s1 = peg$parsenumber();
5345
+ if (s1 !== peg$FAILED) {
5346
+ peg$savedPos = s0;
5347
+ s1 = peg$f8(s1);
5348
+ }
5349
+ s0 = s1;
5350
+ }
5351
+ }
5352
+ return s0;
5353
+ }
5354
+ function peg$parseFieldRef() {
5355
+ let s0;
5356
+ s0 = peg$parseFieldReference();
5357
+ if (s0 === peg$FAILED) {
5358
+ s0 = peg$parseMetadataFieldReference();
5359
+ }
5360
+ return s0;
5361
+ }
5362
+ function peg$parseMetadataFieldReference() {
5363
+ let s0, s1, s2, s3;
5364
+ s0 = peg$currPos;
5365
+ s1 = peg$parseopenSquare();
5366
+ if (s1 !== peg$FAILED) {
5367
+ s2 = peg$parseFieldReference();
5368
+ if (s2 !== peg$FAILED) {
5369
+ s3 = peg$parsecloseSquare();
5370
+ if (s3 !== peg$FAILED) {
5371
+ peg$savedPos = s0;
5372
+ s0 = peg$f9(s1, s2, s3);
5373
+ }
5374
+ else {
5375
+ peg$currPos = s0;
5376
+ s0 = peg$FAILED;
5377
+ }
5378
+ }
5379
+ else {
5380
+ peg$currPos = s0;
5381
+ s0 = peg$FAILED;
5382
+ }
5383
+ }
5384
+ else {
5385
+ peg$currPos = s0;
5386
+ s0 = peg$FAILED;
5387
+ }
5388
+ return s0;
5389
+ }
5390
+ function peg$parseFieldReference() {
5391
+ let s0, s1, s2;
5392
+ s0 = peg$currPos;
5393
+ s1 = [];
5394
+ s2 = input.charAt(peg$currPos);
5395
+ if (peg$r1.test(s2)) {
5396
+ peg$currPos++;
5397
+ }
5398
+ else {
5399
+ s2 = peg$FAILED;
5400
+ if (peg$silentFails === 0) {
5401
+ peg$fail(peg$e3);
5402
+ }
5403
+ }
5404
+ if (s2 !== peg$FAILED) {
5405
+ while (s2 !== peg$FAILED) {
5406
+ s1.push(s2);
5407
+ s2 = input.charAt(peg$currPos);
5408
+ if (peg$r1.test(s2)) {
5409
+ peg$currPos++;
5410
+ }
5411
+ else {
5412
+ s2 = peg$FAILED;
5413
+ if (peg$silentFails === 0) {
5414
+ peg$fail(peg$e3);
5415
+ }
5416
+ }
5417
+ }
5418
+ }
5419
+ else {
5420
+ s1 = peg$FAILED;
5421
+ }
5422
+ if (s1 !== peg$FAILED) {
5423
+ peg$savedPos = s0;
5424
+ s1 = peg$f10(s1);
5425
+ }
5426
+ s0 = s1;
5427
+ return s0;
5428
+ }
5429
+ function peg$parseopenSquare() {
5430
+ let s0;
5431
+ if (input.charCodeAt(peg$currPos) === 91) {
5432
+ s0 = peg$c2;
5433
+ peg$currPos++;
5434
+ }
5435
+ else {
5436
+ s0 = peg$FAILED;
5437
+ if (peg$silentFails === 0) {
5438
+ peg$fail(peg$e4);
5439
+ }
5440
+ }
5441
+ return s0;
5442
+ }
5443
+ function peg$parsecloseSquare() {
5444
+ let s0;
5445
+ if (input.charCodeAt(peg$currPos) === 93) {
5446
+ s0 = peg$c3;
5447
+ peg$currPos++;
5448
+ }
5449
+ else {
5450
+ s0 = peg$FAILED;
5451
+ if (peg$silentFails === 0) {
5452
+ peg$fail(peg$e5);
5453
+ }
5454
+ }
5455
+ return s0;
5456
+ }
5457
+ function peg$parsenumber() {
5458
+ let s0, s1;
5459
+ s0 = [];
5460
+ s1 = input.charAt(peg$currPos);
5461
+ if (peg$r2.test(s1)) {
5462
+ peg$currPos++;
5463
+ }
5464
+ else {
5465
+ s1 = peg$FAILED;
5466
+ if (peg$silentFails === 0) {
5467
+ peg$fail(peg$e6);
5468
+ }
5469
+ }
5470
+ if (s1 !== peg$FAILED) {
5471
+ while (s1 !== peg$FAILED) {
5472
+ s0.push(s1);
5473
+ s1 = input.charAt(peg$currPos);
5474
+ if (peg$r2.test(s1)) {
5475
+ peg$currPos++;
5476
+ }
5477
+ else {
5478
+ s1 = peg$FAILED;
5479
+ if (peg$silentFails === 0) {
5480
+ peg$fail(peg$e6);
5481
+ }
5482
+ }
5483
+ }
5484
+ }
5485
+ else {
5486
+ s0 = peg$FAILED;
5487
+ }
5488
+ return s0;
5489
+ }
5490
+ function peg$parsequotedValue() {
5491
+ let s0, s1, s2, s3;
5492
+ s0 = peg$currPos;
5493
+ if (input.charCodeAt(peg$currPos) === 34) {
5494
+ s1 = peg$c4;
5495
+ peg$currPos++;
5496
+ }
5497
+ else {
5498
+ s1 = peg$FAILED;
5499
+ if (peg$silentFails === 0) {
5500
+ peg$fail(peg$e7);
5501
+ }
5502
+ }
5503
+ if (s1 !== peg$FAILED) {
5504
+ s2 = [];
5505
+ s3 = input.charAt(peg$currPos);
5506
+ if (peg$r3.test(s3)) {
5507
+ peg$currPos++;
5508
+ }
5509
+ else {
5510
+ s3 = peg$FAILED;
5511
+ if (peg$silentFails === 0) {
5512
+ peg$fail(peg$e8);
5513
+ }
5514
+ }
5515
+ while (s3 !== peg$FAILED) {
5516
+ s2.push(s3);
5517
+ s3 = input.charAt(peg$currPos);
5518
+ if (peg$r3.test(s3)) {
5519
+ peg$currPos++;
5520
+ }
5521
+ else {
5522
+ s3 = peg$FAILED;
5523
+ if (peg$silentFails === 0) {
5524
+ peg$fail(peg$e8);
5525
+ }
5526
+ }
5527
+ }
5528
+ if (input.charCodeAt(peg$currPos) === 34) {
5529
+ s3 = peg$c4;
5530
+ peg$currPos++;
5531
+ }
5532
+ else {
5533
+ s3 = peg$FAILED;
5534
+ if (peg$silentFails === 0) {
5535
+ peg$fail(peg$e7);
5536
+ }
5537
+ }
5538
+ if (s3 !== peg$FAILED) {
5539
+ peg$savedPos = s0;
5540
+ s0 = peg$f11(s2);
5541
+ }
5542
+ else {
5543
+ peg$currPos = s0;
5544
+ s0 = peg$FAILED;
5545
+ }
5546
+ }
5547
+ else {
5548
+ peg$currPos = s0;
5549
+ s0 = peg$FAILED;
5550
+ }
5551
+ return s0;
5552
+ }
5553
+ function peg$parseopenBracket() {
5554
+ let s0, s1, s2, s3;
5555
+ s0 = peg$currPos;
5556
+ s1 = peg$parse_();
5557
+ if (s1 === peg$FAILED) {
5558
+ s1 = null;
5559
+ }
5560
+ if (input.charCodeAt(peg$currPos) === 40) {
5561
+ s2 = peg$c5;
5562
+ peg$currPos++;
5563
+ }
5564
+ else {
5565
+ s2 = peg$FAILED;
5566
+ if (peg$silentFails === 0) {
5567
+ peg$fail(peg$e9);
5568
+ }
5569
+ }
5570
+ if (s2 !== peg$FAILED) {
5571
+ s3 = peg$parse_();
5572
+ if (s3 === peg$FAILED) {
5573
+ s3 = null;
5574
+ }
5575
+ s1 = [s1, s2, s3];
5576
+ s0 = s1;
5577
+ }
5578
+ else {
5579
+ peg$currPos = s0;
5580
+ s0 = peg$FAILED;
5581
+ }
5582
+ return s0;
5583
+ }
5584
+ function peg$parsecloseBracket() {
5585
+ let s0, s1, s2, s3;
5586
+ s0 = peg$currPos;
5587
+ s1 = peg$parse_();
5588
+ if (s1 === peg$FAILED) {
5589
+ s1 = null;
5590
+ }
5591
+ if (input.charCodeAt(peg$currPos) === 41) {
5592
+ s2 = peg$c6;
5593
+ peg$currPos++;
5594
+ }
5595
+ else {
5596
+ s2 = peg$FAILED;
5597
+ if (peg$silentFails === 0) {
5598
+ peg$fail(peg$e10);
5599
+ }
5600
+ }
5601
+ if (s2 !== peg$FAILED) {
5602
+ s3 = peg$parse_();
5603
+ if (s3 === peg$FAILED) {
5604
+ s3 = null;
5605
+ }
5606
+ s1 = [s1, s2, s3];
5607
+ s0 = s1;
5608
+ }
5609
+ else {
5610
+ peg$currPos = s0;
5611
+ s0 = peg$FAILED;
5612
+ }
5613
+ return s0;
5614
+ }
5615
+ function peg$parseoperator() {
5616
+ let s0;
5617
+ if (input.charCodeAt(peg$currPos) === 61) {
5618
+ s0 = peg$c7;
5619
+ peg$currPos++;
5620
+ }
5621
+ else {
5622
+ s0 = peg$FAILED;
5623
+ if (peg$silentFails === 0) {
5624
+ peg$fail(peg$e11);
5625
+ }
5626
+ }
5627
+ if (s0 === peg$FAILED) {
5628
+ if (input.substr(peg$currPos, 2) === peg$c8) {
5629
+ s0 = peg$c8;
5630
+ peg$currPos += 2;
5631
+ }
5632
+ else {
5633
+ s0 = peg$FAILED;
5634
+ if (peg$silentFails === 0) {
5635
+ peg$fail(peg$e12);
5636
+ }
5637
+ }
5638
+ if (s0 === peg$FAILED) {
5639
+ if (input.substr(peg$currPos, 8) === peg$c9) {
5640
+ s0 = peg$c9;
5641
+ peg$currPos += 8;
5642
+ }
5643
+ else {
5644
+ s0 = peg$FAILED;
5645
+ if (peg$silentFails === 0) {
5646
+ peg$fail(peg$e13);
5647
+ }
5648
+ }
5649
+ }
5650
+ }
5651
+ return s0;
5652
+ }
5653
+ function peg$parsews() {
5654
+ let s0, s1;
5655
+ peg$silentFails++;
5656
+ s0 = input.charAt(peg$currPos);
5657
+ if (peg$r4.test(s0)) {
5658
+ peg$currPos++;
5659
+ }
5660
+ else {
5661
+ s0 = peg$FAILED;
5662
+ if (peg$silentFails === 0) {
5663
+ peg$fail(peg$e15);
5664
+ }
5665
+ }
5666
+ peg$silentFails--;
5667
+ if (s0 === peg$FAILED) {
5668
+ s1 = peg$FAILED;
5669
+ if (peg$silentFails === 0) {
5670
+ peg$fail(peg$e14);
5671
+ }
5672
+ }
5673
+ return s0;
5674
+ }
5675
+ function peg$parse_() {
5676
+ let s0, s1;
5677
+ peg$silentFails++;
5678
+ s0 = [];
5679
+ s1 = peg$parsews();
5680
+ if (s1 !== peg$FAILED) {
5681
+ while (s1 !== peg$FAILED) {
5682
+ s0.push(s1);
5683
+ s1 = peg$parsews();
5684
+ }
5685
+ }
5686
+ else {
5687
+ s0 = peg$FAILED;
5688
+ }
5689
+ peg$silentFails--;
5690
+ if (s0 === peg$FAILED) {
5691
+ s1 = peg$FAILED;
5692
+ if (peg$silentFails === 0) {
5693
+ peg$fail(peg$e16);
5694
+ }
5695
+ }
5696
+ return s0;
5697
+ }
4808
5698
  function flat(arr, depth = 1) {
4809
- var flatten = function (arr, depth = 1) {
4810
- if (depth) return arr;
4811
-
4812
- // Otherwise, concatenate into the parent array
4813
- return arr.reduce(function (acc, val) {
4814
- return acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val);
4815
- }, []);
4816
-
4817
- };
4818
-
4819
- return flatten(arr, depth - 1);
5699
+ var flatten = function (arr, depth = 1) {
5700
+ if (depth)
5701
+ return arr;
5702
+ // Otherwise, concatenate into the parent array
5703
+ return arr.reduce(function (acc, val) {
5704
+ return acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val);
5705
+ }, []);
5706
+ };
5707
+ return flatten(arr, depth - 1);
5708
+ }
5709
+ peg$result = peg$startRuleFunction();
5710
+ const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);
5711
+ function peg$throw() {
5712
+ if (peg$result !== peg$FAILED && peg$currPos < input.length) {
5713
+ peg$fail(peg$endExpectation());
5714
+ }
5715
+ throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, peg$maxFailPos < input.length
5716
+ ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
5717
+ : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));
5718
+ }
5719
+ if (options.peg$library) {
5720
+ return /** @type {any} */ ({
5721
+ peg$result,
5722
+ peg$currPos,
5723
+ peg$FAILED,
5724
+ peg$maxFailExpected,
5725
+ peg$maxFailPos,
5726
+ peg$success,
5727
+ peg$throw: peg$success ? undefined : peg$throw,
5728
+ });
4820
5729
  }
4821
- }
4822
-
4823
- Start
4824
- = Formula
4825
-
4826
- Formula
4827
- = EnclosedFormula
4828
- / OpenFormula
4829
-
4830
- EnclosedFormula
4831
- = bracket formula:OpenFormula bracket join:(JoinComparator)*
4832
- { return flat([ [formula], join[0] ], 1) }
4833
-
4834
- OpenFormula
4835
- = eq:OpenEqualityCheck joins:(JoinComparator)*
4836
- { return flat([ eq, flat(joins) ]) }
4837
-
4838
- JoinComparator
4839
- = comp:Comparator eq:OpenEqualityCheck
4840
- { return [comp, eq]; }
4841
- / CompoundJoinComparator
4842
-
4843
- CompoundJoinComparator
4844
- = comp:Comparator bracket f:OpenFormula bracket
4845
- { return [comp, f ] }
4846
-
4847
- OpenEqualityCheck
4848
- = fr:FieldRef _? op:operator _? val:Value
4849
- { return { fieldReference: fr, comparator: op, value: val } }
4850
-
4851
- Comparator
4852
- = _? c:'AND' _?
4853
- { return c; }
4854
- / _? c:'OR' _?
4855
- { return c; }
4856
-
4857
- Word
4858
- = l:Letter+
4859
- { return l.join(""); }
4860
-
4861
- Letter
4862
- = [a-zA-Z]
4863
-
4864
- Value
4865
- = v:quotedValue / v:Word
4866
- { return v.join("") }
4867
- / v:number
4868
- { return parseInt(v.join("")) }
4869
-
4870
- FieldRef
4871
- = FieldReference / MetadataFieldReference
4872
-
4873
- MetadataFieldReference
4874
- = s1:openSquare fr:FieldReference s2:closeSquare
4875
- { return s1 + fr + s2 }
4876
-
4877
- FieldReference
4878
- = characters:[A-Za-z0-9._-]+ { return characters.join(""); }
4879
-
4880
- openSquare
4881
- = "["
4882
-
4883
- closeSquare
4884
- = "]"
4885
-
4886
- number
4887
- = [0-9]+
4888
-
4889
- quotedValue
4890
- = '"'val:[A-Za-z0-9.,* _&()/-]*'"'
4891
- { return val.join(""); }
4892
-
4893
- bracket
4894
- = (_? "("+ _? / _? ")"+ _? )
4895
-
4896
- operator
4897
- = "=" / "!=" / "CONTAINS"
4898
-
4899
- ws "Whitespace"
4900
- = [ \t]
4901
-
4902
- _ "One or more whitespaces"
4903
- = ws+
5730
+ if (peg$success) {
5731
+ return peg$result;
5732
+ }
5733
+ else {
5734
+ peg$throw();
5735
+ }
5736
+ }
5737
+ const peg$allowedStartRules = [
5738
+ "Start"
5739
+ ];
4904
5740
 
4905
- nl "New line"
4906
- = "\\n"`;
4907
- var peg = generate(conditionSource);
5741
+ var parser = /*#__PURE__*/Object.freeze({
5742
+ __proto__: null,
5743
+ StartRules: peg$allowedStartRules,
5744
+ SyntaxError: peg$SyntaxError,
5745
+ parse: peg$parse
5746
+ });
4908
5747
 
4909
5748
  class ConditionParser {
4910
5749
  static logger = new StructuredLoggerService();
@@ -4918,7 +5757,7 @@ class ConditionParser {
4918
5757
  return null;
4919
5758
  }
4920
5759
  condition = condition.replace(/CONTAINS/g, ' CONTAINS');
4921
- return peg.parse(condition.trim(), {});
5760
+ return parser.parse(condition.trim(), {});
4922
5761
  }
4923
5762
  /**
4924
5763
  * Evaluate the current fields against the conditions
@@ -7067,6 +7906,7 @@ class LabelSubstitutorModule {
7067
7906
  static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
7068
7907
  FieldsUtils,
7069
7908
  CurrencyPipe,
7909
+ PlaceholderService
7070
7910
  ] });
7071
7911
  }
7072
7912
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LabelSubstitutorModule, [{
@@ -7081,6 +7921,7 @@ class LabelSubstitutorModule {
7081
7921
  providers: [
7082
7922
  FieldsUtils,
7083
7923
  CurrencyPipe,
7924
+ PlaceholderService
7084
7925
  ]
7085
7926
  }]
7086
7927
  }], null, null); })();
@@ -8129,6 +8970,9 @@ class RequestOptionsBuilder {
8129
8970
  * @param value The value to be assessed.
8130
8971
  */
8131
8972
  static includeParam(value) {
8973
+ if (Array.isArray(value)) {
8974
+ return value.some(item => RequestOptionsBuilder.includeParam(item));
8975
+ }
8132
8976
  /* istanbul ignore else */
8133
8977
  if (value) {
8134
8978
  /* istanbul ignore else */
@@ -8139,6 +8983,36 @@ class RequestOptionsBuilder {
8139
8983
  }
8140
8984
  return false;
8141
8985
  }
8986
+ static sanitiseValue(value) {
8987
+ const trimmedValue = value.trim ? value.trim() : value;
8988
+ return trimmedValue.replace ? trimmedValue.replace(/’/i, `'`) : trimmedValue;
8989
+ }
8990
+ static getValueByPath(value, path) {
8991
+ return path.split('.').reduce((currentValue, pathPart) => {
8992
+ if (currentValue === undefined || currentValue === null) {
8993
+ return undefined;
8994
+ }
8995
+ return currentValue[pathPart];
8996
+ }, value);
8997
+ }
8998
+ static getCollectionValues(value, criterion) {
8999
+ if (!Array.isArray(value) ||
9000
+ !criterion.includes('.value.') ||
9001
+ value.some(item => item === null || typeof item !== 'object' || !Object.hasOwn(item, 'value'))) {
9002
+ return value;
9003
+ }
9004
+ const valuePath = criterion.substring(criterion.indexOf('.value.') + 1);
9005
+ return value.map(item => RequestOptionsBuilder.getValueByPath(item, valuePath));
9006
+ }
9007
+ static appendParam(params, key, value) {
9008
+ if (Array.isArray(value)) {
9009
+ const values = value
9010
+ .filter(item => RequestOptionsBuilder.includeParam(item))
9011
+ .map(item => RequestOptionsBuilder.sanitiseValue(item));
9012
+ return params.set(key, `[${values.join(', ')}]`);
9013
+ }
9014
+ return params.set(key, RequestOptionsBuilder.sanitiseValue(value));
9015
+ }
8142
9016
  buildOptions(metaCriteria, caseCriteria, view) {
8143
9017
  // TODO: This should probably be the now built-in URLSearchParams but it
8144
9018
  // requires a bigger refactor and there are bigger fish to fry right now.
@@ -8163,8 +9037,7 @@ class RequestOptionsBuilder {
8163
9037
  /* istanbul ignore else */
8164
9038
  if (RequestOptionsBuilder.includeParam(caseCriteria[criterion])) {
8165
9039
  const key = RequestOptionsBuilder.FIELD_PREFIX + criterion;
8166
- const value = caseCriteria[criterion].trim ? caseCriteria[criterion].trim() : caseCriteria[criterion];
8167
- params = params.set(key, value.replace(/’/i, `'`));
9040
+ params = RequestOptionsBuilder.appendParam(params, key, RequestOptionsBuilder.getCollectionValues(caseCriteria[criterion], criterion));
8168
9041
  }
8169
9042
  }
8170
9043
  }
@@ -8677,31 +9550,32 @@ class CaseAccessUtils {
8677
9550
  static CTSC_ROLE = 'ctsc';
8678
9551
  static CTSC_ROLE_CATEGORY = 'CTSC';
8679
9552
  static CTSC_ROLE_NAME = 'ctsc';
8680
- getMappedRoleCategory(roles = [], roleCategories = []) {
9553
+ // fallback purely if roleCategories is not available in
9554
+ getMappedRoleCategories(roles = []) {
8681
9555
  const roleKeywords = roles.join().split('-').join().split(',');
8682
- if (this.roleOrCategoryExists(CaseAccessUtils.JUDGE_ROLE, CaseAccessUtils.JUDGE_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8683
- return CaseAccessUtils.JUDGE_ROLE_CATEGORY;
9556
+ const roleCategoryList = [];
9557
+ if (this.roleHasKeyword(CaseAccessUtils.JUDGE_ROLE, roleKeywords)) {
9558
+ roleCategoryList.push(CaseAccessUtils.JUDGE_ROLE_CATEGORY);
8684
9559
  }
8685
- else if (this.roleOrCategoryExists(CaseAccessUtils.PROFESSIONAL_ROLE, CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8686
- return CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY;
9560
+ if (this.roleHasKeyword(CaseAccessUtils.PROFESSIONAL_ROLE, roleKeywords)) {
9561
+ roleCategoryList.push(CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY);
8687
9562
  }
8688
- else if (this.roleOrCategoryExists(CaseAccessUtils.CITIZEN_ROLE, CaseAccessUtils.CITIZEN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8689
- return CaseAccessUtils.CITIZEN_ROLE_CATEGORY;
9563
+ if (this.roleHasKeyword(CaseAccessUtils.CITIZEN_ROLE, roleKeywords)) {
9564
+ roleCategoryList.push(CaseAccessUtils.CITIZEN_ROLE_CATEGORY);
8690
9565
  }
8691
- else if (this.roleOrCategoryExists(CaseAccessUtils.ADMIN_ROLE, CaseAccessUtils.ADMIN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8692
- return CaseAccessUtils.ADMIN_ROLE_CATEGORY;
9566
+ if (this.roleHasKeyword(CaseAccessUtils.ADMIN_ROLE, roleKeywords)) {
9567
+ roleCategoryList.push(CaseAccessUtils.ADMIN_ROLE_CATEGORY);
8693
9568
  }
8694
- else if (this.roleOrCategoryExists(CaseAccessUtils.CTSC_ROLE, CaseAccessUtils.CTSC_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8695
- return CaseAccessUtils.CTSC_ROLE_CATEGORY;
9569
+ if (this.roleHasKeyword(CaseAccessUtils.CTSC_ROLE, roleKeywords)) {
9570
+ roleCategoryList.push(CaseAccessUtils.CTSC_ROLE_CATEGORY);
8696
9571
  }
8697
- else {
8698
- return CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY;
9572
+ if (this.roleHasKeyword(CaseAccessUtils.LEGAL_OPERATIONS_ROLE, roleKeywords)) {
9573
+ roleCategoryList.push(CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY);
8699
9574
  }
9575
+ return roleCategoryList;
8700
9576
  }
8701
- roleOrCategoryExists(roleKeyword, roleCategory, roleKeywords, roleCategories) {
8702
- const categoryExists = roleCategories.indexOf(roleCategory) > -1;
8703
- const keywordExists = roleKeywords.indexOf(roleKeyword) > -1;
8704
- return categoryExists ? categoryExists : keywordExists;
9577
+ roleHasKeyword(keyword, roleWords) {
9578
+ return roleWords.includes(keyword);
8705
9579
  }
8706
9580
  getAMRoleName(accessType, aMRole) {
8707
9581
  let roleName = '';
@@ -9131,10 +10005,10 @@ class CaseworkerService {
9131
10005
  this.appConfig = appConfig;
9132
10006
  this.errorService = errorService;
9133
10007
  }
9134
- getCaseworkers(serviceId) {
9135
- const url = `${this.appConfig.getWorkAllocationApiUrl()}/caseworker/getUsersByServiceName`;
10008
+ getUserByIdamId(idamId) {
10009
+ const url = `${this.appConfig.getWorkAllocationApiUrl()}/caseworker/getUserByIdamId`;
9136
10010
  return this.http
9137
- .post(url, { services: [serviceId] })
10011
+ .post(url, idamId)
9138
10012
  .pipe(catchError(error => {
9139
10013
  this.errorService.setError(error);
9140
10014
  return throwError(error);
@@ -9985,8 +10859,10 @@ class CaseEditComponent {
9985
10859
  return form.value.event.id;
9986
10860
  }
9987
10861
  generateCaseEventData({ eventTrigger, form }) {
10862
+ const formData = this.replaceHiddenFormValuesWithOriginalCaseData(form.get('data'), eventTrigger.case_fields);
10863
+ this.formValueService.sanitiseDynamicLists(eventTrigger.case_fields, { data: formData });
9988
10864
  const caseEventData = {
9989
- data: this.replaceEmptyComplexFieldValues(this.formValueService.sanitise(this.replaceHiddenFormValuesWithOriginalCaseData(form.get('data'), eventTrigger.case_fields), this.isCaseFlagSubmission)),
10865
+ data: this.replaceEmptyComplexFieldValues(this.formValueService.sanitise(formData, this.isCaseFlagSubmission)),
9990
10866
  event: form.value.event
9991
10867
  };
9992
10868
  this.formValueService.clearNonCaseFields(caseEventData.data, eventTrigger.case_fields);
@@ -10586,30 +11462,35 @@ class CasesService {
10586
11462
  }
10587
11463
  createChallengedAccessRequest(caseId, request) {
10588
11464
  // Assignment API endpoint
10589
- const userInfoStr = this.sessionStorageService.getItem('userDetails');
10590
11465
  const camUtils = new CaseAccessUtils();
10591
- let userInfo;
10592
- if (userInfoStr) {
10593
- userInfo = JSON.parse(userInfoStr);
10594
- }
10595
- const roleCategory = userInfo.roleCategory || camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
10596
- const roleName = camUtils.getAMRoleName('challenged', roleCategory);
11466
+ let userInfo = getUserDetails(this.sessionStorageService);
11467
+ if (!userInfo) {
11468
+ return throwError(() => new Error('User info not found in session storage'));
11469
+ }
11470
+ // EXUI-4758 - getMappedRoleCategories no longer returns a single string, checks all roles to get the most likely roleCategory
11471
+ // Unsure whether we should be using mapped role categories any more - should trust the roleCategories from userInfo if they exist
11472
+ const roleCategories = userInfo.roleCategories || camUtils.getMappedRoleCategories(userInfo.roles);
11473
+ // If user has no role categories, default to LEGAL_OPERATIONS
11474
+ const roleName = camUtils.getAMRoleName('challenged', roleCategories?.length > 0 ? roleCategories[0] : "LEGAL_OPERATIONS");
10597
11475
  const beginTime = new Date();
10598
11476
  const endTime = new Date(new Date().setUTCHours(23, 59, 59, 999));
10599
11477
  const id = userInfo.id ? userInfo.id : userInfo.uid;
10600
11478
  const isNew = true;
10601
- const payload = camUtils.getAMPayload(id, id, roleName, roleCategory, 'CHALLENGED', caseId, request, beginTime, endTime, isNew);
11479
+ const payload = camUtils.getAMPayload(id, id, roleName,
11480
+ // EXUI-4758 - Return first roleCategory as the roleCategory
11481
+ roleCategories[0], 'CHALLENGED', caseId, request, beginTime, endTime, isNew);
10602
11482
  return this.http.post(`/api/challenged-access-request`, payload);
10603
11483
  }
10604
11484
  createSpecificAccessRequest(caseId, sar) {
10605
- // Assignment API endpoint
10606
- const userInfoStr = this.sessionStorageService.getItem('userDetails');
10607
11485
  const camUtils = new CaseAccessUtils();
10608
- let userInfo;
10609
- if (userInfoStr) {
10610
- userInfo = JSON.parse(userInfoStr);
10611
- }
10612
- const roleCategory = userInfo.roleCategory || camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
11486
+ let userInfo = getUserDetails(this.sessionStorageService);
11487
+ if (!userInfo) {
11488
+ return throwError(() => new Error('User info not found in session storage'));
11489
+ }
11490
+ // EXUI-4758 - See above comment
11491
+ const roleCategories = userInfo.roleCategories || camUtils.getMappedRoleCategories(userInfo.roles);
11492
+ // EXUI-4758 - Return first roleCategory as the roleCategory for now, unless not present, in which case default to LEGAL_OPERATIONS
11493
+ const roleCategory = roleCategories?.length > 0 ? roleCategories[0] : "LEGAL_OPERATIONS";
10613
11494
  const roleName = camUtils.getAMRoleName('specific', roleCategory);
10614
11495
  const id = userInfo.id ? userInfo.id : userInfo.uid;
10615
11496
  const payload = camUtils.getAMPayload(null, id, roleName, roleCategory, 'SPECIFIC', caseId, sar, null, null, true);
@@ -11566,6 +12447,8 @@ class CaseEditPageComponent {
11566
12447
  saveDraftSub;
11567
12448
  caseFormValidationErrorsSub;
11568
12449
  logger = new StructuredLoggerService();
12450
+ fieldsUtils = new FieldsUtils();
12451
+ placeholderService = new PlaceholderService();
11569
12452
  caseEditFormComponents;
11570
12453
  static scrollToTop() {
11571
12454
  window.scrollTo(0, 0);
@@ -11730,7 +12613,7 @@ class CaseEditPageComponent {
11730
12613
  ? group.get(`${casefield.id}_judicialUserControl`)
11731
12614
  : group.get(casefield.id);
11732
12615
  if (fieldElement) {
11733
- const label = casefield.label || 'Field';
12616
+ const label = this.getInterpolatedFieldLabel(casefield);
11734
12617
  let id = casefield.id;
11735
12618
  if (fieldElement['component'] && (fieldElement['component'].parent || sourceFromComplexField)) {
11736
12619
  if (fieldElement['component'].idPrefix.indexOf(`_${id}_`) === -1) {
@@ -11795,7 +12678,7 @@ class CaseEditPageComponent {
11795
12678
  });
11796
12679
  }
11797
12680
  else {
11798
- this.validationErrors.push({ id, message: `Select or fill the required ${casefield.label} field` });
12681
+ this.validationErrors.push({ id, message: `Select or fill the required ${label} field` });
11799
12682
  fieldElement.markAsDirty();
11800
12683
  }
11801
12684
  }
@@ -12203,7 +13086,20 @@ class CaseEditPageComponent {
12203
13086
  });
12204
13087
  }
12205
13088
  getRpxTranslatePipeArgs(fieldLabel) {
12206
- return fieldLabel ? ({ FIELDLABEL: fieldLabel }) : null;
13089
+ return fieldLabel ? ({ FIELDLABEL: this.resolveLabelPlaceholders(fieldLabel) }) : null;
13090
+ }
13091
+ getInterpolatedFieldLabel(caseField) {
13092
+ const label = caseField.label || 'Field';
13093
+ return this.resolveLabelPlaceholders(label);
13094
+ }
13095
+ resolveLabelPlaceholders(label) {
13096
+ const dataControl = this.editForm?.controls?.['data'];
13097
+ const formFields = dataControl && typeof dataControl.getRawValue === 'function'
13098
+ ? dataControl.getRawValue()
13099
+ : {};
13100
+ const contextFields = this.caseFields?.length ? this.caseFields : this.eventTrigger?.case_fields || [];
13101
+ const fields = this.fieldsUtils.mergeLabelCaseFieldsAndFormFields(contextFields, formFields);
13102
+ return this.placeholderService.resolvePlaceholders(fields, label);
12207
13103
  }
12208
13104
  onEventCanBeCompleted(eventCanBeCompleted) {
12209
13105
  this.caseEdit.onEventCanBeCompleted({
@@ -12263,7 +13159,7 @@ class CaseEditPageComponent {
12263
13159
  type: ViewChildren,
12264
13160
  args: [CaseEditFormComponent]
12265
13161
  }] }); })();
12266
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditPageComponent, { className: "CaseEditPageComponent", filePath: "lib/shared/components/case-editor/case-edit-page/case-edit-page.component.ts", lineNumber: 37 }); })();
13162
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditPageComponent, { className: "CaseEditPageComponent", filePath: "lib/shared/components/case-editor/case-edit-page/case-edit-page.component.ts", lineNumber: 38 }); })();
12267
13163
 
12268
13164
  class CallbackErrorsContext {
12269
13165
  triggerText;
@@ -12709,12 +13605,9 @@ class CaseEventCompletionTaskReassignedComponent {
12709
13605
  this.jurisdiction = task.jurisdiction;
12710
13606
  this.caseType = task.case_type_id;
12711
13607
  // Current user is a caseworker?
12712
- this.caseworkerSubscription = this.caseworkerService.getCaseworkers(task.jurisdiction).subscribe(result => {
12713
- if (result && result[0].service === task.jurisdiction && result[0].caseworkers) {
12714
- const caseworker = result[0].caseworkers.find(x => x.idamId === task.assignee);
12715
- if (caseworker) {
12716
- this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
12717
- }
13608
+ this.caseworkerSubscription = this.caseworkerService.getUserByIdamId(task.assignee).subscribe(caseworker => {
13609
+ if (caseworker) {
13610
+ this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
12718
13611
  }
12719
13612
  if (!this.assignedUserName) {
12720
13613
  // Current user is a judicial user?
@@ -25358,7 +26251,7 @@ class FieldReadComponent extends AbstractFieldReadComponent {
25358
26251
  type: ViewChild,
25359
26252
  args: ['fieldContainer', { static: false, read: ViewContainerRef }]
25360
26253
  }] }); })();
25361
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FieldReadComponent, { className: "FieldReadComponent", filePath: "lib/shared/components/palette/base-field/field-read.component.ts", lineNumber: 16 }); })();
26254
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FieldReadComponent, { className: "FieldReadComponent", filePath: "lib/shared/components/palette/base-field/field-read.component.ts", lineNumber: 15 }); })();
25362
26255
 
25363
26256
  const _c0$y = ["fieldContainer"];
25364
26257
  const FIX_CASEFIELD_FOR = ['FixedList', 'DynamicList', 'DynamicMultiSelectList'];
@@ -29720,22 +30613,24 @@ class UpdateFlagTitleDisplayPipe extends AsyncPipe {
29720
30613
 
29721
30614
  const _c0$l = (a0, a1, a2) => [a0, false, undefined, true, a1, a2];
29722
30615
  function ReadComplexFieldRawComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
29723
- i0.ɵɵelementContainerStart(0);
29724
- i0.ɵɵelementStart(1, "dt", 2)(2, "span", 3);
29725
- i0.ɵɵtext(3);
29726
- i0.ɵɵpipe(4, "rpxTranslate");
30616
+ i0.ɵɵelementContainerStart(0)(1, 2);
30617
+ i0.ɵɵelementStart(2, "dt", 3)(3, "span", 4);
30618
+ i0.ɵɵtext(4);
30619
+ i0.ɵɵpipe(5, "rpxTranslate");
29727
30620
  i0.ɵɵelementEnd()();
29728
- i0.ɵɵelementStart(5, "dd", 2);
29729
- i0.ɵɵelement(6, "ccd-field-read", 4);
30621
+ i0.ɵɵelementStart(6, "dd", 3);
30622
+ i0.ɵɵelement(7, "ccd-field-read", 5);
29730
30623
  i0.ɵɵelementEnd();
29731
- i0.ɵɵelementContainerEnd();
30624
+ i0.ɵɵelementContainerEnd()();
29732
30625
  } if (rf & 2) {
29733
30626
  const field_r1 = ctx.$implicit;
29734
30627
  const ctx_r1 = i0.ɵɵnextContext();
29735
30628
  i0.ɵɵadvance();
30629
+ i0.ɵɵproperty("caseField", field_r1)("formGroup", ctx_r1.topLevelFormGroup)("contextFields", ctx_r1.caseFields);
30630
+ i0.ɵɵadvance();
29736
30631
  i0.ɵɵproperty("hidden", field_r1.hidden || field_r1.field_type.type === "Label");
29737
30632
  i0.ɵɵadvance(2);
29738
- i0.ɵɵtextInterpolate(ctx_r1.isTranslatable(field_r1) ? i0.ɵɵpipeBind1(4, 8, field_r1.label) : field_r1.label);
30633
+ i0.ɵɵtextInterpolate(ctx_r1.isTranslatable(field_r1) ? i0.ɵɵpipeBind1(5, 11, field_r1.label) : field_r1.label);
29739
30634
  i0.ɵɵadvance(2);
29740
30635
  i0.ɵɵproperty("hidden", field_r1.hidden);
29741
30636
  i0.ɵɵadvance();
@@ -29748,9 +30643,9 @@ function ReadComplexFieldRawComponent_ng_container_1_Template(rf, ctx) { if (rf
29748
30643
  class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {
29749
30644
  caseFields = [];
29750
30645
  static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldRawComponent_BaseFactory; return function ReadComplexFieldRawComponent_Factory(__ngFactoryType__) { return (ɵReadComplexFieldRawComponent_BaseFactory || (ɵReadComplexFieldRawComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldRawComponent)))(__ngFactoryType__ || ReadComplexFieldRawComponent); }; })();
29751
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldRawComponent, selectors: [["ccd-read-complex-field-raw"]], inputs: { caseFields: "caseFields" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 12, consts: [[1, "complex-raw"], [4, "ngFor", "ngForOf"], [3, "hidden"], [1, "text-16"], [3, "caseField", "context", "caseFields", "topLevelFormGroup", "idPrefix"]], template: function ReadComplexFieldRawComponent_Template(rf, ctx) { if (rf & 1) {
30646
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldRawComponent, selectors: [["ccd-read-complex-field-raw"]], inputs: { caseFields: "caseFields" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 12, consts: [[1, "complex-raw"], [4, "ngFor", "ngForOf"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], [3, "hidden"], [1, "text-16"], [3, "caseField", "context", "caseFields", "topLevelFormGroup", "idPrefix"]], template: function ReadComplexFieldRawComponent_Template(rf, ctx) { if (rf & 1) {
29752
30647
  i0.ɵɵelementStart(0, "dl", 0);
29753
- i0.ɵɵtemplate(1, ReadComplexFieldRawComponent_ng_container_1_Template, 7, 10, "ng-container", 1);
30648
+ i0.ɵɵtemplate(1, ReadComplexFieldRawComponent_ng_container_1_Template, 8, 13, "ng-container", 1);
29754
30649
  i0.ɵɵpipe(2, "ccdReadFieldsFilter");
29755
30650
  i0.ɵɵelementEnd();
29756
30651
  } if (rf & 2) {
@@ -29760,17 +30655,17 @@ class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {
29760
30655
  }
29761
30656
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldRawComponent, [{
29762
30657
  type: Component,
29763
- args: [{ selector: 'ccd-read-complex-field-raw', standalone: false, template: "<dl class=\"complex-raw\">\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup :id()\">\n <dt [hidden]=\"field.hidden || field.field_type.type === 'Label'\"><span class=\"text-16\">{{isTranslatable(field) ? (field.label | rpxTranslate) : field.label}}</span></dt>\n <dd [hidden]=\"field.hidden\">\n <ccd-field-read [caseField]=\"field\" [context]=\"context\" [caseFields]=\"caseFields\" [topLevelFormGroup]=\"topLevelFormGroup\" [idPrefix]=\"idPrefix\"></ccd-field-read>\n </dd>\n </ng-container>\n</dl>\n", styles: ["dl.complex-raw{list-style-type:none;margin:5px 0 10px}dl.complex-raw dl.complex-raw{padding-left:2ch}dl.complex-raw dt{font-weight:700}\n"] }]
30658
+ args: [{ selector: 'ccd-read-complex-field-raw', standalone: false, template: "<dl class=\"complex-raw\">\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup :id()\">\n <ng-container ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"topLevelFormGroup\" [contextFields]=\"caseFields\">\n <dt [hidden]=\"field.hidden || field.field_type.type === 'Label'\"><span class=\"text-16\">{{isTranslatable(field) ? (field.label | rpxTranslate) : field.label}}</span></dt>\n <dd [hidden]=\"field.hidden\">\n <ccd-field-read [caseField]=\"field\" [context]=\"context\" [caseFields]=\"caseFields\" [topLevelFormGroup]=\"topLevelFormGroup\" [idPrefix]=\"idPrefix\"></ccd-field-read>\n </dd>\n </ng-container>\n </ng-container>\n</dl>\n", styles: ["dl.complex-raw{list-style-type:none;margin:5px 0 10px}dl.complex-raw dl.complex-raw{padding-left:2ch}dl.complex-raw dt{font-weight:700}\n"] }]
29764
30659
  }], null, { caseFields: [{
29765
30660
  type: Input
29766
30661
  }] }); })();
29767
30662
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldRawComponent, { className: "ReadComplexFieldRawComponent", filePath: "lib/shared/components/palette/complex/read-complex-field-raw.component.ts", lineNumber: 17 }); })();
29768
30663
 
29769
30664
  const _c0$k = (a0, a1, a2, a3) => [a0, false, undefined, true, a1, a2, a3];
29770
- function ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
30665
+ function ReadComplexFieldTableComponent_ng_container_9_ng_container_2_Template(rf, ctx) { if (rf & 1) {
29771
30666
  i0.ɵɵelementContainerStart(0);
29772
- i0.ɵɵelementStart(1, "tr", 7)(2, "td", 8)(3, "span", 3);
29773
- i0.ɵɵelement(4, "ccd-field-read", 9);
30667
+ i0.ɵɵelementStart(1, "tr", 8)(2, "td", 9)(3, "span", 3);
30668
+ i0.ɵɵelement(4, "ccd-field-read", 10);
29774
30669
  i0.ɵɵelementEnd()()();
29775
30670
  i0.ɵɵelementContainerEnd();
29776
30671
  } if (rf & 2) {
@@ -29781,13 +30676,13 @@ function ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template(r
29781
30676
  i0.ɵɵadvance(3);
29782
30677
  i0.ɵɵproperty("topLevelFormGroup", ctx_r1.topLevelFormGroup)("caseFields", ctx_r1.caseFields)("caseField", field_r1)("context", ctx_r1.context);
29783
30678
  } }
29784
- function ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template(rf, ctx) { if (rf & 1) {
29785
- i0.ɵɵelementStart(0, "tr", 10)(1, "th", 11)(2, "span", 3);
30679
+ function ReadComplexFieldTableComponent_ng_container_9_ng_template_4_Template(rf, ctx) { if (rf & 1) {
30680
+ i0.ɵɵelementStart(0, "tr", 11)(1, "th", 12)(2, "span", 3);
29786
30681
  i0.ɵɵtext(3);
29787
30682
  i0.ɵɵpipe(4, "rpxTranslate");
29788
30683
  i0.ɵɵelementEnd()();
29789
30684
  i0.ɵɵelementStart(5, "td")(6, "span", 3);
29790
- i0.ɵɵelement(7, "ccd-field-read", 9);
30685
+ i0.ɵɵelement(7, "ccd-field-read", 10);
29791
30686
  i0.ɵɵelementEnd()()();
29792
30687
  } if (rf & 2) {
29793
30688
  const field_r1 = i0.ɵɵnextContext().$implicit;
@@ -29799,16 +30694,19 @@ function ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template(rf
29799
30694
  i0.ɵɵproperty("topLevelFormGroup", ctx_r1.topLevelFormGroup)("caseFields", ctx_r1.caseFields)("caseField", field_r1)("context", ctx_r1.context);
29800
30695
  } }
29801
30696
  function ReadComplexFieldTableComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {
29802
- i0.ɵɵelementContainerStart(0);
29803
- i0.ɵɵtemplate(1, ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template, 5, 5, "ng-container", 6);
29804
- i0.ɵɵpipe(2, "ccdIsCompound");
29805
- i0.ɵɵtemplate(3, ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
29806
- i0.ɵɵelementContainerEnd();
30697
+ i0.ɵɵelementContainerStart(0)(1, 6);
30698
+ i0.ɵɵtemplate(2, ReadComplexFieldTableComponent_ng_container_9_ng_container_2_Template, 5, 5, "ng-container", 7);
30699
+ i0.ɵɵpipe(3, "ccdIsCompound");
30700
+ i0.ɵɵtemplate(4, ReadComplexFieldTableComponent_ng_container_9_ng_template_4_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
30701
+ i0.ɵɵelementContainerEnd()();
29807
30702
  } if (rf & 2) {
29808
30703
  const field_r1 = ctx.$implicit;
29809
- const SimpleRow_r3 = i0.ɵɵreference(4);
30704
+ const SimpleRow_r3 = i0.ɵɵreference(5);
30705
+ const ctx_r1 = i0.ɵɵnextContext();
30706
+ i0.ɵɵadvance();
30707
+ i0.ɵɵproperty("caseField", field_r1)("formGroup", ctx_r1.topLevelFormGroup)("contextFields", ctx_r1.caseFields);
29810
30708
  i0.ɵɵadvance();
29811
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, field_r1))("ngIfElse", SimpleRow_r3);
30709
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 5, field_r1))("ngIfElse", SimpleRow_r3);
29812
30710
  } }
29813
30711
  class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29814
30712
  // parent_ can be replaced with any ***_ - underscore is only important character
@@ -29829,7 +30727,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29829
30727
  this.path = ReadComplexFieldTableComponent.DUMMY_STRING_PRE + this.idPrefix + ReadComplexFieldTableComponent.DUMMY_STRING_POST;
29830
30728
  }
29831
30729
  static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldTableComponent_BaseFactory; return function ReadComplexFieldTableComponent_Factory(__ngFactoryType__) { return (ɵReadComplexFieldTableComponent_BaseFactory || (ɵReadComplexFieldTableComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldTableComponent)))(__ngFactoryType__ || ReadComplexFieldTableComponent); }; })();
29832
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldTableComponent, selectors: [["ccd-read-complex-field-table"]], inputs: { caseFields: "caseFields" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 17, consts: [["SimpleRow", ""], [1, "complex-panel"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex field table", 1, "complex-panel-table"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], ["colspan", "2"], [3, "topLevelFormGroup", "caseFields", "caseField", "context"], [1, "complex-panel-simple-field", 3, "hidden"], ["id", "complex-panel-simple-field-label"]], template: function ReadComplexFieldTableComponent_Template(rf, ctx) { if (rf & 1) {
30730
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldTableComponent, selectors: [["ccd-read-complex-field-table"]], inputs: { caseFields: "caseFields" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 17, consts: [["SimpleRow", ""], [1, "complex-panel"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex field table", 1, "complex-panel-table"], [4, "ngFor", "ngForOf"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], [4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], ["colspan", "2"], [3, "topLevelFormGroup", "caseFields", "caseField", "context"], [1, "complex-panel-simple-field", 3, "hidden"], ["id", "complex-panel-simple-field-label"]], template: function ReadComplexFieldTableComponent_Template(rf, ctx) { if (rf & 1) {
29833
30731
  i0.ɵɵelementStart(0, "div", 1)(1, "dl", 2)(2, "dt")(3, "span", 3);
29834
30732
  i0.ɵɵtext(4);
29835
30733
  i0.ɵɵpipe(5, "rpxTranslate");
@@ -29837,7 +30735,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29837
30735
  i0.ɵɵelement(6, "dd");
29838
30736
  i0.ɵɵelementEnd();
29839
30737
  i0.ɵɵelementStart(7, "table", 4)(8, "tbody");
29840
- i0.ɵɵtemplate(9, ReadComplexFieldTableComponent_ng_container_9_Template, 5, 4, "ng-container", 5);
30738
+ i0.ɵɵtemplate(9, ReadComplexFieldTableComponent_ng_container_9_Template, 6, 7, "ng-container", 5);
29841
30739
  i0.ɵɵpipe(10, "ccdReadFieldsFilter");
29842
30740
  i0.ɵɵelementEnd()()();
29843
30741
  } if (rf & 2) {
@@ -29849,7 +30747,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29849
30747
  }
29850
30748
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldTableComponent, [{
29851
30749
  type: Component,
29852
- args: [{ selector: 'ccd-read-complex-field-table', standalone: false, template: "<div class=\"complex-panel\">\n <dl class=\"complex-panel-title\"><dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt><dd></dd></dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex field table\">\n <tbody>\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup :path :idPrefix\">\n <ng-container *ngIf=\"(field | ccdIsCompound); else SimpleRow\">\n <tr class=\"complex-panel-compound-field\" [hidden]=\"field.hidden\">\n <td colspan=\"2\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\" [caseFields]=\"caseFields\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-container>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-simple-field\" [hidden]=\"field.hidden\">\n <th id=\"complex-panel-simple-field-label\"><span class=\"text-16\">{{field.label | rpxTranslate}}</span></th>\n <td>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\" [caseFields]=\"caseFields\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media(min-width:641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}\n"] }]
30750
+ args: [{ selector: 'ccd-read-complex-field-table', standalone: false, template: "<div class=\"complex-panel\">\n <dl class=\"complex-panel-title\"><dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt><dd></dd></dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex field table\">\n <tbody>\n <ng-container *ngFor=\"let field of caseField | ccdReadFieldsFilter:false :undefined :true :topLevelFormGroup :path :idPrefix\">\n <ng-container ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"topLevelFormGroup\" [contextFields]=\"caseFields\">\n <ng-container *ngIf=\"(field | ccdIsCompound); else SimpleRow\">\n <tr class=\"complex-panel-compound-field\" [hidden]=\"field.hidden\">\n <td colspan=\"2\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\" [caseFields]=\"caseFields\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-container>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-simple-field\" [hidden]=\"field.hidden\">\n <th id=\"complex-panel-simple-field-label\"><span class=\"text-16\">{{field.label | rpxTranslate}}</span></th>\n <td>\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"topLevelFormGroup\" [caseFields]=\"caseFields\"\n [caseField]=\"field\" [context]=\"context\"></ccd-field-read>\n </span>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media(min-width:641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}\n"] }]
29853
30751
  }], null, { caseFields: [{
29854
30752
  type: Input
29855
30753
  }] }); })();
@@ -32629,8 +33527,8 @@ i0.ɵɵsetComponentScope(ReadOrderSummaryRowComponent, function () { return [Rea
32629
33527
  i0.ɵɵsetComponentScope(ReadComplexFieldComponent, function () { return [i4.NgSwitch, i4.NgSwitchCase, i4.NgSwitchDefault, ReadComplexFieldRawComponent,
32630
33528
  ReadComplexFieldTableComponent,
32631
33529
  ReadComplexFieldCollectionTableComponent]; }, []);
32632
- i0.ɵɵsetComponentScope(ReadComplexFieldRawComponent, function () { return [i4.NgForOf, FieldReadComponent]; }, function () { return [ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
32633
- i0.ɵɵsetComponentScope(ReadComplexFieldTableComponent, function () { return [i4.NgForOf, i4.NgIf, FieldReadComponent]; }, function () { return [IsCompoundPipe, ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
33530
+ i0.ɵɵsetComponentScope(ReadComplexFieldRawComponent, function () { return [i4.NgForOf, i3.NgControlStatusGroup, i3.FormGroupDirective, LabelSubstitutorDirective, FieldReadComponent]; }, function () { return [ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
33531
+ i0.ɵɵsetComponentScope(ReadComplexFieldTableComponent, function () { return [i4.NgForOf, i4.NgIf, i3.NgControlStatusGroup, i3.FormGroupDirective, LabelSubstitutorDirective, FieldReadComponent]; }, function () { return [IsCompoundPipe, ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
32634
33532
  i0.ɵɵsetComponentScope(ReadComplexFieldCollectionTableComponent, function () { return [i4.NgForOf, i4.NgIf, FieldReadComponent,
32635
33533
  ReadCaseLinkFieldComponent]; }, function () { return [i4.KeyValuePipe, IsCompoundPipe, CcdCollectionTableCaseFieldsFilterPipe, ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
32636
33534
  i0.ɵɵsetComponentScope(ReadCaseFlagFieldComponent, function () { return [i4.NgForOf, i4.NgIf, i4.NgSwitch, i4.NgSwitchCase, i4.NgSwitchDefault,
@@ -34738,6 +35636,7 @@ class WorkbasketFiltersComponent {
34738
35636
  }
34739
35637
  }
34740
35638
  onJurisdictionIdChange() {
35639
+ this.clearStoredWorkbasketFilterValues();
34741
35640
  if (this.selected.jurisdiction) {
34742
35641
  this.jurisdictionService.announceSelectedJurisdiction(this.selected.jurisdiction);
34743
35642
  this.selectedJurisdictionCaseTypes = this.selected.jurisdiction.caseTypes.length > 0
@@ -34752,7 +35651,7 @@ class WorkbasketFiltersComponent {
34752
35651
  this.selected.caseState = null;
34753
35652
  this.clearWorkbasketInputs();
34754
35653
  if (!this.isApplyButtonDisabled()) {
34755
- this.onCaseTypeIdChange();
35654
+ this.onCaseTypeIdChange(false);
34756
35655
  }
34757
35656
  }
34758
35657
  else {
@@ -34760,7 +35659,10 @@ class WorkbasketFiltersComponent {
34760
35659
  this.resetCaseState();
34761
35660
  }
34762
35661
  }
34763
- onCaseTypeIdChange() {
35662
+ onCaseTypeIdChange(clearStoredValues = true) {
35663
+ if (clearStoredValues) {
35664
+ this.clearStoredWorkbasketFilterValues();
35665
+ }
34764
35666
  if (this.selected.caseType) {
34765
35667
  this.selectedCaseTypeStates = this.sortStates(this.selected.caseType.states);
34766
35668
  this.selected.caseState = null;
@@ -34854,7 +35756,7 @@ class WorkbasketFiltersComponent {
34854
35756
  this.selectedJurisdictionCaseTypes = this.selected.jurisdiction.caseTypes;
34855
35757
  this.selected.caseType = this.selectCaseType(this.selected, this.selectedJurisdictionCaseTypes, routeSnapshot);
34856
35758
  if (this.selected.caseType) {
34857
- this.onCaseTypeIdChange();
35759
+ this.onCaseTypeIdChange(false);
34858
35760
  this.selected.caseState = this.selectCaseState(this.selected.caseType, routeSnapshot);
34859
35761
  }
34860
35762
  this.workbasketDefaults = true;
@@ -34901,6 +35803,9 @@ class WorkbasketFiltersComponent {
34901
35803
  this.workbasketInputsReady = false;
34902
35804
  this.workbasketInputs = [];
34903
35805
  }
35806
+ clearStoredWorkbasketFilterValues() {
35807
+ this.windowService.removeLocalStorage(FORM_GROUP_VAL_LOC_STORAGE);
35808
+ }
34904
35809
  resetCaseState() {
34905
35810
  this.defaults.state_id = null;
34906
35811
  this.selected.caseState = null;
@@ -37842,12 +38747,9 @@ class TaskAssignedComponent {
37842
38747
  // Current user is a caseworker?
37843
38748
  this.jurisdiction = this.task.jurisdiction;
37844
38749
  this.caseType = this.task.case_type_id;
37845
- this.caseworkerSubscription = this.caseworkerService.getCaseworkers(this.task.jurisdiction).subscribe(result => {
37846
- if (result && result[0].service === this.task.jurisdiction && result[0].caseworkers) {
37847
- const caseworker = result[0].caseworkers.find(x => x.idamId === this.task.assignee);
37848
- if (caseworker) {
37849
- this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
37850
- }
38750
+ this.caseworkerSubscription = this.caseworkerService.getUserByIdamId(this.task.assignee).subscribe(caseworker => {
38751
+ if (caseworker) {
38752
+ this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
37851
38753
  }
37852
38754
  if (!this.assignedUserName) {
37853
38755
  // Current user is a judicial user?