@netgrif/components-core 6.4.0 → 6.5.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/commons/schema.d.ts +3 -0
  2. package/esm2020/assets/i18n/de.json +4 -2
  3. package/esm2020/assets/i18n/en.json +4 -2
  4. package/esm2020/assets/i18n/sk.json +4 -2
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/lib/admin/role-assignment/abstract-role-assignment.component.mjs +11 -2
  7. package/esm2020/lib/admin/role-assignment/services/ProcessList.mjs +5 -2
  8. package/esm2020/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.mjs +11 -2
  9. package/esm2020/lib/admin/user-invite/abstract-user-invite.component.mjs +16 -3
  10. package/esm2020/lib/allowed-nets/services/factory/allowed-nets-service-factory.mjs +4 -1
  11. package/esm2020/lib/changed-fields/services/changed-fields.service.mjs +2 -2
  12. package/esm2020/lib/configuration/configuration.service.mjs +2 -2
  13. package/esm2020/lib/dialog/components/confirm-dialog/confirm-dialog.component.mjs +2 -2
  14. package/esm2020/lib/event/public-api.mjs +2 -1
  15. package/esm2020/lib/event/services/event.service.mjs +4 -4
  16. package/esm2020/lib/header/services/overflow.service.mjs +2 -2
  17. package/esm2020/lib/logger/services/log-publisher.service.mjs +2 -2
  18. package/esm2020/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +3 -3
  19. package/esm2020/lib/navigation/dashboard/abstract-dashboard.component.mjs +228 -0
  20. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +27 -19
  21. package/esm2020/lib/navigation/model/navigation-configs.mjs +2 -2
  22. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +104 -348
  23. package/esm2020/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.mjs +458 -0
  24. package/esm2020/lib/navigation/navigation-double-drawer/util/double-drawer-utils.mjs +43 -0
  25. package/esm2020/lib/navigation/public-api.mjs +4 -1
  26. package/esm2020/lib/navigation/service/uri.service.mjs +2 -2
  27. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +16 -5
  28. package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +13 -1
  29. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +3 -3
  30. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +12 -1
  31. package/esm2020/lib/resources/interface/petri-net-request-body.mjs +1 -1
  32. package/esm2020/lib/resources/resource-provider.service.mjs +6 -6
  33. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +6 -3
  34. package/esm2020/lib/search/models/category/case/case-dataset.mjs +2 -2
  35. package/esm2020/lib/search/models/operator/operator.mjs +2 -2
  36. package/esm2020/lib/search/models/operator/substring.mjs +2 -2
  37. package/esm2020/lib/search/search-service/search.service.mjs +2 -2
  38. package/esm2020/lib/task/services/task-data.service.mjs +4 -4
  39. package/esm2020/lib/task-content/model/subgrid.mjs +2 -2
  40. package/esm2020/lib/task-content/services/field-converter.service.mjs +2 -2
  41. package/esm2020/lib/task-content/services/task-content.service.mjs +4 -4
  42. package/esm2020/lib/toolbar/abstract-toolbar.component.mjs +48 -11
  43. package/esm2020/lib/toolbar/public-api.mjs +2 -1
  44. package/esm2020/lib/toolbar/toolbar-config.mjs +2 -0
  45. package/esm2020/lib/user/services/user-comparator.service.mjs +2 -2
  46. package/esm2020/lib/utility/contains.pipe.mjs +2 -2
  47. package/esm2020/lib/utility/navigation-item-task-filter-factory.mjs +4 -3
  48. package/esm2020/lib/utility/navigation-item-task-search-categories-factory.mjs +4 -1
  49. package/esm2020/lib/view/abstract/view-with-headers.mjs +1 -1
  50. package/esm2020/lib/view/public-api.mjs +2 -1
  51. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +9 -26
  52. package/esm2020/lib/view/task-view/abstract-tabbed-single-task-view.component.mjs +32 -0
  53. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +14 -1
  54. package/esm2020/lib/view/workflow-view/workflow-view.service.mjs +17 -2
  55. package/fesm2015/netgrif-components-core.mjs +1064 -434
  56. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  57. package/fesm2020/netgrif-components-core.mjs +1041 -426
  58. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  59. package/lib/admin/role-assignment/abstract-role-assignment.component.d.ts +4 -1
  60. package/lib/admin/role-assignment/services/ProcessList.d.ts +1 -1
  61. package/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.d.ts +4 -1
  62. package/lib/admin/user-invite/abstract-user-invite.component.d.ts +9 -3
  63. package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +1 -1
  64. package/lib/event/public-api.d.ts +1 -0
  65. package/lib/navigation/dashboard/abstract-dashboard.component.d.ts +73 -0
  66. package/lib/navigation/model/group-navigation-constants.d.ts +27 -19
  67. package/lib/navigation/model/navigation-configs.d.ts +1 -0
  68. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +22 -57
  69. package/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.d.ts +137 -0
  70. package/lib/navigation/navigation-double-drawer/util/double-drawer-utils.d.ts +16 -0
  71. package/lib/navigation/public-api.d.ts +3 -0
  72. package/lib/navigation/utility/filter-extraction.service.d.ts +3 -2
  73. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +6 -0
  74. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +8 -0
  75. package/lib/resources/interface/petri-net-request-body.d.ts +1 -0
  76. package/lib/toolbar/abstract-toolbar.component.d.ts +16 -6
  77. package/lib/toolbar/public-api.d.ts +1 -0
  78. package/lib/toolbar/toolbar-config.d.ts +11 -0
  79. package/lib/utility/navigation-item-task-filter-factory.d.ts +3 -1
  80. package/lib/utility/navigation-item-task-search-categories-factory.d.ts +1 -1
  81. package/lib/view/abstract/view-with-headers.d.ts +1 -1
  82. package/lib/view/public-api.d.ts +1 -0
  83. package/lib/view/task-view/abstract-single-task-view.component.d.ts +5 -16
  84. package/lib/view/task-view/abstract-tabbed-single-task-view.component.d.ts +15 -0
  85. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +5 -2
  86. package/lib/view/workflow-view/workflow-view.service.d.ts +2 -0
  87. package/package.json +1 -1
  88. package/src/assets/i18n/de.json +4 -2
  89. package/src/assets/i18n/en.json +4 -2
  90. package/src/assets/i18n/sk.json +4 -2
@@ -77,7 +77,7 @@ import moment from 'moment';
77
77
  import { __decorate, __param } from 'tslib';
78
78
  import * as Buffer from 'buffer';
79
79
  import { ENTER, COMMA, SEMICOLON } from '@angular/cdk/keycodes';
80
- import * as i3$1 from '@angular/router';
80
+ import * as i2$5 from '@angular/router';
81
81
  import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
82
82
  import * as i1$6 from '@angular/cdk/overlay';
83
83
  import { OverlayModule } from '@angular/cdk/overlay';
