@netgrif/components-core 6.4.1 → 6.5.0-rc.2

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 (98) 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/data-fields/case-ref-field/model/abstract-case-ref-base-field-component.mjs +2 -2
  14. package/esm2020/lib/dialog/components/confirm-dialog/confirm-dialog.component.mjs +2 -2
  15. package/esm2020/lib/event/public-api.mjs +2 -1
  16. package/esm2020/lib/event/services/event.service.mjs +4 -4
  17. package/esm2020/lib/header/abstract-header.component.mjs +4 -69
  18. package/esm2020/lib/header/services/overflow.service.mjs +2 -2
  19. package/esm2020/lib/logger/services/log-publisher.service.mjs +2 -2
  20. package/esm2020/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +3 -3
  21. package/esm2020/lib/navigation/dashboard/abstract-dashboard.component.mjs +232 -0
  22. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +27 -19
  23. package/esm2020/lib/navigation/model/navigation-configs.mjs +2 -2
  24. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +104 -348
  25. package/esm2020/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.mjs +458 -0
  26. package/esm2020/lib/navigation/navigation-double-drawer/util/double-drawer-utils.mjs +43 -0
  27. package/esm2020/lib/navigation/public-api.mjs +4 -1
  28. package/esm2020/lib/navigation/service/uri.service.mjs +2 -2
  29. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +16 -8
  30. package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +13 -1
  31. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +3 -3
  32. package/esm2020/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.mjs +2 -2
  33. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +12 -1
  34. package/esm2020/lib/resources/interface/petri-net-request-body.mjs +1 -1
  35. package/esm2020/lib/resources/resource-provider.service.mjs +6 -6
  36. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +6 -3
  37. package/esm2020/lib/search/models/category/case/case-dataset.mjs +2 -2
  38. package/esm2020/lib/search/models/operator/operator.mjs +2 -2
  39. package/esm2020/lib/search/models/operator/substring.mjs +2 -2
  40. package/esm2020/lib/search/search-service/search.service.mjs +2 -9
  41. package/esm2020/lib/task/services/task-data.service.mjs +4 -4
  42. package/esm2020/lib/task-content/model/subgrid.mjs +2 -2
  43. package/esm2020/lib/task-content/services/field-converter.service.mjs +2 -2
  44. package/esm2020/lib/task-content/services/task-content.service.mjs +4 -4
  45. package/esm2020/lib/toolbar/abstract-toolbar.component.mjs +48 -11
  46. package/esm2020/lib/toolbar/public-api.mjs +2 -1
  47. package/esm2020/lib/toolbar/toolbar-config.mjs +2 -0
  48. package/esm2020/lib/user/services/user-comparator.service.mjs +2 -2
  49. package/esm2020/lib/utility/contains.pipe.mjs +2 -2
  50. package/esm2020/lib/utility/navigation-item-task-filter-factory.mjs +4 -3
  51. package/esm2020/lib/utility/navigation-item-task-search-categories-factory.mjs +4 -1
  52. package/esm2020/lib/view/abstract/view-with-headers.mjs +1 -1
  53. package/esm2020/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +2 -2
  54. package/esm2020/lib/view/case-view/service/case-view-service.mjs +2 -6
  55. package/esm2020/lib/view/public-api.mjs +2 -1
  56. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +9 -26
  57. package/esm2020/lib/view/task-view/abstract-tabbed-single-task-view.component.mjs +32 -0
  58. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +14 -1
  59. package/esm2020/lib/view/workflow-view/workflow-view.service.mjs +17 -2
  60. package/fesm2015/netgrif-components-core.mjs +1078 -520
  61. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  62. package/fesm2020/netgrif-components-core.mjs +1051 -507
  63. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  64. package/lib/admin/role-assignment/abstract-role-assignment.component.d.ts +4 -1
  65. package/lib/admin/role-assignment/services/ProcessList.d.ts +1 -1
  66. package/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.d.ts +4 -1
  67. package/lib/admin/user-invite/abstract-user-invite.component.d.ts +9 -3
  68. package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +1 -1
  69. package/lib/event/public-api.d.ts +1 -0
  70. package/lib/header/abstract-header.component.d.ts +2 -14
  71. package/lib/navigation/dashboard/abstract-dashboard.component.d.ts +73 -0
  72. package/lib/navigation/model/group-navigation-constants.d.ts +27 -19
  73. package/lib/navigation/model/navigation-configs.d.ts +1 -0
  74. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +22 -57
  75. package/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.d.ts +137 -0
  76. package/lib/navigation/navigation-double-drawer/util/double-drawer-utils.d.ts +16 -0
  77. package/lib/navigation/public-api.d.ts +3 -0
  78. package/lib/navigation/utility/filter-extraction.service.d.ts +3 -2
  79. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +6 -0
  80. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +8 -0
  81. package/lib/resources/interface/petri-net-request-body.d.ts +1 -0
  82. package/lib/search/search-service/search.service.d.ts +0 -5
  83. package/lib/toolbar/abstract-toolbar.component.d.ts +16 -6
  84. package/lib/toolbar/public-api.d.ts +1 -0
  85. package/lib/toolbar/toolbar-config.d.ts +11 -0
  86. package/lib/utility/navigation-item-task-filter-factory.d.ts +3 -2
  87. package/lib/utility/navigation-item-task-search-categories-factory.d.ts +1 -1
  88. package/lib/view/abstract/view-with-headers.d.ts +1 -1
  89. package/lib/view/case-view/service/case-view-service.d.ts +0 -2
  90. package/lib/view/public-api.d.ts +1 -0
  91. package/lib/view/task-view/abstract-single-task-view.component.d.ts +5 -16
  92. package/lib/view/task-view/abstract-tabbed-single-task-view.component.d.ts +15 -0
  93. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +5 -2
  94. package/lib/view/workflow-view/workflow-view.service.d.ts +2 -0
  95. package/package.json +1 -1
  96. package/src/assets/i18n/de.json +4 -2
  97. package/src/assets/i18n/en.json +4 -2
  98. 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('');
@@ -6106,7 +6112,7 @@ let AbstractCaseRefBaseFieldComponent = class AbstractCaseRefBaseFieldComponent
6106
6112
  }
6107
6113
  let providers = [
6108
6114
  {
6109
- provide: NAE_DEFAULT_HEADERS, useValue: this.dataField.component?.properties?.headers?.split(',')
6115
+ provide: NAE_DEFAULT_HEADERS, useValue: this.dataField.component?.properties?.headers.split(',')
6110
6116
  },
6111
6117
  {
6112
6118
  provide: NAE_CASE_REF_CREATE_CASE, useValue: this.dataField.component?.properties?.createCase === 'true'
@@ -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
  }
@@ -14296,13 +14313,6 @@ class SearchService {
14296
14313
  this._activeFilter.next(this._baseFilter.clone());
14297
14314
  }
14298
14315
  }
14299
- /**
14300
- * Loads whole new filter and search cases/tasks based on this filter
14301
- * @param newFilter whole new filter that should be used for search
14302
- */
14303
- updateWithFullFilter(newFilter) {
14304
- this._activeFilter.next(newFilter);
14305
- }
14306
14316
  /**
14307
14317
  * @returns `undefined` if the predicate tree contains no complete query.
14308
14318
  * Otherwise returns the serialized form of the completed queries in the predicate tree.
@@ -15581,11 +15591,11 @@ class TaskContentService {
15581
15591
  }
15582
15592
  getReferencedTaskId(changedField, chFields) {
15583
15593
  return !!this.taskFieldsIndex ?
15584
- (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
15585
- || 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;
15586
15596
  }
15587
15597
  findTaskRefId(taskId, fields) {
15588
- 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));
15589
15599
  if (!taskRefId) {
15590
15600
  const referencedTaskIds = Object.values(fields).filter(f => f instanceof TaskRefField).map(tr => tr.value);
15591
15601
  referencedTaskIds.forEach(id => {
@@ -15957,7 +15967,7 @@ class UserComparatorService {
15957
15967
  compareUsers(user, acceptImpersonator = true) {
15958
15968
  const loggedUser = acceptImpersonator ? this._userService.user.getSelfOrImpersonated() : this._userService.user;
15959
15969
  return user.email === loggedUser.email ||
15960
- user.email.includes('anonymous') && this._userService.user.email.includes('anonymous');
15970
+ user.email?.includes('anonymous') && this._userService.user.email?.includes('anonymous');
15961
15971
  }
15962
15972
  }
15963
15973
  UserComparatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserComparatorService, deps: [{ token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -15987,7 +15997,7 @@ class ChangedFieldsService {
15987
15997
  }
15988
15998
  parseChangedFieldsByCaseAndTaskIds(caseId, taskIds, changedFieldsMap) {
15989
15999
  const changedFields = [];
15990
- const filteredTaskIds = Object.keys(changedFieldsMap[caseId]).filter(taskId => taskIds.includes(taskId));
16000
+ const filteredTaskIds = Object.keys(changedFieldsMap[caseId]).filter(taskId => taskIds?.includes(taskId));
15991
16001
  filteredTaskIds.forEach(taskId => {
15992
16002
  changedFields.push(changedFieldsMap[caseId][taskId]);
15993
16003
  });
@@ -16187,7 +16197,7 @@ class TaskDataService extends TaskHandlingService {
16187
16197
  }
16188
16198
  else if (dataGroupParentCaseId === this._safeTask.caseId
16189
16199
  && parentTaskId !== this._safeTask.stringId
16190
- && !this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId].includes(parentTaskId)) {
16200
+ && !this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId]?.includes(parentTaskId)) {
16191
16201
  this._taskContentService.referencedTaskAndCaseIds[dataGroupParentCaseId].push(group.parentTaskId);
16192
16202
  }
16193
16203
  if (group.fields.length > 0 && !this._taskContentService.taskFieldsIndex[parentTaskId]) {
@@ -16358,7 +16368,7 @@ class TaskDataService extends TaskHandlingService {
16358
16368
  }
16359
16369
  const taskIdsInRequest = Object.keys(request);
16360
16370
  for (const taskId of taskIdsInRequest) {
16361
- if (!Object.keys(this._taskContentService.taskFieldsIndex).includes(taskId)) {
16371
+ if (!Object.keys(this._taskContentService.taskFieldsIndex)?.includes(taskId)) {
16362
16372
  this._log.error(`Task id ${taskId} is not present in task fields index`);
16363
16373
  return false;
16364
16374
  }
@@ -16563,7 +16573,7 @@ class TaskDataService extends TaskHandlingService {
16563
16573
  revertToPreviousValue(context) {
16564
16574
  this._safeTask.dataGroups.forEach(dataGroup => {
16565
16575
  dataGroup.fields.forEach(field => {
16566
- 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)) {
16567
16577
  field.revertToPreviousValue();
16568
16578
  }
16569
16579
  });
@@ -17077,24 +17087,27 @@ class RedirectService {
17077
17087
  }
17078
17088
  parseRedirectPath(url) {
17079
17089
  let path;
17080
- if (url.includes('?')) {
17090
+ if (url === undefined || url === null) {
17091
+ return '';
17092
+ }
17093
+ if (url?.includes('?')) {
17081
17094
  path = url.slice(0, url.indexOf('?'));
17082
17095
  }
17083
17096
  else {
17084
17097
  path = url;
17085
17098
  }
17086
- return path.replace('/redirect', '');
17099
+ return path?.replace('/redirect', '');
17087
17100
  }
17088
17101
  }
17089
17102
  RedirectService.LOGIN_COMPONENT = 'login';
17090
- 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 });
17091
17104
  RedirectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, providedIn: 'root' });
17092
17105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RedirectService, decorators: [{
17093
17106
  type: Injectable,
17094
17107
  args: [{
17095
17108
  providedIn: 'root'
17096
17109
  }]
17097
- }], 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 }]; } });
17098
17111
 
17099
17112
  class AuthenticationInterceptor {
17100
17113
  constructor(_session, _redirect, _anonymousService, idleTimerService) {
@@ -17294,14 +17307,14 @@ class AuthenticationGuardService {
17294
17307
  return this._session.sessionToken && this._session.verified ? true : this._router.parseUrl(this._loginUrl);
17295
17308
  }
17296
17309
  }
17297
- 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 });
17298
17311
  AuthenticationGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, providedIn: AuthenticationModule });
17299
17312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthenticationGuardService, decorators: [{
17300
17313
  type: Injectable,
17301
17314
  args: [{
17302
17315
  providedIn: AuthenticationModule
17303
17316
  }]
17304
- }], ctorParameters: function () { return [{ type: SessionService }, { type: RedirectService }, { type: i3$1.Router }]; } });
17317
+ }], ctorParameters: function () { return [{ type: SessionService }, { type: RedirectService }, { type: i2$5.Router }]; } });
17305
17318
 
17306
17319
  /* SERVICES */
