@hmcts/ccd-case-ui-toolkit 7.3.77 → 7.3.78

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';
@@ -1854,13 +1853,13 @@ function getUserDetails(sessionStorageService) {
1854
1853
  }
1855
1854
  function isInternalUser(sessionStorageService) {
1856
1855
  const userDetails = getUserDetails(sessionStorageService);
1857
- return userDetails && userDetails?.roles
1856
+ return !!userDetails?.roles
1858
1857
  && !(userDetails.roles.includes(PUI_CASE_MANAGER)
1859
1858
  || userDetails.roles.some((role) => role.toLowerCase().includes(JUDGE)));
1860
1859
  }
1861
1860
  function isJudiciaryUser(sessionStorageService) {
1862
1861
  const userDetails = getUserDetails(sessionStorageService);
1863
- return userDetails && userDetails?.roles
1862
+ return !!userDetails?.roles
1864
1863
  && (userDetails.roles.some((role) => role.toLowerCase().includes(JUDGE)));
1865
1864
  }
1866
1865
 
@@ -4796,107 +4795,955 @@ class FieldsUtils {
4796
4795
  type: Injectable
4797
4796
  }], null, null); })();
4798
4797
 
4799
- 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
+ }
4800
5698
  function flat(arr, depth = 1) {
4801
- var flatten = function (arr, depth = 1) {
4802
- if (depth) return arr;
4803
-
4804
- // Otherwise, concatenate into the parent array
4805
- return arr.reduce(function (acc, val) {
4806
- return acc.concat(Array.isArray(val) ? flatten(val, depth - 1) : val);
4807
- }, []);
4808
-
4809
- };
4810
-
4811
- 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
+ });
4812
5729
  }
4813
- }
4814
-
4815
- Start
4816
- = Formula
4817
-
4818
- Formula
4819
- = EnclosedFormula
4820
- / OpenFormula
4821
-
4822
- EnclosedFormula
4823
- = bracket formula:OpenFormula bracket join:(JoinComparator)*
4824
- { return flat([ [formula], join[0] ], 1) }
4825
-
4826
- OpenFormula
4827
- = eq:OpenEqualityCheck joins:(JoinComparator)*
4828
- { return flat([ eq, flat(joins) ]) }
4829
-
4830
- JoinComparator
4831
- = comp:Comparator eq:OpenEqualityCheck
4832
- { return [comp, eq]; }
4833
- / CompoundJoinComparator
4834
-
4835
- CompoundJoinComparator
4836
- = comp:Comparator bracket f:OpenFormula bracket
4837
- { return [comp, f ] }
4838
-
4839
- OpenEqualityCheck
4840
- = fr:FieldRef _? op:operator _? val:Value
4841
- { return { fieldReference: fr, comparator: op, value: val } }
4842
-
4843
- Comparator
4844
- = _? c:'AND' _?
4845
- { return c; }
4846
- / _? c:'OR' _?
4847
- { return c; }
4848
-
4849
- Word
4850
- = l:Letter+
4851
- { return l.join(""); }
4852
-
4853
- Letter
4854
- = [a-zA-Z]
4855
-
4856
- Value
4857
- = v:quotedValue / v:Word
4858
- { return v.join("") }
4859
- / v:number
4860
- { return parseInt(v.join("")) }
4861
-
4862
- FieldRef
4863
- = FieldReference / MetadataFieldReference
4864
-
4865
- MetadataFieldReference
4866
- = s1:openSquare fr:FieldReference s2:closeSquare
4867
- { return s1 + fr + s2 }
4868
-
4869
- FieldReference
4870
- = characters:[A-Za-z0-9._-]+ { return characters.join(""); }
4871
-
4872
- openSquare
4873
- = "["
4874
-
4875
- closeSquare
4876
- = "]"
4877
-
4878
- number
4879
- = [0-9]+
4880
-
4881
- quotedValue
4882
- = '"'val:[A-Za-z0-9.,* _&()/-]*'"'
4883
- { return val.join(""); }
4884
-
4885
- bracket
4886
- = (_? "("+ _? / _? ")"+ _? )
4887
-
4888
- operator
4889
- = "=" / "!=" / "CONTAINS"
4890
-
4891
- ws "Whitespace"
4892
- = [ \t]
4893
-
4894
- _ "One or more whitespaces"
4895
- = ws+
5730
+ if (peg$success) {
5731
+ return peg$result;
5732
+ }
5733
+ else {
5734
+ peg$throw();
5735
+ }
5736
+ }
5737
+ const peg$allowedStartRules = [
5738
+ "Start"
5739
+ ];
4896
5740
 