@@ -489,7 +489,7 @@ class ConfigurationService {
489
489
  map = this.getChildren(views, map, '');
490
490
  if (map.get(url) === undefined) {
491
491
  for (const [key, value] of map) {
492
- if (key.includes('/**') && url.includes(key.split('/**')[0]))
492
+ if (key?.includes('/**') && url?.includes(key.split('/**')[0]))
493
493
  return value;
494
494
  }
495
495
  }
@@ -688,7 +688,7 @@ class LogPublisherService {
688
688
  this._publishers = [];
689
689
  const serviceConfig = config.get().services;
690
690
  if (serviceConfig && serviceConfig.log && serviceConfig.log.publishers) {
691
- Object.keys(PUBLISHERS).filter(p => serviceConfig.log.publishers.includes(p) && PUBLISHERS[p])
691
+ Object.keys(PUBLISHERS).filter(p => serviceConfig.log.publishers?.includes(p) && PUBLISHERS[p])
692
692
  .forEach(key => new PUBLISHERS[key](this));
693
693
  }
694
694
  }
@@ -850,7 +850,8 @@ var tasks$2 = {
850
850
  finish: "Finish",
851
851
  cancel: "Cancel",
852
852
  noData: "This task has no data. Finish to continue.",
853
- redirecting: "Redirecting..."
853
+ redirecting: "Redirecting...",
854
+ closeTab: "Close"
854
855
  },
855
856
  footer: {
856
857
  defaultText: "NETGRIF, s.r.o. © 2022"
@@ -1266,7 +1267,8 @@ var en = {
1266
1267
  "import-net": {
1267
1268
  upload: "Upload model",
1268
1269
  choose: "Choose a process file",
1269
- done: "Done"
1270
+ done: "Done",
1271
+ search: "Search for process"
1270
1272
  },
1271
1273
  "new-case": {
1272
1274
  "case": "New Case",
@@ -1388,7 +1390,8 @@ var tasks$1 = {
1388
1390
  finish: "Dokončiť",
1389
1391
  cancel: "Zrušiť",
1390
1392
  noData: "Táto úloha nemá žiadne údaje. Stlačte dokončiť pre pokračovanie.",
1391
- redirecting: "Presmerovanie..."
1393
+ redirecting: "Presmerovanie...",
1394
+ closeTab: "Zavrieť"
1392
1395
  },
1393
1396
  footer: {
1394
1397
  defaultText: "NETGRIF, s.r.o. © 2022"
@@ -1804,7 +1807,8 @@ var sk = {
1804
1807
  "import-net": {
1805
1808
  upload: "Nahrať model",
1806
1809
  choose: "Vyberte súbor s procesom",
1807
- done: "Dokončiť"
1810
+ done: "Dokončiť",
1811
+ search: "Vyhľadajte proces"
1808
1812
  },
1809
1813
  "new-case": {
1810
1814
  "case": "Nový prípad",
@@ -1926,7 +1930,8 @@ var tasks = {
1926
1930
  finish: "Abschließen",
1927
1931
  cancel: "Stornieren",
1928
1932
  noData: "Diese Aufgabe hat keine Dateien. Schließen Sie die Aufgabe ab, um fortzufahren.",
1929
- redirecting: "Umleiten..."
1933
+ redirecting: "Umleiten...",
1934
+ closeTab: "Schließen"
1930
1935
  },
1931
1936
  footer: {
1932
1937
  defaultText: "NETGRIF, s.r.o. © 2022"
@@ -2342,7 +2347,8 @@ var de = {
2342
2347
  "import-net": {
2343
2348
  upload: "Model hochladen",
2344
2349
  choose: "Prozessdatei auswählen",
2345
- done: "Bestätigen"
2350
+ done: "Bestätigen",
2351
+ search: "Nach Prozess suchen"
2346
2352
  },
2347
2353
  "new-case": {
2348
2354
  "case": "Neuen Fall erstellen",
@@ -2881,15 +2887,15 @@ class AbstractResourceProvider {
2881
2887
  return link.charAt(0) === '/' ? link.length > 1 ? link.substring(1, link.length) : '' : link;
2882
2888
  }
2883
2889
  static sanitizeUrl(endpoint, url) {
2884
- if (endpoint.includes('http://') || (endpoint.includes('https://'))) {
2890
+ if (endpoint?.includes('http://') || (endpoint?.includes('https://'))) {
2885
2891
  if (url) {
2886
- if (endpoint.includes(url)) {
2892
+ if (endpoint?.includes(url)) {
2887
2893
  return endpoint;
2888
2894
  }
2889
2895
  else {
2890
- return url.includes('https://') ? 'https://' +
2891
- endpoint.replace(/(^\w+:|^)\/\//, '') : 'http://' +
2892
- endpoint.replace(/(^\w+:|^)\/\//, '');
2896
+ return url?.includes('https://') ? 'https://' +
2897
+ endpoint?.replace(/(^\w+:|^)\/\//, '') : 'http://' +
2898
+ endpoint?.replace(/(^\w+:|^)\/\//, '');
2893
2899
  }
2894
2900
  }
2895
2901
  else {
@@ -4723,7 +4729,7 @@ class ConfirmDialogComponent extends AbstractDialogComponent {
4723
4729
  this.sanitizer = sanitizer;
4724
4730
  this.choice = false;
4725
4731
  if (data && data.content) {
4726
- this.parsedContent = sanitizer.bypassSecurityTrustHtml(data.content.replace('\\n', '<br>'));
4732
+ this.parsedContent = sanitizer.bypassSecurityTrustHtml(data.content?.replace('\\n', '<br>'));
4727
4733
  }
4728
4734
  else {
4729
4735
  this.parsedContent = sanitizer.bypassSecurityTrustHtml('');
@@ -7195,7 +7201,7 @@ class FieldConverterService {
7195
7201
  case FieldTypeResource.BOOLEAN:
7196
7202
  return new BooleanField(item.stringId, item.name, item.value, item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
7197
7203
  case FieldTypeResource.TEXT:
7198
- if (this.textFieldNames.includes(item.component?.name)) {
7204
+ if (this.textFieldNames?.includes(item.component?.name)) {
7199
7205
  return new TextAreaField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
7200
7206
  }
7201
7207
  return new TextField(item.stringId, item.name, this.resolveTextValue(item, item.value), item.behavior, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
@@ -7785,17 +7791,17 @@ class EventService {
7785
7791
  const setDataOutcome = childOutcome;
7786
7792
  const outcomeChangedFields = childOutcome.changedFields.changedFields;
7787
7793
  const caseId = setDataOutcome.aCase.stringId;
7788
- if (!Object.keys(changedFieldsMap).includes(caseId)) {
7794
+ if (!Object.keys(changedFieldsMap)?.includes(caseId)) {
7789
7795
  changedFieldsMap[caseId] = {};
7790
7796
  }
7791
7797
  const taskId = setDataOutcome.task.stringId;
7792
- if (!Object.keys(changedFieldsMap[caseId]).includes(taskId)) {
7798
+ if (!Object.keys(changedFieldsMap[caseId])?.includes(taskId)) {
7793
7799
  changedFieldsMap[caseId][taskId] = {
7794
7800
  taskId
7795
7801
  };
7796
7802
  }
7797
7803
  Object.keys(outcomeChangedFields).forEach(fieldId => {
7798
- if (Object.keys(changedFieldsMap[caseId][taskId]).includes(fieldId)) {
7804
+ if (Object.keys(changedFieldsMap[caseId][taskId])?.includes(fieldId)) {
7799
7805
  Object.keys(outcomeChangedFields[fieldId]).forEach(attribute => {
7800
7806
  changedFieldsMap[caseId][taskId][fieldId][attribute] = outcomeChangedFields[fieldId][attribute];
7801
7807
  });
@@ -10319,7 +10325,7 @@ class Operator {
10319
10325
  * @param forceWrap if set to `true` the value will be wrapped regardless of it's content
10320
10326
  */
10321
10327
  static wrapInputWithQuotes(input, forceWrap = false) {
10322
- if (typeof input === 'string' && (input.includes(' ') || forceWrap))
10328
+ if (typeof input === 'string' && (input?.includes(' ') || forceWrap))
10323
10329
  return { value: `"${input}"`, wasWrapped: true };
10324
10330
  else
10325
10331
  return { value: input, wasWrapped: false };
@@ -10821,7 +10827,7 @@ class Substring extends Operator {
10821
10827
  // TODO IMPROVEMENT 27.4.2020 - we could use regular expressions to search for substrings which would solve the unintuitive
10822
10828
  // behavior that occurs when we search for strings that contain spaces. We need to escape the input string in a special way
10823
10829
  // if we choose to do this
10824
- const escapedValue = Operator.escapeInput(args[0]).value.replace(/ /g, '\\ ');
10830
+ const escapedValue = Operator.escapeInput(args[0]).value?.replace(/ /g, '\\ ');
10825
10831
  return Operator.forEachKeyword(elasticKeywords, keyword => new Query(`(${keyword}:*${escapedValue}*)`));
10826
10832
  }
10827
10833
  getOperatorNameTemplate() {
@@ -12619,7 +12625,7 @@ class CaseDataset extends Category {
12619
12625
  .filter(immediateData => {
12620
12626
  return immediateData.title !== undefined
12621
12627
  && immediateData.title.trim().length > 0
12622
- && !CaseDataset.DISABLED_TYPES.includes(immediateData.type);
12628
+ && !CaseDataset.DISABLED_TYPES?.includes(immediateData.type);
12623
12629
  })
12624
12630
  .forEach(immediateData => {
12625
12631
  let type = immediateData.type;
@@ -13614,6 +13620,17 @@ class PetriNetResourceService extends AbstractResourceService {
13614
13620
  return this._resourceProvider.post$('petrinet/search', this.SERVER_URL, body, params)
13615
13621
  .pipe(map(r => this.getResourcePage(r, 'petriNetReferences')));
13616
13622
  }
13623
+ /**
13624
+ * search PetriNets
13625
+ *
13626
+ * **Request Type:** POST
13627
+ *
13628
+ * **Request URL:** {{baseUrl}}/api/petrinet/search
13629
+ */
13630
+ searchElasticPetriNets(body, params) {
13631
+ return this._resourceProvider.post$('petrinet/search_elastic', this.SERVER_URL, body, params)
13632
+ .pipe(map(r => this.getResourcePage(r, 'petriNetReferences')));
13633
+ }
13617
13634
  /**
13618
13635
  * delete PetriNet
13619
13636
  *
@@ -14251,7 +14268,7 @@ class SearchService {
14251
14268
  * @param searchedSubstring value that should be searched on all full text fields
14252
14269
  */
14253
14270
  setFullTextFilter(searchedSubstring) {
14254
- const whiteSpacedSubstring = searchedSubstring.replace(/ /g, '\\ ');
14271
+ const whiteSpacedSubstring = searchedSubstring?.replace(/ /g, '\\ ');
14255
14272
  this._fullTextFilter = new SimpleFilter('', this._baseFilter.type, { fullText: whiteSpacedSubstring });
14256
14273
  this.updateActiveFilter();
14257
14274
  }
@@ -15574,11 +15591,11 @@ class TaskContentService {
15574
15591
  }
15575
15592
  getReferencedTaskId(changedField, chFields) {
15576
15593
  return !!this.taskFieldsIndex ?
15577
- (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
15578
- || Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))) : undefined;
15594
+ (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields)?.includes(changedField))
15595
+ || Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields)?.includes(changedField))) : undefined;
15579
15596
  }
15580
15597
  findTaskRefId(taskId, fields) {
15581
- let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
15598
+ let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value?.includes(taskId));
15582
15599
  if (!taskRefId) {
15583
15600
  const referencedTaskIds = Object.values(fields).filter(f => f instanceof TaskRefField).map(tr => tr.value);
15584
15601
  referencedTaskIds.forEach(id => {
@@ -15950,7 +15967,7 @@ class UserComparatorService {
15950
15967
  compareUsers(user, acceptImpersonator = true) {
15951
15968
  const loggedUser = acceptImpersonator ? this._userService.user.getSelfOrImpersonated() : this._userService.user;
15952
15969
  return user.email === loggedUser.email ||
15953
- user.email.includes('anonymous') && this._userService.user.email.includes('anonymous');
15970
+ user.email?.includes('anonymous') && this._userService.user.email?.includes('anonymous');
15954
15971
  }
15955
15972
  }
15956
15973
  UserComparatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserComparatorService, deps: [{ token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -15980,7 +15997,7 @@ class ChangedFieldsService {
15980
15997
  }
15981
15998
  parseChangedFieldsByCaseAndTaskIds(caseId, taskIds, changedFieldsMap) {
15982
15999
  const changedFields = [];
15983
- const filteredTaskIds = Object.keys(changedFieldsMap[caseId]).filter(taskId => taskIds.includes(taskId));
16000
+ const filteredTaskIds = Object.keys(changedFieldsMap[caseId]).filter(taskId => taskIds?.includes(taskId));
15984
16001
  filteredTaskIds.forEach(taskId => {
15985
16002
  changedFields.push(changedFieldsMap[caseId][taskId]);
15986
16003
  });
@@ -16180,7 +16197,7 @@ class TaskDataService extends TaskHandlingService {
16180
16197
  }
16181
16198
  else if (dataGroupParentCaseId === this._safeTask.caseId
16182
16199
  && parentTaskId !== this._safeTask.stringId
16183
- && !this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId].includes(parentTaskId)) {
16200
+ && !this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId]?.includes(parentTaskId)) {
16184
16201
  this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId].push(group.parentTaskId);
16185
16202
  }
16186
16203
  if (group.fields.length > 0 && !this._taskContentService.taskFieldsIndex[parentTaskId]) {
@@ -16351,7 +16368,7 @@ class TaskDataService extends TaskHandlingService {
16351
16368
  }
16352
16369
  const taskIdsInRequest = Object.keys(request);
16353
16370
  for (const taskId of taskIdsInRequest) {
16354
- if (!Object.keys(this._taskContentService.taskFieldsIndex).includes(taskId)) {
16371
+ if (!Object.keys(this._taskContentService.taskFieldsIndex)?.includes(taskId)) {
16355
16372
  this._log.error(`Task id ${taskId} is not present in task fields index`);
16356
16373
  return false;
16357
16374
  }
@@ -16556,7 +16573,7 @@ class TaskDataService extends TaskHandlingService {
16556
16573
  revertToPreviousValue(context) {
16557
16574
  this._safeTask.dataGroups.forEach(dataGroup => {
16558
16575
  dataGroup.fields.forEach(field => {
16559
- if (field.initialized && field.valid && Object.keys(context.previousValues).includes(field.stringId)) {
16576
+ if (field.initialized && field.valid && Object.keys(context.previousValues)?.includes(field.stringId)) {
16560
16577
  field.revertToPreviousValue();
16561
16578
  }
16562
16579
  });
@@ -17070,24 +17087,27 @@ class RedirectService {
17070
17087
  }
17071
17088
  parseRedirectPath(url) {
17072
17089
  let path;
17073
- if (url.includes('?')) {
17090
+ if (url === undefined || url === null) {
17091
+ return '';
17092
+ }
17093
+ if (url?.includes('?')) {
17074
17094
  path = url.slice(0, url.indexOf('?'));
17075
17095
  }
17076
17096
  else {
17077
17097
  path = url;
17078
17098
  }
17079
- return path.replace('/redirect', '');
17099
+ return path?.replace('/redirect', '');
17080
17100
  }
17081
17101
  }
17082
17102
  RedirectService.LOGIN_COMPONENT = 'login';
17083
- RedirectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, deps: [{ token: i3$1.Router }, { token: LoggerService }, { token: ConfigurationService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
17103
+ RedirectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, deps: [{ token: i2$5.Router }, { token: LoggerService }, { token: ConfigurationService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
17084
17104
  RedirectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, providedIn: 'root' });
17085
17105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, decorators: [{
17086
17106
  type: Injectable,
17087
17107
  args: [{
17088
17108
  providedIn: 'root'
17089
17109
  }]
17090
- }], ctorParameters: function () { return [{ type: i3$1.Router }, { type: LoggerService }, { type: ConfigurationService }, { type: i3$1.ActivatedRoute }]; } });
17110
+ }], ctorParameters: function () { return [{ type: i2$5.Router }, { type: LoggerService }, { type: ConfigurationService }, { type: i2$5.ActivatedRoute }]; } });
17091
17111
 
17092
17112
  class AuthenticationInterceptor {
17093
17113
  constructor(_session, _redirect, _anonymousService, idleTimerService) {
@@ -17287,14 +17307,14 @@ class AuthenticationGuardService {
17287
17307
  return this._session.sessionToken && this._session.verified ? true : this._router.parseUrl(this._loginUrl);
17288
17308
  }
17289
17309
  }
17290
- AuthenticationGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, deps: [{ token: SessionService }, { token: RedirectService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
17310
+ AuthenticationGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, deps: [{ token: SessionService }, { token: RedirectService }, { token: i2$5.Router }], target: i0.ɵɵFactoryTarget.Injectable });
17291
17311
  AuthenticationGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, providedIn: AuthenticationModule });
17292
17312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, decorators: [{
17293
17313
  type: Injectable,
17294
17314
  args: [{
17295
17315
  providedIn: AuthenticationModule
17296
17316
  }]
17297
- }], ctorParameters: function () { return [{ type: SessionService }, { type: RedirectService }, { type: i3$1.Router }]; } });
17317
+ }], ctorParameters: function () { return [{ type: SessionService }, { type: RedirectService }, { type: i2$5.Router }]; } });
17298
17318
 
17299
17319
  /* SERVICES */
17300
17320
 
@@ -17534,7 +17554,7 @@ class AbstractAuthenticationOverlayComponent {
17534
17554
  }
17535
17555
  }
17536
17556
  }
17537
- AbstractAuthenticationOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractAuthenticationOverlayComponent, deps: [{ token: SessionService }, { token: SpinnerOverlayService }, { token: i3$1.Router }, { token: RedirectService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Component });
17557
+ AbstractAuthenticationOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractAuthenticationOverlayComponent, deps: [{ token: SessionService }, { token: SpinnerOverlayService }, { token: i2$5.Router }, { token: RedirectService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Component });
17538
17558
  AbstractAuthenticationOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractAuthenticationOverlayComponent, selector: "ncc-abstract-auth-overlay", ngImport: i0, template: '', isInline: true });
17539
17559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractAuthenticationOverlayComponent, decorators: [{
17540
17560
  type: Component,
@@ -17542,7 +17562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17542
17562
  selector: 'ncc-abstract-auth-overlay',
17543
17563
  template: ''
17544
17564
  }]
17545
- }], ctorParameters: function () { return [{ type: SessionService }, { type: SpinnerOverlayService }, { type: i3$1.Router }, { type: RedirectService }, { type: UserService }]; } });
17565
+ }], ctorParameters: function () { return [{ type: SessionService }, { type: SpinnerOverlayService }, { type: i2$5.Router }, { type: RedirectService }, { type: UserService }]; } });
17546
17566
 
17547
17567
  class AbstractSessionIdleComponent {
17548
17568
  constructor(sessionTimer, _user, _log, _config, _router) {
@@ -17595,7 +17615,7 @@ class AbstractSessionIdleComponent {
17595
17615
  }
17596
17616
  }
17597
17617
  }
17598
- AbstractSessionIdleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSessionIdleComponent, deps: [{ token: SessionIdleTimerService }, { token: UserService }, { token: LoggerService }, { token: ConfigurationService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component });
17618
+ AbstractSessionIdleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSessionIdleComponent, deps: [{ token: SessionIdleTimerService }, { token: UserService }, { token: LoggerService }, { token: ConfigurationService }, { token: i2$5.Router }], target: i0.ɵɵFactoryTarget.Component });
17599
17619
  AbstractSessionIdleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSessionIdleComponent, selector: "ncc-abstract-session-idle", inputs: { alertAtSeconds: "alertAtSeconds" }, ngImport: i0, template: '', isInline: true });
17600
17620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSessionIdleComponent, decorators: [{
17601
17621
  type: Component,
@@ -17603,7 +17623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17603
17623
  selector: 'ncc-abstract-session-idle',
17604
17624
  template: ''
17605
17625
  }]
17606
- }], ctorParameters: function () { return [{ type: SessionIdleTimerService }, { type: UserService }, { type: LoggerService }, { type: ConfigurationService }, { type: i3$1.Router }]; }, propDecorators: { alertAtSeconds: [{
17626
+ }], ctorParameters: function () { return [{ type: SessionIdleTimerService }, { type: UserService }, { type: LoggerService }, { type: ConfigurationService }, { type: i2$5.Router }]; }, propDecorators: { alertAtSeconds: [{
17607
17627
  type: Input
17608
17628
  }] } });
17609
17629
 
@@ -17981,7 +18001,7 @@ class AbstractPanelComponent {
17981
18001
  return this._caseListFontColorService.computeCaseFontColor(this.caseColor);
17982
18002
  }
17983
18003
  }
17984
- AbstractPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractPanelComponent, deps: [{ token: CaseListFontColorService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
18004
+ AbstractPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractPanelComponent, deps: [{ token: CaseListFontColorService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
17985
18005
  AbstractPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractPanelComponent, selector: "ncc-abstract-panel", inputs: { expansionDisabled: "expansionDisabled", preventExpand: "preventExpand", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", panelHeader: "panelHeader", panelContent: "panelContent", first: "first", last: "last", caseColor: "caseColor" }, outputs: { stopLoading: "stopLoading", getExpansionPanelRef: "getExpansionPanelRef" }, viewQueries: [{ propertyName: "matExpansionPanel", first: true, predicate: ["matExpansionPanel"], descendants: true }], ngImport: i0, template: '', isInline: true });
17986
18006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractPanelComponent, decorators: [{
17987
18007
  type: Component,
@@ -17989,7 +18009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17989
18009
  selector: 'ncc-abstract-panel',
17990
18010
  template: ''
17991
18011
  }]
17992
- }], ctorParameters: function () { return [{ type: CaseListFontColorService }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { expansionDisabled: [{
18012
+ }], ctorParameters: function () { return [{ type: CaseListFontColorService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { expansionDisabled: [{
17993
18013
  type: Input
17994
18014
  }], preventExpand: [{
17995
18015
  type: Input
@@ -18111,7 +18131,7 @@ class OverflowService {
18111
18131
  }
18112
18132
  const item = localStorage.getItem(viewId + '-' + id);
18113
18133
  if (item !== null) {
18114
- if (id.includes('columnCount')) {
18134
+ if (id?.includes('columnCount')) {
18115
18135
  this._initializedCount = true;
18116
18136
  }
18117
18137
  return item;
@@ -20494,7 +20514,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
20494
20514
  this.taskEvent.emit(event);
20495
20515
  });
20496
20516
  this._subTaskData = _changedFieldsService.changedFields$.subscribe((changedFieldsMap) => {
20497
- const filteredCaseIds = Object.keys(changedFieldsMap).filter(caseId => Object.keys(this._taskContentService.referencedTaskAndCaseIds).includes(caseId));
20517
+ const filteredCaseIds = Object.keys(changedFieldsMap).filter(caseId => Object.keys(this._taskContentService.referencedTaskAndCaseIds)?.includes(caseId));
20498
20518
  const changedFields = [];
20499
20519
  filteredCaseIds.forEach(caseId => {
20500
20520
  const taskIds = this._taskContentService.referencedTaskAndCaseIds[caseId];
@@ -20508,7 +20528,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
20508
20528
  this.expand();
20509
20529
  });
20510
20530
  _taskOperations.close$.subscribe(() => {
20511
- if (!this._taskForceOpen) {
20531
+ if (!(this._taskForceOpen || this.preventCollapse)) {
20512
20532
  this.collapse();
20513
20533
  }
20514
20534
  });
@@ -20917,7 +20937,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
20917
20937
  });
20918
20938
  }
20919
20939
  }
20920
- AbstractDefaultTaskListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20940
+ AbstractDefaultTaskListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20921
20941
  AbstractDefaultTaskListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDefaultTaskListComponent, selector: "ncc-abstract-default-task-list", inputs: { loading$: "loading$", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", showMoreMenu: "showMoreMenu", allowMultiOpen: "allowMultiOpen" }, outputs: { taskEvent: "taskEvent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
20922
20942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, decorators: [{
20923
20943
  type: Component,
@@ -20930,7 +20950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20930
20950
  }, {
20931
20951
  type: Inject,
20932
20952
  args: [NAE_TAB_DATA]
20933
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { loading$: [{
20953
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { loading$: [{
20934
20954
  type: Input
20935
20955
  }], selectedHeaders$: [{
20936
20956
  type: Input
@@ -20968,7 +20988,7 @@ class AbstractTaskListComponent extends AbstractDefaultTaskListComponent {
20968
20988
  this._taskViewService.nextPage(this.viewport.getRenderedRange(), this.viewport.getDataLength());
20969
20989
  }
20970
20990
  }
20971
- AbstractTaskListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20991
+ AbstractTaskListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20972
20992
  AbstractTaskListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskListComponent, selector: "ncc-abstract-task-list", inputs: { tasks$: "tasks$" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
20973
20993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListComponent, decorators: [{
20974
20994
  type: Component,
@@ -20981,7 +21001,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20981
21001
  }, {
20982
21002
  type: Inject,
20983
21003
  args: [NAE_TAB_DATA]
20984
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { tasks$: [{
21004
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { tasks$: [{
20985
21005
  type: Input
20986
21006
  }], viewport: [{
20987
21007
  type: ViewChild,
@@ -21013,7 +21033,7 @@ class AbstractTaskListPaginationComponent extends AbstractDefaultTaskListCompone
21013
21033
  this._taskViewService.nextPagePagination(this.pageSize, this.pageIndex);
21014
21034
  }
21015
21035
  }
21016
- AbstractTaskListPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListPaginationComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
21036
+ AbstractTaskListPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListPaginationComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
21017
21037
  AbstractTaskListPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskListPaginationComponent, selector: "ncc-abstract-task-list-pagination-component", inputs: { disabled: "disabled", tasks$: "tasks$" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
21018
21038
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListPaginationComponent, decorators: [{
21019
21039
  type: Component,
@@ -21026,7 +21046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21026
21046
  }, {
21027
21047
  type: Inject,
21028
21048
  args: [NAE_TAB_DATA]
21029
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { disabled: [{
21049
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { disabled: [{
21030
21050
  type: Input
21031
21051
  }], tasks$: [{
21032
21052
  type: Input
@@ -21112,6 +21132,14 @@ class WorkflowViewService extends AbstractSortableViewComponent {
21112
21132
  get workflows$() {
21113
21133
  return this._workflows$;
21114
21134
  }
21135
+ setSearchTitle(title) {
21136
+ this._baseFilter.title = title;
21137
+ this.reload();
21138
+ }
21139
+ clearSearchTitle() {
21140
+ this._baseFilter.title = undefined;
21141
+ this.reload();
21142
+ }
21115
21143
  loadPage(pageRequest) {
21116
21144
  if (pageRequest.number < 0) {
21117
21145
  return of([]);
@@ -21120,7 +21148,14 @@ class WorkflowViewService extends AbstractSortableViewComponent {
21120
21148
  params = this.addSortParams(params);
21121
21149
  params = this.addPageParams(params, pageRequest);
21122
21150
  this._loading$.on();
21123
- return this._petriNetResource.searchPetriNets(this._baseFilter, params).pipe(catchError(err => {
21151
+ let request;
21152
+ if (this._baseFilter.title !== undefined) {
21153
+ request = this._petriNetResource.searchElasticPetriNets(this._baseFilter, params);
21154
+ }
21155
+ else {
21156
+ request = this._petriNetResource.searchPetriNets(this._baseFilter, params);
21157
+ }
21158
+ return request.pipe(catchError(err => {
21124
21159
  this._log.error('Loading Petri nets has failed!', err);
21125
21160
  return of({ content: [], pagination: { ...this._pagination } });
21126
21161
  }), tap(res => {
@@ -21498,7 +21533,7 @@ class AbstractSingleTaskComponent {
21498
21533
  this.taskEvent.emit(event);
21499
21534
  }
21500
21535
  }
21501
- AbstractSingleTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, deps: [{ token: LoggerService }, { token: i3$1.ActivatedRoute }, { token: NAE_TAB_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
21536
+ AbstractSingleTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, deps: [{ token: LoggerService }, { token: i2$5.ActivatedRoute }, { token: NAE_TAB_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
21502
21537
  AbstractSingleTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSingleTaskComponent, selector: "ncc-abstract-single-task", inputs: { task$: "task$", loading$: "loading$", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", hideActionRow: "hideActionRow", noTaskSection: "noTaskSection", pageHeader: "pageHeader", pageFooter: "pageFooter", showPageHeader: "showPageHeader", showPageFooter: "showPageFooter", headerTitle: "headerTitle", footerText: "footerText", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent" }, outputs: { taskEvent: "taskEvent" }, ngImport: i0, template: '', isInline: true });
21503
21538
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, decorators: [{
21504
21539
  type: Component,
@@ -21506,7 +21541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21506
21541
  selector: 'ncc-abstract-single-task',
21507
21542
  template: ''
21508
21543
  }]
21509
- }], ctorParameters: function () { return [{ type: LoggerService }, { type: i3$1.ActivatedRoute }, { type: undefined, decorators: [{
21544
+ }], ctorParameters: function () { return [{ type: LoggerService }, { type: i2$5.ActivatedRoute }, { type: undefined, decorators: [{
21510
21545
  type: Optional
21511
21546
  }, {
21512
21547
  type: Inject,
@@ -21982,9 +22017,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21982
22017
  }] } });
21983
22018
 
21984
22019
  class AbstractToolbarComponent {
21985
- constructor(translate, selectLangService) {
22020
+ constructor(translate, selectLangService, userService, router, redirectService) {
21986
22021
  this.translate = translate;
21987
22022
  this.selectLangService = selectLangService;
22023
+ this.userService = userService;
22024
+ this.router = router;
22025
+ this.redirectService = redirectService;
22026
+ this.toolbarConfig = {
22027
+ profileEnabled: false,
22028
+ languageEnabled: false,
22029
+ logoutEnabled: false,
22030
+ simpleToolbar: true,
22031
+ toolbarName: {
22032
+ defaultValue: 'Netgrif',
22033
+ translations: {}
22034
+ },
22035
+ toolbarLogo: 'assets/img/netgrif_full_white.svg',
22036
+ profileUrl: 'profile',
22037
+ loginUrl: ''
22038
+ };
21988
22039
  }
21989
22040
  setLang(lang) {
21990
22041
  this.selectLangService.setLanguage(lang);
@@ -21992,22 +22043,40 @@ class AbstractToolbarComponent {
21992
22043
  activeLang(lang) {
21993
22044
  return this.translate.currentLang === lang;
21994
22045
  }
22046
+ logout() {
22047
+ this.userService.logout().subscribe(() => {
22048
+ if (!!this.toolbarConfig.loginUrl && this.toolbarConfig.loginUrl !== "") {
22049
+ this.router.navigate([this.toolbarConfig.loginUrl]);
22050
+ }
22051
+ else {
22052
+ this.router.navigate([this.redirectService.resolveLoginPath()]);
22053
+ }
22054
+ });
22055
+ }
22056
+ profile() {
22057
+ this.router.navigate([this.toolbarConfig.profileUrl]);
22058
+ }
22059
+ get loggedUser() {
22060
+ return this.userService.user;
22061
+ }
22062
+ isImpersonating() {
22063
+ return this.loggedUser.isImpersonating();
22064
+ }
22065
+ getToolbarTitle() {
22066
+ return this.selectLangService.getLanguage() in this.toolbarConfig.toolbarName.translations
22067
+ ? this.toolbarConfig.toolbarName.translations[this.selectLangService.getLanguage()]
22068
+ : this.toolbarConfig.toolbarName.defaultValue;
22069
+ }
21995
22070
  }
21996
- AbstractToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractToolbarComponent, deps: [{ token: i1$2.TranslateService }, { token: LanguageService }], target: i0.ɵɵFactoryTarget.Component });
21997
- AbstractToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractToolbarComponent, selector: "ncc-abstract-toolbar", inputs: { loggedUser: "loggedUser", appName: "appName", logoSrc: "logoSrc", logoAlt: "logoAlt" }, ngImport: i0, template: '', isInline: true });
22071
+ AbstractToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractToolbarComponent, deps: [{ token: i1$2.TranslateService }, { token: LanguageService }, { token: UserService }, { token: i2$5.Router }, { token: RedirectService }], target: i0.ɵɵFactoryTarget.Component });
22072
+ AbstractToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractToolbarComponent, selector: "ncc-abstract-toolbar", inputs: { toolbarConfig: "toolbarConfig" }, ngImport: i0, template: '', isInline: true });
21998
22073
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractToolbarComponent, decorators: [{
21999
22074
  type: Component,
22000
22075
  args: [{
22001
22076
  selector: 'ncc-abstract-toolbar',
22002
22077
  template: ''
22003
22078
  }]
22004
- }], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: LanguageService }]; }, propDecorators: { loggedUser: [{
22005
- type: Input
22006
- }], appName: [{
22007
- type: Input
22008
- }], logoSrc: [{
22009
- type: Input
22010
- }], logoAlt: [{
22079
+ }], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: LanguageService }, { type: UserService }, { type: i2$5.Router }, { type: RedirectService }]; }, propDecorators: { toolbarConfig: [{
22011
22080
  type: Input
22012
22081
  }] } });
22013
22082
 
@@ -22523,11 +22592,11 @@ var GroupNavigationConstants;
22523
22592
  /**
22524
22593
  * EnumerationMap field, that contains selected search type for case view
22525
22594
  * */
22526
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
22595
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "view_search_type";
22527
22596
  /**
22528
22597
  * EnumerationMap field, that contains selected search type for task view
22529
22598
  * */
22530
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
22599
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "view_search_type";
22531
22600
  /**
22532
22601
  * Boolean field, that is true if user wants to merge base filter and custom filter
22533
22602
  * */
@@ -22539,67 +22608,67 @@ var GroupNavigationConstants;
22539
22608
  /**
22540
22609
  * Boolean field, that is true if the user wants to see more menu for case item in case view
22541
22610
  * */
22542
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
22611
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "show_more_menu";
22543
22612
  /**
22544
22613
  * Boolean field, that is true if no input for title in case creation is shown
22545
22614
  * */
22546
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "case_require_title_in_creation";
22615
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "require_title_in_creation";
22547
22616
  /**
22548
22617
  * Text field, that contains banned processes in case creation as a value
22549
22618
  * */
22550
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "case_banned_nets_in_creation";
22619
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "banned_nets_in_creation";
22551
22620
  /**
22552
22621
  * Boolean field, that is true if the user wants to see more menu for task item in task view
22553
22622
  * */
22554
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
22623
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "show_more_menu";
22555
22624
  /**
22556
22625
  * MultichoiceMap field, that contains selected header modes for case view as a value
22557
22626
  * */
22558
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
22627
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "headers_mode";
22559
22628
  /**
22560
22629
  * Boolean field, that is true if table mode can be applied in case view
22561
22630
  * */
22562
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "case_allow_header_table_mode";
22631
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "allow_header_table_mode";
22563
22632
  /**
22564
22633
  * EnumerationMap field, that contains selected default header mode for case view as a value
22565
22634
  * */
22566
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
22635
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "headers_default_mode";
22567
22636
  /**
22568
22637
  * Boolean field, that is true to make mode menu in case view visible
22569
22638
  * */
22570
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
22639
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "is_header_mode_changeable";
22571
22640
  /**
22572
22641
  * MultichoiceMap field, that contains selected header modes for task view as a value
22573
22642
  * */
22574
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
22643
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "headers_mode";
22575
22644
  /**
22576
22645
  * Boolean field, that is true if table mode can be applied in task view
22577
22646
  * */
22578
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "task_allow_header_table_mode";
22647
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "allow_header_table_mode";
22579
22648
  /**
22580
22649
  * EnumerationMap field, that contains selected default header mode for task view as a value
22581
22650
  * */
22582
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
22651
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "headers_default_mode";
22583
22652
  /**
22584
22653
  * Boolean field, that is true to make mode menu in task view visible
22585
22654
  * */
22586
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
22655
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "is_header_mode_changeable";
22587
22656
  /**
22588
22657
  * Boolean field, that is true to use default headers configuration for case view
22589
22658
  * */
22590
- GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
22659
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_default_headers";
22591
22660
  /**
22592
22661
  * Text field, that contains default header metadata separated by comma for case view as a value
22593
22662
  * */
22594
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
22663
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "default_headers";
22595
22664
  /**
22596
22665
  * Boolean field, that is true to use default headers configuration for task view
22597
22666
  * */
22598
- GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
22667
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_default_headers";
22599
22668
  /**
22600
22669
  * Text field, that contains default header metadata separated by comma for task view as a value
22601
22670
  * */
22602
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
22671
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "default_headers";
22603
22672
  /**
22604
22673
  * MultichoiceMap field, that contains allowed roles as value
22605
22674
  * */
@@ -22628,6 +22697,14 @@ var GroupNavigationConstants;
22628
22697
  * CaseField containing stringIds of child instances of process preference_item
22629
22698
  * */
22630
22699
  GroupNavigationConstants["ITEM_FIELD_ID_CHILD_ITEM_IDS"] = "childItemIds";
22700
+ /**
22701
+ * Boolean field, that is true if item contains view, that should be automatically opened.
22702
+ * */
22703
+ GroupNavigationConstants["ITEM_FIELD_ID_IS_AUTO_SELECT"] = "is_auto_select";
22704
+ /**
22705
+ * Boolean field, that is true if item contains view.
22706
+ * */
22707
+ GroupNavigationConstants["ITEM_FIELD_CONTAINS_FILTER"] = "contains_filter";
22631
22708
  })(GroupNavigationConstants || (GroupNavigationConstants = {}));
22632
22709
 
22633
22710
  /**
@@ -22968,7 +23045,7 @@ class UriService {
22968
23045
  data: {
22969
23046
  [GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH]: node.uriPath
22970
23047
  },
22971
- process: { identifier: "preference_item" }
23048
+ process: { identifier: "menu_item" }
22972
23049
  };
22973
23050
  let httpParams = new HttpParams()
22974
23051
  .set(PaginationParams.PAGE_SIZE, 1)
@@ -24210,7 +24287,7 @@ class AbstractViewWithHeadersComponent {
24210
24287
  return !(this.config?.[ConfigParams.PANEL_HEADER] === 'false');
24211
24288
  }
24212
24289
  }
24213
- AbstractViewWithHeadersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractViewWithHeadersComponent, deps: [{ token: AbstractSortableViewComponent }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24290
+ AbstractViewWithHeadersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractViewWithHeadersComponent, deps: [{ token: AbstractSortableViewComponent }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24214
24291
  AbstractViewWithHeadersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractViewWithHeadersComponent, selector: "ncc-abstract-view-with-headers", ngImport: i0, template: '', isInline: true });
24215
24292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractViewWithHeadersComponent, decorators: [{
24216
24293
  type: Component,
@@ -24218,7 +24295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24218
24295
  selector: 'ncc-abstract-view-with-headers',
24219
24296
  template: ''
24220
24297
  }]
24221
- }], ctorParameters: function () { return [{ type: AbstractSortableViewComponent }, { type: i3$1.ActivatedRoute }]; } });
24298
+ }], ctorParameters: function () { return [{ type: AbstractSortableViewComponent }, { type: i2$5.ActivatedRoute }]; } });
24222
24299
 
24223
24300
  class AbstractTaskViewComponent extends AbstractViewWithHeadersComponent {
24224
24301
  constructor(taskViewService, _activatedRoute) {
@@ -24231,7 +24308,7 @@ class AbstractTaskViewComponent extends AbstractViewWithHeadersComponent {
24231
24308
  super.ngOnDestroy();
24232
24309
  }
24233
24310
  }
24234
- AbstractTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskViewComponent, deps: [{ token: TaskViewService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24311
+ AbstractTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskViewComponent, deps: [{ token: TaskViewService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24235
24312
  AbstractTaskViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskViewComponent, selector: "ncc-abstract-task-view", usesInheritance: true, ngImport: i0, template: '', isInline: true });
24236
24313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskViewComponent, decorators: [{
24237
24314
  type: Component,
@@ -24239,7 +24316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24239
24316
  selector: 'ncc-abstract-task-view',
24240
24317
  template: ''
24241
24318
  }]
24242
- }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i3$1.ActivatedRoute }]; } });
24319
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$5.ActivatedRoute }]; } });
24243
24320
 
24244
24321
  /**
24245
24322
  * Holds all identifiers of the Filter process in an accessible manner
@@ -24666,7 +24743,7 @@ class AbstractSaveFilterComponent extends AbstractTaskViewComponent {
24666
24743
  }
24667
24744
  }
24668
24745
  }
24669
- AbstractSaveFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSaveFilterComponent, deps: [{ token: NAE_SIDE_MENU_CONTROL }, { token: UserFiltersService }, { token: LoggerService }, { token: TaskViewService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24746
+ AbstractSaveFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSaveFilterComponent, deps: [{ token: NAE_SIDE_MENU_CONTROL }, { token: UserFiltersService }, { token: LoggerService }, { token: TaskViewService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24670
24747
  AbstractSaveFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSaveFilterComponent, selector: "ncc-abstract-save-filter", usesInheritance: true, ngImport: i0, template: '', isInline: true });
24671
24748
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSaveFilterComponent, decorators: [{
24672
24749
  type: Component,
@@ -24677,7 +24754,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24677
24754
  }], ctorParameters: function () { return [{ type: SideMenuControl, decorators: [{
24678
24755
  type: Inject,
24679
24756
  args: [NAE_SIDE_MENU_CONTROL]
24680
- }] }, { type: UserFiltersService }, { type: LoggerService }, { type: TaskViewService }, { type: i3$1.ActivatedRoute }]; } });
24757
+ }] }, { type: UserFiltersService }, { type: LoggerService }, { type: TaskViewService }, { type: i2$5.ActivatedRoute }]; } });
24681
24758
 
24682
24759
  var HeaderType;
24683
24760
  (function (HeaderType) {
@@ -24730,7 +24807,7 @@ class AbstractCaseViewComponent extends AbstractViewWithHeadersComponent {
24730
24807
  }
24731
24808
  }
24732
24809
  }
24733
- AbstractCaseViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseViewComponent, deps: [{ token: CaseViewService }, { token: OverflowService }, { token: Array }, { token: NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24810
+ AbstractCaseViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseViewComponent, deps: [{ token: CaseViewService }, { token: OverflowService }, { token: Array }, { token: NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
24734
24811
  AbstractCaseViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCaseViewComponent, selector: "ncc-abstract-case-view", usesInheritance: true, ngImport: i0, template: '', isInline: true });
24735
24812
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseViewComponent, decorators: [{
24736
24813
  type: Component,
@@ -24743,7 +24820,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24743
24820
  }, {
24744
24821
  type: Inject,
24745
24822
  args: [NAE_NEW_CASE_CREATION_CONFIGURATION_DATA]
24746
- }] }, { type: i3$1.ActivatedRoute }]; } });
24823
+ }] }, { type: i2$5.ActivatedRoute }]; } });
24747
24824
 
24748
24825
  class AbstractLoadFilterComponent extends AbstractCaseViewComponent {
24749
24826
  constructor(_sideMenuControl, _log, caseViewService) {
@@ -26675,7 +26752,7 @@ class AbstractLogoutShortcutComponent {
26675
26752
  });
26676
26753
  }
26677
26754
  }
26678
- AbstractLogoutShortcutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractLogoutShortcutComponent, deps: [{ token: UserService }, { token: LoggerService }, { token: ConfigurationService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component });
26755
+ AbstractLogoutShortcutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractLogoutShortcutComponent, deps: [{ token: UserService }, { token: LoggerService }, { token: ConfigurationService }, { token: i2$5.Router }], target: i0.ɵɵFactoryTarget.Component });
26679
26756
  AbstractLogoutShortcutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractLogoutShortcutComponent, selector: "ncc-abstract-logout-shortcut", outputs: { loggedOut: "loggedOut" }, ngImport: i0, template: '', isInline: true });
26680
26757
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractLogoutShortcutComponent, decorators: [{
26681
26758
  type: Component,
@@ -26683,7 +26760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26683
26760
  selector: 'ncc-abstract-logout-shortcut',
26684
26761
  template: '',
26685
26762
  }]
26686
- }], ctorParameters: function () { return [{ type: UserService }, { type: LoggerService }, { type: ConfigurationService }, { type: i3$1.Router }]; }, propDecorators: { loggedOut: [{
26763
+ }], ctorParameters: function () { return [{ type: UserService }, { type: LoggerService }, { type: ConfigurationService }, { type: i2$5.Router }]; }, propDecorators: { loggedOut: [{
26687
26764
  type: Output
26688
26765
  }] } });
26689
26766
 
@@ -26847,14 +26924,14 @@ class AuthorityGuardService {
26847
26924
  }
26848
26925
  }
26849
26926
  }
26850
- AuthorityGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, deps: [{ token: RedirectService }, { token: UserService }, { token: ConfigurationService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
26927
+ AuthorityGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, deps: [{ token: RedirectService }, { token: UserService }, { token: ConfigurationService }, { token: i2$5.Router }], target: i0.ɵɵFactoryTarget.Injectable });
26851
26928
  AuthorityGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, providedIn: AuthenticationModule });
26852
26929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, decorators: [{
26853
26930
  type: Injectable,
26854
26931
  args: [{
26855
26932
  providedIn: AuthenticationModule
26856
26933
  }]
26857
- }], ctorParameters: function () { return [{ type: RedirectService }, { type: UserService }, { type: ConfigurationService }, { type: i3$1.Router }]; } });
26934
+ }], ctorParameters: function () { return [{ type: RedirectService }, { type: UserService }, { type: ConfigurationService }, { type: i2$5.Router }]; } });
26858
26935
 
26859
26936
  class GroupGuardService {
26860
26937
  constructor(_redirectService, _userService, _nextGroupService, _configService, _log) {
@@ -27179,7 +27256,7 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
27179
27256
  this.resolveLevels(this.dataSource.data);
27180
27257
  }
27181
27258
  }
27182
- AbstractNavigationTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationTreeComponent, deps: [{ token: ConfigurationService }, { token: i3$1.Router }, { token: LoggerService }, { token: UserService }, { token: AccessService }, { token: ActiveGroupService }, { token: TaskResourceService }, { token: LanguageService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
27259
+ AbstractNavigationTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationTreeComponent, deps: [{ token: ConfigurationService }, { token: i2$5.Router }, { token: LoggerService }, { token: UserService }, { token: AccessService }, { token: ActiveGroupService }, { token: TaskResourceService }, { token: LanguageService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
27183
27260
  AbstractNavigationTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractNavigationTreeComponent, selector: "ncc-abstract-navigation-tree", inputs: { viewPath: "viewPath", parentUrl: "parentUrl", routerChange: "routerChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
27184
27261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationTreeComponent, decorators: [{
27185
27262
  type: Component,
@@ -27187,7 +27264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27187
27264
  selector: 'ncc-abstract-navigation-tree',
27188
27265
  template: ''
27189
27266
  }]
27190
- }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i3$1.Router }, { type: LoggerService }, { type: UserService }, { type: AccessService }, { type: ActiveGroupService }, { type: TaskResourceService }, { type: LanguageService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { viewPath: [{
27267
+ }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$5.Router }, { type: LoggerService }, { type: UserService }, { type: AccessService }, { type: ActiveGroupService }, { type: TaskResourceService }, { type: LanguageService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { viewPath: [{
27191
27268
  type: Input
27192
27269
  }], parentUrl: [{
27193
27270
  type: Input
@@ -27722,14 +27799,14 @@ class RoutingBuilderService {
27722
27799
  return result;
27723
27800
  }
27724
27801
  }
27725
- RoutingBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, deps: [{ token: i3$1.Router }, { token: ConfigurationService }, { token: ViewService }, { token: LoggerService }, { token: DynamicNavigationRouteProviderService }, { token: NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
27802
+ RoutingBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, deps: [{ token: i2$5.Router }, { token: ConfigurationService }, { token: ViewService }, { token: LoggerService }, { token: DynamicNavigationRouteProviderService }, { token: NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
27726
27803
  RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
27727
27804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
27728
27805
  type: Injectable,
27729
27806
  args: [{
27730
27807
  providedIn: 'root'
27731
27808
  }]
27732
- }], ctorParameters: function () { return [{ type: i3$1.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
27809
+ }], ctorParameters: function () { return [{ type: i2$5.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
27733
27810
  type: Optional
27734
27811
  }, {
27735
27812
  type: Inject,
@@ -27737,7 +27814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27737
27814
  }] }]; } });
27738
27815
 
27739
27816
  const MENU_IDENTIFIERS = [
27740
- 'preference_item',
27817
+ 'menu_item',
27741
27818
  ];
27742
27819
  const SETTINGS_TRANSITION_ID = 'item_settings';
27743
27820
  const LEFT_DRAWER_DEFAULT_WIDTH = 60;
@@ -27752,6 +27829,48 @@ var MenuOrder;
27752
27829
  MenuOrder[MenuOrder["Descending"] = 1] = "Descending";
27753
27830
  })(MenuOrder || (MenuOrder = {}));
27754
27831
 
27832
+ class DoubleDrawerUtils {
27833
+ constructor() { }
27834
+ static hasItemChildren(item) {
27835
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
27836
+ }
27837
+ static hasItemAutoOpenView(item) {
27838
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_IS_AUTO_SELECT)?.value;
27839
+ }
27840
+ static hasItemView(item) {
27841
+ return item?.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_CONTAINS_FILTER)?.value;
27842
+ }
27843
+ static isItemAndNodeEqual(item, node) {
27844
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
27845
+ }
27846
+ static extractChildCaseIds(item) {
27847
+ return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_CHILD_ITEM_IDS)?.value;
27848
+ }
27849
+ static representsRootNode(item) {
27850
+ return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH).value === '/';
27851
+ }
27852
+ static resolveAccessRoles(filter, roleType) {
27853
+ const allowedRoles = filter.immediateData.find(f => f.stringId === roleType)?.options;
27854
+ if (!allowedRoles || Object.keys(allowedRoles).length === 0)
27855
+ return undefined;
27856
+ const roles = [];
27857
+ Object.keys(allowedRoles).forEach(combined => {
27858
+ const parts = combined.split(':');
27859
+ roles.push({
27860
+ processId: parts[1],
27861
+ roleId: parts[0],
27862
+ });
27863
+ });
27864
+ return roles;
27865
+ }
27866
+ static isNodeCorrespondingToItem(node, item) {
27867
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
27868
+ }
27869
+ static findTaskIdInCase(useCase, transId) {
27870
+ return useCase.tasks.find(taskPair => taskPair.transition === transId).task;
27871
+ }
27872
+ }
27873
+
27755
27874
  /**
27756
27875
  * Holds all identifiers of the Impersonation config process in an accessible manner
27757
27876
  */
@@ -27832,14 +27951,14 @@ class ImpersonationService extends AbstractResourceService {
27832
27951
  }
27833
27952
  }
27834
27953
  }
27835
- ImpersonationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, deps: [{ token: ResourceProvider }, { token: i3$1.Router }, { token: ConfigurationService }, { token: UserService }, { token: SnackBarService }, { token: FilterRepository }, { token: LoggerService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
27954
+ ImpersonationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, deps: [{ token: ResourceProvider }, { token: i2$5.Router }, { token: ConfigurationService }, { token: UserService }, { token: SnackBarService }, { token: FilterRepository }, { token: LoggerService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
27836
27955
  ImpersonationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, providedIn: 'root' });
27837
27956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, decorators: [{
27838
27957
  type: Injectable,
27839
27958
  args: [{
27840
27959
  providedIn: 'root'
27841
27960
  }]
27842
- }], ctorParameters: function () { return [{ type: ResourceProvider }, { type: i3$1.Router }, { type: ConfigurationService }, { type: UserService }, { type: SnackBarService }, { type: FilterRepository }, { type: LoggerService }, { type: i1$2.TranslateService }]; } });
27961
+ }], ctorParameters: function () { return [{ type: ResourceProvider }, { type: i2$5.Router }, { type: ConfigurationService }, { type: UserService }, { type: SnackBarService }, { type: FilterRepository }, { type: LoggerService }, { type: i1$2.TranslateService }]; } });
27843
27962
 
27844
27963
  class ImpersonationUserSelectService {
27845
27964
  constructor(_log, _snackBar, _impersonation, _user, _dialog, _userImpersonateComponent, _adminImpersonateComponent) {
@@ -27922,88 +28041,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27922
28041
  args: [NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT]
27923
28042
  }] }]; } });
27924
28043
 
27925
- class AbstractNavigationDoubleDrawerComponent {
27926
- constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _caseResourceService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
27927
- this._router = _router;
27928
- this._activatedRoute = _activatedRoute;
27929
- this._breakpoint = _breakpoint;
27930
- this._languageService = _languageService;
27931
- this._translateService = _translateService;
27932
- this._userService = _userService;
27933
- this._accessService = _accessService;
28044
+ /**
28045
+ * Service for managing navigation in double-drawer
28046
+ * */
28047
+ class DoubleDrawerNavigationService {
28048
+ constructor(_uriService, _log, _config, _activatedRoute, _caseResourceService, _accessService, _translateService, _dynamicRoutingService, _redirectService) {
28049
+ this._uriService = _uriService;
27934
28050
  this._log = _log;
27935
28051
  this._config = _config;
27936
- this._uriService = _uriService;
28052
+ this._activatedRoute = _activatedRoute;
27937
28053
  this._caseResourceService = _caseResourceService;
27938
- this._impersonationUserSelect = _impersonationUserSelect;
27939
- this._impersonation = _impersonation;
28054
+ this._accessService = _accessService;
28055
+ this._translateService = _translateService;
27940
28056
  this._dynamicRoutingService = _dynamicRoutingService;
27941
- this.imageRouterLink = '/';
27942
- this.imageAlt = 'Logo';
27943
- this.profileRouterLink = '/profile';
27944
- this.includeUser = true;
27945
- this.includeLanguage = true;
27946
- this.includeMoreMenu = true;
27947
- this.includeImpersonation = true;
27948
- this.allClosable = true;
27949
- this.folderIcon = 'folder';
27950
- this.openedFolderIcon = 'folder_open';
27951
- this.filterIcon = 'filter_alt';
27952
- this.foldersCategoryName = 'toolbar.menu.folders';
27953
- this.viewsCategoryName = 'toolbar.menu.views';
27954
- this.loggedOut = new EventEmitter(true); // on logout
27955
- this.stateChanged = new EventEmitter(); // on menu state change
27956
- this.itemClicked = new EventEmitter(); // on item click
27957
- this.resized = new EventEmitter(true); // on menu resize
27958
- this.itemLoaded = new EventEmitter(true); // on item loaded
27959
- this._configLeftMenu = {
27960
- mode: 'side',
27961
- opened: true,
27962
- disableClose: false,
27963
- width: LEFT_DRAWER_DEFAULT_WIDTH,
27964
- };
27965
- this._configRightMenu = {
27966
- mode: 'side',
27967
- opened: true,
27968
- disableClose: false,
27969
- width: RIGHT_DRAWER_DEFAULT_WIDTH,
27970
- };
27971
- this.leftItems = new Array();
27972
- this.rightItems = new Array();
27973
- this.leftLoading$ = new LoadingEmitter();
27974
- this.rightLoading$ = new LoadingEmitter();
27975
- this.nodeLoading$ = new LoadingEmitter();
27976
- this.itemsOrder = MenuOrder.Ascending;
27977
- this.hiddenCustomItems = [];
27978
- this.moreItems = new Array();
28057
+ this._redirectService = _redirectService;
28058
+ this.defaultViewIcon = 'filter_alt';
28059
+ this._leftItems$ = new BehaviorSubject([]);
28060
+ this._rightItems$ = new BehaviorSubject([]);
28061
+ this._moreItems$ = new BehaviorSubject([]);
28062
+ this._hiddenCustomItems$ = new BehaviorSubject([]);
27979
28063
  this._childCustomViews = {};
27980
- }
27981
- ngOnInit() {
27982
- this._breakpointSubscription = this._breakpoint.observe([Breakpoints.HandsetLandscape]).subscribe(() => {
27983
- if (this._breakpoint.isMatched('(max-width: 959.99px)')) {
27984
- this.resolveLayout(false);
27985
- }
27986
- else {
27987
- this.resolveLayout(true);
27988
- }
27989
- });
28064
+ this._leftLoading$ = new LoadingEmitter();
28065
+ this._rightLoading$ = new LoadingEmitter();
28066
+ this._nodeLoading$ = new LoadingEmitter();
28067
+ this._currentNavigationItem = null;
28068
+ this.itemsOrder = MenuOrder.Ascending;
28069
+ this.customItemsInitialized = false;
28070
+ this.hiddenCustomItemsInitialized = false;
28071
+ this.itemClicked = new EventEmitter();
28072
+ this.itemLoaded = new EventEmitter();
27990
28073
  this._currentNodeSubscription = this._uriService.activeNode$.subscribe(node => {
27991
28074
  this.currentNode = node;
27992
28075
  });
27993
- const viewConfigurationPath = this._activatedRoute.snapshot.data[NAE_ROUTING_CONFIGURATION_PATH];
27994
- if (!!viewConfigurationPath) {
27995
- const viewConfiguration = this._config.getViewByPath(viewConfigurationPath);
27996
- Object.entries(viewConfiguration.children).forEach(([key, childView]) => {
27997
- this.resolveUriForChildViews(viewConfigurationPath + '/' + key, childView);
27998
- this.resolveHiddenMenuItemFromChildViews(viewConfigurationPath + '/' + key, childView);
27999
- });
28000
- }
28076
+ }
28077
+ ngOnDestroy() {
28078
+ this._currentNodeSubscription?.unsubscribe();
28079
+ this._leftLoading$.complete();
28080
+ this._rightLoading$.complete();
28081
+ this._nodeLoading$.complete();
28082
+ this.itemClicked.complete();
28083
+ this.itemLoaded.complete();
28084
+ }
28085
+ get canGoBackLoading$() {
28086
+ return this._nodeLoading$;
28001
28087
  }
28002
28088
  get currentNode() {
28003
28089
  return this._currentNode;
28004
28090
  }
28005
28091
  set currentNode(node) {
28006
- if (node === this._currentNode || this.leftLoading$.isActive || this.rightLoading$.isActive) {
28092
+ if (node === this._currentNode || this._leftLoading$.isActive || this._rightLoading$.isActive) {
28007
28093
  return;
28008
28094
  }
28009
28095
  this._currentNode = node;
@@ -28015,125 +28101,82 @@ class AbstractNavigationDoubleDrawerComponent {
28015
28101
  node.parent = this._uriService.root;
28016
28102
  }
28017
28103
  else {
28018
- this.nodeLoading$.on();
28104
+ this._nodeLoading$.on();
28019
28105
  this._uriService.getNodeByPath(this._uriService.resolveParentPath(node)).subscribe(n => {
28020
28106
  node.parent = !n ? this._uriService.root : n;
28021
- this.nodeLoading$.off();
28107
+ this._nodeLoading$.off();
28022
28108
  }, error => {
28023
28109
  this._log.error(error);
28024
- this.nodeLoading$.off();
28110
+ this._nodeLoading$.off();
28025
28111
  });
28026
28112
  }
28027
28113
  }
28028
- if (this.nodeLoading$.isActive) {
28029
- this.nodeLoading$.subscribe(() => {
28030
- this.resolveMenuItems(node);
28114
+ if (this._nodeLoading$.isActive) {
28115
+ this._nodeLoading$.subscribe(() => {
28116
+ this.loadNavigationItems(node);
28031
28117
  });
28032
28118
  }
28033
28119
  else {
28034
- this.resolveMenuItems(node);
28120
+ this.loadNavigationItems(node);
28035
28121
  }
28036
28122
  }
28037
- resolveMenuItems(node) {
28038
- if (this._uriService.isRoot(node)) {
28039
- this.leftItems = [];
28040
- this.loadRightSide();
28041
- }
28042
- else {
28043
- if (!this.leftItems.find(item => item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
28044
- this.loadLeftSide();
28045
- }
28046
- this.loadRightSide();
28047
- }
28123
+ get itemClicked$() {
28124
+ return this.itemClicked;
28048
28125
  }
28049
- ngOnDestroy() {
28050
- this._breakpointSubscription?.unsubscribe();
28051
- this._currentNodeSubscription?.unsubscribe();
28052
- this.leftLoading$.complete();
28053
- this.rightLoading$.complete();
28054
- this.nodeLoading$.complete();
28055
- this.loggedOut.complete();
28056
- this.stateChanged.complete();
28057
- this.itemClicked.complete();
28058
- this.resized.complete();
28059
- this.itemLoaded.complete();
28126
+ get itemLoaded$() {
28127
+ return this.itemLoaded;
28060
28128
  }
28061
- get configLeftMenu() {
28062
- return this._configLeftMenu;
28129
+ get rightItems$() {
28130
+ return this._rightItems$;
28063
28131
  }
28064
- get configRightMenu() {
28065
- return this._configRightMenu;
28132
+ get leftItems$() {
28133
+ return this._leftItems$;
28066
28134
  }
28067
- toggleMenu() {
28068
- this.toggleRightMenu();
28069
- if (this.allClosable) {
28070
- this.toggleLeftMenu();
28071
- }
28135
+ get moreItems$() {
28136
+ return this._moreItems$;
28072
28137
  }
28073
- toggleLeftMenu() {
28074
- this._configLeftMenu.opened = !this._configLeftMenu.opened;
28075
- this.stateChanged.emit({ menu: 'left', isOpened: this._configLeftMenu.opened });
28138
+ get hiddenCustomItems$() {
28139
+ return this._hiddenCustomItems$;
28076
28140
  }
28077
- toggleRightMenu() {
28078
- this._configRightMenu.opened = !this._configRightMenu.opened;
28079
- this.stateChanged.emit({ menu: 'right', isOpened: this._configRightMenu.opened });
28141
+ get rightItems() {
28142
+ return this._rightItems$.getValue();
28080
28143
  }
28081
- resolveLayout(isLargeScreen) {
28082
- this._configLeftMenu = isLargeScreen ? {
28083
- mode: 'side',
28084
- opened: true,
28085
- disableClose: true,
28086
- width: this._configLeftMenu.width,
28087
- } : {
28088
- mode: 'over',
28089
- opened: false,
28090
- disableClose: false,
28091
- width: this._configLeftMenu.width,
28092
- };
28093
- this._configRightMenu = isLargeScreen ? {
28094
- mode: 'side',
28095
- opened: true,
28096
- disableClose: true,
28097
- width: this._configRightMenu.width,
28098
- } : {
28099
- mode: 'over',
28100
- opened: false,
28101
- disableClose: false,
28102
- width: this._configRightMenu.width,
28103
- };
28144
+ get leftItems() {
28145
+ return this._leftItems$.getValue();
28104
28146
  }
28105
- getLang() {
28106
- return this._languageService.getLanguage();
28147
+ get moreItems() {
28148
+ return this._moreItems$.getValue();
28107
28149
  }
28108
- logout() {
28109
- this._userService.logout().subscribe(response => {
28110
- this._log.debug('User is logged out');
28111
- this.loggedOut.emit(response);
28112
- if (this._config.get().services && this._config.get().services.auth && this._config.getOnLogoutPath()) {
28113
- const redirectPath = this._config.getOnLogoutPath();
28114
- this._log.info('Redirecting to ' + redirectPath);
28115
- this._router.navigate([redirectPath]);
28116
- }
28117
- });
28150
+ get hiddenCustomItems() {
28151
+ return this._hiddenCustomItems$.getValue();
28118
28152
  }
28119
- impersonate() {
28120
- this._impersonationUserSelect.selectImpersonate();
28153
+ get leftLoading$() {
28154
+ return this._leftLoading$;
28121
28155
  }
28122
- stopImpersonating() {
28123
- this._impersonation.cease();
28156
+ get rightLoading$() {
28157
+ return this._rightLoading$;
28124
28158
  }
28125
- get user() {
28126
- return this._userService.user;
28159
+ get nodeLoading$() {
28160
+ return this._nodeLoading$;
28127
28161
  }
28128
- get canGoBackLoading$() {
28129
- return this.nodeLoading$;
28162
+ loadNavigationItems(node) {
28163
+ if (this._uriService.isRoot(node)) {
28164
+ this._leftItems$.next([]);
28165
+ this.loadRightSide();
28166
+ }
28167
+ else {
28168
+ if (!this._leftItems$.getValue().find(item => DoubleDrawerUtils.isNodeCorrespondingToItem(node, item))) {
28169
+ this.loadLeftSide();
28170
+ }
28171
+ this.loadRightSide();
28172
+ }
28130
28173
  }
28131
28174
  /**
28132
28175
  * On home click, the current level is set to 0, and current parent is
28133
28176
  * set to root node.
28134
28177
  * */
28135
28178
  onHomeClick() {
28136
- if (this.leftLoading$.isActive || this.rightLoading$.isActive) {
28179
+ if (this._leftLoading$.isActive || this._rightLoading$.isActive) {
28137
28180
  return;
28138
28181
  }
28139
28182
  this._uriService.activeNode = this._uriService.root;
@@ -28146,13 +28189,19 @@ class AbstractNavigationDoubleDrawerComponent {
28146
28189
  * Current level is set to a lower number in order to set the left side menu.
28147
28190
  * */
28148
28191
  onBackClick() {
28149
- if (this.leftLoading$.isActive || this.rightLoading$.isActive || this._uriService.isRoot(this._currentNode)) {
28192
+ if (this._leftLoading$.isActive || this._rightLoading$.isActive || this._uriService.isRoot(this._currentNode)) {
28150
28193
  return;
28151
28194
  }
28152
28195
  this._uriService.activeNode = this._currentNode.parent;
28153
28196
  this.itemClicked.emit({ uriNode: this._uriService.activeNode, isHome: false });
28154
28197
  }
28198
+ /**
28199
+ * On item click, the selected item's view is rendered (by routerLink). If the selected item has children items, the menu is updated
28200
+ * and view, that is rendered is selected by the defined rule. The rule is: On first check for default view in children.
28201
+ * On second check if the clicked item has a view. On third, pick any other children's view, else show nothing.
28202
+ * */
28155
28203
  onItemClick(item) {
28204
+ this._currentNavigationItem = item;
28156
28205
  if (item.resource === undefined) {
28157
28206
  // custom view represented only in nae.json
28158
28207
  if (item.processUri === this.currentNode.uriPath) {
@@ -28165,10 +28214,13 @@ class AbstractNavigationDoubleDrawerComponent {
28165
28214
  }
28166
28215
  else {
28167
28216
  const path = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value;
28168
- if (this.hasItemChildren(item) && !this.leftLoading$.isActive && !this.rightLoading$.isActive) {
28217
+ if (DoubleDrawerUtils.hasItemChildren(item) && !this._leftLoading$.isActive && !this._rightLoading$.isActive) {
28169
28218
  this._uriService.getNodeByPath(path).subscribe(node => {
28170
28219
  this._uriService.activeNode = node;
28171
28220
  this.itemClicked.emit({ uriNode: this._uriService.activeNode, isHome: false });
28221
+ this._rightLoading$.pipe(filter(isRightLoading => isRightLoading === false), take(1)).subscribe(() => {
28222
+ this.openAvailableView();
28223
+ });
28172
28224
  }, error => {
28173
28225
  this._log.error(error);
28174
28226
  });
@@ -28183,18 +28235,77 @@ class AbstractNavigationDoubleDrawerComponent {
28183
28235
  }
28184
28236
  }
28185
28237
  }
28186
- hasItemChildren(item) {
28187
- return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
28238
+ /**
28239
+ * Opens a view of the current right items in the menu by defined rule. The rule is: On first check for default
28240
+ * view in children. On second check if the clicked item has a view. On third, pick any other children's view, else
28241
+ * show nothing.
28242
+ * */
28243
+ openAvailableView() {
28244
+ let allItems = this.rightItems.concat(this.moreItems);
28245
+ let autoOpenItems = allItems.filter(item => DoubleDrawerUtils.hasItemAutoOpenView(item));
28246
+ if (autoOpenItems.length > 0) {
28247
+ this._redirectService.redirect(autoOpenItems[0].routing.path);
28248
+ return;
28249
+ }
28250
+ if (DoubleDrawerUtils.hasItemView(this._currentNavigationItem)) {
28251
+ // is routed by routerLink on item click
28252
+ return;
28253
+ }
28254
+ let itemsWithView = allItems.filter(item => DoubleDrawerUtils.hasItemView(item));
28255
+ if (itemsWithView.length > 0) {
28256
+ this._redirectService.redirect(autoOpenItems[0].routing.path);
28257
+ }
28188
28258
  }
28189
- isItemAndNodeEqual(item, node) {
28190
- return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
28259
+ loadMoreItems() {
28260
+ if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
28261
+ let currentRightItems = this.rightItems;
28262
+ let currentMoreItems = this.moreItems;
28263
+ currentRightItems.push(...currentMoreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
28264
+ this.rightItems$.next(currentRightItems);
28265
+ this.moreItems$.next(currentMoreItems);
28266
+ }
28267
+ else {
28268
+ let currentRightItems = this.rightItems;
28269
+ currentRightItems.push(...this.moreItems);
28270
+ this.rightItems$.next(currentRightItems);
28271
+ this.moreItems$.next([]);
28272
+ }
28273
+ }
28274
+ initializeCustomViewsOfView(view, viewConfigPath) {
28275
+ if (!view || this.customItemsInitialized || this.hiddenCustomItemsInitialized)
28276
+ return;
28277
+ Object.entries(view.children).forEach(([key, childView]) => {
28278
+ const childViewConfigPath = viewConfigPath + '/' + key;
28279
+ this.resolveUriForChildViews(childViewConfigPath, childView);
28280
+ this.resolveHiddenMenuItemFromChildViews(childViewConfigPath, childView);
28281
+ });
28282
+ this.resolveCustomViewsInRightSide();
28283
+ this.resolveCustomViewsInLeftSide();
28284
+ this.customItemsInitialized = true;
28285
+ this.hiddenCustomItemsInitialized = true;
28286
+ }
28287
+ switchOrder() {
28288
+ this.itemsOrder = (this.itemsOrder + 1) % 2;
28289
+ let multiplier = 1;
28290
+ if (this.itemsOrder === MenuOrder.Descending) {
28291
+ multiplier = -1;
28292
+ }
28293
+ let currentRightItems = this.rightItems;
28294
+ let currentLeftItems = this.leftItems;
28295
+ currentRightItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28296
+ currentLeftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28297
+ this.rightItems$.next(currentRightItems);
28298
+ this.leftItems$.next(currentLeftItems);
28299
+ }
28300
+ isAscending() {
28301
+ return this.itemsOrder === MenuOrder.Ascending;
28191
28302
  }
28192
28303
  loadLeftSide() {
28193
28304
  if (this._uriService.isRoot(this._currentNode)) {
28194
- this.leftItems = [];
28305
+ this._leftItems$.next([]);
28195
28306
  return;
28196
28307
  }
28197
- this.leftLoading$.on();
28308
+ this._leftLoading$.on();
28198
28309
  this._uriService.getItemCaseByNodePath(this.currentNode.parent).subscribe(page => {
28199
28310
  let childCases$;
28200
28311
  let targetItem;
@@ -28204,31 +28315,31 @@ class AbstractNavigationDoubleDrawerComponent {
28204
28315
  }
28205
28316
  else {
28206
28317
  targetItem = page.content[0];
28207
- orderedChildCaseIds = this.extractChildCaseIds(targetItem);
28318
+ orderedChildCaseIds = DoubleDrawerUtils.extractChildCaseIds(targetItem);
28208
28319
  childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
28209
28320
  }
28210
28321
  childCases$.subscribe(result => {
28211
28322
  result = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28212
- this.leftItems = result.sort((a, b) => orderedChildCaseIds.indexOf(a.resource.stringId) - orderedChildCaseIds.indexOf(b.resource.stringId));
28323
+ this._leftItems$.next(result.sort((a, b) => orderedChildCaseIds.indexOf(a.resource.stringId) - orderedChildCaseIds.indexOf(b.resource.stringId)));
28213
28324
  this.resolveCustomViewsInLeftSide();
28214
- this.leftLoading$.off();
28325
+ this._leftLoading$.off();
28215
28326
  this.itemLoaded.emit({ menu: 'left', items: this.leftItems });
28216
28327
  }, error => {
28217
28328
  this._log.error(error);
28218
- this.leftItems = [];
28329
+ this._leftItems$.next([]);
28219
28330
  this.resolveCustomViewsInLeftSide();
28220
- this.leftLoading$.off();
28331
+ this._leftLoading$.off();
28221
28332
  });
28222
28333
  }, error => {
28223
28334
  this._log.error(error);
28224
- this.leftItems = [];
28335
+ this._leftItems$.next([]);
28225
28336
  this.resolveCustomViewsInLeftSide();
28226
- this.leftLoading$.off();
28337
+ this._leftLoading$.off();
28227
28338
  });
28228
28339
  }
28229
28340
  loadRightSide() {
28230
- this.rightLoading$.on();
28231
- this.moreItems = [];
28341
+ this._rightLoading$.on();
28342
+ this._moreItems$.next([]);
28232
28343
  this._uriService.getItemCaseByNodePath(this.currentNode).subscribe(page => {
28233
28344
  let childCases$;
28234
28345
  let targetItem;
@@ -28238,40 +28349,37 @@ class AbstractNavigationDoubleDrawerComponent {
28238
28349
  }
28239
28350
  else {
28240
28351
  targetItem = page.content[0];
28241
- orderedChildCaseIds = this.extractChildCaseIds(targetItem);
28352
+ orderedChildCaseIds = DoubleDrawerUtils.extractChildCaseIds(targetItem);
28242
28353
  childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
28243
28354
  }
28244
28355
  childCases$.subscribe(result => {
28245
28356
  result = result.sort((a, b) => orderedChildCaseIds.indexOf(a.stringId) - orderedChildCaseIds.indexOf(b.stringId));
28246
28357
  if (result.length > RIGHT_SIDE_INIT_PAGE_SIZE) {
28247
28358
  const rawRightItems = result.splice(0, RIGHT_SIDE_INIT_PAGE_SIZE);
28248
- this.rightItems = rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28249
- this.moreItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28359
+ this._rightItems$.next(rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i));
28360
+ this._moreItems$.next(result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i));
28250
28361
  }
28251
28362
  else {
28252
- this.rightItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28363
+ this._rightItems$.next(result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i));
28253
28364
  }
28254
28365
  this.resolveCustomViewsInRightSide();
28255
- this.rightLoading$.off();
28366
+ this._rightLoading$.off();
28256
28367
  this.itemLoaded.emit({ menu: 'right', items: this.rightItems });
28257
28368
  }, error => {
28258
28369
  this._log.error(error);
28259
- this.rightItems = [];
28260
- this.moreItems = [];
28370
+ this._rightItems$.next([]);
28371
+ this._moreItems$.next([]);
28261
28372
  this.resolveCustomViewsInRightSide();
28262
- this.rightLoading$.off();
28373
+ this._rightLoading$.off();
28263
28374
  });
28264
28375
  }, error => {
28265
28376
  this._log.error(error);
28266
- this.rightItems = [];
28267
- this.moreItems = [];
28377
+ this._rightItems$.next([]);
28378
+ this._moreItems$.next([]);
28268
28379
  this.resolveCustomViewsInRightSide();
28269
- this.rightLoading$.off();
28380
+ this._rightLoading$.off();
28270
28381
  });
28271
28382
  }
28272
- extractChildCaseIds(item) {
28273
- return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_CHILD_ITEM_IDS)?.value;
28274
- }
28275
28383
  getItemCasesByIdsInOnePage(caseIds) {
28276
28384
  return this.getItemCasesByIds(caseIds, 0, caseIds.length);
28277
28385
  }
@@ -28285,45 +28393,14 @@ class AbstractNavigationDoubleDrawerComponent {
28285
28393
  .set(PaginationParams.PAGE_NUMBER, pageNumber);
28286
28394
  return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
28287
28395
  }
28288
- loadMoreItems() {
28289
- if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
28290
- this.rightItems.push(...this.moreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
28291
- }
28292
- else {
28293
- this.rightItems.push(...this.moreItems);
28294
- this.moreItems = [];
28295
- }
28296
- }
28297
- isAscending() {
28298
- return this.itemsOrder === MenuOrder.Ascending;
28299
- }
28300
- switchOrder() {
28301
- this.itemsOrder = (this.itemsOrder + 1) % 2;
28302
- let multiplier = 1;
28303
- if (this.itemsOrder === MenuOrder.Descending) {
28304
- multiplier = -1;
28305
- }
28306
- this.rightItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28307
- this.leftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28308
- }
28309
- resolveCustomViewsInRightSide() {
28310
- if (!!this._childCustomViews[this._currentNode.uriPath]) {
28311
- this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.uriPath]));
28312
- }
28313
- }
28314
- resolveCustomViewsInLeftSide() {
28315
- if (!!this._childCustomViews[this._currentNode.parent.uriPath]) {
28316
- this.leftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.uriPath]));
28317
- }
28318
- }
28319
28396
  resolveItemCaseToNavigationItem(itemCase) {
28320
- if (this.representsRootNode(itemCase)) {
28397
+ if (DoubleDrawerUtils.representsRootNode(itemCase)) {
28321
28398
  return;
28322
28399
  }
28323
28400
  const item = {
28324
28401
  access: {},
28325
28402
  navigation: {
28326
- icon: itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_ICON)?.value || this.filterIcon,
28403
+ icon: itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_ICON)?.value || this.defaultViewIcon,
28327
28404
  title: this.getTranslation(itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_NAME)?.value) || itemCase.title,
28328
28405
  },
28329
28406
  routing: {
@@ -28332,8 +28409,8 @@ class AbstractNavigationDoubleDrawerComponent {
28332
28409
  id: itemCase.stringId,
28333
28410
  resource: itemCase,
28334
28411
  };
28335
- const resolvedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_ALLOWED_ROLES);
28336
- const resolvedBannedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_BANNED_ROLES);
28412
+ const resolvedRoles = DoubleDrawerUtils.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_ALLOWED_ROLES);
28413
+ const resolvedBannedRoles = DoubleDrawerUtils.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_BANNED_ROLES);
28337
28414
  if (!!resolvedRoles)
28338
28415
  item.access['role'] = resolvedRoles;
28339
28416
  if (!!resolvedBannedRoles)
@@ -28342,45 +28419,276 @@ class AbstractNavigationDoubleDrawerComponent {
28342
28419
  return;
28343
28420
  return item;
28344
28421
  }
28345
- representsRootNode(item) {
28346
- return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH).value === '/';
28422
+ resolveCustomViewsInLeftSide() {
28423
+ if (!!this._currentNode?.parent && !!this._childCustomViews[this._currentNode.parent.uriPath]) {
28424
+ let currentLeftItems = this._leftItems$.getValue();
28425
+ currentLeftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.uriPath]));
28426
+ this._leftItems$.next(currentLeftItems);
28427
+ }
28428
+ }
28429
+ resolveCustomViewsInRightSide() {
28430
+ if (!!this._currentNode && !!this._childCustomViews[this._currentNode.uriPath]) {
28431
+ let currentRightItems = this._rightItems$.getValue();
28432
+ currentRightItems.push(...Object.values(this._childCustomViews[this._currentNode.uriPath]));
28433
+ this._rightItems$.next(currentRightItems);
28434
+ }
28435
+ }
28436
+ resolveUriForChildViews(configPath, childView) {
28437
+ if (!childView.processUri)
28438
+ return;
28439
+ if (!this._accessService.canAccessView(childView, configPath))
28440
+ return;
28441
+ if (!this._childCustomViews[childView.processUri]) {
28442
+ this._childCustomViews[childView.processUri] = {};
28443
+ }
28444
+ this._childCustomViews[childView.processUri][configPath] = {
28445
+ id: configPath,
28446
+ ...childView,
28447
+ };
28448
+ }
28449
+ resolveHiddenMenuItemFromChildViews(configPath, childView) {
28450
+ if (!childView.navigation)
28451
+ return;
28452
+ if (!this._accessService.canAccessView(childView, configPath))
28453
+ return;
28454
+ if (!!(childView?.navigation?.hidden)) {
28455
+ let currentHiddenCustomItems = this._hiddenCustomItems$.getValue();
28456
+ currentHiddenCustomItems.push({
28457
+ id: configPath,
28458
+ ...childView,
28459
+ });
28460
+ this._hiddenCustomItems$.next(currentHiddenCustomItems);
28461
+ }
28347
28462
  }
28348
28463
  getTranslation(value) {
28349
28464
  const locale = this._translateService.currentLang.split('-')[0];
28350
28465
  return locale in value.translations ? value.translations[locale] : value.defaultValue;
28351
28466
  }
28352
- resolveAccessRoles(filter, roleType) {
28353
- const allowedRoles = filter.immediateData.find(f => f.stringId === roleType)?.options;
28354
- if (!allowedRoles || Object.keys(allowedRoles).length === 0)
28355
- return undefined;
28356
- const roles = [];
28357
- Object.keys(allowedRoles).forEach(combined => {
28358
- const parts = combined.split(':');
28359
- roles.push({
28360
- processId: parts[1],
28361
- roleId: parts[0],
28362
- });
28363
- });
28364
- return roles;
28365
- }
28366
28467
  getItemRoutingPath(itemCase) {
28367
- const transId = SETTINGS_TRANSITION_ID;
28368
- const taskId = itemCase.tasks.find(taskPair => taskPair.transition === transId).task;
28468
+ const taskId = DoubleDrawerUtils.findTaskIdInCase(itemCase, SETTINGS_TRANSITION_ID);
28369
28469
  const url = this._dynamicRoutingService.route;
28370
28470
  return `/${url}/${taskId}`;
28371
28471
  }
28472
+ }
28473
+ DoubleDrawerNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DoubleDrawerNavigationService, deps: [{ token: UriService }, { token: LoggerService }, { token: ConfigurationService }, { token: i2$5.ActivatedRoute }, { token: CaseResourceService }, { token: AccessService }, { token: i1$2.TranslateService }, { token: DynamicNavigationRouteProviderService }, { token: RedirectService }], target: i0.ɵɵFactoryTarget.Injectable });
28474
+ DoubleDrawerNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DoubleDrawerNavigationService, providedIn: 'root' });
28475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DoubleDrawerNavigationService, decorators: [{
28476
+ type: Injectable,
28477
+ args: [{
28478
+ providedIn: 'root',
28479
+ }]
28480
+ }], ctorParameters: function () { return [{ type: UriService }, { type: LoggerService }, { type: ConfigurationService }, { type: i2$5.ActivatedRoute }, { type: CaseResourceService }, { type: AccessService }, { type: i1$2.TranslateService }, { type: DynamicNavigationRouteProviderService }, { type: RedirectService }]; } });
28481
+
28482
+ class AbstractNavigationDoubleDrawerComponent {
28483
+ constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _caseResourceService, _impersonationUserSelect, _impersonation, _dynamicRoutingService, _redirectService, _navigationService) {
28484
+ this._router = _router;
28485
+ this._activatedRoute = _activatedRoute;
28486
+ this._breakpoint = _breakpoint;
28487
+ this._languageService = _languageService;
28488
+ this._translateService = _translateService;
28489
+ this._userService = _userService;
28490
+ this._accessService = _accessService;
28491
+ this._log = _log;
28492
+ this._config = _config;
28493
+ this._uriService = _uriService;
28494
+ this._caseResourceService = _caseResourceService;
28495
+ this._impersonationUserSelect = _impersonationUserSelect;
28496
+ this._impersonation = _impersonation;
28497
+ this._dynamicRoutingService = _dynamicRoutingService;
28498
+ this._redirectService = _redirectService;
28499
+ this._navigationService = _navigationService;
28500
+ this.imageRouterLink = '/';
28501
+ this.imageAlt = 'Logo';
28502
+ this.profileRouterLink = '/profile';
28503
+ this.includeUser = true;
28504
+ this.includeLanguage = true;
28505
+ this.includeMoreMenu = true;
28506
+ this.includeImpersonation = true;
28507
+ this.allClosable = true;
28508
+ this.folderIcon = 'folder';
28509
+ this.openedFolderIcon = 'folder_open';
28510
+ this.filterIcon = 'filter_alt';
28511
+ this.foldersCategoryName = 'toolbar.menu.folders';
28512
+ this.viewsCategoryName = 'toolbar.menu.views';
28513
+ this.loggedOut = new EventEmitter(true); // on logout
28514
+ this.stateChanged = new EventEmitter(); // on menu state change
28515
+ this.itemClicked = new EventEmitter(); // on item click
28516
+ this.resized = new EventEmitter(true); // on menu resize
28517
+ this.itemLoaded = new EventEmitter(true); // on item loaded
28518
+ this._configLeftMenu = {
28519
+ mode: 'side',
28520
+ opened: true,
28521
+ disableClose: false,
28522
+ width: LEFT_DRAWER_DEFAULT_WIDTH,
28523
+ };
28524
+ this._configRightMenu = {
28525
+ mode: 'side',
28526
+ opened: true,
28527
+ disableClose: false,
28528
+ width: RIGHT_DRAWER_DEFAULT_WIDTH,
28529
+ };
28530
+ let configUrl = this._config.getServicesConfiguration()?.doubleDrawer?.url;
28531
+ if (configUrl !== undefined && !configUrl.startsWith('/')) {
28532
+ configUrl = '/' + configUrl;
28533
+ }
28534
+ this.configUrl = configUrl;
28535
+ this._navigationService.itemClicked$.subscribe((itemClickEvent) => {
28536
+ this.itemClicked.emit(itemClickEvent);
28537
+ });
28538
+ this._navigationService.itemLoaded$.subscribe((itemLoadedEvent) => {
28539
+ this.itemLoaded.emit(itemLoadedEvent);
28540
+ });
28541
+ }
28542
+ ngOnInit() {
28543
+ this._breakpointSubscription = this._breakpoint.observe([Breakpoints.HandsetLandscape]).subscribe(() => {
28544
+ if (this._breakpoint.isMatched('(max-width: 959.99px)')) {
28545
+ this.resolveLayout(false);
28546
+ }
28547
+ else {
28548
+ this.resolveLayout(true);
28549
+ }
28550
+ });
28551
+ if (this.canApplyAutoSelect()) {
28552
+ this.rightItems$.pipe(filter(rightItems => rightItems.length > 0), take(1)).subscribe(() => {
28553
+ this.openAvailableView();
28554
+ });
28555
+ }
28556
+ const viewConfigurationPath = this._activatedRoute.snapshot.data[NAE_ROUTING_CONFIGURATION_PATH];
28557
+ if (!!viewConfigurationPath) {
28558
+ const viewConfiguration = this._config.getViewByPath(viewConfigurationPath);
28559
+ this._navigationService.initializeCustomViewsOfView(viewConfiguration, viewConfigurationPath);
28560
+ }
28561
+ }
28562
+ ngOnDestroy() {
28563
+ this._breakpointSubscription?.unsubscribe();
28564
+ this.loggedOut.complete();
28565
+ this.stateChanged.complete();
28566
+ this.itemClicked.complete();
28567
+ this.resized.complete();
28568
+ this.itemLoaded.complete();
28569
+ }
28570
+ get currentNode() {
28571
+ return this._navigationService.currentNode;
28572
+ }
28573
+ set currentNode(node) {
28574
+ this._navigationService.currentNode = node;
28575
+ }
28576
+ get configLeftMenu() {
28577
+ return this._configLeftMenu;
28578
+ }
28579
+ get configRightMenu() {
28580
+ return this._configRightMenu;
28581
+ }
28582
+ get leftItems$() {
28583
+ return this._navigationService.leftItems$;
28584
+ }
28585
+ get leftItems() {
28586
+ return this._navigationService.leftItems;
28587
+ }
28588
+ get rightItems$() {
28589
+ return this._navigationService.rightItems$;
28590
+ }
28591
+ get rightItems() {
28592
+ return this._navigationService.rightItems;
28593
+ }
28594
+ get moreItems$() {
28595
+ return this._navigationService.moreItems$;
28596
+ }
28597
+ get moreItems() {
28598
+ return this._navigationService.moreItems;
28599
+ }
28600
+ get hiddenCustomItems$() {
28601
+ return this._navigationService.hiddenCustomItems$;
28602
+ }
28603
+ get hiddenCustomItems() {
28604
+ return this._navigationService.hiddenCustomItems;
28605
+ }
28606
+ get leftLoading$() {
28607
+ return this._navigationService.leftLoading$;
28608
+ }
28609
+ get rightLoading$() {
28610
+ return this._navigationService.rightLoading$;
28611
+ }
28612
+ toggleMenu() {
28613
+ this.toggleRightMenu();
28614
+ if (this.allClosable) {
28615
+ this.toggleLeftMenu();
28616
+ }
28617
+ }
28618
+ toggleLeftMenu() {
28619
+ this._configLeftMenu.opened = !this._configLeftMenu.opened;
28620
+ this.stateChanged.emit({ menu: 'left', isOpened: this._configLeftMenu.opened });
28621
+ }
28622
+ toggleRightMenu() {
28623
+ this._configRightMenu.opened = !this._configRightMenu.opened;
28624
+ this.stateChanged.emit({ menu: 'right', isOpened: this._configRightMenu.opened });
28625
+ }
28626
+ getLang() {
28627
+ return this._languageService.getLanguage();
28628
+ }
28629
+ logout() {
28630
+ this._userService.logout().subscribe(response => {
28631
+ this._log.debug('User is logged out');
28632
+ this.loggedOut.emit(response);
28633
+ if (this._config.get().services && this._config.get().services.auth && this._config.getOnLogoutPath()) {
28634
+ const redirectPath = this._config.getOnLogoutPath();
28635
+ this._log.info('Redirecting to ' + redirectPath);
28636
+ this._router.navigate([redirectPath]);
28637
+ }
28638
+ });
28639
+ }
28640
+ impersonate() {
28641
+ this._impersonationUserSelect.selectImpersonate();
28642
+ }
28643
+ stopImpersonating() {
28644
+ this._impersonation.cease();
28645
+ }
28646
+ get user() {
28647
+ return this._userService.user;
28648
+ }
28649
+ get canGoBackLoading$() {
28650
+ return this._navigationService.canGoBackLoading$;
28651
+ }
28652
+ /**
28653
+ * On home click, the current level is set to 0, and current parent is
28654
+ * set to root node.
28655
+ * */
28656
+ onHomeClick() {
28657
+ this._navigationService.onHomeClick();
28658
+ }
28659
+ /**
28660
+ * On back click, the parent is set to parent of left nodes, that will solve
28661
+ * the right side menu (elements that were in left side, after backward
28662
+ * navigation will be on the right side).
28663
+ * Current level is set to a lower number in order to set the left side menu.
28664
+ * */
28665
+ onBackClick() {
28666
+ this._navigationService.onBackClick();
28667
+ }
28668
+ onItemClick(item) {
28669
+ this._navigationService.onItemClick(item);
28670
+ }
28671
+ loadMoreItems() {
28672
+ this._navigationService.loadMoreItems();
28673
+ }
28674
+ isAscending() {
28675
+ return this._navigationService.isAscending();
28676
+ }
28677
+ switchOrder() {
28678
+ this._navigationService.switchOrder();
28679
+ }
28372
28680
  /**
28373
28681
  * Function to check whether the back button should be displayed
28374
28682
  * @returns boolean if the back button should be displayed
28375
28683
  * */
28376
28684
  isOnZeroLevel() {
28377
- return !!this._currentNode?.level ? this._currentNode.level == 0 : true;
28685
+ return !!this._navigationService.currentNode?.level ? this._navigationService.currentNode.level == 0 : true;
28378
28686
  }
28379
28687
  isLeftItemsEmpty() {
28380
- return this.leftItems === undefined || this.leftItems.length === 0;
28688
+ return this._navigationService.leftItems === undefined || this._navigationService.leftItems.length === 0;
28381
28689
  }
28382
28690
  isRightItemsEmpty() {
28383
- return this.rightItems === undefined || this.rightItems.length === 0;
28691
+ return this._navigationService.rightItems === undefined || this._navigationService.rightItems.length === 0;
28384
28692
  }
28385
28693
  uriNodeTrackBy(index, node) {
28386
28694
  return node.id;
@@ -28403,33 +28711,41 @@ class AbstractNavigationDoubleDrawerComponent {
28403
28711
  // this.userPreferenceService._drawerWidthChanged$.next(this.width);
28404
28712
  // this.contentWidth.next(this.width);
28405
28713
  }
28406
- resolveUriForChildViews(configPath, childView) {
28407
- if (!childView.processUri)
28408
- return;
28409
- if (!this._accessService.canAccessView(childView, configPath))
28410
- return;
28411
- if (!this._childCustomViews[childView.processUri]) {
28412
- this._childCustomViews[childView.processUri] = {};
28413
- }
28414
- this._childCustomViews[childView.processUri][configPath] = {
28415
- id: configPath,
28416
- ...childView,
28714
+ isItemAndNodeEqual(item, node) {
28715
+ return DoubleDrawerUtils.isItemAndNodeEqual(item, node);
28716
+ }
28717
+ resolveLayout(isLargeScreen) {
28718
+ this._configLeftMenu = isLargeScreen ? {
28719
+ mode: 'side',
28720
+ opened: true,
28721
+ disableClose: true,
28722
+ width: this._configLeftMenu.width,
28723
+ } : {
28724
+ mode: 'over',
28725
+ opened: false,
28726
+ disableClose: false,
28727
+ width: this._configLeftMenu.width,
28728
+ };
28729
+ this._configRightMenu = isLargeScreen ? {
28730
+ mode: 'side',
28731
+ opened: true,
28732
+ disableClose: true,
28733
+ width: this._configRightMenu.width,
28734
+ } : {
28735
+ mode: 'over',
28736
+ opened: false,
28737
+ disableClose: false,
28738
+ width: this._configRightMenu.width,
28417
28739
  };
28418
28740
  }
28419
- resolveHiddenMenuItemFromChildViews(configPath, childView) {
28420
- if (!childView.navigation)
28421
- return;
28422
- if (!this._accessService.canAccessView(childView, configPath))
28423
- return;
28424
- if (!!(childView?.navigation?.hidden)) {
28425
- this.hiddenCustomItems.push({
28426
- id: configPath,
28427
- ...childView,
28428
- });
28429
- }
28741
+ canApplyAutoSelect() {
28742
+ return this.configUrl === this._router.url;
28743
+ }
28744
+ openAvailableView() {
28745
+ this._navigationService.openAvailableView();
28430
28746
  }
28431
28747
  }
28432
- AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i3$1.Router }, { token: i3$1.ActivatedRoute }, { token: i1$7.BreakpointObserver }, { token: LanguageService }, { token: i1$2.TranslateService }, { token: UserService }, { token: AccessService }, { token: LoggerService }, { token: ConfigurationService }, { token: UriService }, { token: CaseResourceService }, { token: ImpersonationUserSelectService }, { token: ImpersonationService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
28748
+ AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i2$5.Router }, { token: i2$5.ActivatedRoute }, { token: i1$7.BreakpointObserver }, { token: LanguageService }, { token: i1$2.TranslateService }, { token: UserService }, { token: AccessService }, { token: LoggerService }, { token: ConfigurationService }, { token: UriService }, { token: CaseResourceService }, { token: ImpersonationUserSelectService }, { token: ImpersonationService }, { token: DynamicNavigationRouteProviderService }, { token: RedirectService }, { token: DoubleDrawerNavigationService }], target: i0.ɵɵFactoryTarget.Component });
28433
28749
  AbstractNavigationDoubleDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractNavigationDoubleDrawerComponent, selector: "ncc-abstract-navigation-double-drawer", inputs: { portalLeftMenu: "portalLeftMenu", portalRightMenu: "portalRightMenu", imageRouterLink: "imageRouterLink", imageAlt: "imageAlt", image: "image", profileRouterLink: "profileRouterLink", includeUser: "includeUser", includeLanguage: "includeLanguage", includeMoreMenu: "includeMoreMenu", includeImpersonation: "includeImpersonation", allClosable: "allClosable", folderIcon: "folderIcon", openedFolderIcon: "openedFolderIcon", filterIcon: "filterIcon", foldersCategoryName: "foldersCategoryName", viewsCategoryName: "viewsCategoryName" }, outputs: { loggedOut: "loggedOut", stateChanged: "stateChanged", itemClicked: "itemClicked", resized: "resized", itemLoaded: "itemLoaded" }, ngImport: i0, template: '', isInline: true });
28434
28750
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
28435
28751
  type: Component,
@@ -28437,7 +28753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28437
28753
  selector: 'ncc-abstract-navigation-double-drawer',
28438
28754
  template: '',
28439
28755
  }]
28440
- }], ctorParameters: function () { return [{ type: i3$1.Router }, { type: i3$1.ActivatedRoute }, { type: i1$7.BreakpointObserver }, { type: LanguageService }, { type: i1$2.TranslateService }, { type: UserService }, { type: AccessService }, { type: LoggerService }, { type: ConfigurationService }, { type: UriService }, { type: CaseResourceService }, { type: ImpersonationUserSelectService }, { type: ImpersonationService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
28756
+ }], ctorParameters: function () { return [{ type: i2$5.Router }, { type: i2$5.ActivatedRoute }, { type: i1$7.BreakpointObserver }, { type: LanguageService }, { type: i1$2.TranslateService }, { type: UserService }, { type: AccessService }, { type: LoggerService }, { type: ConfigurationService }, { type: UriService }, { type: CaseResourceService }, { type: ImpersonationUserSelectService }, { type: ImpersonationService }, { type: DynamicNavigationRouteProviderService }, { type: RedirectService }, { type: DoubleDrawerNavigationService }]; }, propDecorators: { portalLeftMenu: [{
28441
28757
  type: Input
28442
28758
  }], portalRightMenu: [{
28443
28759
  type: Input
@@ -28600,7 +28916,7 @@ class AbstractGroupNavigationComponentResolverComponent {
28600
28916
  });
28601
28917
  }
28602
28918
  }
28603
- AbstractGroupNavigationComponentResolverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractGroupNavigationComponentResolverComponent, deps: [{ token: GroupNavigationComponentResolverService }, { token: i0.Injector }, { token: i3$1.ActivatedRoute }, { token: i3$1.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Component });
28919
+ AbstractGroupNavigationComponentResolverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractGroupNavigationComponentResolverComponent, deps: [{ token: GroupNavigationComponentResolverService }, { token: i0.Injector }, { token: i2$5.ActivatedRoute }, { token: i2$5.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Component });
28604
28920
  AbstractGroupNavigationComponentResolverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractGroupNavigationComponentResolverComponent, selector: "ncc-abstract-group-nagiation-resolver", ngImport: i0, template: '', isInline: true });
28605
28921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractGroupNavigationComponentResolverComponent, decorators: [{
28606
28922
  type: Component,
@@ -28608,7 +28924,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28608
28924
  selector: 'ncc-abstract-group-nagiation-resolver',
28609
28925
  template: ''
28610
28926
  }]
28611
- }], ctorParameters: function () { return [{ type: GroupNavigationComponentResolverService }, { type: i0.Injector }, { type: i3$1.ActivatedRoute }, { type: i3$1.Router }, { type: LoggerService }]; } });
28927
+ }], ctorParameters: function () { return [{ type: GroupNavigationComponentResolverService }, { type: i0.Injector }, { type: i2$5.ActivatedRoute }, { type: i2$5.Router }, { type: LoggerService }]; } });
28612
28928
 
28613
28929
  class AbstractBreadcrumbsComponent {
28614
28930
  constructor(_uriService, _caseResourceService, _activatedRoute, _router, _dynamicRoutingService, _translateService, _log) {
@@ -28645,7 +28961,7 @@ class AbstractBreadcrumbsComponent {
28645
28961
  }
28646
28962
  const splitPath = this._uriService.splitNodePath(this._uriService.activeNode);
28647
28963
  const fullPath = this.createFullPath(splitPath);
28648
- const fullPathQueries = fullPath.map(p => '(processIdentifier:preference_item AND dataSet.nodePath.textValue.keyword:\"' + p + '\")');
28964
+ const fullPathQueries = fullPath.map(p => '(processIdentifier:menu_item AND dataSet.nodePath.textValue.keyword:\"' + p + '\")');
28649
28965
  fullPathQueries.push('(taskMongoIds:\"' + filterId + '\")');
28650
28966
  const searchBody = {
28651
28967
  query: fullPathQueries.join(" OR ")
@@ -28727,7 +29043,7 @@ class AbstractBreadcrumbsComponent {
28727
29043
  let tmp = '';
28728
29044
  return splitPath.filter(s => s !== "").map((value) => {
28729
29045
  tmp += AbstractBreadcrumbsComponent.DELIMETER + value;
28730
- return tmp.replace("//", AbstractBreadcrumbsComponent.DELIMETER);
29046
+ return tmp?.replace("//", AbstractBreadcrumbsComponent.DELIMETER);
28731
29047
  });
28732
29048
  }
28733
29049
  immediateValue(aCase, fieldId) {
@@ -28742,7 +29058,7 @@ AbstractBreadcrumbsComponent.DOTS = '...';
28742
29058
  AbstractBreadcrumbsComponent.DELIMETER = '/';
28743
29059
  AbstractBreadcrumbsComponent.NODE_PATH = 'nodePath';
28744
29060
  AbstractBreadcrumbsComponent.ITEM_SETTINGS = 'item_settings';
28745
- AbstractBreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractBreadcrumbsComponent, deps: [{ token: UriService }, { token: CaseResourceService }, { token: i3$1.ActivatedRoute }, { token: i3$1.Router }, { token: DynamicNavigationRouteProviderService }, { token: i1$2.TranslateService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Component });
29061
+ AbstractBreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractBreadcrumbsComponent, deps: [{ token: UriService }, { token: CaseResourceService }, { token: i2$5.ActivatedRoute }, { token: i2$5.Router }, { token: DynamicNavigationRouteProviderService }, { token: i1$2.TranslateService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Component });
28746
29062
  AbstractBreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractBreadcrumbsComponent, selector: "ncc-breadcrumbs-component", inputs: { showHome: "showHome", showFilter: "showFilter", redirectOnClick: "redirectOnClick", lengthOfPath: "lengthOfPath", partsAfterDots: "partsAfterDots" }, ngImport: i0, template: '', isInline: true });
28747
29063
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractBreadcrumbsComponent, decorators: [{
28748
29064
  type: Component,
@@ -28750,7 +29066,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28750
29066
  selector: 'ncc-breadcrumbs-component',
28751
29067
  template: ''
28752
29068
  }]
28753
- }], ctorParameters: function () { return [{ type: UriService }, { type: CaseResourceService }, { type: i3$1.ActivatedRoute }, { type: i3$1.Router }, { type: DynamicNavigationRouteProviderService }, { type: i1$2.TranslateService }, { type: LoggerService }]; }, propDecorators: { showHome: [{
29069
+ }], ctorParameters: function () { return [{ type: UriService }, { type: CaseResourceService }, { type: i2$5.ActivatedRoute }, { type: i2$5.Router }, { type: DynamicNavigationRouteProviderService }, { type: i1$2.TranslateService }, { type: LoggerService }]; }, propDecorators: { showHome: [{
28754
29070
  type: Input
28755
29071
  }], showFilter: [{
28756
29072
  type: Input
@@ -28762,6 +29078,222 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28762
29078
  type: Input
28763
29079
  }] } });
28764
29080
 
29081
+ class AbstractDashboardComponent {
29082
+ constructor(_caseResource, _log, _uriService, _router, _languageService, _doubleDrawerNavigationService) {
29083
+ this._caseResource = _caseResource;
29084
+ this._log = _log;
29085
+ this._uriService = _uriService;
29086
+ this._router = _router;
29087
+ this._languageService = _languageService;
29088
+ this._doubleDrawerNavigationService = _doubleDrawerNavigationService;
29089
+ this.toolbarConfig = {
29090
+ profileEnabled: false,
29091
+ languageEnabled: false,
29092
+ logoutEnabled: false,
29093
+ simpleToolbar: true,
29094
+ toolbarName: {
29095
+ defaultValue: 'Netgrif',
29096
+ translations: {}
29097
+ },
29098
+ toolbarLogo: 'assets/img/netgrif_full_white.svg',
29099
+ profileUrl: 'profile',
29100
+ loginUrl: ''
29101
+ };
29102
+ this.dashboardId = AbstractDashboardComponent.MAIN_DASHBOARD;
29103
+ this.itemsLoaded = 0;
29104
+ this.loading$ = new LoadingEmitter();
29105
+ this.dashboardItemsMapping = {};
29106
+ this.dashboardItems = [];
29107
+ this.loading$.on();
29108
+ const dashboardManagementSearchBody = {
29109
+ process: { identifier: AbstractDashboardComponent.DASHBOARD_MANAGEMENT_IDENTIFIER },
29110
+ data: {
29111
+ [AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ID_DATAFIELD]: this.dashboardId
29112
+ }
29113
+ };
29114
+ let dashboardManagementParams = new HttpParams()
29115
+ .set(PaginationParams.PAGE_SIZE, 1);
29116
+ this._caseResource.searchCases(SimpleFilter.fromCaseQuery(dashboardManagementSearchBody), dashboardManagementParams).subscribe(resultDashboard => {
29117
+ const dashboardContent = resultDashboard.content;
29118
+ if (!dashboardContent || !dashboardContent.length || dashboardContent.length < 1) {
29119
+ this.loading$.off();
29120
+ this._log.error('Dashboard management case not found.');
29121
+ return;
29122
+ }
29123
+ this.dashboardCase = dashboardContent[0];
29124
+ this.toolbarConfig = {
29125
+ profileEnabled: this.getManagementProfileToolbar(this.dashboardCase),
29126
+ languageEnabled: this.getManagementLanguageToolbar(this.dashboardCase),
29127
+ logoutEnabled: this.getManagementLogoutToolbar(this.dashboardCase),
29128
+ simpleToolbar: this.getManagementSimpleToolbar(this.dashboardCase),
29129
+ toolbarName: this.getManagementName(this.dashboardCase),
29130
+ toolbarLogo: this.getManagementLogo(this.dashboardCase),
29131
+ profileUrl: this.getManagementProfileUrl(this.dashboardCase),
29132
+ loginUrl: this.getManagementLoginUrl(this.dashboardCase)
29133
+ };
29134
+ const dashboardItemsOptions = this.dashboardCase.immediateData
29135
+ .find(immediateField => immediateField['importId'] === AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEM_TO_MENU_ITEM_DATAFIELD).options;
29136
+ const dashboardMenuToItems = Object.entries(dashboardItemsOptions)
29137
+ .filter(([key, value]) => value.defaultValue != null)
29138
+ .reduce((accum, [key, value]) => {
29139
+ accum[value.defaultValue] = key;
29140
+ return accum;
29141
+ }, {});
29142
+ let dashboardItemsParams = new HttpParams()
29143
+ .set(PaginationParams.PAGE_SIZE, 100);
29144
+ this.getDashboardItems(dashboardItemsOptions, dashboardItemsParams);
29145
+ this.getMenuItems(dashboardMenuToItems, dashboardItemsParams);
29146
+ });
29147
+ }
29148
+ getMenuItems(dashboardMenuToItems, dashboardItemsParams) {
29149
+ let menuItemsSearchBody = {
29150
+ stringId: Object.keys(dashboardMenuToItems)
29151
+ };
29152
+ this._caseResource.searchCases(SimpleFilter.fromCaseQuery(menuItemsSearchBody), dashboardItemsParams).subscribe(resultItems => {
29153
+ const itemsContent = resultItems.content;
29154
+ itemsContent.forEach(menuItemCase => {
29155
+ const navigationItem = this._doubleDrawerNavigationService.resolveItemCaseToNavigationItem(menuItemCase);
29156
+ const dashboardItemId = dashboardMenuToItems[menuItemCase.stringId];
29157
+ if (!navigationItem) {
29158
+ this.dashboardItems = this.dashboardItems.filter(dashItem => dashItem.stringId !== dashboardItemId);
29159
+ return;
29160
+ }
29161
+ this.dashboardItemsMapping[dashboardItemId] = menuItemCase;
29162
+ });
29163
+ this.itemsLoaded += 1;
29164
+ if (this.itemsLoaded == 2) {
29165
+ this.loading$.off();
29166
+ }
29167
+ });
29168
+ }
29169
+ getDashboardItems(dashboardItemsOptions, dashboardItemsParams) {
29170
+ const itemsOrder = this.getManagementItemsOrder(this.dashboardCase).split(",");
29171
+ let dashboardItemsSearchBody = {
29172
+ stringId: Object.keys(dashboardItemsOptions)
29173
+ };
29174
+ this._caseResource.searchCases(SimpleFilter.fromCaseQuery(dashboardItemsSearchBody), dashboardItemsParams).subscribe(resultItems => {
29175
+ const itemsContent = resultItems.content;
29176
+ if (!itemsContent || !itemsContent.length || itemsContent.length < 1) {
29177
+ this.loading$.off();
29178
+ this._log.error('No dashboard items found.');
29179
+ }
29180
+ itemsContent.forEach(item => {
29181
+ const itemIndex = itemsOrder.indexOf(item.stringId);
29182
+ this.dashboardItems[itemIndex] = item;
29183
+ });
29184
+ this.itemsLoaded += 1;
29185
+ if (this.itemsLoaded == 2) {
29186
+ this.loading$.off();
29187
+ }
29188
+ });
29189
+ }
29190
+ // GET item fields
29191
+ getItemName(itemCase) {
29192
+ const i18nFieldValue = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_NAME_DATAFIELD);
29193
+ return this._languageService.getLanguage() in i18nFieldValue.translations
29194
+ ? i18nFieldValue.translations[this._languageService.getLanguage()]
29195
+ : i18nFieldValue.defaultValue;
29196
+ }
29197
+ getItemIcon(itemCase) {
29198
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_ICON_DATAFIELD);
29199
+ }
29200
+ getItemInternal(itemCase) {
29201
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_INTERNAL_DATAFIELD);
29202
+ }
29203
+ getItemExternalIcon(itemCase) {
29204
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_EXTERNAL_ICON_DATAFIELD);
29205
+ }
29206
+ getItemURL(itemCase) {
29207
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_URL_DATAFIELD);
29208
+ }
29209
+ getItemFontColor(itemCase) {
29210
+ const fontColor = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_FONT_COLOR_DATAFIELD);
29211
+ return !!fontColor && fontColor !== '' ? fontColor : 'black';
29212
+ }
29213
+ getItemFontWeight(itemCase) {
29214
+ const fontWeight = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_FONT_WEIGHT_DATAFIELD);
29215
+ return !!fontWeight && fontWeight !== '' ? fontWeight : 'normal';
29216
+ }
29217
+ getItemIconColor(itemCase) {
29218
+ const iconColor = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_ICON_COLOR_DATAFIELD);
29219
+ return !!iconColor && iconColor !== '' ? iconColor : 'black';
29220
+ }
29221
+ // GET management fields
29222
+ getManagementSimpleToolbar(itemCase) {
29223
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_SIMPLE_TOOLBAR_DATAFIELD);
29224
+ }
29225
+ getManagementProfileToolbar(itemCase) {
29226
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_TOOLBAR_DATAFIELD);
29227
+ }
29228
+ getManagementLanguageToolbar(itemCase) {
29229
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LANGUAGE_TOOLBAR_DATAFIELD);
29230
+ }
29231
+ getManagementLogoutToolbar(itemCase) {
29232
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGOUT_TOOLBAR_DATAFIELD);
29233
+ }
29234
+ getManagementName(itemCase) {
29235
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_NAME_DATAFIELD);
29236
+ }
29237
+ getManagementLogo(itemCase) {
29238
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGO_DATAFIELD);
29239
+ }
29240
+ getManagementItemsOrder(itemCase) {
29241
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEMS_ORDER_DATAFIELD);
29242
+ }
29243
+ getManagementProfileUrl(itemCase) {
29244
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_URL_DATAFIELD);
29245
+ }
29246
+ getManagementLoginUrl(itemCase) {
29247
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGIN_URL_DATAFIELD);
29248
+ }
29249
+ getFieldValue(itemCase, fieldId) {
29250
+ return itemCase.immediateData.find(immediateField => immediateField["importId"] === fieldId).value;
29251
+ }
29252
+ navigate(itemCase) {
29253
+ if (this.getItemInternal(itemCase)) {
29254
+ const itemPath = this._doubleDrawerNavigationService.getItemRoutingPath(this.dashboardItemsMapping[itemCase.stringId]);
29255
+ const nodePath = this.getFieldValue(this.dashboardItemsMapping[itemCase.stringId], 'nodePath');
29256
+ this._uriService.getNodeByPath(nodePath).subscribe(uriResource => {
29257
+ this._uriService.activeNode = uriResource;
29258
+ this._router.navigate([itemPath]);
29259
+ });
29260
+ }
29261
+ else {
29262
+ window.open(this.getItemURL(itemCase), "_blank");
29263
+ }
29264
+ }
29265
+ }
29266
+ AbstractDashboardComponent.MAIN_DASHBOARD = 'main_dashboard';
29267
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_IDENTIFIER = 'dashboard_management';
29268
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ID_DATAFIELD = 'dashboard_id';
29269
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEM_TO_MENU_ITEM_DATAFIELD = 'dashboard_item_to_menu_item';
29270
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_SIMPLE_TOOLBAR_DATAFIELD = 'simple_dashboard_toolbar';
29271
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_TOOLBAR_DATAFIELD = 'profile_dashboard_toolbar';
29272
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LANGUAGE_TOOLBAR_DATAFIELD = 'language_dashboard_toolbar';
29273
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGOUT_TOOLBAR_DATAFIELD = 'logout_dashboard_toolbar';
29274
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_NAME_DATAFIELD = 'dashboard_name';
29275
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGO_DATAFIELD = 'dashboard_logo';
29276
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEMS_ORDER_DATAFIELD = "items_order";
29277
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_URL_DATAFIELD = "profile_url";
29278
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGIN_URL_DATAFIELD = "login_url";
29279
+ AbstractDashboardComponent.DASHBOARD_ITEM_ICON_DATAFIELD = 'item_icon';
29280
+ AbstractDashboardComponent.DASHBOARD_ITEM_NAME_DATAFIELD = 'item_name';
29281
+ AbstractDashboardComponent.DASHBOARD_ITEM_URL_DATAFIELD = 'external_url';
29282
+ AbstractDashboardComponent.DASHBOARD_ITEM_INTERNAL_DATAFIELD = 'is_internal';
29283
+ AbstractDashboardComponent.DASHBOARD_ITEM_EXTERNAL_ICON_DATAFIELD = 'external_icon';
29284
+ AbstractDashboardComponent.DASHBOARD_ITEM_FONT_COLOR_DATAFIELD = 'font_color';
29285
+ AbstractDashboardComponent.DASHBOARD_ITEM_FONT_WEIGHT_DATAFIELD = 'font_weight';
29286
+ AbstractDashboardComponent.DASHBOARD_ITEM_ICON_COLOR_DATAFIELD = 'icon_color';
29287
+ AbstractDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDashboardComponent, deps: [{ token: CaseResourceService }, { token: LoggerService }, { token: UriService }, { token: i2$5.Router }, { token: LanguageService }, { token: DoubleDrawerNavigationService }], target: i0.ɵɵFactoryTarget.Component });
29288
+ AbstractDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDashboardComponent, selector: "ncc-dashboard", ngImport: i0, template: '', isInline: true });
29289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDashboardComponent, decorators: [{
29290
+ type: Component,
29291
+ args: [{
29292
+ selector: 'ncc-dashboard',
29293
+ template: ''
29294
+ }]
29295
+ }], ctorParameters: function () { return [{ type: CaseResourceService }, { type: LoggerService }, { type: UriService }, { type: i2$5.Router }, { type: LanguageService }, { type: DoubleDrawerNavigationService }]; } });
29296
+
28765
29297
  /**
28766
29298
  * Search component search mode
28767
29299
  */
@@ -28876,6 +29408,18 @@ function extractFieldValueFromData(dataSection, fieldId) {
28876
29408
  }
28877
29409
  return field.value;
28878
29410
  }