17307
17320
 
@@ -17541,7 +17554,7 @@ class AbstractAuthenticationOverlayComponent {
17541
17554
  }
17542
17555
  }
17543
17556
  }
17544
- 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 });
17545
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 });
17546
17559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractAuthenticationOverlayComponent, decorators: [{
17547
17560
  type: Component,
@@ -17549,7 +17562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17549
17562
  selector: 'ncc-abstract-auth-overlay',
17550
17563
  template: ''
17551
17564
  }]
17552
- }], 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 }]; } });
17553
17566
 
17554
17567
  class AbstractSessionIdleComponent {
17555
17568
  constructor(sessionTimer, _user, _log, _config, _router) {
@@ -17602,7 +17615,7 @@ class AbstractSessionIdleComponent {
17602
17615
  }
17603
17616
  }
17604
17617
  }
17605
- 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 });
17606
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 });
17607
17620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSessionIdleComponent, decorators: [{
17608
17621
  type: Component,
@@ -17610,7 +17623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17610
17623
  selector: 'ncc-abstract-session-idle',
17611
17624
  template: ''
17612
17625
  }]
17613
- }], 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: [{
17614
17627
  type: Input
17615
17628
  }] } });
17616
17629
 
@@ -17988,7 +18001,7 @@ class AbstractPanelComponent {
17988
18001
  return this._caseListFontColorService.computeCaseFontColor(this.caseColor);
17989
18002
  }
17990
18003
  }
17991
- 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 });
17992
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 });
17993
18006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractPanelComponent, decorators: [{
17994
18007
  type: Component,
@@ -17996,7 +18009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
17996
18009
  selector: 'ncc-abstract-panel',
17997
18010
  template: ''
17998
18011
  }]