4897
- nl "New line"
4898
- = "\\n"`;
4899
- 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
+ });
4900
5747
 
4901
5748
  class ConditionParser {
4902
5749
  static logger = new StructuredLoggerService();
@@ -4910,7 +5757,7 @@ class ConditionParser {
4910
5757
  return null;
4911
5758
  }
4912
5759
  condition = condition.replace(/CONTAINS/g, ' CONTAINS');
4913
- return peg.parse(condition.trim(), {});
5760
+ return parser.parse(condition.trim(), {});
4914
5761
  }
4915
5762
  /**
4916
5763
  * Evaluate the current fields against the conditions
@@ -7059,6 +7906,7 @@ class LabelSubstitutorModule {
7059
7906
  static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
7060
7907
  FieldsUtils,
7061
7908
  CurrencyPipe,
7909
+ PlaceholderService
7062
7910
  ] });
7063
7911
  }
7064
7912
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LabelSubstitutorModule, [{
@@ -7073,6 +7921,7 @@ class LabelSubstitutorModule {
7073
7921
  providers: [
7074
7922
  FieldsUtils,
7075
7923
  CurrencyPipe,
7924
+ PlaceholderService
7076
7925
  ]
7077
7926
  }]
7078
7927
  }], null, null); })();
@@ -8121,6 +8970,9 @@ class RequestOptionsBuilder {
8121
8970
  * @param value The value to be assessed.
8122
8971
  */
8123
8972
  static includeParam(value) {
8973
+ if (Array.isArray(value)) {
8974
+ return value.some(item => RequestOptionsBuilder.includeParam(item));
8975
+ }
8124
8976
  /* istanbul ignore else */
8125
8977
  if (value) {
8126
8978
  /* istanbul ignore else */
@@ -8131,6 +8983,36 @@ class RequestOptionsBuilder {
8131
8983
  }
8132
8984
  return false;
8133
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
+ }
8134
9016
  buildOptions(metaCriteria, caseCriteria, view) {
8135
9017
  // TODO: This should probably be the now built-in URLSearchParams but it
8136
9018
  // requires a bigger refactor and there are bigger fish to fry right now.
@@ -8155,8 +9037,7 @@ class RequestOptionsBuilder {
8155
9037
  /* istanbul ignore else */
8156
9038
  if (RequestOptionsBuilder.includeParam(caseCriteria[criterion])) {
8157
9039
  const key = RequestOptionsBuilder.FIELD_PREFIX + criterion;
8158
- const value = caseCriteria[criterion].trim ? caseCriteria[criterion].trim() : caseCriteria[criterion];
8159
- params = params.set(key, value.replace(/’/i, `'`));
9040
+ params = RequestOptionsBuilder.appendParam(params, key, RequestOptionsBuilder.getCollectionValues(caseCriteria[criterion], criterion));
8160
9041
  }
8161
9042
  }
8162
9043
  }