29411
+ /**
29412
+ * Checks if the data groups contain view
29413
+ * @returns true if the data contains filter
29414
+ * @throws Error if filter field is not found
29415
+ * */
29416
+ function hasView(dataSection) {
29417
+ const field = getFieldFromDataGroups(dataSection, 'view_configuration_form');
29418
+ if (field === undefined) {
29419
+ throw new Error(`Field view_configuration_form could not be resolved`);
29420
+ }
29421
+ return field.value !== null && field.value !== undefined && field.value.length > 0;
29422
+ }
28879
29423
 
28880
29424
  function addAllowedNets(allowedNets, existingAllowedNets) {
28881
29425
  if (!!allowedNets && allowedNets.length > 0) {
@@ -28895,6 +29439,9 @@ function tabbedAllowedNetsServiceFactory(factory, tabData) {
28895
29439
  * It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
28896
29440
  */
28897
29441
  function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
29442
+ if (!navigationItemTaskData) {
29443
+ return factory.createWithAllNets();
29444
+ }
28898
29445
  const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
28899
29446
  const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
28900
29447
  if (filterField === undefined) {
@@ -29067,14 +29614,24 @@ class FilterExtractionService {
29067
29614
  }
29068
29615
  return navigationItemTaskAllowedNetsServiceFactory(this._factory, this.baseAllowedNets, sliced);
29069
29616
  }
29070
- extractCompleteAdditionalFilterFromData(dataSection) {
29617
+ extractCompleteAdditionalFilterFromData(dataSection, activatedRoute) {
29071
29618
  const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
29072
29619
  if (taskRefIndex === undefined) {
29073
29620
  return undefined;
29074
29621
  }
29075
- return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1));
29622
+ return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1), activatedRoute);
29076
29623
  }