17999
- }], ctorParameters: function () { return [{ type: CaseListFontColorService }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { expansionDisabled: [{
18012
+ }], ctorParameters: function () { return [{ type: CaseListFontColorService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { expansionDisabled: [{
18000
18013
  type: Input
18001
18014
  }], preventExpand: [{
18002
18015
  type: Input
@@ -18118,7 +18131,7 @@ class OverflowService {
18118
18131
  }
18119
18132
  const item = localStorage.getItem(viewId + '-' + id);
18120
18133
  if (item !== null) {
18121
- if (id.includes('columnCount')) {
18134
+ if (id?.includes('columnCount')) {
18122
18135
  this._initializedCount = true;
18123
18136
  }
18124
18137
  return item;
@@ -18666,7 +18679,6 @@ class CaseViewService extends AbstractSortableViewComponent {
18666
18679
  useCachedProcesses: true
18667
18680
  };
18668
18681
  this._paginationView = false;
18669
- this._cases = [];
18670
18682
  this._newCaseConfiguration = { ...this.DEFAULT_NEW_CASE_CONFIGURATION };
18671
18683
  if (newCaseConfig !== null) {
18672
18684
  Object.assign(this._newCaseConfiguration, newCaseConfig);
@@ -18705,7 +18717,7 @@ class CaseViewService extends AbstractSortableViewComponent {
18705
18717
  }
18706
18718
  return { ...acc, ...pageLoadResult.cases };
18707
18719
  }, {}));
18708
- this._cases$ = casesMap.pipe(map(v => Object.values(v)), tap(cases => this._cases = cases));
18720
+ this._cases$ = casesMap.pipe(map(v => Object.values(v)));
18709
18721
  }
18710
18722
  ngOnDestroy() {
18711
18723
  super.ngOnDestroy();
@@ -18721,9 +18733,6 @@ class CaseViewService extends AbstractSortableViewComponent {
18721
18733
  get cases$() {
18722
18734
  return this._cases$;
18723
18735
  }
18724
- get cases() {
18725
- return this._cases;
18726
- }
18727
18736
  get pagination() {
18728
18737
  return this._pagination;
18729
18738
  }
@@ -20505,7 +20514,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
20505
20514
  this.taskEvent.emit(event);
20506
20515
  });
20507
20516
  this._subTaskData = _changedFieldsService.changedFields$.subscribe((changedFieldsMap) => {
20508
- 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));
20509
20518
  const changedFields = [];
20510
20519
  filteredCaseIds.forEach(caseId => {
20511
20520
  const taskIds = this._taskContentService.referencedTaskAndCaseIds[caseId];
@@ -20519,7 +20528,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
20519
20528
  this.expand();
20520
20529
  });
20521
20530
  _taskOperations.close$.subscribe(() => {
20522
- if (!this._taskForceOpen) {
20531
+ if (!(this._taskForceOpen || this.preventCollapse)) {
20523
20532
  this.collapse();
20524
20533
  }
20525
20534
  });
@@ -20928,7 +20937,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
20928
20937
  });
20929
20938
  }
20930
20939
  }
20931
- 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 });
20932
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 });
20933
20942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, decorators: [{
20934
20943
  type: Component,
@@ -20941,7 +20950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20941
20950
  }, {
20942
20951
  type: Inject,
20943
20952
  args: [NAE_TAB_DATA]
20944
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { loading$: [{
20953
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { loading$: [{
20945
20954
  type: Input
20946
20955
  }], selectedHeaders$: [{
20947
20956
  type: Input
@@ -20979,7 +20988,7 @@ class AbstractTaskListComponent extends AbstractDefaultTaskListComponent {
20979
20988
  this._taskViewService.nextPage(this.viewport.getRenderedRange(), this.viewport.getDataLength());
20980
20989
  }
20981
20990
  }
20982
- 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 });
20983
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 });
20984
20993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListComponent, decorators: [{
20985
20994
  type: Component,
@@ -20992,7 +21001,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20992
21001
  }, {
20993
21002
  type: Inject,
20994
21003
  args: [NAE_TAB_DATA]
20995
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { tasks$: [{
21004
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { tasks$: [{
20996
21005
  type: Input
20997
21006
  }], viewport: [{
20998
21007
  type: ViewChild,
@@ -21007,7 +21016,7 @@ class AbstractTaskListPaginationComponent extends AbstractDefaultTaskListCompone
21007
21016
  this.route = route;
21008
21017
  this.pageSize = 20;
21009
21018
  this.pageIndex = 0;
21010
- this.pageSizeOptions = [10, 20, 50, 100];
21019
+ this.pageSizeOptions = [10, 20, 50];
21011
21020
  }
21012
21021
  set tasks$(tasks) {
21013
21022
  this._tasks$ = tasks.pipe((tap(() => {
@@ -21024,7 +21033,7 @@ class AbstractTaskListPaginationComponent extends AbstractDefaultTaskListCompone
21024
21033
  this._taskViewService.nextPagePagination(this.pageSize, this.pageIndex);
21025
21034
  }
21026
21035
  }
21027
- 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 });
21028
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 });
21029
21038
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListPaginationComponent, decorators: [{
21030
21039
  type: Component,
@@ -21037,7 +21046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21037
21046
  }, {
21038
21047
  type: Inject,
21039
21048
  args: [NAE_TAB_DATA]
21040
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { disabled: [{
21049
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { disabled: [{
21041
21050
  type: Input
21042
21051
  }], tasks$: [{
21043
21052
  type: Input
@@ -21123,6 +21132,14 @@ class WorkflowViewService extends AbstractSortableViewComponent {
21123
21132
  get workflows$() {
21124
21133
  return this._workflows$;
21125
21134
  }
21135
+ setSearchTitle(title) {
21136
+ this._baseFilter.title = title;
21137
+ this.reload();
21138
+ }
21139
+ clearSearchTitle() {
21140
+ this._baseFilter.title = undefined;
21141
+ this.reload();
21142
+ }
21126
21143
  loadPage(pageRequest) {
21127
21144
  if (pageRequest.number < 0) {
21128
21145
  return of([]);
@@ -21131,7 +21148,14 @@ class WorkflowViewService extends AbstractSortableViewComponent {
21131
21148
  params = this.addSortParams(params);
21132
21149
  params = this.addPageParams(params, pageRequest);
21133
21150
  this._loading$.on();
21134
- 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 => {
21135
21159
  this._log.error('Loading Petri nets has failed!', err);
21136
21160
  return of({ content: [], pagination: { ...this._pagination } });
21137
21161
  }), tap(res => {
@@ -21509,7 +21533,7 @@ class AbstractSingleTaskComponent {
21509
21533
  this.taskEvent.emit(event);
21510
21534
  }
21511
21535
  }
21512
- 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 });
21513
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 });
21514
21538
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, decorators: [{
21515
21539
  type: Component,
@@ -21517,7 +21541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21517
21541
  selector: 'ncc-abstract-single-task',
21518
21542
  template: ''
21519
21543
  }]
21520
- }], 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: [{
21521
21545
  type: Optional
21522
21546
  }, {
21523
21547
  type: Inject,
@@ -21993,9 +22017,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21993
22017
  }] } });
21994
22018
 
21995
22019
  class AbstractToolbarComponent {
21996
- constructor(translate, selectLangService) {
22020
+ constructor(translate, selectLangService, userService, router, redirectService) {
21997
22021
  this.translate = translate;
21998
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
+ };
21999
22039
  }
22000
22040
  setLang(lang) {
22001
22041
  this.selectLangService.setLanguage(lang);
@@ -22003,22 +22043,40 @@ class AbstractToolbarComponent {
22003
22043
  activeLang(lang) {
22004
22044
  return this.translate.currentLang === lang;
22005
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
+ }
22006
22070
  }
22007
- 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 });
22008
- 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 });
22009
22073
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractToolbarComponent, decorators: [{
22010
22074
  type: Component,
22011
22075
  args: [{
22012
22076
  selector: 'ncc-abstract-toolbar',
22013
22077
  template: ''
22014
22078
  }]
22015
- }], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: LanguageService }]; }, propDecorators: { loggedUser: [{
22016
- type: Input
22017
- }], appName: [{
22018
- type: Input
22019
- }], logoSrc: [{
22020
- type: Input
22021
- }], logoAlt: [{
22079
+ }], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: LanguageService }, { type: UserService }, { type: i2$5.Router }, { type: RedirectService }]; }, propDecorators: { toolbarConfig: [{
22022
22080
  type: Input
22023
22081
  }] } });
22024
22082
 
@@ -22534,11 +22592,11 @@ var GroupNavigationConstants;
22534
22592
  /**
22535
22593
  * EnumerationMap field, that contains selected search type for case view
22536
22594
  * */
22537
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
22595
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "view_search_type";
22538
22596
  /**
22539
22597
  * EnumerationMap field, that contains selected search type for task view
22540
22598
  * */
22541
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
22599
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "view_search_type";
22542
22600
  /**
22543
22601
  * Boolean field, that is true if user wants to merge base filter and custom filter
22544
22602
  * */
@@ -22550,67 +22608,67 @@ var GroupNavigationConstants;
22550
22608
  /**
22551
22609
  * Boolean field, that is true if the user wants to see more menu for case item in case view
22552
22610
  * */
22553
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
22611
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "show_more_menu";
22554
22612
  /**
22555
22613
  * Boolean field, that is true if no input for title in case creation is shown
22556
22614
  * */
22557
- 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";
22558
22616
  /**
22559
22617
  * Text field, that contains banned processes in case creation as a value
22560
22618
  * */
22561
- 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";
22562
22620
  /**
22563
22621
  * Boolean field, that is true if the user wants to see more menu for task item in task view
22564
22622
  * */
22565
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
22623
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "show_more_menu";
22566
22624
  /**
22567
22625
  * MultichoiceMap field, that contains selected header modes for case view as a value
22568
22626
  * */
22569
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
22627
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "headers_mode";
22570
22628
  /**
22571
22629
  * Boolean field, that is true if table mode can be applied in case view
22572
22630
  * */
22573
- 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";
22574
22632
  /**
22575
22633
  * EnumerationMap field, that contains selected default header mode for case view as a value
22576
22634
  * */
22577
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
22635
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "headers_default_mode";
22578
22636
  /**
22579
22637
  * Boolean field, that is true to make mode menu in case view visible
22580
22638
  * */
22581
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
22639
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "is_header_mode_changeable";
22582
22640
  /**
22583
22641
  * MultichoiceMap field, that contains selected header modes for task view as a value
22584
22642
  * */
22585
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
22643
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "headers_mode";
22586
22644
  /**
22587
22645
  * Boolean field, that is true if table mode can be applied in task view
22588
22646
  * */
22589
- 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";
22590
22648
  /**
22591
22649
  * EnumerationMap field, that contains selected default header mode for task view as a value
22592
22650
  * */
22593
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
22651
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "headers_default_mode";
22594
22652
  /**
22595
22653
  * Boolean field, that is true to make mode menu in task view visible
22596
22654
  * */
22597
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
22655
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "is_header_mode_changeable";
22598
22656
  /**
22599
22657
  * Boolean field, that is true to use default headers configuration for case view
22600
22658
  * */
22601
- GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
22659
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_default_headers";
22602
22660
  /**
22603
22661
  * Text field, that contains default header metadata separated by comma for case view as a value
22604
22662
  * */
22605
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
22663
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "default_headers";
22606
22664
  /**
22607
22665
  * Boolean field, that is true to use default headers configuration for task view
22608
22666
  * */
22609
- GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
22667
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_default_headers";
22610
22668
  /**
22611
22669
  * Text field, that contains default header metadata separated by comma for task view as a value
22612
22670
  * */
22613
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
22671
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "default_headers";
22614
22672
  /**
22615
22673
  * MultichoiceMap field, that contains allowed roles as value
22616
22674
  * */
@@ -22639,6 +22697,14 @@ var GroupNavigationConstants;
22639
22697
  * CaseField containing stringIds of child instances of process preference_item
22640
22698
  * */
22641
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";
22642
22708
  })(GroupNavigationConstants || (GroupNavigationConstants = {}));
22643
22709
 
22644
22710
  /**
@@ -22979,7 +23045,7 @@ class UriService {
22979
23045
  data: {
22980
23046
  [GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH]: node.uriPath
22981
23047
  },
22982
- process: { identifier: "preference_item" }
23048
+ process: { identifier: "menu_item" }
22983
23049
  };
22984
23050
  let httpParams = new HttpParams()
22985
23051
  .set(PaginationParams.PAGE_SIZE, 1)
@@ -24221,7 +24287,7 @@ class AbstractViewWithHeadersComponent {
24221
24287
  return !(this.config?.[ConfigParams.PANEL_HEADER] === 'false');
24222
24288
  }
24223
24289
  }
24224
- 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 });
24225
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 });
24226
24292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractViewWithHeadersComponent, decorators: [{
24227
24293
  type: Component,
@@ -24229,7 +24295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24229
24295
  selector: 'ncc-abstract-view-with-headers',
24230
24296
  template: ''
24231
24297
  }]
24232
- }], ctorParameters: function () { return [{ type: AbstractSortableViewComponent }, { type: i3$1.ActivatedRoute }]; } });
24298
+ }], ctorParameters: function () { return [{ type: AbstractSortableViewComponent }, { type: i2$5.ActivatedRoute }]; } });
24233
24299
 
24234
24300
  class AbstractTaskViewComponent extends AbstractViewWithHeadersComponent {
24235
24301
  constructor(taskViewService, _activatedRoute) {
@@ -24242,7 +24308,7 @@ class AbstractTaskViewComponent extends AbstractViewWithHeadersComponent {
24242
24308
  super.ngOnDestroy();
24243
24309
  }
24244
24310
  }
24245
- 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 });
24246
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 });
24247
24313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskViewComponent, decorators: [{
24248
24314
  type: Component,
@@ -24250,7 +24316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24250
24316
  selector: 'ncc-abstract-task-view',
24251
24317
  template: ''
24252
24318
  }]
24253
- }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i3$1.ActivatedRoute }]; } });
24319
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$5.ActivatedRoute }]; } });
24254
24320
 
24255
24321
  /**
24256
24322
  * Holds all identifiers of the Filter process in an accessible manner
@@ -24677,7 +24743,7 @@ class AbstractSaveFilterComponent extends AbstractTaskViewComponent {
24677
24743
  }
24678
24744
  }
24679
24745
  }
24680
- 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 });
24681
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 });
24682
24748
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSaveFilterComponent, decorators: [{
24683
24749
  type: Component,
@@ -24688,7 +24754,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24688
24754
  }], ctorParameters: function () { return [{ type: SideMenuControl, decorators: [{
24689
24755
  type: Inject,
24690
24756
  args: [NAE_SIDE_MENU_CONTROL]
24691
- }] }, { type: UserFiltersService }, { type: LoggerService }, { type: TaskViewService }, { type: i3$1.ActivatedRoute }]; } });
24757
+ }] }, { type: UserFiltersService }, { type: LoggerService }, { type: TaskViewService }, { type: i2$5.ActivatedRoute }]; } });
24692
24758
 
24693
24759
  var HeaderType;
24694
24760
  (function (HeaderType) {
@@ -24741,7 +24807,7 @@ class AbstractCaseViewComponent extends AbstractViewWithHeadersComponent {
24741
24807
  }
24742
24808
  }
24743
24809
  }
24744
- 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 });
24745
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 });
24746
24812
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseViewComponent, decorators: [{
24747
24813
  type: Component,
@@ -24754,7 +24820,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
24754
24820
  }, {
24755
24821
  type: Inject,
24756
24822
  args: [NAE_NEW_CASE_CREATION_CONFIGURATION_DATA]
24757
- }] }, { type: i3$1.ActivatedRoute }]; } });
24823
+ }] }, { type: i2$5.ActivatedRoute }]; } });
24758
24824
 
24759
24825
  class AbstractLoadFilterComponent extends AbstractCaseViewComponent {
24760
24826
  constructor(_sideMenuControl, _log, caseViewService) {
@@ -25834,12 +25900,10 @@ function stopPropagation($event) {
25834
25900
  }
25835
25901
 
25836
25902
  class AbstractHeaderComponent {
25837
- constructor(_injector, _translate, _overflowService, _caseViewService, _dataFieldPortalData) {
25903
+ constructor(_injector, _translate, _overflowService) {
25838
25904
  this._injector = _injector;
25839
25905
  this._translate = _translate;
25840
25906
  this._overflowService = _overflowService;
25841
- this._caseViewService = _caseViewService;
25842
- this._dataFieldPortalData = _dataFieldPortalData;
25843
25907
  this.DEFAULT_COLUMN_COUNT = 6;
25844
25908
  this.DEFAULT_COLUMN_WIDTH = 220;
25845
25909
  this.INPUT_DEBOUNCE_TIME = 600;
@@ -25854,7 +25918,6 @@ class AbstractHeaderComponent {
25854
25918
  this._initHeaderCount = undefined;
25855
25919
  this._initResponsiveHeaders = undefined;
25856
25920
  this.initializeFormControls(this._overflowService !== null);
25857
- this._changeValue = true;
25858
25921
  }
25859
25922
  set maxHeaderColumns(count) {
25860
25923
  if (this.headerService) {
@@ -25893,7 +25956,6 @@ class AbstractHeaderComponent {
25893
25956
  this.headerService.responsiveHeaders = this._initResponsiveHeaders;
25894
25957
  }
25895
25958
  this.headerService.preferenceColumnCount$.subscribe(value => this.columnCountControl.setValue(value));
25896
- this.resolveApprovalDatafields();
25897
25959
  }
25898
25960
  ngOnDestroy() {
25899
25961
  if (this.canOverflow) {
@@ -25901,9 +25963,6 @@ class AbstractHeaderComponent {
25901
25963
  this.subColumnCountControl.unsubscribe();
25902
25964
  this.subOverflowControl.unsubscribe();
25903
25965
  }
25904
- if (this._subCases) {
25905
- this._subCases.unsubscribe();
25906
- }
25907
25966
  }
25908
25967
  /**
25909
25968
  * Injects the correct {@link AbstractHeaderService} instance based on this component's type
@@ -25994,55 +26053,8 @@ class AbstractHeaderComponent {
25994
26053
  }
25995
26054
  });
25996
26055
  }
25997
- indeterminate() {
25998
- if (this._caseViewService) {
25999
- return this._dataFieldPortalData?.dataField?.value?.length > 0 &&
26000
- this._caseViewService.cases.some(value => this._dataFieldPortalData?.dataField.value.includes(value.stringId)) &&
26001
- !this.resolveApprovalValue();
26002
- }
26003
- return this._dataFieldPortalData?.dataField?.value?.length > 0 &&
26004
- this._dataFieldPortalData?.dataField?.value?.length < this._dataFieldPortalData?.dataField?.choices?.length;
26005
- }
26006
- typeApproval() {
26007
- return this._dataFieldPortalData?.dataField instanceof MultichoiceField ? 'multichoice' : 'enumeration';
26008
- }
26009
- resolveApprovalDatafields() {
26010
- if (this._dataFieldPortalData !== null && this._dataFieldPortalData.dataField instanceof MultichoiceField && this._caseViewService) {
26011
- this.approvalFormControl.setValue(this.resolveApprovalValue());
26012
- this.approvalFormControl.valueChanges.subscribe(value => {
26013
- if (this._changeValue) {
26014
- if (value) {
26015
- this._dataFieldPortalData.dataField.value = this._caseViewService.cases.map(caze => caze.stringId);
26016
- }
26017
- else {
26018
- this._dataFieldPortalData.dataField.value = [];
26019
- }
26020
- }
26021
- this._changeValue = true;
26022
- });
26023
- this._dataFieldPortalData.dataField.valueChanges().subscribe(() => {
26024
- this._changeValue = false;
26025
- this.approvalFormControl.setValue(this.resolveApprovalValue());
26026
- });
26027
- this._subCases = this._caseViewService.cases$.subscribe(() => {
26028
- this._changeValue = false;
26029
- this.approvalFormControl.setValue(this.resolveApprovalValue());
26030
- });
26031
- }
26032
- if (this._dataFieldPortalData !== null && this._dataFieldPortalData.dataField instanceof EnumerationField) {
26033
- this.approvalFormControl.valueChanges.subscribe(value => {
26034
- this._dataFieldPortalData.dataField.value = null;
26035
- });
26036
- }
26037
- }
26038
- resolveApprovalValue() {
26039
- if (this._caseViewService.cases.length === 0) {
26040
- return false;
26041
- }
26042
- return this._caseViewService.cases.every(value => this._dataFieldPortalData?.dataField.value.includes(value.stringId));
26043
- }
26044
26056
  }
26045
- AbstractHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: OverflowService, optional: true }, { token: CaseViewService, optional: true }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
26057
+ AbstractHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
26046
26058
  AbstractHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderComponent, selector: "ncc-abstract-header", inputs: { type: "type", hideHeaderMenu: "hideHeaderMenu", showEditButton: "showEditButton", showSortButton: "showSortButton", showSearchButton: "showSearchButton", showTableSection: "showTableSection", approval: "approval", maxHeaderColumns: "maxHeaderColumns", responsiveHeaders: "responsiveHeaders" }, ngImport: i0, template: '', isInline: true });
26047
26059
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, decorators: [{
26048
26060
  type: Component,
@@ -26052,13 +26064,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26052
26064
  }]
26053
26065
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.TranslateService }, { type: OverflowService, decorators: [{
26054
26066
  type: Optional
26055
- }] }, { type: CaseViewService, decorators: [{
26056
- type: Optional
26057
- }] }, { type: undefined, decorators: [{
26058
- type: Optional
26059
- }, {
26060
- type: Inject,
26061
- args: [DATA_FIELD_PORTAL_DATA]
26062
26067
  }] }]; }, propDecorators: { type: [{
26063
26068
  type: Input
26064
26069
  }], hideHeaderMenu: [{
@@ -26747,7 +26752,7 @@ class AbstractLogoutShortcutComponent {
26747
26752
  });
26748
26753
  }
26749
26754
  }
26750
- 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 });
26751
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 });
26752
26757
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractLogoutShortcutComponent, decorators: [{
26753
26758
  type: Component,
@@ -26755,7 +26760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
26755
26760
  selector: 'ncc-abstract-logout-shortcut',
26756
26761
  template: '',
26757
26762
  }]
26758
- }], 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: [{
26759
26764
  type: Output
26760
26765
  }] } });
26761
26766
 
@@ -26919,14 +26924,14 @@ class AuthorityGuardService {
26919
26924
  }
26920
26925
  }
26921
26926
  }
26922
- 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 });
26923
26928
  AuthorityGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, providedIn: AuthenticationModule });
26924
26929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthorityGuardService, decorators: [{
26925
26930
  type: Injectable,
26926
26931
  args: [{
26927
26932
  providedIn: AuthenticationModule
26928
26933
  }]
26929
- }], 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 }]; } });
26930
26935
 
26931
26936
  class GroupGuardService {
26932
26937
  constructor(_redirectService, _userService, _nextGroupService, _configService, _log) {
@@ -27251,7 +27256,7 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
27251
27256
  this.resolveLevels(this.dataSource.data);
27252
27257
  }
27253
27258
  }
27254
- 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 });
27255
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 });
27256
27261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationTreeComponent, decorators: [{
27257
27262
  type: Component,
@@ -27259,7 +27264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27259
27264
  selector: 'ncc-abstract-navigation-tree',
27260
27265
  template: ''
27261
27266
  }]
27262
- }], 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: [{
27263
27268
  type: Input
27264
27269
  }], parentUrl: [{
27265
27270
  type: Input
@@ -27794,14 +27799,14 @@ class RoutingBuilderService {
27794
27799
  return result;
27795
27800
  }
27796
27801
  }
27797
- 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 });
27798
27803
  RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
27799
27804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
27800
27805
  type: Injectable,
27801
27806
  args: [{
27802
27807
  providedIn: 'root'
27803
27808
  }]
27804
- }], 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: [{
27805
27810
  type: Optional
27806
27811
  }, {
27807
27812
  type: Inject,
@@ -27809,7 +27814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27809
27814
  }] }]; } });
27810
27815
 
27811
27816
  const MENU_IDENTIFIERS = [
27812
- 'preference_item',
27817
+ 'menu_item',
27813
27818
  ];
27814
27819
  const SETTINGS_TRANSITION_ID = 'item_settings';
27815
27820
  const LEFT_DRAWER_DEFAULT_WIDTH = 60;
@@ -27824,6 +27829,48 @@ var MenuOrder;
27824
27829
  MenuOrder[MenuOrder["Descending"] = 1] = "Descending";
27825
27830
  })(MenuOrder || (MenuOrder = {}));
27826
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
+
27827
27874
  /**
27828
27875
  * Holds all identifiers of the Impersonation config process in an accessible manner
27829
27876
  */
@@ -27904,14 +27951,14 @@ class ImpersonationService extends AbstractResourceService {
27904
27951
  }
27905
27952
  }
27906
27953
  }