@@ -8669,31 +9550,32 @@ class CaseAccessUtils {
8669
9550
  static CTSC_ROLE = 'ctsc';
8670
9551
  static CTSC_ROLE_CATEGORY = 'CTSC';
8671
9552
  static CTSC_ROLE_NAME = 'ctsc';
8672
- getMappedRoleCategory(roles = [], roleCategories = []) {
9553
+ // fallback purely if roleCategories is not available in
9554
+ getMappedRoleCategories(roles = []) {
8673
9555
  const roleKeywords = roles.join().split('-').join().split(',');
8674
- if (this.roleOrCategoryExists(CaseAccessUtils.JUDGE_ROLE, CaseAccessUtils.JUDGE_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8675
- return CaseAccessUtils.JUDGE_ROLE_CATEGORY;
9556
+ const roleCategoryList = [];
9557
+ if (this.roleHasKeyword(CaseAccessUtils.JUDGE_ROLE, roleKeywords)) {
9558
+ roleCategoryList.push(CaseAccessUtils.JUDGE_ROLE_CATEGORY);
8676
9559
  }
8677
- else if (this.roleOrCategoryExists(CaseAccessUtils.PROFESSIONAL_ROLE, CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8678
- return CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY;
9560
+ if (this.roleHasKeyword(CaseAccessUtils.PROFESSIONAL_ROLE, roleKeywords)) {
9561
+ roleCategoryList.push(CaseAccessUtils.PROFESSIONAL_ROLE_CATEGORY);
8679
9562
  }
8680
- else if (this.roleOrCategoryExists(CaseAccessUtils.CITIZEN_ROLE, CaseAccessUtils.CITIZEN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8681
- return CaseAccessUtils.CITIZEN_ROLE_CATEGORY;
9563
+ if (this.roleHasKeyword(CaseAccessUtils.CITIZEN_ROLE, roleKeywords)) {
9564
+ roleCategoryList.push(CaseAccessUtils.CITIZEN_ROLE_CATEGORY);
8682
9565
  }
8683
- else if (this.roleOrCategoryExists(CaseAccessUtils.ADMIN_ROLE, CaseAccessUtils.ADMIN_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8684
- return CaseAccessUtils.ADMIN_ROLE_CATEGORY;
9566
+ if (this.roleHasKeyword(CaseAccessUtils.ADMIN_ROLE, roleKeywords)) {
9567
+ roleCategoryList.push(CaseAccessUtils.ADMIN_ROLE_CATEGORY);
8685
9568
  }
8686
- else if (this.roleOrCategoryExists(CaseAccessUtils.CTSC_ROLE, CaseAccessUtils.CTSC_ROLE_CATEGORY, roleKeywords, roleCategories)) {
8687
- return CaseAccessUtils.CTSC_ROLE_CATEGORY;
9569
+ if (this.roleHasKeyword(CaseAccessUtils.CTSC_ROLE, roleKeywords)) {
9570
+ roleCategoryList.push(CaseAccessUtils.CTSC_ROLE_CATEGORY);
8688
9571
  }
8689
- else {
8690
- return CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY;
9572
+ if (this.roleHasKeyword(CaseAccessUtils.LEGAL_OPERATIONS_ROLE, roleKeywords)) {
9573
+ roleCategoryList.push(CaseAccessUtils.LEGAL_OPERATIONS_ROLE_CATEGORY);
8691
9574
  }
9575
+ return roleCategoryList;
8692
9576
  }
8693
- roleOrCategoryExists(roleKeyword, roleCategory, roleKeywords, roleCategories) {
8694
- const categoryExists = roleCategories.indexOf(roleCategory) > -1;
8695
- const keywordExists = roleKeywords.indexOf(roleKeyword) > -1;
8696
- return categoryExists ? categoryExists : keywordExists;
9577
+ roleHasKeyword(keyword, roleWords) {
9578
+ return roleWords.includes(keyword);
8697
9579
  }
8698
9580
  getAMRoleName(accessType, aMRole) {
8699
9581
  let roleName = '';
@@ -9123,10 +10005,10 @@ class CaseworkerService {
9123
10005
  this.appConfig = appConfig;
9124
10006
  this.errorService = errorService;
9125
10007
  }
9126
- getCaseworkers(serviceId) {
9127
- const url = `${this.appConfig.getWorkAllocationApiUrl()}/caseworker/getUsersByServiceName`;
10008
+ getUserByIdamId(idamId) {
10009
+ const url = `${this.appConfig.getWorkAllocationApiUrl()}/caseworker/getUserByIdamId`;
9128
10010
  return this.http
9129
- .post(url, { services: [serviceId] })
10011
+ .post(url, idamId)
9130
10012
  .pipe(catchError(error => {
9131
10013
  this.errorService.setError(error);
9132
10014
  return throwError(error);
@@ -9977,8 +10859,10 @@ class CaseEditComponent {
9977
10859
  return form.value.event.id;
9978
10860
  }
9979
10861
  generateCaseEventData({ eventTrigger, form }) {
10862
+ const formData = this.replaceHiddenFormValuesWithOriginalCaseData(form.get('data'), eventTrigger.case_fields);
10863
+ this.formValueService.sanitiseDynamicLists(eventTrigger.case_fields, { data: formData });
9980
10864
  const caseEventData = {
9981
- 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)),
9982
10866
  event: form.value.event
9983
10867
  };
9984
10868
  this.formValueService.clearNonCaseFields(caseEventData.data, eventTrigger.case_fields);
@@ -10578,30 +11462,35 @@ class CasesService {
10578
11462
  }
10579
11463
  createChallengedAccessRequest(caseId, request) {
10580
11464
  // Assignment API endpoint
10581
- const userInfoStr = this.sessionStorageService.getItem('userDetails');
10582
11465
  const camUtils = new CaseAccessUtils();
10583
- let userInfo;
10584
- if (userInfoStr) {
10585
- userInfo = JSON.parse(userInfoStr);
10586
- }
10587
- const roleCategory = userInfo.roleCategory || camUtils.getMappedRoleCategory(userInfo.roles, userInfo.roleCategories);
10588
- 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");
10589
11475
  const beginTime = new Date();
10590
11476
  const endTime = new Date(new Date().setUTCHours(23, 59, 59, 999));
10591
11477
  const id = userInfo.id ? userInfo.id : userInfo.uid;
10592
11478
  const isNew = true;
10593
- 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);
10594
11482
  return this.http.post(`/api/challenged-access-request`, payload);
10595
11483
  }
10596
11484
  createSpecificAccessRequest(caseId, sar) {
10597
- // Assignment API endpoint
10598
- const userInfoStr = this.sessionStorageService.getItem('userDetails');
10599
11485
  const camUtils = new CaseAccessUtils();
10600
- let userInfo;
10601
- if (userInfoStr) {
10602
- userInfo = JSON.parse(userInfoStr);
10603
- }
10604
- 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";
10605
11494
  const roleName = camUtils.getAMRoleName('specific', roleCategory);
10606
11495
  const id = userInfo.id ? userInfo.id : userInfo.uid;
10607
11496
  const payload = camUtils.getAMPayload(null, id, roleName, roleCategory, 'SPECIFIC', caseId, sar, null, null, true);
@@ -11558,6 +12447,8 @@ class CaseEditPageComponent {
11558
12447
  saveDraftSub;
11559
12448
  caseFormValidationErrorsSub;
11560
12449
  logger = new StructuredLoggerService();
12450
+ fieldsUtils = new FieldsUtils();
12451
+ placeholderService = new PlaceholderService();
11561
12452
  caseEditFormComponents;
11562
12453
  static scrollToTop() {
11563
12454
  window.scrollTo(0, 0);
@@ -11722,7 +12613,7 @@ class CaseEditPageComponent {
11722
12613
  ? group.get(`${casefield.id}_judicialUserControl`)
11723
12614
  : group.get(casefield.id);
11724
12615
  if (fieldElement) {
11725
- const label = casefield.label || 'Field';
12616
+ const label = this.getInterpolatedFieldLabel(casefield);
11726
12617
  let id = casefield.id;
11727
12618
  if (fieldElement['component'] && (fieldElement['component'].parent || sourceFromComplexField)) {
11728
12619
  if (fieldElement['component'].idPrefix.indexOf(`_${id}_`) === -1) {
@@ -11787,7 +12678,7 @@ class CaseEditPageComponent {
11787
12678
  });
11788
12679
  }
11789
12680
  else {
11790
- 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` });
11791
12682
  fieldElement.markAsDirty();
11792
12683
  }
11793
12684
  }
@@ -12195,7 +13086,20 @@ class CaseEditPageComponent {
12195
13086
  });
12196
13087
  }
12197
13088
  getRpxTranslatePipeArgs(fieldLabel) {
12198
- 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);
12199
13103
  }
12200
13104
  onEventCanBeCompleted(eventCanBeCompleted) {
12201
13105
  this.caseEdit.onEventCanBeCompleted({
@@ -12255,7 +13159,7 @@ class CaseEditPageComponent {
12255
13159
  type: ViewChildren,
12256
13160
  args: [CaseEditFormComponent]
12257
13161
  }] }); })();
12258
- (() => { (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 }); })();
12259
13163
 
12260
13164
  class CallbackErrorsContext {
12261
13165
  triggerText;
@@ -12701,12 +13605,9 @@ class CaseEventCompletionTaskReassignedComponent {
12701
13605
  this.jurisdiction = task.jurisdiction;
12702
13606
  this.caseType = task.case_type_id;
12703
13607
  // Current user is a caseworker?
12704
- this.caseworkerSubscription = this.caseworkerService.getCaseworkers(task.jurisdiction).subscribe(result => {
12705
- if (result && result[0].service === task.jurisdiction && result[0].caseworkers) {
12706
- const caseworker = result[0].caseworkers.find(x => x.idamId === task.assignee);
12707
- if (caseworker) {
12708
- this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
12709
- }
13608
+ this.caseworkerSubscription = this.caseworkerService.getUserByIdamId(task.assignee).subscribe(caseworker => {
13609
+ if (caseworker) {
13610
+ this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
12710
13611
  }
12711
13612
  if (!this.assignedUserName) {
12712
13613
  // Current user is a judicial user?
@@ -25350,7 +26251,7 @@ class FieldReadComponent extends AbstractFieldReadComponent {
25350
26251
  type: ViewChild,
25351
26252
  args: ['fieldContainer', { static: false, read: ViewContainerRef }]
25352
26253
  }] }); })();
25353
- (() => { (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 }); })();
25354
26255
 
25355
26256
  const _c0$y = ["fieldContainer"];
25356
26257
  const FIX_CASEFIELD_FOR = ['FixedList', 'DynamicList', 'DynamicMultiSelectList'];
@@ -29712,22 +30613,24 @@ class UpdateFlagTitleDisplayPipe extends AsyncPipe {
29712
30613
 
29713
30614
  const _c0$l = (a0, a1, a2) => [a0, false, undefined, true, a1, a2];
29714
30615
  function ReadComplexFieldRawComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
29715
- i0.ɵɵelementContainerStart(0);
29716
- i0.ɵɵelementStart(1, "dt", 2)(2, "span", 3);
29717
- i0.ɵɵtext(3);
29718
- 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");
29719
30620
  i0.ɵɵelementEnd()();
29720
- i0.ɵɵelementStart(5, "dd", 2);
29721
- i0.ɵɵelement(6, "ccd-field-read", 4);
30621
+ i0.ɵɵelementStart(6, "dd", 3);
30622
+ i0.ɵɵelement(7, "ccd-field-read", 5);
29722
30623
  i0.ɵɵelementEnd();
29723
- i0.ɵɵelementContainerEnd();
30624
+ i0.ɵɵelementContainerEnd()();
29724
30625
  } if (rf & 2) {
29725
30626
  const field_r1 = ctx.$implicit;
29726
30627
  const ctx_r1 = i0.ɵɵnextContext();
29727
30628
  i0.ɵɵadvance();
30629
+ i0.ɵɵproperty("caseField", field_r1)("formGroup", ctx_r1.topLevelFormGroup)("contextFields", ctx_r1.caseFields);
30630
+ i0.ɵɵadvance();
29728
30631
  i0.ɵɵproperty("hidden", field_r1.hidden || field_r1.field_type.type === "Label");
29729
30632
  i0.ɵɵadvance(2);
29730
- 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);
29731
30634
  i0.ɵɵadvance(2);
29732
30635
  i0.ɵɵproperty("hidden", field_r1.hidden);
29733
30636
  i0.ɵɵadvance();
@@ -29740,9 +30643,9 @@ function ReadComplexFieldRawComponent_ng_container_1_Template(rf, ctx) { if (rf
29740
30643
  class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {
29741
30644
  caseFields = [];
29742
30645
  static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldRawComponent_BaseFactory; return function ReadComplexFieldRawComponent_Factory(__ngFactoryType__) { return (ɵReadComplexFieldRawComponent_BaseFactory || (ɵReadComplexFieldRawComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldRawComponent)))(__ngFactoryType__ || ReadComplexFieldRawComponent); }; })();
29743
- 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) {
29744
30647
  i0.ɵɵelementStart(0, "dl", 0);
29745
- 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);
29746
30649
  i0.ɵɵpipe(2, "ccdReadFieldsFilter");
29747
30650
  i0.ɵɵelementEnd();
29748
30651
  } if (rf & 2) {
@@ -29752,17 +30655,17 @@ class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {
29752
30655
  }
29753
30656
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldRawComponent, [{
29754
30657
  type: Component,
29755
- 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"] }]
29756
30659
  }], null, { caseFields: [{
29757
30660
  type: Input
29758
30661
  }] }); })();
29759
30662
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldRawComponent, { className: "ReadComplexFieldRawComponent", filePath: "lib/shared/components/palette/complex/read-complex-field-raw.component.ts", lineNumber: 17 }); })();
29760
30663
 
29761
30664
  const _c0$k = (a0, a1, a2, a3) => [a0, false, undefined, true, a1, a2, a3];
29762
- 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) {
29763
30666
  i0.ɵɵelementContainerStart(0);
29764
- i0.ɵɵelementStart(1, "tr", 7)(2, "td", 8)(3, "span", 3);
29765
- 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);
29766
30669
  i0.ɵɵelementEnd()()();
29767
30670
  i0.ɵɵelementContainerEnd();
29768
30671
  } if (rf & 2) {
@@ -29773,13 +30676,13 @@ function ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template(r
29773
30676
  i0.ɵɵadvance(3);
29774
30677
  i0.ɵɵproperty("topLevelFormGroup", ctx_r1.topLevelFormGroup)("caseFields", ctx_r1.caseFields)("caseField", field_r1)("context", ctx_r1.context);
29775
30678
  } }
29776
- function ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template(rf, ctx) { if (rf & 1) {
29777
- 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);
29778
30681
  i0.ɵɵtext(3);
29779
30682
  i0.ɵɵpipe(4, "rpxTranslate");
29780
30683
  i0.ɵɵelementEnd()();
29781
30684
  i0.ɵɵelementStart(5, "td")(6, "span", 3);
29782
- i0.ɵɵelement(7, "ccd-field-read", 9);
30685
+ i0.ɵɵelement(7, "ccd-field-read", 10);
29783
30686
  i0.ɵɵelementEnd()()();
29784
30687
  } if (rf & 2) {
29785
30688
  const field_r1 = i0.ɵɵnextContext().$implicit;
@@ -29791,16 +30694,19 @@ function ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template(rf
29791
30694
  i0.ɵɵproperty("topLevelFormGroup", ctx_r1.topLevelFormGroup)("caseFields", ctx_r1.caseFields)("caseField", field_r1)("context", ctx_r1.context);
29792
30695
  } }
29793
30696
  function ReadComplexFieldTableComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {
29794
- i0.ɵɵelementContainerStart(0);
29795
- i0.ɵɵtemplate(1, ReadComplexFieldTableComponent_ng_container_9_ng_container_1_Template, 5, 5, "ng-container", 6);
29796
- i0.ɵɵpipe(2, "ccdIsCompound");
29797
- i0.ɵɵtemplate(3, ReadComplexFieldTableComponent_ng_container_9_ng_template_3_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
29798
- 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()();
29799
30702
  } if (rf & 2) {
29800
30703
  const field_r1 = ctx.$implicit;
29801
- const SimpleRow_r3 = i0.ɵɵreference(4);
30704
+ const SimpleRow_r3 = i0.ɵɵreference(5);
30705
+ const ctx_r1 = i0.ɵɵnextContext();
29802
30706
  i0.ɵɵadvance();
29803
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, field_r1))("ngIfElse", SimpleRow_r3);
30707
+ i0.ɵɵproperty("caseField", field_r1)("formGroup", ctx_r1.topLevelFormGroup)("contextFields", ctx_r1.caseFields);
30708
+ i0.ɵɵadvance();
30709
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 5, field_r1))("ngIfElse", SimpleRow_r3);
29804
30710
  } }
29805
30711
  class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29806
30712
  // parent_ can be replaced with any ***_ - underscore is only important character
@@ -29821,7 +30727,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29821
30727
  this.path = ReadComplexFieldTableComponent.DUMMY_STRING_PRE + this.idPrefix + ReadComplexFieldTableComponent.DUMMY_STRING_POST;
29822
30728
  }
29823
30729
  static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldTableComponent_BaseFactory; return function ReadComplexFieldTableComponent_Factory(__ngFactoryType__) { return (ɵReadComplexFieldTableComponent_BaseFactory || (ɵReadComplexFieldTableComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldTableComponent)))(__ngFactoryType__ || ReadComplexFieldTableComponent); }; })();
29824
- 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) {
29825
30731
  i0.ɵɵelementStart(0, "div", 1)(1, "dl", 2)(2, "dt")(3, "span", 3);
29826
30732
  i0.ɵɵtext(4);
29827
30733
  i0.ɵɵpipe(5, "rpxTranslate");
@@ -29829,7 +30735,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29829
30735
  i0.ɵɵelement(6, "dd");
29830
30736
  i0.ɵɵelementEnd();
29831
30737
  i0.ɵɵelementStart(7, "table", 4)(8, "tbody");
29832
- 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);
29833
30739
  i0.ɵɵpipe(10, "ccdReadFieldsFilter");
29834
30740
  i0.ɵɵelementEnd()()();
29835
30741
  } if (rf & 2) {
@@ -29841,7 +30747,7 @@ class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {
29841
30747
  }
29842
30748
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldTableComponent, [{
29843
30749
  type: Component,
29844
- 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"] }]
29845
30751
  }], null, { caseFields: [{
29846
30752
  type: Input
29847
30753
  }] }); })();
@@ -32621,8 +33527,8 @@ i0.ɵɵsetComponentScope(ReadOrderSummaryRowComponent, function () { return [Rea
32621
33527
  i0.ɵɵsetComponentScope(ReadComplexFieldComponent, function () { return [i4.NgSwitch, i4.NgSwitchCase, i4.NgSwitchDefault, ReadComplexFieldRawComponent,
32622
33528
  ReadComplexFieldTableComponent,
32623
33529
  ReadComplexFieldCollectionTableComponent]; }, []);
32624
- i0.ɵɵsetComponentScope(ReadComplexFieldRawComponent, function () { return [i4.NgForOf, FieldReadComponent]; }, function () { return [ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
32625
- 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]; });
32626
33532
  i0.ɵɵsetComponentScope(ReadComplexFieldCollectionTableComponent, function () { return [i4.NgForOf, i4.NgIf, FieldReadComponent,
32627
33533
  ReadCaseLinkFieldComponent]; }, function () { return [i4.KeyValuePipe, IsCompoundPipe, CcdCollectionTableCaseFieldsFilterPipe, ReadFieldsFilterPipe, i1.RpxTranslatePipe]; });
32628
33534
  i0.ɵɵsetComponentScope(ReadCaseFlagFieldComponent, function () { return [i4.NgForOf, i4.NgIf, i4.NgSwitch, i4.NgSwitchCase, i4.NgSwitchDefault,
@@ -34730,6 +35636,7 @@ class WorkbasketFiltersComponent {
34730
35636
  }
34731
35637
  }
34732
35638
  onJurisdictionIdChange() {
35639
+ this.clearStoredWorkbasketFilterValues();
34733
35640
  if (this.selected.jurisdiction) {
34734
35641
  this.jurisdictionService.announceSelectedJurisdiction(this.selected.jurisdiction);
34735
35642
  this.selectedJurisdictionCaseTypes = this.selected.jurisdiction.caseTypes.length > 0
@@ -34744,7 +35651,7 @@ class WorkbasketFiltersComponent {
34744
35651
  this.selected.caseState = null;
34745
35652
  this.clearWorkbasketInputs();
34746
35653
  if (!this.isApplyButtonDisabled()) {
34747
- this.onCaseTypeIdChange();
35654
+ this.onCaseTypeIdChange(false);
34748
35655
  }
34749
35656
  }
34750
35657
  else {
@@ -34752,7 +35659,10 @@ class WorkbasketFiltersComponent {
34752
35659
  this.resetCaseState();
34753
35660
  }
34754
35661
  }
34755
- onCaseTypeIdChange() {
35662
+ onCaseTypeIdChange(clearStoredValues = true) {
35663
+ if (clearStoredValues) {
35664
+ this.clearStoredWorkbasketFilterValues();
35665
+ }
34756
35666
  if (this.selected.caseType) {
34757
35667
  this.selectedCaseTypeStates = this.sortStates(this.selected.caseType.states);
34758
35668
  this.selected.caseState = null;
@@ -34846,7 +35756,7 @@ class WorkbasketFiltersComponent {
34846
35756
  this.selectedJurisdictionCaseTypes = this.selected.jurisdiction.caseTypes;
34847
35757
  this.selected.caseType = this.selectCaseType(this.selected, this.selectedJurisdictionCaseTypes, routeSnapshot);
34848
35758
  if (this.selected.caseType) {
34849
- this.onCaseTypeIdChange();
35759
+ this.onCaseTypeIdChange(false);
34850
35760
  this.selected.caseState = this.selectCaseState(this.selected.caseType, routeSnapshot);
34851
35761
  }
34852
35762
  this.workbasketDefaults = true;
@@ -34893,6 +35803,9 @@ class WorkbasketFiltersComponent {
34893
35803
  this.workbasketInputsReady = false;
34894
35804
  this.workbasketInputs = [];
34895
35805
  }
35806
+ clearStoredWorkbasketFilterValues() {
35807
+ this.windowService.removeLocalStorage(FORM_GROUP_VAL_LOC_STORAGE);
35808
+ }
34896
35809
  resetCaseState() {
34897
35810
  this.defaults.state_id = null;
34898
35811
  this.selected.caseState = null;
@@ -37834,12 +38747,9 @@ class TaskAssignedComponent {
37834
38747
  // Current user is a caseworker?
37835
38748
  this.jurisdiction = this.task.jurisdiction;
37836
38749
  this.caseType = this.task.case_type_id;
37837
- this.caseworkerSubscription = this.caseworkerService.getCaseworkers(this.task.jurisdiction).subscribe(result => {
37838
- if (result && result[0].service === this.task.jurisdiction && result[0].caseworkers) {
37839
- const caseworker = result[0].caseworkers.find(x => x.idamId === this.task.assignee);
37840
- if (caseworker) {
37841
- this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
37842
- }
38750
+ this.caseworkerSubscription = this.caseworkerService.getUserByIdamId(this.task.assignee).subscribe(caseworker => {
38751
+ if (caseworker) {
38752
+ this.assignedUserName = `${caseworker.firstName} ${caseworker.lastName}`;
37843
38753
  }
37844
38754
  if (!this.assignedUserName) {
37845
38755
  // Current user is a judicial user?