29077
- extractCompleteFilterFromData(dataSection, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
29624
+ extractCompleteFilterFromData(dataSection, activatedRoute, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
29625
+ if (!dataSection) {
29626
+ if (!activatedRoute) {
29627
+ throw new Error('ActivatedRoute not provided.');
29628
+ }
29629
+ const singleCaseId = activatedRoute.snapshot.paramMap.get('singleCaseId');
29630
+ if (!singleCaseId) {
29631
+ throw new Error('Case ID not found in route.');
29632
+ }
29633
+ return SimpleFilter.fromTaskQuery({ case: { id: singleCaseId } });
29634
+ }
29078
29635
  const filterIndex = getFieldIndexFromDataGroups(dataSection, fieldId);
29079
29636
  if (filterIndex === undefined) {
29080
29637
  return undefined;
@@ -29086,7 +29643,7 @@ class FilterExtractionService {
29086
29643
  catch (e) {
29087
29644
  throw new Error('Filter segment could not be extracted from filter field');
29088
29645
  }
29089
- const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1));
29646
+ const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1), activatedRoute);
29090
29647
  if (parentFilter !== undefined && parentFilter.type === filterSegment.type) {
29091
29648
  return filterSegment.merge(parentFilter, MergeOperator.AND);
29092
29649
  }