27907
- 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 });
27908
27955
  ImpersonationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, providedIn: 'root' });
27909
27956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImpersonationService, decorators: [{
27910
27957
  type: Injectable,
27911
27958
  args: [{
27912
27959
  providedIn: 'root'
27913
27960
  }]
27914
- }], 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 }]; } });
27915
27962
 
27916
27963
  class ImpersonationUserSelectService {
27917
27964
  constructor(_log, _snackBar, _impersonation, _user, _dialog, _userImpersonateComponent, _adminImpersonateComponent) {
@@ -27994,88 +28041,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27994
28041
  args: [NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT]
27995
28042
  }] }]; } });
27996
28043
 
27997
- class AbstractNavigationDoubleDrawerComponent {
27998
- constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _caseResourceService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
27999
- this._router = _router;
28000
- this._activatedRoute = _activatedRoute;
28001
- this._breakpoint = _breakpoint;
28002
- this._languageService = _languageService;
28003
- this._translateService = _translateService;
28004
- this._userService = _userService;
28005
- 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;
28006
28050
  this._log = _log;
28007
28051
  this._config = _config;
28008
- this._uriService = _uriService;
28052
+ this._activatedRoute = _activatedRoute;
28009
28053
  this._caseResourceService = _caseResourceService;
28010
- this._impersonationUserSelect = _impersonationUserSelect;
28011
- this._impersonation = _impersonation;
28054
+ this._accessService = _accessService;
28055
+ this._translateService = _translateService;
28012
28056
  this._dynamicRoutingService = _dynamicRoutingService;
28013
- this.imageRouterLink = '/';
28014
- this.imageAlt = 'Logo';
28015
- this.profileRouterLink = '/profile';
28016
- this.includeUser = true;
28017
- this.includeLanguage = true;
28018
- this.includeMoreMenu = true;
28019
- this.includeImpersonation = true;
28020
- this.allClosable = true;
28021
- this.folderIcon = 'folder';
28022
- this.openedFolderIcon = 'folder_open';
28023
- this.filterIcon = 'filter_alt';
28024
- this.foldersCategoryName = 'toolbar.menu.folders';
28025
- this.viewsCategoryName = 'toolbar.menu.views';
28026
- this.loggedOut = new EventEmitter(true); // on logout
28027
- this.stateChanged = new EventEmitter(); // on menu state change
28028
- this.itemClicked = new EventEmitter(); // on item click
28029
- this.resized = new EventEmitter(true); // on menu resize
28030
- this.itemLoaded = new EventEmitter(true); // on item loaded
28031
- this._configLeftMenu = {
28032
- mode: 'side',
28033
- opened: true,
28034
- disableClose: false,
28035
- width: LEFT_DRAWER_DEFAULT_WIDTH,
28036
- };
28037
- this._configRightMenu = {
28038
- mode: 'side',
28039
- opened: true,
28040
- disableClose: false,
28041
- width: RIGHT_DRAWER_DEFAULT_WIDTH,
28042
- };
28043
- this.leftItems = new Array();
28044
- this.rightItems = new Array();
28045
- this.leftLoading$ = new LoadingEmitter();
28046
- this.rightLoading$ = new LoadingEmitter();
28047
- this.nodeLoading$ = new LoadingEmitter();
28048
- this.itemsOrder = MenuOrder.Ascending;
28049
- this.hiddenCustomItems = [];
28050
- 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([]);
28051
28063
  this._childCustomViews = {};
28052
- }
28053
- ngOnInit() {
28054
- this._breakpointSubscription = this._breakpoint.observe([Breakpoints.HandsetLandscape]).subscribe(() => {
28055
- if (this._breakpoint.isMatched('(max-width: 959.99px)')) {
28056
- this.resolveLayout(false);
28057
- }
28058
- else {
28059
- this.resolveLayout(true);
28060
- }
28061
- });
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();
28062
28073
  this._currentNodeSubscription = this._uriService.activeNode$.subscribe(node => {
28063
28074
  this.currentNode = node;
28064
28075
  });
28065
- const viewConfigurationPath = this._activatedRoute.snapshot.data[NAE_ROUTING_CONFIGURATION_PATH];
28066
- if (!!viewConfigurationPath) {
28067
- const viewConfiguration = this._config.getViewByPath(viewConfigurationPath);
28068
- Object.entries(viewConfiguration.children).forEach(([key, childView]) => {
28069
- this.resolveUriForChildViews(viewConfigurationPath + '/' + key, childView);
28070
- this.resolveHiddenMenuItemFromChildViews(viewConfigurationPath + '/' + key, childView);
28071
- });
28072
- }
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$;
28073
28087
  }
28074
28088
  get currentNode() {
28075
28089
  return this._currentNode;
28076
28090
  }
28077
28091
  set currentNode(node) {
28078
- if (node === this._currentNode || this.leftLoading$.isActive || this.rightLoading$.isActive) {
28092
+ if (node === this._currentNode || this._leftLoading$.isActive || this._rightLoading$.isActive) {
28079
28093
  return;
28080
28094
  }
28081
28095
  this._currentNode = node;
@@ -28087,125 +28101,82 @@ class AbstractNavigationDoubleDrawerComponent {
28087
28101
  node.parent = this._uriService.root;
28088
28102
  }
28089
28103
  else {
28090
- this.nodeLoading$.on();
28104
+ this._nodeLoading$.on();
28091
28105
  this._uriService.getNodeByPath(this._uriService.resolveParentPath(node)).subscribe(n => {
28092
28106
  node.parent = !n ? this._uriService.root : n;
28093
- this.nodeLoading$.off();
28107
+ this._nodeLoading$.off();
28094
28108
  }, error => {
28095
28109
  this._log.error(error);
28096
- this.nodeLoading$.off();
28110
+ this._nodeLoading$.off();
28097
28111
  });
28098
28112
  }
28099
28113
  }
28100
- if (this.nodeLoading$.isActive) {
28101
- this.nodeLoading$.subscribe(() => {
28102
- this.resolveMenuItems(node);
28114
+ if (this._nodeLoading$.isActive) {
28115
+ this._nodeLoading$.subscribe(() => {
28116
+ this.loadNavigationItems(node);
28103
28117
  });
28104
28118
  }
28105
28119
  else {
28106
- this.resolveMenuItems(node);
28120
+ this.loadNavigationItems(node);
28107
28121
  }
28108
28122
  }
28109
- resolveMenuItems(node) {
28110
- if (this._uriService.isRoot(node)) {
28111
- this.leftItems = [];
28112
- this.loadRightSide();
28113
- }
28114
- else {
28115
- if (!this.leftItems.find(item => item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
28116
- this.loadLeftSide();
28117
- }
28118
- this.loadRightSide();
28119
- }
28123
+ get itemClicked$() {
28124
+ return this.itemClicked;
28120
28125
  }
28121
- ngOnDestroy() {
28122
- this._breakpointSubscription?.unsubscribe();
28123
- this._currentNodeSubscription?.unsubscribe();
28124
- this.leftLoading$.complete();
28125
- this.rightLoading$.complete();
28126
- this.nodeLoading$.complete();
28127
- this.loggedOut.complete();
28128
- this.stateChanged.complete();
28129
- this.itemClicked.complete();
28130
- this.resized.complete();
28131
- this.itemLoaded.complete();
28126
+ get itemLoaded$() {
28127
+ return this.itemLoaded;
28132
28128
  }
28133
- get configLeftMenu() {
28134
- return this._configLeftMenu;
28129
+ get rightItems$() {
28130
+ return this._rightItems$;
28135
28131
  }
28136
- get configRightMenu() {
28137
- return this._configRightMenu;
28132
+ get leftItems$() {
28133
+ return this._leftItems$;
28138
28134
  }
28139
- toggleMenu() {
28140
- this.toggleRightMenu();
28141
- if (this.allClosable) {
28142
- this.toggleLeftMenu();
28143
- }
28135
+ get moreItems$() {
28136
+ return this._moreItems$;
28144
28137
  }
28145
- toggleLeftMenu() {
28146
- this._configLeftMenu.opened = !this._configLeftMenu.opened;
28147
- this.stateChanged.emit({ menu: 'left', isOpened: this._configLeftMenu.opened });
28138
+ get hiddenCustomItems$() {
28139
+ return this._hiddenCustomItems$;
28148
28140
  }
28149
- toggleRightMenu() {
28150
- this._configRightMenu.opened = !this._configRightMenu.opened;
28151
- this.stateChanged.emit({ menu: 'right', isOpened: this._configRightMenu.opened });
28141
+ get rightItems() {
28142
+ return this._rightItems$.getValue();
28152
28143
  }
28153
- resolveLayout(isLargeScreen) {
28154
- this._configLeftMenu = isLargeScreen ? {
28155
- mode: 'side',
28156
- opened: true,
28157
- disableClose: true,
28158
- width: this._configLeftMenu.width,
28159
- } : {
28160
- mode: 'over',
28161
- opened: false,
28162
- disableClose: false,
28163
- width: this._configLeftMenu.width,
28164
- };
28165
- this._configRightMenu = isLargeScreen ? {
28166
- mode: 'side',
28167
- opened: true,
28168
- disableClose: true,
28169
- width: this._configRightMenu.width,
28170
- } : {
28171
- mode: 'over',
28172
- opened: false,
28173
- disableClose: false,
28174
- width: this._configRightMenu.width,
28175
- };
28144
+ get leftItems() {
28145
+ return this._leftItems$.getValue();
28176
28146
  }
28177
- getLang() {
28178
- return this._languageService.getLanguage();
28147
+ get moreItems() {
28148
+ return this._moreItems$.getValue();
28179
28149
  }
28180
- logout() {
28181
- this._userService.logout().subscribe(response => {
28182
- this._log.debug('User is logged out');
28183
- this.loggedOut.emit(response);
28184
- if (this._config.get().services && this._config.get().services.auth && this._config.getOnLogoutPath()) {
28185
- const redirectPath = this._config.getOnLogoutPath();
28186
- this._log.info('Redirecting to ' + redirectPath);
28187
- this._router.navigate([redirectPath]);
28188
- }
28189
- });
28150
+ get hiddenCustomItems() {
28151
+ return this._hiddenCustomItems$.getValue();
28190
28152
  }
28191
- impersonate() {
28192
- this._impersonationUserSelect.selectImpersonate();
28153
+ get leftLoading$() {
28154
+ return this._leftLoading$;
28193
28155
  }
28194
- stopImpersonating() {
28195
- this._impersonation.cease();
28156
+ get rightLoading$() {
28157
+ return this._rightLoading$;
28196
28158
  }
28197
- get user() {
28198
- return this._userService.user;
28159
+ get nodeLoading$() {
28160
+ return this._nodeLoading$;
28199
28161
  }
28200
- get canGoBackLoading$() {
28201
- 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
+ }
28202
28173
  }
28203
28174
  /**
28204
28175
  * On home click, the current level is set to 0, and current parent is
28205
28176
  * set to root node.
28206
28177
  * */
28207
28178
  onHomeClick() {
28208
- if (this.leftLoading$.isActive || this.rightLoading$.isActive) {
28179
+ if (this._leftLoading$.isActive || this._rightLoading$.isActive) {
28209
28180
  return;
28210
28181
  }
28211
28182
  this._uriService.activeNode = this._uriService.root;
@@ -28218,13 +28189,19 @@ class AbstractNavigationDoubleDrawerComponent {
28218
28189
  * Current level is set to a lower number in order to set the left side menu.
28219
28190
  * */
28220
28191
  onBackClick() {
28221
- 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)) {
28222
28193
  return;
28223
28194
  }
28224
28195
  this._uriService.activeNode = this._currentNode.parent;
28225
28196
  this.itemClicked.emit({ uriNode: this._uriService.activeNode, isHome: false });
28226
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
+ * */
28227
28203
  onItemClick(item) {
28204
+ this._currentNavigationItem = item;
28228
28205
  if (item.resource === undefined) {
28229
28206
  // custom view represented only in nae.json
28230
28207
  if (item.processUri === this.currentNode.uriPath) {
@@ -28237,10 +28214,13 @@ class AbstractNavigationDoubleDrawerComponent {
28237
28214
  }
28238
28215
  else {
28239
28216
  const path = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value;
28240
- if (this.hasItemChildren(item) && !this.leftLoading$.isActive && !this.rightLoading$.isActive) {
28217
+ if (DoubleDrawerUtils.hasItemChildren(item) && !this._leftLoading$.isActive && !this._rightLoading$.isActive) {
28241
28218
  this._uriService.getNodeByPath(path).subscribe(node => {
28242
28219
  this._uriService.activeNode = node;
28243
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
+ });
28244
28224
  }, error => {
28245
28225
  this._log.error(error);
28246
28226
  });
@@ -28255,18 +28235,77 @@ class AbstractNavigationDoubleDrawerComponent {
28255
28235
  }
28256
28236
  }
28257
28237
  }
28258
- hasItemChildren(item) {
28259
- 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
+ }
28260
28258
  }
28261
- isItemAndNodeEqual(item, node) {
28262
- 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;
28263
28302
  }
28264
28303
  loadLeftSide() {
28265
28304
  if (this._uriService.isRoot(this._currentNode)) {
28266
- this.leftItems = [];
28305
+ this._leftItems$.next([]);
28267
28306
  return;
28268
28307
  }
28269
- this.leftLoading$.on();
28308
+ this._leftLoading$.on();
28270
28309
  this._uriService.getItemCaseByNodePath(this.currentNode.parent).subscribe(page => {
28271
28310
  let childCases$;
28272
28311
  let targetItem;
@@ -28276,31 +28315,31 @@ class AbstractNavigationDoubleDrawerComponent {
28276
28315
  }
28277
28316
  else {
28278
28317
  targetItem = page.content[0];
28279
- orderedChildCaseIds = this.extractChildCaseIds(targetItem);
28318
+ orderedChildCaseIds = DoubleDrawerUtils.extractChildCaseIds(targetItem);
28280
28319
  childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
28281
28320
  }
28282
28321
  childCases$.subscribe(result => {
28283
28322
  result = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28284
- 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)));
28285
28324
  this.resolveCustomViewsInLeftSide();
28286
- this.leftLoading$.off();
28325
+ this._leftLoading$.off();
28287
28326
  this.itemLoaded.emit({ menu: 'left', items: this.leftItems });
28288
28327
  }, error => {
28289
28328
  this._log.error(error);
28290
- this.leftItems = [];
28329
+ this._leftItems$.next([]);
28291
28330
  this.resolveCustomViewsInLeftSide();
28292
- this.leftLoading$.off();
28331
+ this._leftLoading$.off();
28293
28332
  });
28294
28333
  }, error => {
28295
28334
  this._log.error(error);
28296
- this.leftItems = [];
28335
+ this._leftItems$.next([]);
28297
28336
  this.resolveCustomViewsInLeftSide();
28298
- this.leftLoading$.off();
28337
+ this._leftLoading$.off();
28299
28338
  });
28300
28339
  }
28301
28340
  loadRightSide() {
28302
- this.rightLoading$.on();
28303
- this.moreItems = [];
28341
+ this._rightLoading$.on();
28342
+ this._moreItems$.next([]);
28304
28343
  this._uriService.getItemCaseByNodePath(this.currentNode).subscribe(page => {
28305
28344
  let childCases$;
28306
28345
  let targetItem;
@@ -28310,40 +28349,37 @@ class AbstractNavigationDoubleDrawerComponent {
28310
28349
  }
28311
28350
  else {
28312
28351
  targetItem = page.content[0];
28313
- orderedChildCaseIds = this.extractChildCaseIds(targetItem);
28352
+ orderedChildCaseIds = DoubleDrawerUtils.extractChildCaseIds(targetItem);
28314
28353
  childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
28315
28354
  }
28316
28355
  childCases$.subscribe(result => {
28317
28356
  result = result.sort((a, b) => orderedChildCaseIds.indexOf(a.stringId) - orderedChildCaseIds.indexOf(b.stringId));
28318
28357
  if (result.length > RIGHT_SIDE_INIT_PAGE_SIZE) {
28319
28358
  const rawRightItems = result.splice(0, RIGHT_SIDE_INIT_PAGE_SIZE);
28320
- this.rightItems = rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28321
- 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));
28322
28361
  }
28323
28362
  else {
28324
- this.rightItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
28363
+ this._rightItems$.next(result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i));
28325
28364
  }
28326
28365
  this.resolveCustomViewsInRightSide();
28327
- this.rightLoading$.off();
28366
+ this._rightLoading$.off();
28328
28367
  this.itemLoaded.emit({ menu: 'right', items: this.rightItems });
28329
28368
  }, error => {
28330
28369
  this._log.error(error);
28331
- this.rightItems = [];
28332
- this.moreItems = [];
28370
+ this._rightItems$.next([]);
28371
+ this._moreItems$.next([]);
28333
28372
  this.resolveCustomViewsInRightSide();
28334
- this.rightLoading$.off();
28373
+ this._rightLoading$.off();
28335
28374
  });
28336
28375
  }, error => {
28337
28376
  this._log.error(error);
28338
- this.rightItems = [];
28339
- this.moreItems = [];
28377
+ this._rightItems$.next([]);
28378
+ this._moreItems$.next([]);
28340
28379
  this.resolveCustomViewsInRightSide();
28341
- this.rightLoading$.off();
28380
+ this._rightLoading$.off();
28342
28381
  });
28343
28382
  }
28344
- extractChildCaseIds(item) {
28345
- return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_CHILD_ITEM_IDS)?.value;
28346
- }
28347
28383
  getItemCasesByIdsInOnePage(caseIds) {
28348
28384
  return this.getItemCasesByIds(caseIds, 0, caseIds.length);
28349
28385
  }
@@ -28357,45 +28393,14 @@ class AbstractNavigationDoubleDrawerComponent {
28357
28393
  .set(PaginationParams.PAGE_NUMBER, pageNumber);
28358
28394
  return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
28359
28395
  }
28360
- loadMoreItems() {
28361
- if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
28362
- this.rightItems.push(...this.moreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
28363
- }
28364
- else {
28365
- this.rightItems.push(...this.moreItems);
28366
- this.moreItems = [];
28367
- }
28368
- }
28369
- isAscending() {
28370
- return this.itemsOrder === MenuOrder.Ascending;
28371
- }
28372
- switchOrder() {
28373
- this.itemsOrder = (this.itemsOrder + 1) % 2;
28374
- let multiplier = 1;
28375
- if (this.itemsOrder === MenuOrder.Descending) {
28376
- multiplier = -1;
28377
- }
28378
- this.rightItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28379
- this.leftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
28380
- }
28381
- resolveCustomViewsInRightSide() {
28382
- if (!!this._childCustomViews[this._currentNode.uriPath]) {
28383
- this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.uriPath]));
28384
- }
28385
- }
28386
- resolveCustomViewsInLeftSide() {
28387
- if (!!this._childCustomViews[this._currentNode.parent.uriPath]) {
28388
- this.leftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.uriPath]));
28389
- }
28390
- }
28391
28396
  resolveItemCaseToNavigationItem(itemCase) {
28392
- if (this.representsRootNode(itemCase)) {
28397
+ if (DoubleDrawerUtils.representsRootNode(itemCase)) {
28393
28398
  return;
28394
28399
  }
28395
28400
  const item = {
28396
28401
  access: {},
28397
28402
  navigation: {
28398
- 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,
28399
28404
  title: this.getTranslation(itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_NAME)?.value) || itemCase.title,
28400
28405
  },
28401
28406
  routing: {
@@ -28404,8 +28409,8 @@ class AbstractNavigationDoubleDrawerComponent {
28404
28409
  id: itemCase.stringId,
28405
28410
  resource: itemCase,
28406
28411
  };
28407
- const resolvedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_ALLOWED_ROLES);
28408
- 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);
28409
28414
  if (!!resolvedRoles)
28410
28415
  item.access['role'] = resolvedRoles;
28411
28416
  if (!!resolvedBannedRoles)
@@ -28414,45 +28419,276 @@ class AbstractNavigationDoubleDrawerComponent {
28414
28419
  return;
28415
28420
  return item;
28416
28421
  }
28417
- representsRootNode(item) {
28418
- 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
+ }
28419
28462
  }
28420
28463
  getTranslation(value) {
28421
28464
  const locale = this._translateService.currentLang.split('-')[0];
28422
28465
  return locale in value.translations ? value.translations[locale] : value.defaultValue;
28423
28466
  }
28424
- resolveAccessRoles(filter, roleType) {
28425
- const allowedRoles = filter.immediateData.find(f => f.stringId === roleType)?.options;
28426
- if (!allowedRoles || Object.keys(allowedRoles).length === 0)
28427
- return undefined;
28428
- const roles = [];
28429
- Object.keys(allowedRoles).forEach(combined => {
28430
- const parts = combined.split(':');
28431
- roles.push({
28432
- processId: parts[1],
28433
- roleId: parts[0],
28434
- });
28435
- });
28436
- return roles;
28437
- }
28438
28467
  getItemRoutingPath(itemCase) {
28439
- const transId = SETTINGS_TRANSITION_ID;
28440
- const taskId = itemCase.tasks.find(taskPair => taskPair.transition === transId).task;
28468
+ const taskId = DoubleDrawerUtils.findTaskIdInCase(itemCase, SETTINGS_TRANSITION_ID);
28441
28469
  const url = this._dynamicRoutingService.route;
28442
28470
  return `/${url}/${taskId}`;
28443
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
+ }
28444
28680
  /**
28445
28681
  * Function to check whether the back button should be displayed
28446
28682
  * @returns boolean if the back button should be displayed
28447
28683
  * */
28448
28684
  isOnZeroLevel() {
28449
- return !!this._currentNode?.level ? this._currentNode.level == 0 : true;
28685
+ return !!this._navigationService.currentNode?.level ? this._navigationService.currentNode.level == 0 : true;
28450
28686
  }
28451
28687
  isLeftItemsEmpty() {
28452
- return this.leftItems === undefined || this.leftItems.length === 0;
28688
+ return this._navigationService.leftItems === undefined || this._navigationService.leftItems.length === 0;
28453
28689
  }
28454
28690
  isRightItemsEmpty() {
28455
- return this.rightItems === undefined || this.rightItems.length === 0;
28691
+ return this._navigationService.rightItems === undefined || this._navigationService.rightItems.length === 0;
28456
28692
  }
28457
28693
  uriNodeTrackBy(index, node) {
28458
28694
  return node.id;
@@ -28475,33 +28711,41 @@ class AbstractNavigationDoubleDrawerComponent {
28475
28711
  // this.userPreferenceService._drawerWidthChanged$.next(this.width);
28476
28712
  // this.contentWidth.next(this.width);
28477
28713
  }
28478
- resolveUriForChildViews(configPath, childView) {
28479
- if (!childView.processUri)
28480
- return;
28481
- if (!this._accessService.canAccessView(childView, configPath))
28482
- return;
28483
- if (!this._childCustomViews[childView.processUri]) {
28484
- this._childCustomViews[childView.processUri] = {};
28485
- }
28486
- this._childCustomViews[childView.processUri][configPath] = {
28487
- id: configPath,
28488
- ...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,
28489
28739
  };
28490
28740
  }
28491
- resolveHiddenMenuItemFromChildViews(configPath, childView) {
28492
- if (!childView.navigation)
28493
- return;
28494
- if (!this._accessService.canAccessView(childView, configPath))
28495
- return;
28496
- if (!!(childView?.navigation?.hidden)) {
28497
- this.hiddenCustomItems.push({
28498
- id: configPath,
28499
- ...childView,
28500
- });
28501
- }
28741
+ canApplyAutoSelect() {
28742
+ return this.configUrl === this._router.url;
28743
+ }
28744
+ openAvailableView() {
28745
+ this._navigationService.openAvailableView();
28502
28746
  }
28503
28747
  }
28504
- 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 });
28505
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 });
28506
28750
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
28507
28751
  type: Component,
@@ -28509,7 +28753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28509
28753
  selector: 'ncc-abstract-navigation-double-drawer',
28510
28754
  template: '',
28511
28755
  }]
28512
- }], 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: [{
28513
28757
  type: Input
28514
28758
  }], portalRightMenu: [{
28515
28759
  type: Input
@@ -28672,7 +28916,7 @@ class AbstractGroupNavigationComponentResolverComponent {
28672
28916
  });
28673
28917
  }