@@ -29362,7 +29919,7 @@ class AbstractTabbedCaseViewComponent extends AbstractCaseViewComponent {
29362
29919
  }, this._autoswitchToTaskTab, this._openExistingTab);
29363
29920
  }
29364
29921
  }
29365
- AbstractTabbedCaseViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedCaseViewComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA }, { token: OverflowService }, { token: NAE_AUTOSWITCH_TAB_TOKEN, optional: true }, { token: NAE_OPEN_EXISTING_TAB, optional: true }, { token: NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
29922
+ AbstractTabbedCaseViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedCaseViewComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA }, { token: OverflowService }, { token: NAE_AUTOSWITCH_TAB_TOKEN, optional: true }, { token: NAE_OPEN_EXISTING_TAB, optional: true }, { token: NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
29366
29923
  AbstractTabbedCaseViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTabbedCaseViewComponent, selector: "ncc-abstract-tabbed-case-view", usesInheritance: true, ngImport: i0, template: '', isInline: true });
29367
29924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedCaseViewComponent, decorators: [{
29368
29925
  type: Component,
@@ -29388,7 +29945,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29388
29945
  }, {
29389
29946
  type: Inject,
29390
29947
  args: [NAE_NEW_CASE_CREATION_CONFIGURATION_DATA]
29391
- }] }, { type: i3$1.ActivatedRoute }]; } });
29948
+ }] }, { type: i2$5.ActivatedRoute }]; } });
29392
29949
 