28674
28918
  }
28675
- 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 });
28676
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 });
28677
28921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractGroupNavigationComponentResolverComponent, decorators: [{
28678
28922
  type: Component,
@@ -28680,7 +28924,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28680
28924
  selector: 'ncc-abstract-group-nagiation-resolver',
28681
28925
  template: ''
28682
28926
  }]
28683
- }], 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 }]; } });
28684
28928
 
28685
28929
  class AbstractBreadcrumbsComponent {
28686
28930
  constructor(_uriService, _caseResourceService, _activatedRoute, _router, _dynamicRoutingService, _translateService, _log) {
@@ -28717,7 +28961,7 @@ class AbstractBreadcrumbsComponent {
28717
28961
  }
28718
28962
  const splitPath = this._uriService.splitNodePath(this._uriService.activeNode);
28719
28963
  const fullPath = this.createFullPath(splitPath);
28720
- 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 + '\")');
28721
28965
  fullPathQueries.push('(taskMongoIds:\"' + filterId + '\")');
28722
28966
  const searchBody = {
28723
28967
  query: fullPathQueries.join(" OR ")
@@ -28799,7 +29043,7 @@ class AbstractBreadcrumbsComponent {
28799
29043
  let tmp = '';
28800
29044
  return splitPath.filter(s => s !== "").map((value) => {
28801
29045
  tmp += AbstractBreadcrumbsComponent.DELIMETER + value;
28802
- return tmp.replace("//", AbstractBreadcrumbsComponent.DELIMETER);
29046
+ return tmp?.replace("//", AbstractBreadcrumbsComponent.DELIMETER);
28803
29047
  });
28804
29048
  }
28805
29049
  immediateValue(aCase, fieldId) {
@@ -28814,7 +29058,7 @@ AbstractBreadcrumbsComponent.DOTS = '...';
28814
29058
  AbstractBreadcrumbsComponent.DELIMETER = '/';
28815
29059
  AbstractBreadcrumbsComponent.NODE_PATH = 'nodePath';
28816
29060
  AbstractBreadcrumbsComponent.ITEM_SETTINGS = 'item_settings';
28817
- 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 });
28818
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 });
28819
29063
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractBreadcrumbsComponent, decorators: [{
28820
29064
  type: Component,
@@ -28822,7 +29066,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28822
29066
  selector: 'ncc-breadcrumbs-component',
28823
29067
  template: ''
28824
29068
  }]
28825
- }], 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: [{
28826
29070
  type: Input
28827
29071
  }], showFilter: [{
28828
29072
  type: Input
@@ -28834,6 +29078,226 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
28834
29078
  type: Input
28835
29079
  }] } });
28836
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
+ if (!dashboardItemsOptions || Object.keys(dashboardItemsOptions).length === 0) {
29137
+ this.loading$.off();
29138
+ return;
29139
+ }
29140
+ const dashboardMenuToItems = Object.entries(dashboardItemsOptions)
29141
+ .filter(([key, value]) => value.defaultValue != null)
29142
+ .reduce((accum, [key, value]) => {
29143
+ accum[value.defaultValue] = key;
29144
+ return accum;
29145
+ }, {});
29146
+ let dashboardItemsParams = new HttpParams()
29147
+ .set(PaginationParams.PAGE_SIZE, 100);
29148
+ this.getDashboardItems(dashboardItemsOptions, dashboardItemsParams);
29149
+ this.getMenuItems(dashboardMenuToItems, dashboardItemsParams);
29150
+ });
29151
+ }
29152
+ getMenuItems(dashboardMenuToItems, dashboardItemsParams) {
29153
+ let menuItemsSearchBody = {
29154
+ stringId: Object.keys(dashboardMenuToItems)
29155
+ };
29156
+ this._caseResource.searchCases(SimpleFilter.fromCaseQuery(menuItemsSearchBody), dashboardItemsParams).subscribe(resultItems => {
29157
+ const itemsContent = resultItems.content;
29158
+ itemsContent.forEach(menuItemCase => {
29159
+ const navigationItem = this._doubleDrawerNavigationService.resolveItemCaseToNavigationItem(menuItemCase);
29160
+ const dashboardItemId = dashboardMenuToItems[menuItemCase.stringId];
29161
+ if (!navigationItem) {
29162
+ this.dashboardItems = this.dashboardItems.filter(dashItem => dashItem.stringId !== dashboardItemId);
29163
+ return;
29164
+ }
29165
+ this.dashboardItemsMapping[dashboardItemId] = menuItemCase;
29166
+ });
29167
+ this.itemsLoaded += 1;
29168
+ if (this.itemsLoaded == 2) {
29169
+ this.loading$.off();
29170
+ }
29171
+ });
29172
+ }
29173
+ getDashboardItems(dashboardItemsOptions, dashboardItemsParams) {
29174
+ const itemsOrder = this.getManagementItemsOrder(this.dashboardCase)?.split(",");
29175
+ let dashboardItemsSearchBody = {
29176
+ stringId: Object.keys(dashboardItemsOptions)
29177
+ };
29178
+ this._caseResource.searchCases(SimpleFilter.fromCaseQuery(dashboardItemsSearchBody), dashboardItemsParams).subscribe(resultItems => {
29179
+ const itemsContent = resultItems.content;
29180
+ if (!itemsContent || !itemsContent.length || itemsContent.length < 1) {
29181
+ this.loading$.off();
29182
+ this._log.error('No dashboard items found.');
29183
+ }
29184
+ itemsContent.forEach(item => {
29185
+ const itemIndex = itemsOrder?.indexOf(item.stringId);
29186
+ this.dashboardItems[itemIndex] = item;
29187
+ });
29188
+ this.itemsLoaded += 1;
29189
+ if (this.itemsLoaded == 2) {
29190
+ this.loading$.off();
29191
+ }
29192
+ });
29193
+ }
29194
+ // GET item fields
29195
+ getItemName(itemCase) {
29196
+ const i18nFieldValue = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_NAME_DATAFIELD);
29197
+ return this._languageService.getLanguage() in i18nFieldValue.translations
29198
+ ? i18nFieldValue.translations[this._languageService.getLanguage()]
29199
+ : i18nFieldValue.defaultValue;
29200
+ }
29201
+ getItemIcon(itemCase) {
29202
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_ICON_DATAFIELD);
29203
+ }
29204
+ getItemInternal(itemCase) {
29205
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_INTERNAL_DATAFIELD);
29206
+ }
29207
+ getItemExternalIcon(itemCase) {
29208
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_EXTERNAL_ICON_DATAFIELD);
29209
+ }
29210
+ getItemURL(itemCase) {
29211
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_URL_DATAFIELD);
29212
+ }
29213
+ getItemFontColor(itemCase) {
29214
+ const fontColor = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_FONT_COLOR_DATAFIELD);
29215
+ return !!fontColor && fontColor !== '' ? fontColor : 'black';
29216
+ }
29217
+ getItemFontWeight(itemCase) {
29218
+ const fontWeight = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_FONT_WEIGHT_DATAFIELD);
29219
+ return !!fontWeight && fontWeight !== '' ? fontWeight : 'normal';
29220
+ }
29221
+ getItemIconColor(itemCase) {
29222
+ const iconColor = this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_ITEM_ICON_COLOR_DATAFIELD);
29223
+ return !!iconColor && iconColor !== '' ? iconColor : 'black';
29224
+ }
29225
+ // GET management fields
29226
+ getManagementSimpleToolbar(itemCase) {
29227
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_SIMPLE_TOOLBAR_DATAFIELD);
29228
+ }
29229
+ getManagementProfileToolbar(itemCase) {
29230
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_TOOLBAR_DATAFIELD);
29231
+ }
29232
+ getManagementLanguageToolbar(itemCase) {
29233
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LANGUAGE_TOOLBAR_DATAFIELD);
29234
+ }
29235
+ getManagementLogoutToolbar(itemCase) {
29236
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGOUT_TOOLBAR_DATAFIELD);
29237
+ }
29238
+ getManagementName(itemCase) {
29239
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_NAME_DATAFIELD);
29240
+ }
29241
+ getManagementLogo(itemCase) {
29242
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGO_DATAFIELD);
29243
+ }
29244
+ getManagementItemsOrder(itemCase) {
29245
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEMS_ORDER_DATAFIELD);
29246
+ }
29247
+ getManagementProfileUrl(itemCase) {
29248
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_URL_DATAFIELD);
29249
+ }
29250
+ getManagementLoginUrl(itemCase) {
29251
+ return this.getFieldValue(itemCase, AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGIN_URL_DATAFIELD);
29252
+ }
29253
+ getFieldValue(itemCase, fieldId) {
29254
+ return itemCase.immediateData.find(immediateField => immediateField["importId"] === fieldId).value;
29255
+ }
29256
+ navigate(itemCase) {
29257
+ if (this.getItemInternal(itemCase)) {
29258
+ const itemPath = this._doubleDrawerNavigationService.getItemRoutingPath(this.dashboardItemsMapping[itemCase.stringId]);
29259
+ const nodePath = this.getFieldValue(this.dashboardItemsMapping[itemCase.stringId], 'nodePath');
29260
+ this._uriService.getNodeByPath(nodePath).subscribe(uriResource => {
29261
+ this._uriService.activeNode = uriResource;
29262
+ this._router.navigate([itemPath]);
29263
+ });
29264
+ }
29265
+ else {
29266
+ window.open(this.getItemURL(itemCase), "_blank");
29267
+ }
29268
+ }
29269
+ }
29270
+ AbstractDashboardComponent.MAIN_DASHBOARD = 'main_dashboard';
29271
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_IDENTIFIER = 'dashboard_management';
29272
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ID_DATAFIELD = 'dashboard_id';
29273
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEM_TO_MENU_ITEM_DATAFIELD = 'dashboard_item_to_menu_item';
29274
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_SIMPLE_TOOLBAR_DATAFIELD = 'simple_dashboard_toolbar';
29275
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_TOOLBAR_DATAFIELD = 'profile_dashboard_toolbar';
29276
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LANGUAGE_TOOLBAR_DATAFIELD = 'language_dashboard_toolbar';
29277
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGOUT_TOOLBAR_DATAFIELD = 'logout_dashboard_toolbar';
29278
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_NAME_DATAFIELD = 'dashboard_name';
29279
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGO_DATAFIELD = 'dashboard_logo';
29280
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_ITEMS_ORDER_DATAFIELD = "items_order";
29281
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_PROFILE_URL_DATAFIELD = "profile_url";
29282
+ AbstractDashboardComponent.DASHBOARD_MANAGEMENT_LOGIN_URL_DATAFIELD = "login_url";
29283
+ AbstractDashboardComponent.DASHBOARD_ITEM_ICON_DATAFIELD = 'item_icon';
29284
+ AbstractDashboardComponent.DASHBOARD_ITEM_NAME_DATAFIELD = 'item_name';
29285
+ AbstractDashboardComponent.DASHBOARD_ITEM_URL_DATAFIELD = 'external_url';
29286
+ AbstractDashboardComponent.DASHBOARD_ITEM_INTERNAL_DATAFIELD = 'is_internal';
29287
+ AbstractDashboardComponent.DASHBOARD_ITEM_EXTERNAL_ICON_DATAFIELD = 'external_icon';
29288
+ AbstractDashboardComponent.DASHBOARD_ITEM_FONT_COLOR_DATAFIELD = 'font_color';
29289
+ AbstractDashboardComponent.DASHBOARD_ITEM_FONT_WEIGHT_DATAFIELD = 'font_weight';
29290
+ AbstractDashboardComponent.DASHBOARD_ITEM_ICON_COLOR_DATAFIELD = 'icon_color';
29291
+ 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 });
29292
+ AbstractDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDashboardComponent, selector: "ncc-dashboard", ngImport: i0, template: '', isInline: true });
29293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDashboardComponent, decorators: [{
29294
+ type: Component,
29295
+ args: [{
29296
+ selector: 'ncc-dashboard',
29297
+ template: ''
29298
+ }]
29299
+ }], ctorParameters: function () { return [{ type: CaseResourceService }, { type: LoggerService }, { type: UriService }, { type: i2$5.Router }, { type: LanguageService }, { type: DoubleDrawerNavigationService }]; } });
29300
+
28837
29301
  /**
28838
29302
  * Search component search mode
28839
29303
  */
@@ -28948,6 +29412,18 @@ function extractFieldValueFromData(dataSection, fieldId) {
28948
29412
  }
28949
29413
  return field.value;
28950
29414
  }
29415
+ /**
29416
+ * Checks if the data groups contain view
29417
+ * @returns true if the data contains filter
29418
+ * @throws Error if filter field is not found
29419
+ * */
29420
+ function hasView(dataSection) {
29421
+ const field = getFieldFromDataGroups(dataSection, 'view_configuration_form');
29422
+ if (field === undefined) {
29423
+ throw new Error(`Field view_configuration_form could not be resolved`);
29424
+ }
29425
+ return field.value !== null && field.value !== undefined && field.value.length > 0;
29426
+ }
28951
29427
 
28952
29428
  function addAllowedNets(allowedNets, existingAllowedNets) {
28953
29429
  if (!!allowedNets && allowedNets.length > 0) {
@@ -28967,6 +29443,9 @@ function tabbedAllowedNetsServiceFactory(factory, tabData) {
28967
29443
  * It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
28968
29444
  */
28969
29445
  function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
29446
+ if (!navigationItemTaskData) {
29447
+ return factory.createWithAllNets();
29448
+ }
28970
29449
  const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
28971
29450
  const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
28972
29451
  if (filterField === undefined) {
@@ -29139,14 +29618,24 @@ class FilterExtractionService {
29139
29618
  }
29140
29619
  return navigationItemTaskAllowedNetsServiceFactory(this._factory, this.baseAllowedNets, sliced);
29141
29620
  }
29142
- extractCompleteAdditionalFilterFromData(dataSection) {
29621
+ extractCompleteAdditionalFilterFromData(dataSection, activatedRoute) {
29143
29622
  const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
29144
29623
  if (taskRefIndex === undefined) {
29145
29624
  return undefined;
29146
29625
  }
29147
- return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1));
29626
+ return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1), activatedRoute);
29148
29627
  }
29149
- extractCompleteFilterFromData(dataSection, filterData, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
29628
+ extractCompleteFilterFromData(dataSection, activatedRoute, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
29629
+ if (!dataSection) {
29630
+ if (!activatedRoute) {
29631
+ throw new Error('ActivatedRoute not provided.');
29632
+ }
29633
+ const singleCaseId = activatedRoute.snapshot.paramMap.get('singleCaseId');
29634
+ if (!singleCaseId) {
29635
+ throw new Error('Case ID not found in route.');
29636
+ }
29637
+ return SimpleFilter.fromTaskQuery({ case: { id: singleCaseId } });
29638
+ }
29150
29639
  const filterIndex = getFieldIndexFromDataGroups(dataSection, fieldId);
29151
29640
  if (filterIndex === undefined) {
29152
29641
  return undefined;
@@ -29158,10 +29647,7 @@ class FilterExtractionService {
29158
29647
  catch (e) {
29159
29648
  throw new Error('Filter segment could not be extracted from filter field');
29160
29649
  }
29161
- if (!!filterData) {
29162
- filterSegment = filterSegment.merge(filterData, MergeOperator.AND);
29163
- }
29164
- const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1), filterData);
29650
+ const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1), activatedRoute);
29165
29651
  if (parentFilter !== undefined && parentFilter.type === filterSegment.type) {
29166
29652
  return filterSegment.merge(parentFilter, MergeOperator.AND);
29167
29653
  }
@@ -29437,7 +29923,7 @@ class AbstractTabbedCaseViewComponent extends AbstractCaseViewComponent {
29437
29923
  }, this._autoswitchToTaskTab, this._openExistingTab);
29438
29924
  }
29439
29925
  }
29440
- 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 });
29926
+ 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 });
29441
29927
  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 });
29442
29928
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedCaseViewComponent, decorators: [{
29443
29929
  type: Component,
@@ -29463,7 +29949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29463
29949
  }, {
29464
29950
  type: Inject,
29465
29951
  args: [NAE_NEW_CASE_CREATION_CONFIGURATION_DATA]
29466
- }] }, { type: i3$1.ActivatedRoute }]; } });
29952
+ }] }, { type: i2$5.ActivatedRoute }]; } });
29467
29953
 
29468
29954
  class AbstractTabbedTaskViewComponent extends AbstractTaskViewComponent {
29469
29955
  constructor(taskViewService, _injectedTabData, _activatedRoute) {
@@ -29478,7 +29964,7 @@ class AbstractTabbedTaskViewComponent extends AbstractTaskViewComponent {
29478
29964
  this.subTaskView.unsubscribe();
29479
29965
  }
29480
29966
  }
29481
- 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 });
29967
+ 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 });
29482
29968
  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 });
29483
29969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedTaskViewComponent, decorators: [{
29484
29970
  type: Component,
@@ -29489,7 +29975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29489
29975
  }], ctorParameters: function () { return [{ type: TaskViewService }, { type: undefined, decorators: [{
29490
29976
  type: Inject,
29491
29977
  args: [NAE_TAB_DATA]
29492
- }] }, { type: i3$1.ActivatedRoute }]; } });
29978
+ }] }, { type: i2$5.ActivatedRoute }]; } });
29493
29979
 
29494
29980
  const NAE_TREE_CASE_VIEW_CONFIGURATION = new InjectionToken('NaeTreeCaseViewConfiguration');
29495
29981
 
@@ -30637,6 +31123,17 @@ class AbstractWorkflowViewComponent extends AbstractViewWithHeadersComponent {
30637
31123
  this.workflows$ = this._workflowViewService.workflows$;
30638
31124
  this.loading$ = this._workflowViewService.loading$;
30639
31125
  this.footerSize = 0;
31126
+ this.fullTextFormControl = new FormControl();
31127
+ }
31128
+ ngOnInit() {
31129
+ this.fullTextFormControl.valueChanges.pipe(debounceTime(600), filter(newValue => typeof newValue === 'string'), map((newValue) => newValue.trim())).subscribe((fulltext) => {
31130
+ if (fulltext.length === 0) {
31131
+ this._workflowViewService.clearSearchTitle();
31132
+ }
31133
+ else {
31134
+ this._workflowViewService.setSearchTitle(fulltext);
31135
+ }
31136
+ });
30640
31137
  }
30641
31138
  ngAfterViewInit() {
30642
31139
  this.initializeHeader(this.workflowHeader);
@@ -30685,7 +31182,7 @@ class AbstractWorkflowViewComponent extends AbstractViewWithHeadersComponent {
30685
31182
  }
30686
31183
  }
30687
31184
  }
30688
- 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 });
31185
+ 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 });
30689
31186
  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 });
30690
31187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractWorkflowViewComponent, decorators: [{
30691
31188
  type: Component,
@@ -30693,7 +31190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30693
31190
  selector: 'ncc-abstract-workflow-view',
30694
31191
  template: ''
30695
31192
  }]
30696
- }], ctorParameters: function () { return [{ type: i1$3.MatDialog }, { type: WorkflowViewService }, { type: LoggerService }, { type: ProcessService }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { footerSize: [{
31193
+ }], ctorParameters: function () { return [{ type: i1$3.MatDialog }, { type: WorkflowViewService }, { type: LoggerService }, { type: ProcessService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { footerSize: [{
30697
31194
  type: Input
30698
31195
  }], showDeleteMenu: [{
30699
31196
  type: Input
@@ -30759,7 +31256,7 @@ class AbstractDefaultCaseListComponent extends TabbedVirtualScrollComponent {
30759
31256
  });
30760
31257
  }
30761
31258
  }
30762
- 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 });
31259
+ 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 });
30763
31260
  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 });
30764
31261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultCaseListComponent, decorators: [{
30765
31262
  type: Component,
@@ -30772,7 +31269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30772
31269
  }, {
30773
31270
  type: Inject,
30774
31271
  args: [NAE_TAB_DATA]
30775
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { selectedHeaders$: [{
31272
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { selectedHeaders$: [{
30776
31273
  type: Input
30777
31274
  }], responsiveBody: [{
30778
31275
  type: Input
@@ -30812,7 +31309,7 @@ class AbstractCaseListComponent extends AbstractDefaultCaseListComponent {
30812
31309
  this._caseViewService.nextPage(this.viewport.getRenderedRange(), this.viewport.getDataLength());
30813
31310
  }
30814
31311
  }
30815
- 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 });
31312
+ 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 });
30816
31313
  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 });
30817
31314
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListComponent, decorators: [{
30818
31315
  type: Component,
@@ -30825,7 +31322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30825
31322
  }, {
30826
31323
  type: Inject,
30827
31324
  args: [NAE_TAB_DATA]
30828
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { viewport: [{
31325
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { viewport: [{
30829
31326
  type: ViewChild,
30830
31327
  args: [CdkVirtualScrollViewport]
30831
31328
  }] } });
@@ -30838,7 +31335,7 @@ class AbstractCaseListPaginatorComponent extends AbstractDefaultCaseListComponen
30838
31335
  this.route = route;
30839
31336
  this.pageSize = 20;
30840
31337
  this.pageIndex = 0;
30841
- this.pageSizeOptions = [10, 20, 50, 100];
31338
+ this.pageSizeOptions = [10, 20, 50];
30842
31339
  this._caseViewService.nextPagePagination(this.pageSize, this.pageIndex);
30843
31340
  this._caseViewService.paginationView = true;
30844
31341
  this.cases$ = this._caseViewService.cases$.pipe(tap(() => {
@@ -30856,7 +31353,7 @@ class AbstractCaseListPaginatorComponent extends AbstractDefaultCaseListComponen
30856
31353
  return caze.stringId;
30857
31354
  }
30858
31355
  }
30859
- 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 });
31356
+ 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 });
30860
31357
  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 });
30861
31358
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListPaginatorComponent, decorators: [{
30862
31359
  type: Component,
@@ -30869,7 +31366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30869
31366
  }, {
30870
31367
  type: Inject,
30871
31368
  args: [NAE_TAB_DATA]
30872
- }] }, { type: i3$1.ActivatedRoute }]; }, propDecorators: { approval: [{
31369
+ }] }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { approval: [{
30873
31370
  type: Input
30874
31371
  }], disabled: [{
30875
31372
  type: Input
@@ -31130,41 +31627,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31130
31627
  type: Input
31131
31628
  }] } });
31132
31629
 