29393
29950
  class AbstractTabbedTaskViewComponent extends AbstractTaskViewComponent {
29394
29951
  constructor(taskViewService, _injectedTabData, _activatedRoute) {
@@ -29403,7 +29960,7 @@ class AbstractTabbedTaskViewComponent extends AbstractTaskViewComponent {
29403
29960
  this.subTaskView.unsubscribe();
29404
29961
  }
29405
29962
  }
29406
- AbstractTabbedTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedTaskViewComponent, deps: [{ token: TaskViewService }, { token: NAE_TAB_DATA }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
29963
+ AbstractTabbedTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedTaskViewComponent, deps: [{ token: TaskViewService }, { token: NAE_TAB_DATA }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
29407
29964
  AbstractTabbedTaskViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTabbedTaskViewComponent, selector: "ncc-abstract-tabbed-task-view", usesInheritance: true, ngImport: i0, template: '', isInline: true });
29408
29965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedTaskViewComponent, decorators: [{
29409
29966
  type: Component,
@@ -29414,7 +29971,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29414
29971
  }], ctorParameters: function () { return [{ type: TaskViewService }, { type: undefined, decorators: [{
29415
29972
  type: Inject,
29416
29973
  args: [NAE_TAB_DATA]
29417
- }] }, { type: i3$1.ActivatedRoute }]; } });
29974
+ }] }, { type: i2$5.ActivatedRoute }]; } });
29418
29975
 
29419
29976
  const NAE_TREE_CASE_VIEW_CONFIGURATION = new InjectionToken('NaeTreeCaseViewConfiguration');
29420
29977
 
@@ -30562,6 +31119,17 @@ class AbstractWorkflowViewComponent extends AbstractViewWithHeadersComponent {
30562
31119
  this.workflows$ = this._workflowViewService.workflows$;
30563
31120
  this.loading$ = this._workflowViewService.loading$;
30564
31121
  this.footerSize = 0;
31122
+ this.fullTextFormControl = new FormControl();
31123
+ }
31124
+ ngOnInit() {
31125
+ this.fullTextFormControl.valueChanges.pipe(debounceTime(600), filter(newValue => typeof newValue === 'string'), map((newValue) => newValue.trim())).subscribe((fulltext) => {
31126
+ if (fulltext.length === 0) {
31127
+ this._workflowViewService.clearSearchTitle();
31128
+ }
31129
+ else {
31130
+ this._workflowViewService.setSearchTitle(fulltext);
31131
+ }
31132
+ });
30565
31133
  }
30566
31134
  ngAfterViewInit() {
30567
31135
  this.initializeHeader(this.workflowHeader);
@@ -30610,7 +31178,7 @@ class AbstractWorkflowViewComponent extends AbstractViewWithHeadersComponent {
30610
31178
  }
30611
31179
  }
30612
31180
  }