31133
- class TaskConst {
31134
- }
31135
- TaskConst.TRANSITION_ID = 'transitionId';
31136
31630
  class AbstractSingleTaskViewComponent extends AbstractViewWithHeadersComponent {
31137
- constructor(taskViewService, activatedRoute, baseFilter) {
31631
+ constructor(taskViewService, activatedRoute) {
31138
31632
  super(taskViewService, activatedRoute);
31139
31633
  this.taskViewService = taskViewService;
31140
- this.baseFilter = baseFilter;
31141
31634
  this.initiallyExpanded = true;
31142
31635
  this.preventCollapse = true;
31143
31636
  this.noTaskPresent = new EventEmitter();
31144
- this.taskPanelData = this.taskViewService.tasks$.pipe(map(tasks => tasks.find(panelData => this.isTaskMatchingFilter(panelData, baseFilter.filter.getRequestBody())))).pipe(tap(panelData => {
31637
+ this.taskPanelData = this.taskViewService.tasks$.pipe(map(tasks => tasks?.length > 0 ? tasks[0] : undefined), tap(panelData => {
31145
31638
  if (!!panelData) {
31146
31639
  panelData.initiallyExpanded = true;
31640
+ panelData.task.assignPolicy = AssignPolicy.auto;
31641
+ this.finishTitle = panelData.task.finishTitle;
31147
31642
  }
31148
31643
  }));
31149
31644
  this.loading$ = this.taskViewService.loading$;
31150
31645
  }
31151
- ngOnDestroy() {
31152
- super.ngOnDestroy();
31153
- if (!!this.subRoute) {
31154
- this.subRoute.unsubscribe();
31155
- }
31156
- if (!!this.subPanelData) {
31157
- this.subPanelData.unsubscribe();
31158
- }
31159
- }
31160
31646
  get task$() {
31161
31647
  return this.taskPanelData;
31162
31648
  }
31163
- isTaskMatchingFilter(panelData, taskSearchRequestBody) {
31164
- return panelData.task.stringId === taskSearchRequestBody.stringId || panelData.task.transitionId === taskSearchRequestBody.transitionId;
31165
- }
31166
31649
  }
31167
- 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 });
31650
+ 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 });
31168
31651
  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 });
31169
31652
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, decorators: [{
31170
31653
  type: Component,
@@ -31172,10 +31655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31172
31655
  selector: 'ncc-abstract-single-task-view',
31173
31656
  template: ''
31174
31657
  }]
31175
- }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i3$1.ActivatedRoute }, { type: undefined, decorators: [{
31176
- type: Inject,
31177
- args: [NAE_BASE_FILTER]
31178
- }] }]; }, propDecorators: { initiallyExpanded: [{
31658
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$5.ActivatedRoute }]; }, propDecorators: { initiallyExpanded: [{
31179
31659
  type: Input
31180
31660
  }], preventCollapse: [{
31181
31661
  type: Input
@@ -31183,6 +31663,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
31183
31663
  type: Output
31184
31664
  }] } });
31185
31665
 
31666
+ class AbstractTabbedSingleTaskViewComponent extends AbstractSingleTaskViewComponent {
31667
+ constructor(taskViewService, _injectedTabData, _activatedRoute) {
31668
+ super(taskViewService, _activatedRoute);
31669
+ this._injectedTabData = _injectedTabData;
31670
+ this.subTaskView = taskViewService.closeTab.subscribe(() => {
31671
+ _injectedTabData.tabViewRef.closeTabIndex(_injectedTabData.tabViewRef.currentlySelectedTab());
31672
+ });
31673
+ }
31674
+ ngOnDestroy() {
31675
+ super.ngOnDestroy();
31676
+ this.subTaskView.unsubscribe();
31677
+ }
31678
+ }
31679
+ 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 });
31680
+ 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 });
31681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTabbedSingleTaskViewComponent, decorators: [{
31682
+ type: Component,
31683
+ args: [{
31684
+ selector: 'ncc-abstract-tabbed-single-task-view',
31685
+ template: ''
31686
+ }]
31687
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: undefined, decorators: [{
31688
+ type: Inject,
31689
+ args: [NAE_TAB_DATA]
31690
+ }] }, { type: i2$5.ActivatedRoute }]; } });
31691
+
31186
31692
  /* INTERFACES */
31187
31693
 
31188
31694
  class PublicProcessService extends ProcessService {
@@ -32478,6 +32984,7 @@ class ProcessList {
32478
32984
  if (this.loading) {
32479
32985
  return;
32480
32986
  }
32987
+ const processes = new Subject();
32481
32988
  this._loading$.on();
32482
32989
  this._resources.getAll().pipe(catchError(err => {
32483
32990
  this._log.error('Failed to load Petri nets', err);
@@ -32509,8 +33016,10 @@ class ProcessList {
32509
33016
  cache[net.identifier].newestVersion = cache[net.identifier].processes[0].version;
32510
33017
  });
32511
33018
  this._processes = Object.values(cache).sort();
33019
+ processes.next(this._processes);
32512
33020
  this._loading$.off();
32513
33021
  });
33022
+ return processes.asObservable();
32514
33023
  }
32515
33024
  prepareToTryAgainToLoadRoles(item) {
32516
33025
  if (!item || !item.emptyRoles) {
@@ -32637,17 +33146,24 @@ class AbstractRoleAssignmentComponent {
32637
33146
  constructor(_service, _userService) {
32638
33147
  this._service = _service;
32639
33148
  this._userService = _userService;
33149
+ this.filteredProcesses = [];
32640
33150
  this.searchUserControl = new FormControl();
33151
+ this.searchNetControl = new FormControl();
32641
33152
  this.SEARCH_DEBOUNCE_TIME = 600;
32642
33153
  this.users = this._service.userList;
32643
33154
  this.nets = this._service.processList;
32644
33155
  this.userMultiSelect = true;
32645
33156
  }
32646
33157
  ngOnInit() {
32647
- this.nets.loadProcesses();
33158
+ this.nets.loadProcesses().subscribe(processes => {
33159
+ this.filteredProcesses = processes;
33160
+ });
32648
33161
  this.subValueChanges = this.searchUserControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
32649
33162
  this.users.reload(searchText);
32650
33163
  });
33164
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33165
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33166
+ });
32651
33167
  }
32652
33168
  ngAfterViewInit() {
32653
33169
  this.subUsers = this.users.usersReload$.subscribe(() => {
@@ -32659,9 +33175,11 @@ class AbstractRoleAssignmentComponent {
32659
33175
  ngOnDestroy() {
32660
33176
  this._userService.reload();
32661
33177
  this.subValueChanges.unsubscribe();
33178
+ this.subNetValueChanges.unsubscribe();
32662
33179
  this.subUsers.unsubscribe();
32663
33180
  this.users = undefined;
32664
33181
  this.nets = undefined;
33182
+ this.filteredProcesses = undefined;
32665
33183
  }
32666
33184
  loadNextUserPage() {
32667
33185
  if (!this.viewport) {
@@ -32790,6 +33308,9 @@ class AbstractUserInviteComponent {
32790
33308
  this._signUpService = _signUpService;
32791
33309
  this._snackBar = _snackBar;
32792
33310
  this._translate = _translate;
33311
+ this.filteredProcesses = [];
33312
+ this.SEARCH_DEBOUNCE_TIME = 600;
33313
+ this.searchNetControl = new FormControl();
32793
33314
  this.nets = this._userInviteService.processList;
32794
33315
  this.loading = new LoadingEmitter();
32795
33316
  this.invitedEmailControl = new FormControl('', [Validators.email, Validators.required]);
@@ -32800,8 +33321,18 @@ class AbstractUserInviteComponent {
32800
33321
  return this._orgList.groups;
32801
33322
  }
32802
33323
  ngOnInit() {
32803
- this.nets.loadProcesses();
33324
+ this.nets.loadProcesses().subscribe(processes => {
33325
+ this.filteredProcesses = processes;
33326
+ });
32804
33327
  this._orgList.loadGroups();
33328
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33329
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33330
+ });
33331
+ }
33332
+ ngOnDestroy() {
33333
+ this.subNetValueChanges.unsubscribe();
33334
+ this.nets = undefined;
33335
+ this.filteredProcesses = undefined;
32805
33336
  }
32806
33337
  removeGroup(org) {
32807
33338
  const itemIndex = this.invitedGroups.findIndex(g => g.id === org.id);
@@ -33058,17 +33589,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
33058
33589
  class AbstractLdapGroupRoleAssignmentComponent {
33059
33590
  constructor(_service) {
33060
33591
  this._service = _service;
33592
+ this.filteredProcesses = [];
33061
33593
  this.searchLdapGroupControl = new FormControl();
33594
+ this.searchNetControl = new FormControl();
33062
33595
  this.SEARCH_DEBOUNCE_TIME = 600;
33063
33596
  this.ldapGroup = this._service.ldapGroupList;
33064
33597
  this.nets = this._service.processList;
33065
33598
  this.ldapGroupMultiSelect = true;
33066
33599
  }
33067
33600
  ngOnInit() {
33068
- this.nets.loadProcesses();
33601
+ this.nets.loadProcesses().subscribe(processes => {
33602
+ this.filteredProcesses = processes;
33603
+ });
33069
33604
  this.subValueChanges = this.searchLdapGroupControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33070
33605
  this.ldapGroup.reload(searchText);
33071
33606
  });
33607
+ this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
33608
+ this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
33609
+ });
33072
33610
  }
33073
33611
  ngAfterViewInit() {
33074
33612
  this.subLdapGroup = this.ldapGroup.ldapGroupsReload$.subscribe(() => {
@@ -33081,7 +33619,9 @@ class AbstractLdapGroupRoleAssignmentComponent {
33081
33619
  this.subValueChanges.unsubscribe();
33082
33620
  this.subLdapGroup.unsubscribe();
33083
33621
  this.ldapGroup = undefined;
33622
+ this.subNetValueChanges.unsubscribe();
33084
33623
  this.nets = undefined;
33624
+ this.filteredProcesses = undefined;
33085
33625
  }
33086
33626
  loadNextLdapGroupPage() {
33087
33627
  if (!this.viewport) {
@@ -33184,11 +33724,12 @@ function mapToContent(source, filter, pagination) {
33184
33724
  /**
33185
33725
  * Converts an {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token into {@link NAE_BASE_FILTER}
33186
33726
  * @param extractionService
33727
+ * @param activatedRoute
33187
33728
  * @param navigationItemTaskData a navigation item task containing the aggregated data representing a navigation item
33188
33729
  */
33189
- function navigationItemTaskFilterFactory(extractionService, navigationItemTaskData, filterData) {
33730
+ function navigationItemTaskFilterFactory(extractionService, activatedRoute, navigationItemTaskData) {
33190
33731
  return {
33191
- filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData, filterData)
33732
+ filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData, activatedRoute)
33192
33733
  };
33193
33734
  }
33194
33735
 
@@ -33203,6 +33744,9 @@ function navigationItemTaskFilterFactory(extractionService, navigationItemTaskDa
33203
33744
  * field, if the filter metadata allow it and the filter is a task filter
33204
33745
  */
33205
33746
  function navigationItemTaskCategoryFactory(categoryResolverService, navigationItemTaskData, defaultCaseSearchCategories, defaultTaskSearchCategories) {
33747
+ if (!navigationItemTaskData) {
33748
+ return [];
33749
+ }
33206
33750
  const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
33207
33751
  if (filterField === undefined) {
33208
33752
  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!`);
@@ -33330,7 +33874,7 @@ class ContainsPipe {
33330
33874
  if (value === null || value === undefined)
33331
33875
  return false;
33332
33876
  if (Array.isArray(value))
33333
- return value.includes(toCheck);
33877
+ return value?.includes(toCheck);
33334
33878
  if (value instanceof Set || value instanceof Map)
33335
33879
  return value.has(toCheck);
33336
33880
  return false;
@@ -34443,11 +34987,11 @@ class TestViewService extends ViewService {
34443
34987
  super([], config, router, logger);
34444
34988
  }
34445
34989
  }
34446
- 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 });
34990
+ 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 });
34447
34991
  TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
34448
34992
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
34449
34993
  type: Injectable
34450
- }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i3$1.Router }, { type: LoggerService }]; } });
34994
+ }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$5.Router }, { type: LoggerService }]; } });
34451
34995
 
34452
34996
  /**
34453
34997
  * A utility class that mock any pageable endpoint that takes one parameter
@@ -34815,7 +35359,7 @@ class Subgrid {
34815
35359
  * @returns the base identifier, if it already is unique. A unique variation on the base identifier if it is already in use.
34816
35360
  */
34817
35361
  assureUniqueness(identifier) {
34818
- const alphaNumIdentifier = 'x' + identifier.replace(/[^0-9a-z]/gi, '');
35362
+ const alphaNumIdentifier = 'x' + identifier?.replace(/[^0-9a-z]/gi, '');
34819
35363
  if (!this._existingIdentifiers.has(alphaNumIdentifier)) {
34820
35364
  this._existingIdentifiers.add(alphaNumIdentifier);
34821
35365
  return alphaNumIdentifier;
@@ -36078,5 +36622,5 @@ const BaseFilterFactoryProvider = {
36078
36622
  * Generated bundle index. Do not edit.
36079
36623
  */
36080
36624
 
36081
- 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 };
36625
+ 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 };
36082
36626
  //# sourceMappingURL=netgrif-components-core.mjs.map