30613
- AbstractWorkflowViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractWorkflowViewComponent, deps: [{ token: i1$3.MatDialog }, { token: WorkflowViewService }, { token: LoggerService }, { token: ProcessService }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31181
+ AbstractWorkflowViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractWorkflowViewComponent, deps: [{ token: i1$3.MatDialog }, { token: WorkflowViewService }, { token: LoggerService }, { token: ProcessService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
30614
31182
  AbstractWorkflowViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractWorkflowViewComponent, selector: "ncc-abstract-workflow-view", inputs: { footerSize: "footerSize", showDeleteMenu: "showDeleteMenu" }, viewQueries: [{ propertyName: "workflowHeader", first: true, predicate: ["header"], descendants: true }, { propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
30615
31183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractWorkflowViewComponent, decorators: [{
30616
31184
  type: Component,
@@ -30618,7 +31186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30618
31186
  selector: 'ncc-abstract-workflow-view',
30619
31187
  template: ''
30620
31188
  }]
30621
- }], ctorParameters: function () { return [{ type: i1$3.MatDialog }, { type: WorkflowViewService }, { type: LoggerService }, { type: ProcessService }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { footerSize: [{
31189
+ }], ctorParameters: function () { return [{ type: i1$3.MatDialog }, { type: WorkflowViewService }, { type: LoggerService }, { type: ProcessService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { footerSize: [{
30622
31190
  type: Input
30623
31191
  }], showDeleteMenu: [{
30624
31192
  type: Input
@@ -30684,7 +31252,7 @@ class AbstractDefaultCaseListComponent extends TabbedVirtualScrollComponent {
30684
31252
  });
30685
31253
  }
30686
31254
  }
30687
- AbstractDefaultCaseListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultCaseListComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31255
+ AbstractDefaultCaseListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultCaseListComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
30688
31256
  AbstractDefaultCaseListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDefaultCaseListComponent, selector: "ncc-abstract-default-case-list", inputs: { selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", showCasePanelIcon: "showCasePanelIcon", showDeleteMenu: "showDeleteMenu", textEllipsis: "textEllipsis", width: "width", redirectEnabled: "redirectEnabled" }, outputs: { caseClick: "caseClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
30689
31257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultCaseListComponent, decorators: [{
30690
31258
  type: Component,
@@ -30697,7 +31265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30697
31265
  }, {
30698
31266
  type: Inject,
30699
31267
  args: [NAE_TAB_DATA]
30700
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { selectedHeaders$: [{
31268
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { selectedHeaders$: [{
30701
31269
  type: Input
30702
31270
  }], responsiveBody: [{
30703
31271
  type: Input
@@ -30737,7 +31305,7 @@ class AbstractCaseListComponent extends AbstractDefaultCaseListComponent {
30737
31305
  this._caseViewService.nextPage(this.viewport.getRenderedRange(), this.viewport.getDataLength());
30738
31306
  }
30739
31307
  }
30740
- AbstractCaseListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31308
+ AbstractCaseListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
30741
31309
  AbstractCaseListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCaseListComponent, selector: "ncc-abstract-case-list", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
30742
31310
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListComponent, decorators: [{
30743
31311
  type: Component,
@@ -30750,7 +31318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30750
31318
  }, {
30751
31319
  type: Inject,
30752
31320
  args: [NAE_TAB_DATA]
30753
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { viewport: [{
31321
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { viewport: [{
30754
31322
  type: ViewChild,
30755
31323
  args: [CdkVirtualScrollViewport]
30756
31324
  }] } });
@@ -30781,7 +31349,7 @@ class AbstractCaseListPaginatorComponent extends AbstractDefaultCaseListComponen
30781
31349
  return caze.stringId;
30782
31350
  }
30783
31351
  }
30784
- AbstractCaseListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListPaginatorComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i3$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31352
+ AbstractCaseListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListPaginatorComponent, deps: [{ token: CaseViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
30785
31353
  AbstractCaseListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCaseListPaginatorComponent, selector: "ncc-abstract-case-list-paginator", inputs: { approval: "approval", disabled: "disabled" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
30786
31354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListPaginatorComponent, decorators: [{
30787
31355
  type: Component,
@@ -30794,7 +31362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30794
31362
  }, {
30795
31363
  type: Inject,
30796
31364
  args: [NAE_TAB_DATA]
30797
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { approval: [{
31365
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { approval: [{
30798
31366
  type: Input
30799
31367
  }], disabled: [{
30800
31368
  type: Input
@@ -31055,41 +31623,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31055
31623
  type: Input
31056
31624
  }] } });
31057
31625
 
31058
- class TaskConst {
31059
- }
31060
- TaskConst.TRANSITION_ID = 'transitionId';
31061
31626
  class AbstractSingleTaskViewComponent extends AbstractViewWithHeadersComponent {
31062
- constructor(taskViewService, activatedRoute, baseFilter) {
31627
+ constructor(taskViewService, activatedRoute) {
31063
31628
  super(taskViewService, activatedRoute);
31064
31629
  this.taskViewService = taskViewService;
31065
- this.baseFilter = baseFilter;
31066
31630
  this.initiallyExpanded = true;
31067
31631
  this.preventCollapse = true;
31068
31632
  this.noTaskPresent = new EventEmitter();
31069
- this.taskPanelData = this.taskViewService.tasks$.pipe(map(tasks => tasks.find(panelData => this.isTaskMatchingFilter(panelData, baseFilter.filter.getRequestBody())))).pipe(tap(panelData => {
31633
+ this.taskPanelData = this.taskViewService.tasks$.pipe(map(tasks => tasks?.length > 0 ? tasks[0] : undefined), tap(panelData => {
31070
31634
  if (!!panelData) {
31071
31635
  panelData.initiallyExpanded = true;
31636
+ panelData.task.assignPolicy = AssignPolicy.auto;
31637
+ this.finishTitle = panelData.task.finishTitle;
31072
31638
  }
31073
31639
  }));
31074
31640
  this.loading$ = this.taskViewService.loading$;
31075
31641
  }
31076
- ngOnDestroy() {
31077
- super.ngOnDestroy();
31078
- if (!!this.subRoute) {
31079
- this.subRoute.unsubscribe();
31080
- }
31081
- if (!!this.subPanelData) {
31082
- this.subPanelData.unsubscribe();
31083
- }
31084
- }
31085
31642
  get task$() {
31086
31643
  return this.taskPanelData;
31087
31644
  }
31088
- isTaskMatchingFilter(panelData, taskSearchRequestBody) {
31089
- return panelData.task.stringId === taskSearchRequestBody.stringId || panelData.task.transitionId === taskSearchRequestBody.transitionId;
31090
- }
31091
31645
  }
31092
- AbstractSingleTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, deps: [{ token: TaskViewService }, { token: i3$1.ActivatedRoute }, { token: NAE_BASE_FILTER }], target: i0.ɵɵFactoryTarget.Component });
31646
+ AbstractSingleTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, deps: [{ token: TaskViewService }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31093
31647
  AbstractSingleTaskViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSingleTaskViewComponent, selector: "ncc-abstract-single-task-view", inputs: { initiallyExpanded: "initiallyExpanded", preventCollapse: "preventCollapse" }, outputs: { noTaskPresent: "noTaskPresent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
31094
31648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, decorators: [{
31095
31649
  type: Component,
@@ -31097,10 +31651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31097
31651
  selector: 'ncc-abstract-single-task-view',
31098
31652
  template: ''
31099
31653
  }]
31100
- }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i3$1.ActivatedRoute }, { type: undefined, decorators: [{
31101
- type: Inject,
31102
- args: [NAE_BASE_FILTER]
31103
- }] }]; }, propDecorators: { initiallyExpanded: [{
31654
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { initiallyExpanded: [{
31104
31655
  type: Input
31105
31656
  }], preventCollapse: [{
31106
31657
  type: Input
@@ -31108,6 +31659,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31108
31659
  type: Output
31109
31660
  }] } });
31110
31661
 
31662
+ class AbstractTabbedSingleTaskViewComponent extends AbstractSingleTaskViewComponent {
31663
+ constructor(taskViewService, _injectedTabData, _activatedRoute) {
31664
+ super(taskViewService, _activatedRoute);
31665
+ this._injectedTabData = _injectedTabData;
31666
+ this.subTaskView = taskViewService.closeTab.subscribe(() => {
31667
+ _injectedTabData.tabViewRef.closeTabIndex(_injectedTabData.tabViewRef.currentlySelectedTab());
31668
+ });
31669
+ }
31670
+ ngOnDestroy() {
31671
+ super.ngOnDestroy();
31672
+ this.subTaskView.unsubscribe();
31673
+ }
31674
+ }
31675
+ AbstractTabbedSingleTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedSingleTaskViewComponent, deps: [{ token: TaskViewService }, { token: NAE_TAB_DATA }, { token: i2$5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
31676
+ AbstractTabbedSingleTaskViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTabbedSingleTaskViewComponent, selector: "ncc-abstract-tabbed-single-task-view", usesInheritance: true, ngImport: i0, template: '', isInline: true });
31677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedSingleTaskViewComponent, decorators: [{
31678
+ type: Component,
31679
+ args: [{
31680
+ selector: 'ncc-abstract-tabbed-single-task-view',
31681
+ template: ''
31682
+ }]
31683
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: undefined, decorators: [{
31684
+ type: Inject,
31685
+ args: [NAE_TAB_DATA]
31686
+ }] }, { type: i2$5.ActivatedRoute }]; } });
31687
+
31111
31688
  /* INTERFACES */
31112
31689
 
31113
31690
  class PublicProcessService extends ProcessService {
@@ -32403,6 +32980,7 @@ class ProcessList {
32403
32980
  if (this.loading) {
32404
32981
  return;
32405
32982
  }
32983
+ const processes = new Subject();
32406
32984
  this._loading$.on();
32407
32985
  this._resources.getAll().pipe(catchError(err => {
32408
32986
  this._log.error('Failed to load Petri nets', err);
@@ -32434,8 +33012,10 @@ class ProcessList {
32434
33012
  cache[net.identifier].newestVersion = cache[net.identifier].processes[0].version;
32435
33013
  });
32436
33014
  this._processes = Object.values(cache).sort();
33015
+ processes.next(this._processes);
32437
33016
  this._loading$.off();
32438
33017
  });
33018
+ return processes.asObservable();
32439
33019
  }
32440
33020
  prepareToTryAgainToLoadRoles(item) {
32441
33021
  if (!item || !item.emptyRoles) {
@@ -32562,17 +33142,24 @@ class AbstractRoleAssignmentComponent {
32562
33142
  constructor(_service, _userService) {
32563
33143
  this._service = _service;
32564
33144
  this._userService = _userService;
33145
+ this.filteredProcesses = [];
32565
33146
  this.searchUserControl = new FormControl();
33147
+ this.searchNetControl = new FormControl();
32566
33148
  this.SEARCH_DEBOUNCE_TIME = 600;
32567
33149
  this.users = this._service.userList;
32568
33150
  this.nets = this._service.processList;
32569
33151
  this.userMultiSelect = true;
32570
33152
  }
32571
33153
  ngOnInit() {
32572
- this.nets.loadProcesses();
33154
+ this.nets.loadProcesses().subscribe(processes => {
33155
+ this.filteredProcesses = processes;
33156
+ });
32573
33157
  this.subValueChanges = this.searchUserControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
32574
33158
  this.users.reload(searchText);
32575
33159
  });
33160
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33161
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33162
+ });
32576
33163
  }
32577
33164
  ngAfterViewInit() {
32578
33165
  this.subUsers = this.users.usersReload$.subscribe(() => {
@@ -32584,9 +33171,11 @@ class AbstractRoleAssignmentComponent {
32584
33171
  ngOnDestroy() {
32585
33172
  this._userService.reload();
32586
33173
  this.subValueChanges.unsubscribe();
33174
+ this.subNetValueChanges.unsubscribe();
32587
33175
  this.subUsers.unsubscribe();
32588
33176
  this.users = undefined;
32589
33177
  this.nets = undefined;
33178
+ this.filteredProcesses = undefined;
32590
33179
  }
32591
33180
  loadNextUserPage() {
32592
33181
  if (!this.viewport) {
@@ -32715,6 +33304,9 @@ class AbstractUserInviteComponent {
32715
33304
  this._signUpService = _signUpService;
32716
33305
  this._snackBar = _snackBar;
32717
33306
  this._translate = _translate;
33307
+ this.filteredProcesses = [];
33308
+ this.SEARCH_DEBOUNCE_TIME = 600;
33309
+ this.searchNetControl = new FormControl();
32718
33310
  this.nets = this._userInviteService.processList;
32719
33311
  this.loading = new LoadingEmitter();
32720
33312
  this.invitedEmailControl = new FormControl('', [Validators.email, Validators.required]);
@@ -32725,8 +33317,18 @@ class AbstractUserInviteComponent {
32725
33317
  return this._orgList.groups;
32726
33318
  }
32727
33319
  ngOnInit() {
32728
- this.nets.loadProcesses();
33320
+ this.nets.loadProcesses().subscribe(processes => {
33321
+ this.filteredProcesses = processes;
33322
+ });
32729
33323
  this._orgList.loadGroups();
33324
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33325
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33326
+ });
33327
+ }
33328
+ ngOnDestroy() {
33329
+ this.subNetValueChanges.unsubscribe();
33330
+ this.nets = undefined;
33331
+ this.filteredProcesses = undefined;
32730
33332
  }
32731
33333
  removeGroup(org) {
32732
33334
  const itemIndex = this.invitedGroups.findIndex(g => g.id === org.id);
@@ -32983,17 +33585,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
32983
33585
  class AbstractLdapGroupRoleAssignmentComponent {
32984
33586
  constructor(_service) {
32985
33587
  this._service = _service;
33588
+ this.filteredProcesses = [];
32986
33589
  this.searchLdapGroupControl = new FormControl();
33590
+ this.searchNetControl = new FormControl();
32987
33591
  this.SEARCH_DEBOUNCE_TIME = 600;
32988
33592
  this.ldapGroup = this._service.ldapGroupList;
32989
33593
  this.nets = this._service.processList;
32990
33594
  this.ldapGroupMultiSelect = true;
32991
33595
  }
32992
33596
  ngOnInit() {
32993
- this.nets.loadProcesses();
33597
+ this.nets.loadProcesses().subscribe(processes => {
33598
+ this.filteredProcesses = processes;
33599
+ });
32994
33600
  this.subValueChanges = this.searchLdapGroupControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
32995
33601
  this.ldapGroup.reload(searchText);
32996
33602
  });
33603
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33604
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33605
+ });
32997
33606
  }
32998
33607
  ngAfterViewInit() {
32999
33608
  this.subLdapGroup = this.ldapGroup.ldapGroupsReload$.subscribe(() => {
@@ -33006,7 +33615,9 @@ class AbstractLdapGroupRoleAssignmentComponent {
33006
33615
  this.subValueChanges.unsubscribe();
33007
33616
  this.subLdapGroup.unsubscribe();
33008
33617
  this.ldapGroup = undefined;
33618
+ this.subNetValueChanges.unsubscribe();
33009
33619
  this.nets = undefined;
33620
+ this.filteredProcesses = undefined;
33010
33621
  }
33011
33622
  loadNextLdapGroupPage() {
33012
33623
  if (!this.viewport) {
@@ -33109,11 +33720,12 @@ function mapToContent(source, filter, pagination) {
33109
33720
  /**
33110
33721
  * Converts an {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token into {@link NAE_BASE_FILTER}
33111
33722
  * @param extractionService
33723
+ * @param activatedRoute
33112
33724
  * @param navigationItemTaskData a navigation item task containing the aggregated data representing a navigation item
33113
33725
  */
33114
- function navigationItemTaskFilterFactory(extractionService, navigationItemTaskData) {
33726
+ function navigationItemTaskFilterFactory(extractionService, activatedRoute, navigationItemTaskData) {
33115
33727
  return {
33116
- filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData)
33728
+ filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData, activatedRoute)
33117
33729
  };
33118
33730
  }
33119
33731
 
@@ -33128,6 +33740,9 @@ function navigationItemTaskFilterFactory(extractionService, navigationItemTaskDa
33128
33740
  * field, if the filter metadata allow it and the filter is a task filter
33129
33741
  */
33130
33742
  function navigationItemTaskCategoryFactory(categoryResolverService, navigationItemTaskData, defaultCaseSearchCategories, defaultTaskSearchCategories) {
33743
+ if (!navigationItemTaskData) {
33744
+ return [];
33745
+ }
33131
33746
  const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
33132
33747
  if (filterField === undefined) {
33133
33748
  throw new Error(`Provided navigation item task data does not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'! Search categories cannot be generated from it!`);
@@ -33255,7 +33870,7 @@ class ContainsPipe {
33255
33870
  if (value === null || value === undefined)
33256
33871
  return false;
33257
33872
  if (Array.isArray(value))
33258
- return value.includes(toCheck);
33873
+ return value?.includes(toCheck);
33259
33874
  if (value instanceof Set || value instanceof Map)
33260
33875
  return value.has(toCheck);
33261
33876
  return false;
@@ -34368,11 +34983,11 @@ class TestViewService extends ViewService {
34368
34983
  super([], config, router, logger);
34369
34984
  }
34370
34985
  }
34371
- TestViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, deps: [{ token: ConfigurationService }, { token: i3$1.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
34986
+ TestViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, deps: [{ token: ConfigurationService }, { token: i2$5.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
34372
34987
  TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
34373
34988
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
34374
34989
  type: Injectable
34375
- }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i3$1.Router }, { type: LoggerService }]; } });
34990
+ }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$5.Router }, { type: LoggerService }]; } });
34376
34991
 
34377
34992
  /**
34378
34993
  * A utility class that mock any pageable endpoint that takes one parameter
@@ -34740,7 +35355,7 @@ class Subgrid {
34740
35355
  * @returns the base identifier, if it already is unique. A unique variation on the base identifier if it is already in use.
34741
35356
  */
34742
35357
  assureUniqueness(identifier) {
34743
- const alphaNumIdentifier = 'x' + identifier.replace(/[^0-9a-z]/gi, '');
35358
+ const alphaNumIdentifier = 'x' + identifier?.replace(/[^0-9a-z]/gi, '');
34744
35359
  if (!this._existingIdentifiers.has(alphaNumIdentifier)) {
34745
35360
  this._existingIdentifiers.add(alphaNumIdentifier);
34746
35361
  return alphaNumIdentifier;
@@ -36003,5 +36618,5 @@ const BaseFilterFactoryProvider = {
36003
36618
  * Generated bundle index. Do not edit.
36004
36619
  */
36005
36620
 
36006
- export { AbstractAddChildNodeComponent, AbstractAdvancedSearchComponent, AbstractAuthenticationOverlayComponent, AbstractBaseDataFieldComponent, AbstractBooleanDefaultFieldComponent, AbstractBooleanFieldComponent, AbstractBreadcrumbsComponent, AbstractButtonDefaultFieldComponent, AbstractButtonFieldComponent, AbstractCaseListComponent, AbstractCaseListPaginatorComponent, AbstractCasePanelComponent, AbstractCaseRefDefaultComponent, AbstractCaseViewComponent, AbstractChangePasswordComponent, AbstractCountCardComponent, AbstractCurrencyNumberFieldComponent, AbstractCustomCardComponent, AbstractDashboardBarChartTextFieldComponent, AbstractDashboardContentComponent, AbstractDashboardIframeTextFieldComponent, AbstractDashboardLineChartTextFieldComponent, AbstractDashboardPieChartTextFieldComponent, AbstractDashboardPortalTextFieldComponent, AbstractDashboardTextFieldComponent, AbstractDataFieldTemplateComponent, AbstractDateDefaultFieldComponent, AbstractDateFieldComponent, AbstractDateTimeDefaultFieldComponent, AbstractDateTimeFieldComponent, AbstractDefaultNumberFieldComponent, AbstractEditModeComponent, AbstractEmailSubmissionFormComponent, AbstractEnumerationAutocompleteDynamicFieldComponent, AbstractEnumerationAutocompleteSelectFieldComponent, AbstractEnumerationCaseRefComponent, AbstractEnumerationFieldComponent, AbstractEnumerationIconFieldComponent, AbstractEnumerationListFieldComponent, AbstractEnumerationSelectFieldComponent, AbstractEnumerationStepperFieldComponent, AbstractFieldComponentResolverComponent, AbstractFileDefaultFieldComponent, AbstractFileFieldComponent, AbstractFileListDefaultFieldComponent, AbstractFileListFieldComponent, AbstractFilterDefaultFieldComponent, AbstractFilterFieldComponent, AbstractFilterFieldContentComponent, AbstractFilterFieldTabViewComponent, AbstractFilterFieldTabViewContentComponent, AbstractFilterSelectorComponent, AbstractFilterSelectorListItemComponent, AbstractForgottenPasswordComponent, AbstractFulltextSearchComponent, AbstractGroupNavigationComponentResolverComponent, AbstractHeaderComponent, AbstractHeaderService, AbstractHtmlTextareaFieldComponent, AbstractI18nDividerFieldComponent, AbstractI18nErrorsComponent, AbstractI18nFieldComponent, AbstractI18nTextFieldComponent, AbstractIframeCardComponent, AbstractImmediateFilterTextComponent, AbstractImmediateFilterTextContentComponent, AbstractImportNetComponent, AbstractInternalLinkComponent, AbstractLanguageSelectorComponent, AbstractLdapGroupRoleAssignmentComponent, AbstractLegalNoticeComponent, AbstractLoadFilterComponent, AbstractLoadingModeComponent, AbstractLoggerService, AbstractLoginFormComponent, AbstractLogoutShortcutComponent, AbstractMultiUserAssignComponent, AbstractMultiUserAssignItemComponent, AbstractMultiUserAssignListComponent, AbstractMultichoiceAutocompleteFieldComponentComponent, AbstractMultichoiceCaseRefComponent, AbstractMultichoiceFieldComponent, AbstractMultichoiceListFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractNavigationDoubleDrawerComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractNavigationTreeComponent, AbstractNewCaseComponent, AbstractNumberDecimalFieldComponent, AbstractNumberErrorsComponent, AbstractNumberFieldComponent, AbstractOptionSelectorComponent, AbstractPanelComponent, AbstractPanelItemComponent, AbstractPasswordTextFieldComponent, AbstractProfileComponent, AbstractQuickPanelComponent, AbstractRegistrationComponent, AbstractRegistrationFormComponent, AbstractRemoveNodeComponent, AbstractResourceProvider, AbstractResourceService, AbstractRichTextareaFieldComponent, AbstractRoleAssignmentComponent, AbstractSaveFilterComponent, AbstractSearchClauseComponent, AbstractSearchComponent, AbstractSearchConfigurationInputComponent, AbstractSearchModeComponent, AbstractSearchOperandInputComponent, AbstractSearchPredicateComponent, AbstractSessionIdleComponent, AbstractSideMenuContainerComponent, AbstractSimpleTextFieldComponent, AbstractSingleTaskComponent, AbstractSingleTaskViewComponent, AbstractSortModeComponent, AbstractSortableViewComponent, AbstractStringCollectionDefaultFieldComponent, AbstractTabCreationDetectorComponent, AbstractTabViewComponent, AbstractTabbedCaseViewComponent, AbstractTabbedTaskViewComponent, AbstractTaskContentComponent, AbstractTaskListComponent, AbstractTaskListPaginationComponent, AbstractTaskPanelComponent, AbstractTaskRefDashboardFieldComponent, AbstractTaskRefDashboardTileComponent, AbstractTaskRefFieldComponent, AbstractTaskRefListFieldComponent, AbstractTaskViewComponent, AbstractTextErrorsComponent, AbstractTextFieldComponent, AbstractTextareaFieldComponent, AbstractToolbarComponent, AbstractTreeComponent, AbstractTreeTaskContentComponent, AbstractUserAssignComponent, AbstractUserAssignItemComponent, AbstractUserAssignListComponent, AbstractUserCardComponent, AbstractUserDefaultFieldComponent, AbstractUserFieldComponent, AbstractUserImpersonateComponent, AbstractUserInviteComponent, AbstractUserListDefaultFieldComponent, AbstractUserListFieldComponent, AbstractViewWithHeadersComponent, AbstractWorkflowPanelComponent, AbstractWorkflowViewComponent, AccessService, ActiveGroupService, AdvancedSearchComponentInitializationService, AfterAction, AlertDialogComponent, AlertDialogModule, AllowedNetsService, AllowedNetsServiceFactory, AnonymousAuthenticationInterceptor, AnonymousService, AssignPolicy, AssignPolicyService, AssignTaskService, AuthenticationGuardService, AuthenticationInterceptor, AuthenticationMethodService, AuthenticationModule, AuthenticationService, AuthorityGuardService, AutocompleteCategory, BOOLEAN_VALUE_LABEL_ENABLED, BaseAllowedNetsService, BaseFilterFactoryProvider, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CASE_ID, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, CaseResourceServiceProvider, CaseRole, CaseSearch, CaseSimpleDataset, CaseStringId, CaseTask, CaseTitle, CaseTreeNode, CaseTreeService, CaseViewService, CaseVisualId, Categories, Category, CategoryFactory, CategoryResolverService, ChangedFieldsService, ClausePredicate, ComponentPrefixes, ComponentRegistryService, ConfigParams, ConfigurationInput, ConfigurationService, ConfirmDialogComponent, ConfirmDialogModule, ConsoleLogPublisher, ContainsPipe, CovalentModule, CurrencyModule, CustomDateAdapter, DATA_FIELD_PORTAL_DATA, DATE_FORMAT, DATE_FORMAT_STRING, DATE_TIME_FORMAT, DATE_TIME_FORMAT_STRING, DEFAULT, DEFAULT_LANGUAGE_CODE, Dashboard, DashboardCardTypes, DashboardMultiData, DashboardResourceService, DashboardSingleData, DataField, DataFieldsModule, DataFocusPolicy, DataFocusPolicyService, DataGroupAlignment, DatafieldMapKey, DateField, DateTimeField, DefaultSearchCategoriesModule, DelegateTaskService, DialogModule, DialogService, DynamicEnumerationField, DynamicNavigationRouteProviderService, EditableClausePredicate, EditableClausePredicateWithGenerators, EditableElementaryPredicate, EditablePredicate, EditablePredicateWithGenerator, ElementaryPredicate, EnumerationAutocompleteFilterProperty, EnumerationField, EnumerationFieldValidation, Equals, EqualsDate, ErrorSnackBarComponent, EventConstants, EventQueueService, EventService, FieldAlignment, FieldConverterService, FieldTypeResource, FileField, FileListField, FileListFieldValidation, FilePreviewType, FileUploadMIMEType, FileUploadModel, Filter, FilterExtractionService, FilterField, FilterRepository, FilterType, FilteredArray, FinishPolicy, FinishPolicyService, FinishTaskService, FrontActionModule, FrontActionRegistryService, FrontActionService, GenericSnackBarComponent, GroupGuardService, GroupNavigationComponentResolverService, GroupNavigationConstants, HeaderColumn, HeaderColumnType, HeaderMode, HeaderSearchService, HeaderType, HttpLoaderFactory, I18nField, I18nFieldValidation, ImpersonationService, ImpersonationUserListService, ImpersonationUserResourceService, ImpersonationUserSelectService, InRange, InRangeDate, IncrementingCounter, IsEmptyPipe, IsNonEmptyPipe, IsNull, LEFT_DRAWER_DEFAULT_WIDTH, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MENU_IDENTIFIERS, MaterialAppearance, MaterialModule, MenuOrder, MergeOperator, MergedFilter, MockAuthenticationMethodService, MockAuthenticationService, MockEndpoint, MockProfileService, MockSignUpService, MockUserPreferenceService, MockUserResourceService, MockUserService, MoreThan, MoreThanDate, MoreThanDateTime, MultichoiceAutocompleteFilterProperty, MultichoiceField, NAE_ADMIN_IMPERSONATE_COMPONENT, NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT, NAE_ASYNC_RENDERING_CONFIGURATION, NAE_AUTOSWITCH_TAB_TOKEN, NAE_BASE_FILTER, NAE_CASE_REF_CREATE_CASE, NAE_CASE_REF_DATAFIELD, NAE_CASE_REF_SEARCH, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_HEADERS, NAE_DEFAULT_LANGUAGE, NAE_DEFAULT_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_IMPORT_NET_COMPONENT, NAE_IMPORT_NET_DIALOG_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, NAE_MULTI_USER_ASSIGN_COMPONENT, NAE_MULTI_USER_ASSIGN_DIALOG_COMPONENT, NAE_NAVIGATION_ITEM_TASK_DATA, NAE_NET_ALL_VERSIONS, NAE_NET_VERSION_VISIBLE, NAE_NEW_CASE_COMPONENT, NAE_NEW_CASE_CONFIGURATION, NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, NAE_NEW_CASE_DIALOG_COMPONENT, NAE_OPEN_EXISTING_TAB, NAE_OPTION_SELECTOR_COMPONENT, NAE_OPTION_SELECTOR_DIALOG_COMPONENT, NAE_PREFERRED_TASK_ENDPOINT, NAE_ROUTING_CONFIGURATION_PATH, NAE_SAVE_FILTER_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT, NAE_SEARCH_CATEGORIES, NAE_SEARCH_COMPONENT_CONFIGURATION, NAE_SIDE_MENU_CONTROL, NAE_SNACKBAR_HORIZONTAL_POSITION, NAE_SNACKBAR_VERTICAL_POSITION, NAE_TAB_DATA, NAE_TASK_FORCE_OPEN, NAE_TASK_OPERATIONS, NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, NAE_TASK_VIEW_COMPONENT, NAE_TASK_VIEW_CONFIGURATION, NAE_TREE_CASE_VIEW_CONFIGURATION, NAE_URI_NODE_CASES_PAGE_SIZE, NAE_USER_ASSIGN_COMPONENT, NAE_USER_ASSIGN_DIALOG_COMPONENT, NAE_USER_IMPERSONATE_COMPONENT, NAE_USER_IMPERSONATE_DIALOG_COMPONENT, NAE_VIEW_ID, NAE_VIEW_ID_SEGMENT, NAE_WORKFLOW_SERVICE_CONFIRM_DELETE, NAE_WORKFLOW_SERVICE_FILTER, Net, NetAttributeAutocompleteCategory, NetgrifPaginatorIntl, NextGroupService, NoConfigurationAutocompleteCategory, NoConfigurationCategory, NoConfigurationUserAutocompleteCategory, NotEquals, NotEqualsDate, NotEqualsDateTime, NullAuthenticationService, NullTaskOperations, NumberField, NumberFieldValidation, OLD_PASSWORD, OpenedTab, Operator, OperatorResolverService, OperatorService, OperatorTemplatePart, OperatorTemplatePartType, Operators, OrganizationListService, OverflowService, PASSWORD, PETRI_NET_ID, PUBLISHERS, PageLoadRequestContext, PaginationParams, PaginationSort, PaperViewService, PermissionService, PermissionType, PetriNetResourceService, PetriNetResourceServiceProvider, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProcessServiceProvider, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, RIGHT_DRAWER_DEFAULT_MIN_WIDTH, RIGHT_DRAWER_DEFAULT_WIDTH, RIGHT_DRAWER_MAX_WIDTH, RIGHT_SIDE_INIT_PAGE_SIZE, RIGHT_SIDE_NEW_PAGE_SIZE, RedirectService, ResourceProvider, ResultWithAfterActions, RoleAssignmentLdapGroupService, RoleAssignmentService, RoleGuardService, RoutingBuilderService, SETTINGS_TRANSITION_ID, SearchIndex, SearchIndexResolverService, SearchInputType, SearchMode, SearchService, SelectedCaseService, SessionIdleTimerService, SessionService, SideMenuControl, SideMenuRef, SideMenuService, SideMenuSize, SignUpModule, SignUpService, SimpleFilter, SingleTaskContentService, SnackBarComponent, SnackBarHorizontalPosition, SnackBarModule, SnackBarService, SnackBarVerticalPosition, SpinnerOverlayService, StringCollectionField, Subgrid, SubjectTaskOperations, Substring, SuccessSnackBarComponent, TRANSITION_ID, TabLabelStream, TabView, TabbedVirtualScrollComponent, TaskAssignee, TaskConst, TaskContentService, TaskDataService, TaskElementType, TaskEndpoint, TaskEvent, TaskEventService, TaskHandlingService, TaskHeaderService, TaskMetaField, TaskNetAttributeAutocompleteCategory, TaskProcess, TaskRefComponents, TaskRefDashboardConstants, TaskRefDashboardTileConstants, TaskRefField, TaskRequestStateService, TaskResourceService, TaskResourceServiceProvider, TaskRole, TaskTask, TaskViewService, TemplateAppearance, TestCaseBaseFilterProvider, TestCaseViewAllowedNetsFactory, TestConfigurationService, TestMockDependenciesModule, TestNoAllowedNetsFactory, TestTaskBaseFilterProvider, TestTaskViewAllowedNetsFactory, TestViewService, TextAreaField, TextAreaHeight, TextField, TextFieldComponent, TextFieldValidation, TextFieldView, TranslateLibModule, TreeCaseViewService, TreePetriflowIdentifiers, TreeTaskContentService, UnlimitedTaskContentService, UriContentType, UriResourceService, UriService, User, UserAutocomplete, UserComparatorService, UserField, UserFilterConstants, UserFiltersService, UserImpersonationConstants, UserInviteService, UserListField, UserListService, UserListValue, UserPreferenceService, UserResourceService, UserService, UserTransformer, UserValue, UtilityModule, ViewIdService, ViewService, WarningSnackBarComponent, WorkflowHeaderService, WorkflowMetaField, WorkflowViewService, WrappedBoolean, arrayToObservable, authenticationServiceFactory, clearTimeInformation, configureCategory, createMockCase, createMockCaseOutcome, createMockDataGroup, createMockDependencies, createMockField, createMockGetDataOutcome, createMockImmediateData, createMockNet, createMockPage, createMockPetriNetOutcome, createMockSetDataOutcome, createMockTask, createMockTaskOutcome, createSortParam, createTaskEventNotification, decodeBase64, defaultCaseSearchCategoriesFactory, defaultTaskSearchCategoriesFactory, destroySubscription, encodeBase64, extractFieldValueFromData, extractFilterFieldFromData, extractFilterFromData, extractFilterFromFilterField, extractIconAndTitle, extractRoles, extractSearchTypeFromData, getField, getFieldFromDataGroups, getFieldIndex, getFieldIndexFromDataGroups, getImmediateData, getNetAndCreateCase, groupNavigationViewIdSegmentFactory, hasContent, loadAllPages, mockUserAutocompleteValue, navigationItemCaseViewDefaultHeadersFactory, navigationItemTaskAllowedNetsServiceFactory, navigationItemTaskCategoryFactory, navigationItemTaskFilterFactory, navigationItemTaskViewDefaultHeadersFactory, ofVoid, processMessageResponse, publicBaseFilterFactory, publicFactoryResolver, redirectAction, refreshTree, reloadTaskAction, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, toMoment, validateTaskAction };
36621
+ export { AbstractAddChildNodeComponent, AbstractAdvancedSearchComponent, AbstractAuthenticationOverlayComponent, AbstractBaseDataFieldComponent, AbstractBooleanDefaultFieldComponent, AbstractBooleanFieldComponent, AbstractBreadcrumbsComponent, AbstractButtonDefaultFieldComponent, AbstractButtonFieldComponent, AbstractCaseListComponent, AbstractCaseListPaginatorComponent, AbstractCasePanelComponent, AbstractCaseRefDefaultComponent, AbstractCaseViewComponent, AbstractChangePasswordComponent, AbstractCountCardComponent, AbstractCurrencyNumberFieldComponent, AbstractCustomCardComponent, AbstractDashboardBarChartTextFieldComponent, AbstractDashboardComponent, AbstractDashboardContentComponent, AbstractDashboardIframeTextFieldComponent, AbstractDashboardLineChartTextFieldComponent, AbstractDashboardPieChartTextFieldComponent, AbstractDashboardPortalTextFieldComponent, AbstractDashboardTextFieldComponent, AbstractDataFieldTemplateComponent, AbstractDateDefaultFieldComponent, AbstractDateFieldComponent, AbstractDateTimeDefaultFieldComponent, AbstractDateTimeFieldComponent, AbstractDefaultNumberFieldComponent, AbstractEditModeComponent, AbstractEmailSubmissionFormComponent, AbstractEnumerationAutocompleteDynamicFieldComponent, AbstractEnumerationAutocompleteSelectFieldComponent, AbstractEnumerationCaseRefComponent, AbstractEnumerationFieldComponent, AbstractEnumerationIconFieldComponent, AbstractEnumerationListFieldComponent, AbstractEnumerationSelectFieldComponent, AbstractEnumerationStepperFieldComponent, AbstractFieldComponentResolverComponent, AbstractFileDefaultFieldComponent, AbstractFileFieldComponent, AbstractFileListDefaultFieldComponent, AbstractFileListFieldComponent, AbstractFilterDefaultFieldComponent, AbstractFilterFieldComponent, AbstractFilterFieldContentComponent, AbstractFilterFieldTabViewComponent, AbstractFilterFieldTabViewContentComponent, AbstractFilterSelectorComponent, AbstractFilterSelectorListItemComponent, AbstractForgottenPasswordComponent, AbstractFulltextSearchComponent, AbstractGroupNavigationComponentResolverComponent, AbstractHeaderComponent, AbstractHeaderService, AbstractHtmlTextareaFieldComponent, AbstractI18nDividerFieldComponent, AbstractI18nErrorsComponent, AbstractI18nFieldComponent, AbstractI18nTextFieldComponent, AbstractIframeCardComponent, AbstractImmediateFilterTextComponent, AbstractImmediateFilterTextContentComponent, AbstractImportNetComponent, AbstractInternalLinkComponent, AbstractLanguageSelectorComponent, AbstractLdapGroupRoleAssignmentComponent, AbstractLegalNoticeComponent, AbstractLoadFilterComponent, AbstractLoadingModeComponent, AbstractLoggerService, AbstractLoginFormComponent, AbstractLogoutShortcutComponent, AbstractMultiUserAssignComponent, AbstractMultiUserAssignItemComponent, AbstractMultiUserAssignListComponent, AbstractMultichoiceAutocompleteFieldComponentComponent, AbstractMultichoiceCaseRefComponent, AbstractMultichoiceFieldComponent, AbstractMultichoiceListFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractNavigationDoubleDrawerComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractNavigationTreeComponent, AbstractNewCaseComponent, AbstractNumberDecimalFieldComponent, AbstractNumberErrorsComponent, AbstractNumberFieldComponent, AbstractOptionSelectorComponent, AbstractPanelComponent, AbstractPanelItemComponent, AbstractPasswordTextFieldComponent, AbstractProfileComponent, AbstractQuickPanelComponent, AbstractRegistrationComponent, AbstractRegistrationFormComponent, AbstractRemoveNodeComponent, AbstractResourceProvider, AbstractResourceService, AbstractRichTextareaFieldComponent, AbstractRoleAssignmentComponent, AbstractSaveFilterComponent, AbstractSearchClauseComponent, AbstractSearchComponent, AbstractSearchConfigurationInputComponent, AbstractSearchModeComponent, AbstractSearchOperandInputComponent, AbstractSearchPredicateComponent, AbstractSessionIdleComponent, AbstractSideMenuContainerComponent, AbstractSimpleTextFieldComponent, AbstractSingleTaskComponent, AbstractSingleTaskViewComponent, AbstractSortModeComponent, AbstractSortableViewComponent, AbstractStringCollectionDefaultFieldComponent, AbstractTabCreationDetectorComponent, AbstractTabViewComponent, AbstractTabbedCaseViewComponent, AbstractTabbedSingleTaskViewComponent, AbstractTabbedTaskViewComponent, AbstractTaskContentComponent, AbstractTaskListComponent, AbstractTaskListPaginationComponent, AbstractTaskPanelComponent, AbstractTaskRefDashboardFieldComponent, AbstractTaskRefDashboardTileComponent, AbstractTaskRefFieldComponent, AbstractTaskRefListFieldComponent, AbstractTaskViewComponent, AbstractTextErrorsComponent, AbstractTextFieldComponent, AbstractTextareaFieldComponent, AbstractToolbarComponent, AbstractTreeComponent, AbstractTreeTaskContentComponent, AbstractUserAssignComponent, AbstractUserAssignItemComponent, AbstractUserAssignListComponent, AbstractUserCardComponent, AbstractUserDefaultFieldComponent, AbstractUserFieldComponent, AbstractUserImpersonateComponent, AbstractUserInviteComponent, AbstractUserListDefaultFieldComponent, AbstractUserListFieldComponent, AbstractViewWithHeadersComponent, AbstractWorkflowPanelComponent, AbstractWorkflowViewComponent, AccessService, ActiveGroupService, AdvancedSearchComponentInitializationService, AfterAction, AlertDialogComponent, AlertDialogModule, AllowedNetsService, AllowedNetsServiceFactory, AnonymousAuthenticationInterceptor, AnonymousService, AssignPolicy, AssignPolicyService, AssignTaskService, AuthenticationGuardService, AuthenticationInterceptor, AuthenticationMethodService, AuthenticationModule, AuthenticationService, AuthorityGuardService, AutocompleteCategory, BOOLEAN_VALUE_LABEL_ENABLED, BaseAllowedNetsService, BaseFilterFactoryProvider, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CASE_ID, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, CaseResourceServiceProvider, CaseRole, CaseSearch, CaseSimpleDataset, CaseStringId, CaseTask, CaseTitle, CaseTreeNode, CaseTreeService, CaseViewService, CaseVisualId, Categories, Category, CategoryFactory, CategoryResolverService, ChangedFieldsService, ClausePredicate, ComponentPrefixes, ComponentRegistryService, ConfigParams, ConfigurationInput, ConfigurationService, ConfirmDialogComponent, ConfirmDialogModule, ConsoleLogPublisher, ContainsPipe, CovalentModule, CurrencyModule, CustomDateAdapter, DATA_FIELD_PORTAL_DATA, DATE_FORMAT, DATE_FORMAT_STRING, DATE_TIME_FORMAT, DATE_TIME_FORMAT_STRING, DEFAULT, DEFAULT_LANGUAGE_CODE, Dashboard, DashboardCardTypes, DashboardMultiData, DashboardResourceService, DashboardSingleData, DataField, DataFieldsModule, DataFocusPolicy, DataFocusPolicyService, DataGroupAlignment, DatafieldMapKey, DateField, DateTimeField, DefaultSearchCategoriesModule, DelegateTaskService, DialogModule, DialogService, DoubleDrawerNavigationService, DoubleDrawerUtils, DynamicEnumerationField, DynamicNavigationRouteProviderService, EditableClausePredicate, EditableClausePredicateWithGenerators, EditableElementaryPredicate, EditablePredicate, EditablePredicateWithGenerator, ElementaryPredicate, EnumerationAutocompleteFilterProperty, EnumerationField, EnumerationFieldValidation, Equals, EqualsDate, ErrorSnackBarComponent, EventConstants, EventQueueService, EventService, FieldAlignment, FieldConverterService, FieldTypeResource, FileField, FileListField, FileListFieldValidation, FilePreviewType, FileUploadMIMEType, FileUploadModel, Filter, FilterExtractionService, FilterField, FilterRepository, FilterType, FilteredArray, FinishPolicy, FinishPolicyService, FinishTaskService, FrontActionModule, FrontActionRegistryService, FrontActionService, GenericSnackBarComponent, GroupGuardService, GroupNavigationComponentResolverService, GroupNavigationConstants, HeaderColumn, HeaderColumnType, HeaderMode, HeaderSearchService, HeaderType, HttpLoaderFactory, I18nField, I18nFieldValidation, ImpersonationService, ImpersonationUserListService, ImpersonationUserResourceService, ImpersonationUserSelectService, InRange, InRangeDate, IncrementingCounter, IsEmptyPipe, IsNonEmptyPipe, IsNull, LEFT_DRAWER_DEFAULT_WIDTH, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MENU_IDENTIFIERS, MaterialAppearance, MaterialModule, MenuOrder, MergeOperator, MergedFilter, MockAuthenticationMethodService, MockAuthenticationService, MockEndpoint, MockProfileService, MockSignUpService, MockUserPreferenceService, MockUserResourceService, MockUserService, MoreThan, MoreThanDate, MoreThanDateTime, MultichoiceAutocompleteFilterProperty, MultichoiceField, NAE_ADMIN_IMPERSONATE_COMPONENT, NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT, NAE_ASYNC_RENDERING_CONFIGURATION, NAE_AUTOSWITCH_TAB_TOKEN, NAE_BASE_FILTER, NAE_CASE_REF_CREATE_CASE, NAE_CASE_REF_DATAFIELD, NAE_CASE_REF_SEARCH, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_HEADERS, NAE_DEFAULT_LANGUAGE, NAE_DEFAULT_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_IMPORT_NET_COMPONENT, NAE_IMPORT_NET_DIALOG_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, NAE_MULTI_USER_ASSIGN_COMPONENT, NAE_MULTI_USER_ASSIGN_DIALOG_COMPONENT, NAE_NAVIGATION_ITEM_TASK_DATA, NAE_NET_ALL_VERSIONS, NAE_NET_VERSION_VISIBLE, NAE_NEW_CASE_COMPONENT, NAE_NEW_CASE_CONFIGURATION, NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, NAE_NEW_CASE_DIALOG_COMPONENT, NAE_OPEN_EXISTING_TAB, NAE_OPTION_SELECTOR_COMPONENT, NAE_OPTION_SELECTOR_DIALOG_COMPONENT, NAE_PREFERRED_TASK_ENDPOINT, NAE_ROUTING_CONFIGURATION_PATH, NAE_SAVE_FILTER_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT, NAE_SEARCH_CATEGORIES, NAE_SEARCH_COMPONENT_CONFIGURATION, NAE_SIDE_MENU_CONTROL, NAE_SNACKBAR_HORIZONTAL_POSITION, NAE_SNACKBAR_VERTICAL_POSITION, NAE_TAB_DATA, NAE_TASK_FORCE_OPEN, NAE_TASK_OPERATIONS, NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, NAE_TASK_VIEW_COMPONENT, NAE_TASK_VIEW_CONFIGURATION, NAE_TREE_CASE_VIEW_CONFIGURATION, NAE_URI_NODE_CASES_PAGE_SIZE, NAE_USER_ASSIGN_COMPONENT, NAE_USER_ASSIGN_DIALOG_COMPONENT, NAE_USER_IMPERSONATE_COMPONENT, NAE_USER_IMPERSONATE_DIALOG_COMPONENT, NAE_VIEW_ID, NAE_VIEW_ID_SEGMENT, NAE_WORKFLOW_SERVICE_CONFIRM_DELETE, NAE_WORKFLOW_SERVICE_FILTER, Net, NetAttributeAutocompleteCategory, NetgrifPaginatorIntl, NextGroupService, NoConfigurationAutocompleteCategory, NoConfigurationCategory, NoConfigurationUserAutocompleteCategory, NotEquals, NotEqualsDate, NotEqualsDateTime, NullAuthenticationService, NullTaskOperations, NumberField, NumberFieldValidation, OLD_PASSWORD, OpenedTab, Operator, OperatorResolverService, OperatorService, OperatorTemplatePart, OperatorTemplatePartType, Operators, OrganizationListService, OverflowService, PASSWORD, PETRI_NET_ID, PUBLISHERS, PageLoadRequestContext, PaginationParams, PaginationSort, PaperViewService, PermissionService, PermissionType, PetriNetResourceService, PetriNetResourceServiceProvider, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProcessServiceProvider, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, RIGHT_DRAWER_DEFAULT_MIN_WIDTH, RIGHT_DRAWER_DEFAULT_WIDTH, RIGHT_DRAWER_MAX_WIDTH, RIGHT_SIDE_INIT_PAGE_SIZE, RIGHT_SIDE_NEW_PAGE_SIZE, RedirectService, ResourceProvider, ResultWithAfterActions, RoleAssignmentLdapGroupService, RoleAssignmentService, RoleGuardService, RoutingBuilderService, SETTINGS_TRANSITION_ID, SearchIndex, SearchIndexResolverService, SearchInputType, SearchMode, SearchService, SelectedCaseService, SessionIdleTimerService, SessionService, SideMenuControl, SideMenuRef, SideMenuService, SideMenuSize, SignUpModule, SignUpService, SimpleFilter, SingleTaskContentService, SnackBarComponent, SnackBarHorizontalPosition, SnackBarModule, SnackBarService, SnackBarVerticalPosition, SpinnerOverlayService, StringCollectionField, Subgrid, SubjectTaskOperations, Substring, SuccessSnackBarComponent, TRANSITION_ID, TabLabelStream, TabView, TabbedVirtualScrollComponent, TaskAssignee, TaskContentService, TaskDataService, TaskElementType, TaskEndpoint, TaskEvent, TaskEventService, TaskHandlingService, TaskHeaderService, TaskMetaField, TaskNetAttributeAutocompleteCategory, TaskProcess, TaskRefComponents, TaskRefDashboardConstants, TaskRefDashboardTileConstants, TaskRefField, TaskRequestStateService, TaskResourceService, TaskResourceServiceProvider, TaskRole, TaskTask, TaskViewService, TemplateAppearance, TestCaseBaseFilterProvider, TestCaseViewAllowedNetsFactory, TestConfigurationService, TestMockDependenciesModule, TestNoAllowedNetsFactory, TestTaskBaseFilterProvider, TestTaskViewAllowedNetsFactory, TestViewService, TextAreaField, TextAreaHeight, TextField, TextFieldComponent, TextFieldValidation, TextFieldView, TranslateLibModule, TreeCaseViewService, TreePetriflowIdentifiers, TreeTaskContentService, UnlimitedTaskContentService, UriContentType, UriResourceService, UriService, User, UserAutocomplete, UserComparatorService, UserField, UserFilterConstants, UserFiltersService, UserImpersonationConstants, UserInviteService, UserListField, UserListService, UserListValue, UserPreferenceService, UserResourceService, UserService, UserTransformer, UserValue, UtilityModule, ViewIdService, ViewService, WarningSnackBarComponent, WorkflowHeaderService, WorkflowMetaField, WorkflowViewService, WrappedBoolean, arrayToObservable, authenticationServiceFactory, clearTimeInformation, configureCategory, createMockCase, createMockCaseOutcome, createMockDataGroup, createMockDependencies, createMockField, createMockGetDataOutcome, createMockImmediateData, createMockNet, createMockPage, createMockPetriNetOutcome, createMockSetDataOutcome, createMockTask, createMockTaskOutcome, createSortParam, createTaskEventNotification, decodeBase64, defaultCaseSearchCategoriesFactory, defaultTaskSearchCategoriesFactory, destroySubscription, encodeBase64, extractFieldValueFromData, extractFilterFieldFromData, extractFilterFromData, extractFilterFromFilterField, extractIconAndTitle, extractRoles, extractSearchTypeFromData, getField, getFieldFromDataGroups, getFieldIndex, getFieldIndexFromDataGroups, getImmediateData, getNetAndCreateCase, groupNavigationViewIdSegmentFactory, hasContent, hasView, loadAllPages, mockUserAutocompleteValue, navigationItemCaseViewDefaultHeadersFactory, navigationItemTaskAllowedNetsServiceFactory, navigationItemTaskCategoryFactory, navigationItemTaskFilterFactory, navigationItemTaskViewDefaultHeadersFactory, ofVoid, processMessageResponse, publicBaseFilterFactory, publicFactoryResolver, redirectAction, refreshTree, reloadTaskAction, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, toMoment, validateTaskAction };
36007
36622
  //# sourceMappingURL=netgrif-components-core.mjs.map