@netgrif/components-core 6.4.0-beta.4 → 6.4.0-beta.6

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 (100) hide show
  1. package/esm2020/assets/i18n/de.json +9 -0
  2. package/esm2020/assets/i18n/en.json +9 -0
  3. package/esm2020/assets/i18n/sk.json +9 -0
  4. package/esm2020/lib/actions/front-action.module.mjs +28 -0
  5. package/esm2020/lib/actions/model/front-action-definition.mjs +2 -0
  6. package/esm2020/lib/actions/model/router-action-definitions.mjs +8 -0
  7. package/esm2020/lib/actions/model/task-action-definitions.mjs +16 -0
  8. package/esm2020/lib/actions/public-api.mjs +6 -0
  9. package/esm2020/lib/actions/services/front-action.service.mjs +27 -0
  10. package/esm2020/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.mjs +6 -2
  11. package/esm2020/lib/data-fields/case-ref-field/model/case-ref-injection-tokens.mjs +2 -1
  12. package/esm2020/lib/data-fields/data-fields.module.mjs +1 -1
  13. package/esm2020/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.mjs +67 -0
  14. package/esm2020/lib/data-fields/enumeration-field/models/enumeration-field.mjs +9 -1
  15. package/esm2020/lib/data-fields/models/changed-fields.mjs +1 -1
  16. package/esm2020/lib/data-fields/multichoice-field/models/multichoice-field.mjs +9 -1
  17. package/esm2020/lib/data-fields/multichoice-field/multichoice-caseref-field/abstract-multichoice-caseref-field.component.mjs +67 -0
  18. package/esm2020/lib/data-fields/public-api.mjs +3 -1
  19. package/esm2020/lib/event/model/event-constants.mjs +5 -1
  20. package/esm2020/lib/event/services/event.service.mjs +23 -1
  21. package/esm2020/lib/filter/user-filters.service.mjs +1 -1
  22. package/esm2020/lib/header/abstract-header.component.mjs +8 -2
  23. package/esm2020/lib/header/header-modes/abstract-header-mode.component.mjs +10 -2
  24. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +5 -1
  25. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +96 -37
  26. package/esm2020/lib/navigation/service/uri.service.mjs +22 -1
  27. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +2 -2
  28. package/esm2020/lib/panel/case-panel/abstract-case-panel.component.mjs +9 -2
  29. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +5 -2
  30. package/esm2020/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.mjs +5 -3
  31. package/esm2020/lib/panel/task-panel-single/abstract-single-task.component.mjs +11 -5
  32. package/esm2020/lib/public/factories/public-search-factory.mjs +15 -4
  33. package/esm2020/lib/registry/front-action-registry.service.mjs +34 -0
  34. package/esm2020/lib/registry/public-api.mjs +2 -1
  35. package/esm2020/lib/resources/interface/event-outcome.mjs +1 -1
  36. package/esm2020/lib/search/fulltext-search-component/abstract-fulltext-search.component.mjs +14 -4
  37. package/esm2020/lib/search/search-component/abstract-search.component.mjs +5 -3
  38. package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +2 -1
  39. package/esm2020/lib/side-menu/content-components/public-api.mjs +2 -1
  40. package/esm2020/lib/side-menu/content-components/task-view/model/task-view-injection-data.mjs +2 -0
  41. package/esm2020/lib/task/services/task-data.service.mjs +11 -9
  42. package/esm2020/lib/task-content/services/single-task-content.service.mjs +4 -4
  43. package/esm2020/lib/task-content/services/task-content.service.mjs +22 -22
  44. package/esm2020/lib/task-content/services/unlimited-task-content.service.mjs +4 -4
  45. package/esm2020/lib/utility/navigation-item-default-headers-factory.mjs +12 -7
  46. package/esm2020/lib/view/abstract/netgrif-paginator-intl.mjs +36 -0
  47. package/esm2020/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +8 -4
  48. package/esm2020/lib/view/public-api.mjs +2 -1
  49. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +18 -34
  50. package/esm2020/public-api.mjs +2 -1
  51. package/fesm2015/netgrif-components-core.mjs +1041 -589
  52. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  53. package/fesm2020/netgrif-components-core.mjs +1027 -583
  54. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  55. package/lib/actions/front-action.module.d.ts +9 -0
  56. package/lib/actions/model/front-action-definition.d.ts +5 -0
  57. package/lib/actions/model/router-action-definitions.d.ts +2 -0
  58. package/lib/actions/model/task-action-definitions.d.ts +3 -0
  59. package/lib/actions/public-api.d.ts +5 -0
  60. package/lib/actions/services/front-action.service.d.ts +15 -0
  61. package/lib/data-fields/case-ref-field/model/case-ref-injection-tokens.d.ts +2 -0
  62. package/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.d.ts +16 -0
  63. package/lib/data-fields/enumeration-field/models/enumeration-field.d.ts +4 -1
  64. package/lib/data-fields/models/changed-fields.d.ts +7 -6
  65. package/lib/data-fields/multichoice-field/models/multichoice-field.d.ts +4 -0
  66. package/lib/data-fields/multichoice-field/multichoice-caseref-field/abstract-multichoice-caseref-field.component.d.ts +16 -0
  67. package/lib/data-fields/public-api.d.ts +2 -0
  68. package/lib/event/model/event-constants.d.ts +5 -1
  69. package/lib/event/services/event.service.d.ts +3 -0
  70. package/lib/header/abstract-header.component.d.ts +4 -1
  71. package/lib/header/header-modes/abstract-header-mode.component.d.ts +6 -1
  72. package/lib/navigation/model/group-navigation-constants.d.ts +5 -1
  73. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +9 -1
  74. package/lib/navigation/service/uri.service.d.ts +6 -0
  75. package/lib/panel/case-panel/abstract-case-panel.component.d.ts +5 -1
  76. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +2 -1
  77. package/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.d.ts +2 -1
  78. package/lib/panel/task-panel-single/abstract-single-task.component.d.ts +5 -3
  79. package/lib/public/factories/public-search-factory.d.ts +3 -0
  80. package/lib/registry/front-action-registry.service.d.ts +13 -0
  81. package/lib/registry/public-api.d.ts +1 -0
  82. package/lib/resources/interface/event-outcome.d.ts +5 -0
  83. package/lib/search/fulltext-search-component/abstract-fulltext-search.component.d.ts +2 -1
  84. package/lib/search/search-component/abstract-search.component.d.ts +2 -1
  85. package/lib/side-menu/content-components/injection-tokens.d.ts +1 -0
  86. package/lib/side-menu/content-components/public-api.d.ts +1 -0
  87. package/lib/side-menu/content-components/task-view/model/task-view-injection-data.d.ts +4 -0
  88. package/lib/task/services/task-data.service.d.ts +4 -2
  89. package/lib/task-content/services/single-task-content.service.d.ts +2 -2
  90. package/lib/task-content/services/task-content.service.d.ts +7 -16
  91. package/lib/task-content/services/unlimited-task-content.service.d.ts +2 -2
  92. package/lib/view/abstract/netgrif-paginator-intl.d.ts +19 -0
  93. package/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.d.ts +3 -1
  94. package/lib/view/public-api.d.ts +1 -0
  95. package/lib/view/task-view/abstract-single-task-view.component.d.ts +6 -5
  96. package/package.json +1 -1
  97. package/public-api.d.ts +1 -0
  98. package/src/assets/i18n/de.json +9 -0
  99. package/src/assets/i18n/en.json +9 -0
  100. package/src/assets/i18n/sk.json +9 -0
@@ -75,7 +75,7 @@ import moment from 'moment';
75
75
  import * as Buffer from 'buffer';
76
76
  import { ENTER, COMMA } from '@angular/cdk/keycodes';
77
77
  import * as i2$3 from '@angular/router';
78
- import { NavigationEnd } from '@angular/router';
78
+ import { NavigationEnd, Router } from '@angular/router';
79
79
  import * as i1$6 from '@angular/cdk/overlay';
80
80
  import { OverlayModule } from '@angular/cdk/overlay';
81
81
  import { orderBy } from 'natural-orderby';
@@ -1230,6 +1230,15 @@ var session$2 = {
1230
1230
  exitButton: "Logout",
1231
1231
  refreshButton: "Stay Connected"
1232
1232
  };
1233
+ var paginator$2 = {
1234
+ firstPage: "First page",
1235
+ itemsPage: "Items per page:",
1236
+ lastPage: "Last page",
1237
+ nextPage: "Next page",
1238
+ previousPage: "Previous page",
1239
+ pageOne: "Page 1 of 1",
1240
+ pageAmount: "Page {{page}} of {{amountPages}}"
1241
+ };
1233
1242
  var en = {
1234
1243
  toolbar: toolbar$2,
1235
1244
  tasks: tasks$2,
@@ -1315,7 +1324,8 @@ var en = {
1315
1324
  publicView: publicView$2,
1316
1325
  dynamicNavigation: dynamicNavigation$2,
1317
1326
  impersonation: impersonation$2,
1318
- session: session$2
1327
+ session: session$2,
1328
+ paginator: paginator$2
1319
1329
  };
1320
1330
 
1321
1331
  var toolbar$1 = {
@@ -1751,6 +1761,15 @@ var session$1 = {
1751
1761
  exitButton: "Odhlásiť sa",
1752
1762
  refreshButton: "Zostaň pripojený"
1753
1763
  };
1764
+ var paginator$1 = {
1765
+ firstPage: "Prvá strana",
1766
+ itemsPage: "Položky na stranu:",
1767
+ lastPage: "Posledná strana",
1768
+ nextPage: "Ďalšia strana",
1769
+ previousPage: "Predchádzajúca strana",
1770
+ pageOne: "Strana 1 z 1",
1771
+ pageAmount: "Strana {{page}} z {{amountPages}}"
1772
+ };
1754
1773
  var sk = {
1755
1774
  toolbar: toolbar$1,
1756
1775
  tasks: tasks$1,
@@ -1836,7 +1855,8 @@ var sk = {
1836
1855
  publicView: publicView$1,
1837
1856
  dynamicNavigation: dynamicNavigation$1,
1838
1857
  impersonation: impersonation$1,
1839
- session: session$1
1858
+ session: session$1,
1859
+ paginator: paginator$1
1840
1860
  };
1841
1861
 
1842
1862
  var toolbar = {
@@ -2272,6 +2292,15 @@ var session = {
2272
2292
  exitButton: "Abmelden",
2273
2293
  refreshButton: "Angemeldet bleiben"
2274
2294
  };
2295
+ var paginator = {
2296
+ firstPage: "Vorderseite",
2297
+ itemsPage: "Elemente pro Seite:",
2298
+ lastPage: "Letzte Seite",
2299
+ nextPage: "Nächste Seite",
2300
+ previousPage: "Vorherige Seite",
2301
+ pageOne: "Seite 1 von 1",
2302
+ pageAmount: "Seite {{page}} von {{amountPages}}"
2303
+ };
2275
2304
  var de = {
2276
2305
  toolbar: toolbar,
2277
2306
  tasks: tasks,
@@ -2357,7 +2386,8 @@ var de = {
2357
2386
  publicView: publicView,
2358
2387
  dynamicNavigation: dynamicNavigation,
2359
2388
  impersonation: impersonation,
2360
- session: session
2389
+ session: session,
2390
+ paginator: paginator
2361
2391
  };
2362
2392
 
2363
2393
  /**
@@ -5427,6 +5457,7 @@ class EnumerationField extends DataField {
5427
5457
  this._choices = _choices;
5428
5458
  this._fieldType = _fieldType;
5429
5459
  this.REQUEST_DEBOUNCE_TIME = 600;
5460
+ this._updatedChoices = new Subject();
5430
5461
  }
5431
5462
  set choices(choices) {
5432
5463
  this._choices = choices;
@@ -5446,6 +5477,12 @@ class EnumerationField extends DataField {
5446
5477
  getTypedComponentType() {
5447
5478
  return ComponentPrefixes.ENUMERATION + this.getComponentType();
5448
5479
  }
5480
+ get updatedChoices() {
5481
+ return this._updatedChoices.asObservable();
5482
+ }
5483
+ updateChoice() {
5484
+ this._updatedChoices.next();
5485
+ }
5449
5486
  resolveFormControlValidators() {
5450
5487
  const result = [];
5451
5488
  if (this.behavior.required) {
@@ -5606,6 +5643,379 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
5606
5643
  args: ['oneStep']
5607
5644
  }] } });
5608
5645
 
5646
+ /**
5647
+ * Provides the base filter of a {@link SearchService}
5648
+ */
5649
+ const NAE_BASE_FILTER = new InjectionToken('NaeBaseFilter');
5650
+
5651
+ /**
5652
+ * Abstraction of backend search requests that defines a limited set of operations on them.
5653
+ */
5654
+ class Filter {
5655
+ /**
5656
+ * If no name is provided the filter will be identified by it's ID when necessary.
5657
+ * @param _id identifier of the filter
5658
+ * @param _type type of resources that the filter can query
5659
+ * @param _title human readable filter name
5660
+ */
5661
+ constructor(_id, _type, _title = '') {
5662
+ this._id = _id;
5663
+ this._type = _type;
5664
+ this._title = _title;
5665
+ }
5666
+ /**
5667
+ * Unique filter identifier
5668
+ */
5669
+ get id() {
5670
+ return this._id;
5671
+ }
5672
+ set id(id) {
5673
+ this._id = id;
5674
+ }
5675
+ /**
5676
+ * Determines the type of resource this Filter can filter.
5677
+ */
5678
+ get type() {
5679
+ return this._type;
5680
+ }
5681
+ /**
5682
+ * Human readable filter title.
5683
+ *
5684
+ * Defaults to empty string.
5685
+ */
5686
+ get title() {
5687
+ return this._title;
5688
+ }
5689
+ /**
5690
+ * Returns the necessary request params for the filter. Default implementation returns an empty object.
5691
+ * The params are added on top of the request when sending it to the backend by the respective service methods.
5692
+ * @returns an empty object `{}`
5693
+ */
5694
+ getRequestParams() {
5695
+ return {};
5696
+ }
5697
+ /**
5698
+ * Creates a deep copy of a simple object.
5699
+ * @param obj object that should be copied
5700
+ * @returns a deep copy of the argument
5701
+ */
5702
+ deepCopy(obj) {
5703
+ return JSON.parse(JSON.stringify(obj));
5704
+ }
5705
+ }
5706
+
5707
+ /**
5708
+ * Determines whether the combination of Filters is an union (AND) or an intersection (OR).
5709
+ *
5710
+ * See {@link MergedFilter} for more information.
5711
+ */
5712
+ var MergeOperator;
5713
+ (function (MergeOperator) {
5714
+ MergeOperator["AND"] = "AND";
5715
+ MergeOperator["OR"] = "OR";
5716
+ })(MergeOperator || (MergeOperator = {}));
5717
+
5718
+ /**
5719
+ * Determines the type of resource the Filter can search for.
5720
+ *
5721
+ * See {@link Filter} for more information.
5722
+ */
5723
+ var FilterType;
5724
+ (function (FilterType) {
5725
+ FilterType["TASK"] = "Task";
5726
+ FilterType["CASE"] = "Case";
5727
+ })(FilterType || (FilterType = {}));
5728
+
5729
+ /**
5730
+ * Represents an union or an intersection of {@link SimpleFilter}s and allows limited manipulation with it.
5731
+ */
5732
+ class MergedFilter extends Filter {
5733
+ /**
5734
+ * @param id identifier of the filter
5735
+ * @param type type of resources that the filter can query
5736
+ * @param filterBodies `Array` of search requests matching this filter's type
5737
+ * @param _operator boolean operator that is used to combine the filters
5738
+ * @param title human readable filter name
5739
+ */
5740
+ constructor(id, type, filterBodies, _operator, title) {
5741
+ super(id, type, title);
5742
+ this._operator = _operator;
5743
+ this._filters = [];
5744
+ filterBodies.forEach(body => {
5745
+ this._filters.push(this.deepCopy(body));
5746
+ });
5747
+ }
5748
+ /**
5749
+ * Creates a filter with the provided body and the provided type
5750
+ * @param filterBody the body of the new filter
5751
+ * @param operator the merge operator that is used to combine the filters
5752
+ * @param type the type of the new filter. Type must match the type of the body.
5753
+ * @returns a filter with the given body, operator and type. `id` of the new filter is set to an empty string.
5754
+ */
5755
+ static fromQuery(filterBody, operator, type) {
5756
+ return new MergedFilter('', type, filterBody, operator);
5757
+ }
5758
+ /**
5759
+ * Creates a case filter with the provided body
5760
+ * @param filterBody the body of the new filter
5761
+ * @param operator the merge operator that is used to combine the filters
5762
+ * @returns a case filter with the given body and operator. `id` of the new filter is set to an empty string.
5763
+ */
5764
+ static fromCaseQuery(filterBody, operator) {
5765
+ return MergedFilter.fromQuery(filterBody, operator, FilterType.CASE);
5766
+ }
5767
+ /**
5768
+ * Creates a task filter with the provided body
5769
+ * @param filterBody the body of the new filter
5770
+ * @param operator the merge operator that is used to combine the filters
5771
+ * @returns a task filter with the given body and operator. `id` of the new filter is set to an empty string.
5772
+ */
5773
+ static fromTaskQuery(filterBody, operator) {
5774
+ return MergedFilter.fromQuery(filterBody, operator, FilterType.TASK);
5775
+ }
5776
+ set operator(operator) {
5777
+ this._operator = operator;
5778
+ }
5779
+ get operator() {
5780
+ return this._operator;
5781
+ }
5782
+ /**
5783
+ * See [Filter.clone()]{@link Filter#clone}
5784
+ */
5785
+ clone() {
5786
+ return new MergedFilter(this.id, this.type, this._filters, this._operator, this.title);
5787
+ }
5788
+ /**
5789
+ * Filters that are merged must share the same type and the same merge operator.
5790
+ *
5791
+ * See [Filter.merge()]{@link Filter#merge} for information about parameters.
5792
+ */
5793
+ merge(filter, operator) {
5794
+ if (filter.type !== this.type) {
5795
+ throw new Error('Can\'t merge filters with different types');
5796
+ }
5797
+ if (this._operator !== operator || (filter instanceof MergedFilter && filter._operator !== this._operator)) {
5798
+ throw new Error('Can\'t merge filters with different merge operators');
5799
+ }
5800
+ const id = `${this.id}${operator === MergeOperator.AND ? '&' : '|'}${filter.id}`;
5801
+ const combinedFilters = [];
5802
+ combinedFilters.push(...this._filters);
5803
+ const otherFilters = filter.getRequestBody();
5804
+ if (Array.isArray(otherFilters)) {
5805
+ combinedFilters.push(...otherFilters);
5806
+ }
5807
+ else {
5808
+ combinedFilters.push(otherFilters);
5809
+ }
5810
+ return new MergedFilter(id, this.type, combinedFilters, this._operator);
5811
+ }
5812
+ /**
5813
+ * See [Filter.getRequestBody()]{@link Filter#getRequestBody}
5814
+ */
5815
+ getRequestBody() {
5816
+ return this.deepCopy(this._filters);
5817
+ }
5818
+ /**
5819
+ * See [Filter.bodyContainsQuery()]{@link Filter#bodyContainsQuery}
5820
+ */
5821
+ bodyContainsQuery() {
5822
+ return this._filters.some(f => f.query !== undefined && f.query !== null);
5823
+ }
5824
+ /**
5825
+ * Returns the necessary request params for the filter.
5826
+ * @returns params with `operation` set to either `AND` or `OR` based on this object's `_operator` property.
5827
+ *
5828
+ * See {@link MergedFilterParams} for more information.
5829
+ */
5830
+ getRequestParams() {
5831
+ return {
5832
+ operation: this._operator
5833
+ };
5834
+ }
5835
+ }
5836
+
5837
+ /**
5838
+ * Holds backend search request data and allows limited manipulation with it.
5839
+ */
5840
+ class SimpleFilter extends Filter {
5841
+ /**
5842
+ * @param id identifier of the filter
5843
+ * @param type type of resources that the filter can query
5844
+ * @param filterBody search request matching this filter's `type`
5845
+ * @param title human readable filter name
5846
+ */
5847
+ constructor(id, type, filterBody, title) {
5848
+ super(id, type, title);
5849
+ this._filter = this.deepCopy(filterBody);
5850
+ }
5851
+ /**
5852
+ * Create an empty filter of provided type
5853
+ * @param type type of resources that the filter can query
5854
+ * @returns a filter with empty body of the provided type. `id` of the new filter is set to an empty string.
5855
+ */
5856
+ static empty(type) {
5857
+ return new SimpleFilter('', type, {});
5858
+ }
5859
+ /**
5860
+ * Equivalent to calling `SimpleFilter.empty(FilterType.CASE)`.
5861
+ * @returns a filter with empty body that can be used to search cases
5862
+ */
5863
+ static emptyCaseFilter() {
5864
+ return SimpleFilter.empty(FilterType.CASE);
5865
+ }
5866
+ /**
5867
+ * Equivalent to calling `SimpleFilter.empty(FilterType.TASK)`.
5868
+ * @returns a filter with empty body that can be used to search tasks
5869
+ */
5870
+ static emptyTaskFilter() {
5871
+ return SimpleFilter.empty(FilterType.TASK);
5872
+ }
5873
+ /**
5874
+ * Creates a filter with the provided body and the provided type
5875
+ * @param filterBody the body of the new filter
5876
+ * @param type the type of the new filter. Type must match the type of the body.
5877
+ * @returns a filter with the given body and type. `id` of the new filter is set to an empty string.
5878
+ */
5879
+ static fromQuery(filterBody, type) {
5880
+ return new SimpleFilter('', type, filterBody);
5881
+ }
5882
+ /**
5883
+ * Creates a case filter with the provided body
5884
+ * @param filterBody the body of the new filter
5885
+ * @returns a case filter with the given body. `id` of the new filter is set to an empty string.
5886
+ */
5887
+ static fromCaseQuery(filterBody) {
5888
+ return SimpleFilter.fromQuery(filterBody, FilterType.CASE);
5889
+ }
5890
+ /**
5891
+ * Creates a task filter with the provided body
5892
+ * @param filterBody the body of the new filter
5893
+ * @returns a task filter with the given body. `id` of the new filter is set to an empty string.
5894
+ */
5895
+ static fromTaskQuery(filterBody) {
5896
+ return SimpleFilter.fromQuery(filterBody, FilterType.TASK);
5897
+ }
5898
+ /**
5899
+ * See [Filter.clone()]{@link Filter#clone}
5900
+ */
5901
+ clone() {
5902
+ return new SimpleFilter(this.id, this.type, this._filter, this.title);
5903
+ }
5904
+ /**
5905
+ * See [Filter.merge()]{@link Filter#merge}
5906
+ */
5907
+ merge(filter, operator) {
5908
+ const temp = new MergedFilter(this.id, this.type, [this._filter], operator, this.title);
5909
+ return temp.merge(filter, operator);
5910
+ }
5911
+ /**
5912
+ * See [Filter.bodyContainsQuery()]{@link Filter#bodyContainsQuery}
5913
+ */
5914
+ bodyContainsQuery() {
5915
+ return this._filter.query !== undefined && this._filter.query !== null;
5916
+ }
5917
+ /**
5918
+ * See [Filter.getRequestBody()]{@link Filter#getRequestBody}
5919
+ */
5920
+ getRequestBody() {
5921
+ return this.deepCopy(this._filter);
5922
+ }
5923
+ }
5924
+
5925
+ const NAE_VIEW_ID = new InjectionToken('NaeViewId');
5926
+ const NAE_VIEW_ID_SEGMENT = new InjectionToken('NaeViewIdSegment');
5927
+
5928
+ class ViewIdService {
5929
+ constructor(parentInjector, idSegment) {
5930
+ this._viewId = '';
5931
+ if (parentInjector !== null) {
5932
+ const parentIdService = parentInjector.get(ViewIdService, null);
5933
+ if (parentIdService !== null) {
5934
+ this._viewId = parentIdService.viewId + ViewIdService.VIEW_ID_SEGMENT_SEPARATOR;
5935
+ }
5936
+ }
5937
+ this._viewId += idSegment;
5938
+ }
5939
+ get viewId() {
5940
+ return this._viewId;
5941
+ }
5942
+ }
5943
+ ViewIdService.VIEW_ID_SEGMENT_SEPARATOR = '-';
5944
+ ViewIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService, deps: [{ token: i0.Injector, optional: true, skipSelf: true }, { token: NAE_VIEW_ID_SEGMENT }], target: i0.ɵɵFactoryTarget.Injectable });
5945
+ ViewIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService });
5946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService, decorators: [{
5947
+ type: Injectable
5948
+ }], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
5949
+ type: Optional
5950
+ }, {
5951
+ type: SkipSelf
5952
+ }] }, { type: undefined, decorators: [{
5953
+ type: Inject,
5954
+ args: [NAE_VIEW_ID_SEGMENT]
5955
+ }] }]; } });
5956
+
5957
+ const NAE_DEFAULT_HEADERS = new InjectionToken('NaeDefaultHeaders');
5958
+
5959
+ const NAE_CASE_REF_CREATE_CASE = new InjectionToken('NaeCaseRefCreateCase');
5960
+ const NAE_CASE_REF_SEARCH = new InjectionToken('NaeCaseRefSearch');
5961
+ const NAE_CASE_REF_DATAFIELD = new InjectionToken('NaeCaseRefDatafield');
5962
+
5963
+ class AbstractEnumerationCaseRefComponent extends AbstractBaseDataFieldComponent {
5964
+ constructor(injector, caseViewType, dataFieldPortalData) {
5965
+ super(dataFieldPortalData);
5966
+ this.injector = injector;
5967
+ this.caseViewType = caseViewType;
5968
+ }
5969
+ ngAfterViewInit() {
5970
+ this.createFilter();
5971
+ this.dataField.updatedChoices.subscribe(() => {
5972
+ this.createFilter();
5973
+ });
5974
+ }
5975
+ createFilter() {
5976
+ let portalInjector;
5977
+ const filterValue = this.dataField.choices.length > 0 ? this.dataField.choices.map(value => value.key) : '';
5978
+ portalInjector = Injector.create({
5979
+ providers: [
5980
+ {
5981
+ provide: NAE_DEFAULT_HEADERS, useValue: this.dataField.component?.properties?.headers.split(',')
5982
+ },
5983
+ {
5984
+ provide: NAE_CASE_REF_CREATE_CASE, useValue: this.dataField.component?.properties?.createCase === 'true'
5985
+ },
5986
+ {
5987
+ provide: NAE_CASE_REF_SEARCH, useValue: this.dataField.component?.properties?.search === 'true'
5988
+ },
5989
+ {
5990
+ provide: NAE_BASE_FILTER,
5991
+ useValue: { filter: SimpleFilter.fromCaseQuery({ stringId: filterValue }) }
5992
+ },
5993
+ {
5994
+ provide: NAE_VIEW_ID_SEGMENT,
5995
+ useValue: this.dataField.parentCaseId + '_' + this.dataField.parentTaskId + '_' + this.dataField.stringId
5996
+ },
5997
+ { provide: ViewIdService, useClass: ViewIdService }
5998
+ ],
5999
+ parent: this.injector
6000
+ });
6001
+ this.componentPortal = new ComponentPortal(this.caseViewType, null, portalInjector);
6002
+ }
6003
+ }
6004
+ AbstractEnumerationCaseRefComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractEnumerationCaseRefComponent, deps: [{ token: i0.Injector }, { token: i0.Type }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6005
+ AbstractEnumerationCaseRefComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractEnumerationCaseRefComponent, selector: "ncc-abstract-case-ref-default", usesInheritance: true, ngImport: i0, template: '', isInline: true });
6006
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractEnumerationCaseRefComponent, decorators: [{
6007
+ type: Component,
6008
+ args: [{
6009
+ selector: 'ncc-abstract-case-ref-default',
6010
+ template: ''
6011
+ }]
6012
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.Type }, { type: undefined, decorators: [{
6013
+ type: Optional
6014
+ }, {
6015
+ type: Inject,
6016
+ args: [DATA_FIELD_PORTAL_DATA]
6017
+ }] }]; } });
6018
+
5609
6019
  /**
5610
6020
  * @deprecated
5611
6021
  * */
@@ -5750,17 +6160,6 @@ const PREVIEW_BUTTON = 'preview_button';
5750
6160
  const FILE_FIELD_HEIGHT = 75;
5751
6161
  const FILE_FIELD_PADDING = 16;
5752
6162
 
5753
- /**
5754
- * Determines the type of resource the Filter can search for.
5755
- *
5756
- * See {@link Filter} for more information.
5757
- */
5758
- var FilterType;
5759
- (function (FilterType) {
5760
- FilterType["TASK"] = "Task";
5761
- FilterType["CASE"] = "Case";
5762
- })(FilterType || (FilterType = {}));
5763
-
5764
6163
  var TextFieldView;
5765
6164
  (function (TextFieldView) {
5766
6165
  TextFieldView["DEFAULT"] = "default";
@@ -5995,6 +6394,7 @@ class MultichoiceField extends DataField {
5995
6394
  super(stringId, title, values, behavior, placeholder, description, layout, validations, component, parentTaskId);
5996
6395
  this._choices = _choices;
5997
6396
  this._fieldType = _fieldType;
6397
+ this._updatedChoices = new Subject();
5998
6398
  }
5999
6399
  set choices(choices) {
6000
6400
  this._choices = choices;
@@ -6005,6 +6405,12 @@ class MultichoiceField extends DataField {
6005
6405
  get fieldType() {
6006
6406
  return this._fieldType;
6007
6407
  }
6408
+ get updatedChoices() {
6409
+ return this._updatedChoices.asObservable();
6410
+ }
6411
+ updateChoice() {
6412
+ this._updatedChoices.next();
6413
+ }
6008
6414
  getUpdateOnStrategy() {
6009
6415
  return UpdateStrategy.CHANGE;
6010
6416
  }
@@ -7090,6 +7496,10 @@ var EventConstants;
7090
7496
  * Changed fields parameter of {@link SetDataEventOutcome}
7091
7497
  */
7092
7498
  EventConstants["CHANGED_FIELDS"] = "changedFields";
7499
+ /**
7500
+ * Front actions parameter of {@link EventOutcome}
7501
+ */
7502
+ EventConstants["FRONT_ACTIONS"] = "frontActions";
7093
7503
  })(EventConstants || (EventConstants = {}));
7094
7504
 
7095
7505
  class EventService {
@@ -7137,6 +7547,28 @@ class EventService {
7137
7547
  });
7138
7548
  return changedFieldsMap;
7139
7549
  }
7550
+ parseFrontActionsFromOutcomeTree(outcome) {
7551
+ const frontActions = [];
7552
+ if (!!outcome.outcomes && outcome.outcomes.length > 0) {
7553
+ return this.parseFrontActionsFromOutcomeTreeRecursive(outcome.outcomes, frontActions);
7554
+ }
7555
+ else
7556
+ return frontActions;
7557
+ }
7558
+ parseFrontActionsFromOutcomeTreeRecursive(outcomes, frontActions) {
7559
+ outcomes.forEach(childOutcome => {
7560
+ if (EventConstants.FRONT_ACTIONS in childOutcome) {
7561
+ const childFrontActions = childOutcome.frontActions;
7562
+ if (!!childFrontActions) {
7563
+ frontActions.push(...childFrontActions);
7564
+ }
7565
+ }
7566
+ if (!!childOutcome.outcomes && childOutcome.outcomes.length > 0) {
7567
+ this.parseFrontActionsFromOutcomeTreeRecursive(childOutcome.outcomes, frontActions);
7568
+ }
7569
+ });
7570
+ return frontActions;
7571
+ }
7140
7572
  }
7141
7573
  EventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7142
7574
  EventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, providedIn: 'root' });
@@ -8062,6 +8494,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
8062
8494
  args: [DATA_FIELD_PORTAL_DATA]
8063
8495
  }] }]; } });
8064
8496
 
8497
+ class AbstractMultichoiceCaseRefComponent extends AbstractBaseDataFieldComponent {
8498
+ constructor(injector, caseViewType, dataFieldPortalData) {
8499
+ super(dataFieldPortalData);
8500
+ this.injector = injector;
8501
+ this.caseViewType = caseViewType;
8502
+ }
8503
+ ngAfterViewInit() {
8504
+ this.createFilter();
8505
+ this.dataField.updatedChoices.subscribe(() => {
8506
+ this.createFilter();
8507
+ });
8508
+ }
8509
+ createFilter() {
8510
+ let portalInjector;
8511
+ const filterValue = this.dataField.choices.length > 0 ? this.dataField.choices.map(value => value.key) : '';
8512
+ portalInjector = Injector.create({
8513
+ providers: [
8514
+ {
8515
+ provide: NAE_DEFAULT_HEADERS, useValue: this.dataField.component?.properties?.headers.split(',')
8516
+ },
8517
+ {
8518
+ provide: NAE_CASE_REF_CREATE_CASE, useValue: this.dataField.component?.properties?.createCase === 'true'
8519
+ },
8520
+ {
8521
+ provide: NAE_CASE_REF_SEARCH, useValue: this.dataField.component?.properties?.search === 'true'
8522
+ },
8523
+ {
8524
+ provide: NAE_BASE_FILTER,
8525
+ useValue: { filter: SimpleFilter.fromCaseQuery({ stringId: filterValue }) }
8526
+ },
8527
+ {
8528
+ provide: NAE_VIEW_ID_SEGMENT,
8529
+ useValue: this.dataField.parentCaseId + '_' + this.dataField.parentTaskId + '_' + this.dataField.stringId
8530
+ },
8531
+ { provide: ViewIdService, useClass: ViewIdService }
8532
+ ],
8533
+ parent: this.injector
8534
+ });
8535
+ this.componentPortal = new ComponentPortal(this.caseViewType, null, portalInjector);
8536
+ }
8537
+ }
8538
+ AbstractMultichoiceCaseRefComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractMultichoiceCaseRefComponent, deps: [{ token: i0.Injector }, { token: i0.Type }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
8539
+ AbstractMultichoiceCaseRefComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractMultichoiceCaseRefComponent, selector: "ncc-abstract-case-ref-default", usesInheritance: true, ngImport: i0, template: '', isInline: true });
8540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractMultichoiceCaseRefComponent, decorators: [{
8541
+ type: Component,
8542
+ args: [{
8543
+ selector: 'ncc-abstract-case-ref-default',
8544
+ template: ''
8545
+ }]
8546
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.Type }, { type: undefined, decorators: [{
8547
+ type: Optional
8548
+ }, {
8549
+ type: Inject,
8550
+ args: [DATA_FIELD_PORTAL_DATA]
8551
+ }] }]; } });
8552
+
8065
8553
  class AbstractMultichoiceSelectFieldComponent extends AbstractBaseDataFieldComponent {
8066
8554
  constructor(dataFieldPortalData) {
8067
8555
  super(dataFieldPortalData);
@@ -8919,269 +9407,6 @@ var BooleanOperator;
8919
9407
  BooleanOperator["OR"] = "OR";
8920
9408
  })(BooleanOperator || (BooleanOperator = {}));
8921
9409
 
8922
- /**
8923
- * Abstraction of backend search requests that defines a limited set of operations on them.
8924
- */
8925
- class Filter {
8926
- /**
8927
- * If no name is provided the filter will be identified by it's ID when necessary.
8928
- * @param _id identifier of the filter
8929
- * @param _type type of resources that the filter can query
8930
- * @param _title human readable filter name
8931
- */
8932
- constructor(_id, _type, _title = '') {
8933
- this._id = _id;
8934
- this._type = _type;
8935
- this._title = _title;
8936
- }
8937
- /**
8938
- * Unique filter identifier
8939
- */
8940
- get id() {
8941
- return this._id;
8942
- }
8943
- set id(id) {
8944
- this._id = id;
8945
- }
8946
- /**
8947
- * Determines the type of resource this Filter can filter.
8948
- */
8949
- get type() {
8950
- return this._type;
8951
- }
8952
- /**
8953
- * Human readable filter title.
8954
- *
8955
- * Defaults to empty string.
8956
- */
8957
- get title() {
8958
- return this._title;
8959
- }
8960
- /**
8961
- * Returns the necessary request params for the filter. Default implementation returns an empty object.
8962
- * The params are added on top of the request when sending it to the backend by the respective service methods.
8963
- * @returns an empty object `{}`
8964
- */
8965
- getRequestParams() {
8966
- return {};
8967
- }
8968
- /**
8969
- * Creates a deep copy of a simple object.
8970
- * @param obj object that should be copied
8971
- * @returns a deep copy of the argument
8972
- */
8973
- deepCopy(obj) {
8974
- return JSON.parse(JSON.stringify(obj));
8975
- }
8976
- }
8977
-
8978
- /**
8979
- * Determines whether the combination of Filters is an union (AND) or an intersection (OR).
8980
- *
8981
- * See {@link MergedFilter} for more information.
8982
- */
8983
- var MergeOperator;
8984
- (function (MergeOperator) {
8985
- MergeOperator["AND"] = "AND";
8986
- MergeOperator["OR"] = "OR";
8987
- })(MergeOperator || (MergeOperator = {}));
8988
-
8989
- /**
8990
- * Represents an union or an intersection of {@link SimpleFilter}s and allows limited manipulation with it.
8991
- */
8992
- class MergedFilter extends Filter {
8993
- /**
8994
- * @param id identifier of the filter
8995
- * @param type type of resources that the filter can query
8996
- * @param filterBodies `Array` of search requests matching this filter's type
8997
- * @param _operator boolean operator that is used to combine the filters
8998
- * @param title human readable filter name
8999
- */
9000
- constructor(id, type, filterBodies, _operator, title) {
9001
- super(id, type, title);
9002
- this._operator = _operator;
9003
- this._filters = [];
9004
- filterBodies.forEach(body => {
9005
- this._filters.push(this.deepCopy(body));
9006
- });
9007
- }
9008
- /**
9009
- * Creates a filter with the provided body and the provided type
9010
- * @param filterBody the body of the new filter
9011
- * @param operator the merge operator that is used to combine the filters
9012
- * @param type the type of the new filter. Type must match the type of the body.
9013
- * @returns a filter with the given body, operator and type. `id` of the new filter is set to an empty string.
9014
- */
9015
- static fromQuery(filterBody, operator, type) {
9016
- return new MergedFilter('', type, filterBody, operator);
9017
- }
9018
- /**
9019
- * Creates a case filter with the provided body
9020
- * @param filterBody the body of the new filter
9021
- * @param operator the merge operator that is used to combine the filters
9022
- * @returns a case filter with the given body and operator. `id` of the new filter is set to an empty string.
9023
- */
9024
- static fromCaseQuery(filterBody, operator) {
9025
- return MergedFilter.fromQuery(filterBody, operator, FilterType.CASE);
9026
- }
9027
- /**
9028
- * Creates a task filter with the provided body
9029
- * @param filterBody the body of the new filter
9030
- * @param operator the merge operator that is used to combine the filters
9031
- * @returns a task filter with the given body and operator. `id` of the new filter is set to an empty string.
9032
- */
9033
- static fromTaskQuery(filterBody, operator) {
9034
- return MergedFilter.fromQuery(filterBody, operator, FilterType.TASK);
9035
- }
9036
- set operator(operator) {
9037
- this._operator = operator;
9038
- }
9039
- get operator() {
9040
- return this._operator;
9041
- }
9042
- /**
9043
- * See [Filter.clone()]{@link Filter#clone}
9044
- */
9045
- clone() {
9046
- return new MergedFilter(this.id, this.type, this._filters, this._operator, this.title);
9047
- }
9048
- /**
9049
- * Filters that are merged must share the same type and the same merge operator.
9050
- *
9051
- * See [Filter.merge()]{@link Filter#merge} for information about parameters.
9052
- */
9053
- merge(filter, operator) {
9054
- if (filter.type !== this.type) {
9055
- throw new Error('Can\'t merge filters with different types');
9056
- }
9057
- if (this._operator !== operator || (filter instanceof MergedFilter && filter._operator !== this._operator)) {
9058
- throw new Error('Can\'t merge filters with different merge operators');
9059
- }
9060
- const id = `${this.id}${operator === MergeOperator.AND ? '&' : '|'}${filter.id}`;
9061
- const combinedFilters = [];
9062
- combinedFilters.push(...this._filters);
9063
- const otherFilters = filter.getRequestBody();
9064
- if (Array.isArray(otherFilters)) {
9065
- combinedFilters.push(...otherFilters);
9066
- }
9067
- else {
9068
- combinedFilters.push(otherFilters);
9069
- }
9070
- return new MergedFilter(id, this.type, combinedFilters, this._operator);
9071
- }
9072
- /**
9073
- * See [Filter.getRequestBody()]{@link Filter#getRequestBody}
9074
- */
9075
- getRequestBody() {
9076
- return this.deepCopy(this._filters);
9077
- }
9078
- /**
9079
- * See [Filter.bodyContainsQuery()]{@link Filter#bodyContainsQuery}
9080
- */
9081
- bodyContainsQuery() {
9082
- return this._filters.some(f => f.query !== undefined && f.query !== null);
9083
- }
9084
- /**
9085
- * Returns the necessary request params for the filter.
9086
- * @returns params with `operation` set to either `AND` or `OR` based on this object's `_operator` property.
9087
- *
9088
- * See {@link MergedFilterParams} for more information.
9089
- */
9090
- getRequestParams() {
9091
- return {
9092
- operation: this._operator
9093
- };
9094
- }
9095
- }
9096
-
9097
- /**
9098
- * Holds backend search request data and allows limited manipulation with it.
9099
- */
9100
- class SimpleFilter extends Filter {
9101
- /**
9102
- * @param id identifier of the filter
9103
- * @param type type of resources that the filter can query
9104
- * @param filterBody search request matching this filter's `type`
9105
- * @param title human readable filter name
9106
- */
9107
- constructor(id, type, filterBody, title) {
9108
- super(id, type, title);
9109
- this._filter = this.deepCopy(filterBody);
9110
- }
9111
- /**
9112
- * Create an empty filter of provided type
9113
- * @param type type of resources that the filter can query
9114
- * @returns a filter with empty body of the provided type. `id` of the new filter is set to an empty string.
9115
- */
9116
- static empty(type) {
9117
- return new SimpleFilter('', type, {});
9118
- }
9119
- /**
9120
- * Equivalent to calling `SimpleFilter.empty(FilterType.CASE)`.
9121
- * @returns a filter with empty body that can be used to search cases
9122
- */
9123
- static emptyCaseFilter() {
9124
- return SimpleFilter.empty(FilterType.CASE);
9125
- }
9126
- /**
9127
- * Equivalent to calling `SimpleFilter.empty(FilterType.TASK)`.
9128
- * @returns a filter with empty body that can be used to search tasks
9129
- */
9130
- static emptyTaskFilter() {
9131
- return SimpleFilter.empty(FilterType.TASK);
9132
- }
9133
- /**
9134
- * Creates a filter with the provided body and the provided type
9135
- * @param filterBody the body of the new filter
9136
- * @param type the type of the new filter. Type must match the type of the body.
9137
- * @returns a filter with the given body and type. `id` of the new filter is set to an empty string.
9138
- */
9139
- static fromQuery(filterBody, type) {
9140
- return new SimpleFilter('', type, filterBody);
9141
- }
9142
- /**
9143
- * Creates a case filter with the provided body
9144
- * @param filterBody the body of the new filter
9145
- * @returns a case filter with the given body. `id` of the new filter is set to an empty string.
9146
- */
9147
- static fromCaseQuery(filterBody) {
9148
- return SimpleFilter.fromQuery(filterBody, FilterType.CASE);
9149
- }
9150
- /**
9151
- * Creates a task filter with the provided body
9152
- * @param filterBody the body of the new filter
9153
- * @returns a task filter with the given body. `id` of the new filter is set to an empty string.
9154
- */
9155
- static fromTaskQuery(filterBody) {
9156
- return SimpleFilter.fromQuery(filterBody, FilterType.TASK);
9157
- }
9158
- /**
9159
- * See [Filter.clone()]{@link Filter#clone}
9160
- */
9161
- clone() {
9162
- return new SimpleFilter(this.id, this.type, this._filter, this.title);
9163
- }
9164
- /**
9165
- * See [Filter.merge()]{@link Filter#merge}
9166
- */
9167
- merge(filter, operator) {
9168
- const temp = new MergedFilter(this.id, this.type, [this._filter], operator, this.title);
9169
- return temp.merge(filter, operator);
9170
- }
9171
- /**
9172
- * See [Filter.bodyContainsQuery()]{@link Filter#bodyContainsQuery}
9173
- */
9174
- bodyContainsQuery() {
9175
- return this._filter.query !== undefined && this._filter.query !== null;
9176
- }
9177
- /**
9178
- * See [Filter.getRequestBody()]{@link Filter#getRequestBody}
9179
- */
9180
- getRequestBody() {
9181
- return this.deepCopy(this._filter);
9182
- }
9183
- }
9184
-
9185
9410
  /**
9186
9411
  * Abstraction of queries, so that their implementation can be replaced as needed.
9187
9412
  */
@@ -9690,11 +9915,6 @@ class EditableClausePredicateWithGenerators extends EditableClausePredicate {
9690
9915
  }
9691
9916
  }
9692
9917
 
9693
- /**
9694
- * Provides the base filter of a {@link SearchService}
9695
- */
9696
- const NAE_BASE_FILTER = new InjectionToken('NaeBaseFilter');
9697
-
9698
9918
  /**
9699
9919
  * Represents the available {@link Operator} classes in a serializable form.
9700
9920
  */
@@ -13926,38 +14146,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
13926
14146
  }]
13927
14147
  }], ctorParameters: function () { return [{ type: ComponentRegistryService }, { type: FilterField }, { type: i0.Type }, { type: i0.Type }]; } });
13928
14148
 
13929
- const NAE_VIEW_ID = new InjectionToken('NaeViewId');
13930
- const NAE_VIEW_ID_SEGMENT = new InjectionToken('NaeViewIdSegment');
13931
-
13932
- class ViewIdService {
13933
- constructor(parentInjector, idSegment) {
13934
- this._viewId = '';
13935
- if (parentInjector !== null) {
13936
- const parentIdService = parentInjector.get(ViewIdService, null);
13937
- if (parentIdService !== null) {
13938
- this._viewId = parentIdService.viewId + ViewIdService.VIEW_ID_SEGMENT_SEPARATOR;
13939
- }
13940
- }
13941
- this._viewId += idSegment;
13942
- }
13943
- get viewId() {
13944
- return this._viewId;
13945
- }
13946
- }
13947
- ViewIdService.VIEW_ID_SEGMENT_SEPARATOR = '-';
13948
- ViewIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService, deps: [{ token: i0.Injector, optional: true, skipSelf: true }, { token: NAE_VIEW_ID_SEGMENT }], target: i0.ɵɵFactoryTarget.Injectable });
13949
- ViewIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService });
13950
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewIdService, decorators: [{
13951
- type: Injectable
13952
- }], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
13953
- type: Optional
13954
- }, {
13955
- type: SkipSelf
13956
- }] }, { type: undefined, decorators: [{
13957
- type: Inject,
13958
- args: [NAE_VIEW_ID_SEGMENT]
13959
- }] }]; } });
13960
-
13961
14149
  class AbstractFilterFieldTabViewContentComponent extends AbstractFilterFieldContentComponent {
13962
14150
  constructor(registry, injector, filterField, searchService) {
13963
14151
  super(filterField, searchService);
@@ -14901,12 +15089,12 @@ class TaskContentService {
14901
15089
  * A snackbar will also be displayed to the user, informing them of the fact that the fields are invalid.
14902
15090
  * @returns whether the task is valid or not
14903
15091
  */
14904
- validateTaskData() {
15092
+ validateTaskData(taskId) {
14905
15093
  if (!this._task || !this._task.dataGroups) {
14906
15094
  return false;
14907
15095
  }
14908
- const valid = !this._task.dataGroups.some(group => group.fields.some(field => !field.valid && !field.disabled));
14909
- const validDisabled = !this._task.dataGroups.some(group => group.fields.some(field => !field.validRequired && field.disabled));
15096
+ const valid = !this._task.dataGroups.filter(group => !!group.parentTaskId && !!taskId ? group.parentTaskId === taskId : true).some(group => group.fields.some(field => !field.valid && !field.disabled));
15097
+ const validDisabled = !this._task.dataGroups.filter(group => !!group.parentTaskId && !!taskId ? group.parentTaskId === taskId : true).some(group => group.fields.some(field => !field.validRequired && field.disabled));
14910
15098
  if (!valid) {
14911
15099
  this._snackBarService.openErrorSnackBar(this._translate.instant('tasks.snackbar.invalidData'));
14912
15100
  this._task.dataGroups.forEach(group => group.fields.forEach(field => field.touch = true));
@@ -14996,7 +15184,6 @@ class TaskContentService {
14996
15184
  }
14997
15185
  });
14998
15186
  this.$shouldCreate.next(this._task.dataGroups);
14999
- this.performFrontendAction(frontendActions);
15000
15187
  }
15001
15188
  updateField(chFields, field, frontendActions) {
15002
15189
  if (this._fieldConverterService.resolveType(field) === FieldTypeResource.TASK_REF) {
@@ -15040,6 +15227,7 @@ class TaskContentService {
15040
15227
  });
15041
15228
  }
15042
15229
  field.choices = newChoices;
15230
+ field.updateChoice();
15043
15231
  break;
15044
15232
  case 'options':
15045
15233
  const newOptions = [];
@@ -15047,6 +15235,7 @@ class TaskContentService {
15047
15235
  newOptions.push({ key: optionKey, value: updatedField.options[optionKey] });
15048
15236
  });
15049
15237
  field.choices = newOptions;
15238
+ field.updateChoice();
15050
15239
  break;
15051
15240
  case 'validations':
15052
15241
  field.replaceValidations(updatedField.validations.map(it => it));
@@ -15067,7 +15256,7 @@ class TaskContentService {
15067
15256
  switch (key) {
15068
15257
  case 'behavior':
15069
15258
  const taskId = this.getReferencedTaskId(field.stringId);
15070
- const taskRef = Object.values(this.taskFieldsIndex[this._task.stringId].fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
15259
+ const taskRef = this.findTaskRefId(taskId, this.taskFieldsIndex[this._task.stringId].fields);
15071
15260
  const transitionId = this.taskFieldsIndex[taskId].transitionId;
15072
15261
  if (!!transitionId && transitionId !== '' && updatedField.behavior[transitionId])
15073
15262
  field.behavior = taskRef.behavior.editable ? updatedField.behavior[transitionId] : taskRef.behavior;
@@ -15078,20 +15267,6 @@ class TaskContentService {
15078
15267
  field.update();
15079
15268
  });
15080
15269
  }
15081
- /**
15082
- * Performs the specific frontend action.
15083
- *
15084
- * A prototype implementation of frontend actions.
15085
- *
15086
- * The specifics are subject to change. It is very likely that this method will be moved to a different service.
15087
- *
15088
- * @param frontendAction the action that should be performed.
15089
- */
15090
- performFrontendAction(frontendAction) {
15091
- if (frontendAction && frontendAction.type === TaskContentService.VALIDATE_FRONTEND_ACTION) {
15092
- timer().subscribe(() => this.validateTaskData());
15093
- }
15094
- }
15095
15270
  isFieldInTask(taskId, changedField) {
15096
15271
  return !!taskId
15097
15272
  && !!this.taskFieldsIndex[taskId]
@@ -15111,9 +15286,22 @@ class TaskContentService {
15111
15286
  }
15112
15287
  return undefined;
15113
15288
  }
15289
+ findTaskRefId(taskId, fields) {
15290
+ let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
15291
+ if (!taskRefId) {
15292
+ const referencedTaskIds = Object.values(fields).filter(f => f instanceof TaskRefField).map(tr => tr.value);
15293
+ referencedTaskIds.forEach(id => {
15294
+ taskRefId = this.findTaskRefId(taskId, this.taskFieldsIndex[id].fields);
15295
+ if (!!taskRefId) {
15296
+ return taskRefId;
15297
+ }
15298
+ });
15299
+ }
15300
+ return taskRefId;
15301
+ }
15114
15302
  }
15115
15303
  TaskContentService.FRONTEND_ACTIONS_KEY = '_frontend_actions';
15116
- TaskContentService.VALIDATE_FRONTEND_ACTION = 'validate';
15304
+ TaskContentService.ACTION = 'action';
15117
15305
  TaskContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskContentService, deps: [{ token: FieldConverterService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
15118
15306
  TaskContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskContentService });
15119
15307
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskContentService, decorators: [{
@@ -15514,12 +15702,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15514
15702
  type: Injectable
15515
15703
  }], ctorParameters: function () { return []; } });
15516
15704
 
15705
+ class FrontActionRegistryService {
15706
+ constructor() {
15707
+ this._registry = new Map();
15708
+ }
15709
+ get registry() {
15710
+ return this._registry;
15711
+ }
15712
+ set registry(value) {
15713
+ this._registry = value;
15714
+ }
15715
+ register(key, fn) {
15716
+ this._registry.set(key, fn);
15717
+ }
15718
+ contains(key) {
15719
+ return this._registry.has(key);
15720
+ }
15721
+ get(key) {
15722
+ if (this._registry.has(key)) {
15723
+ return this._registry.get(key);
15724
+ }
15725
+ return undefined;
15726
+ }
15727
+ }
15728
+ FrontActionRegistryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15729
+ FrontActionRegistryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionRegistryService, providedIn: 'root' });
15730
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionRegistryService, decorators: [{
15731
+ type: Injectable,
15732
+ args: [{
15733
+ providedIn: 'root'
15734
+ }]
15735
+ }], ctorParameters: function () { return []; } });
15736
+
15737
+ class FrontActionService {
15738
+ constructor(_injector, _frontActionRegistry, _log) {
15739
+ this._injector = _injector;
15740
+ this._frontActionRegistry = _frontActionRegistry;
15741
+ this._log = _log;
15742
+ }
15743
+ run(frontAction) {
15744
+ const fn = this._frontActionRegistry.get(frontAction.id);
15745
+ if (!fn) {
15746
+ this._log.error("Frontend action is not defined for ID [" + frontAction.id + "]");
15747
+ }
15748
+ fn.call(this._injector, frontAction);
15749
+ }
15750
+ runAll(frontAction) {
15751
+ frontAction.forEach(a => this.run(a));
15752
+ }
15753
+ }
15754
+ FrontActionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService, deps: [{ token: i0.Injector }, { token: FrontActionRegistryService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
15755
+ FrontActionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService });
15756
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService, decorators: [{
15757
+ type: Injectable
15758
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: FrontActionRegistryService }, { type: LoggerService }]; } });
15759
+
15517
15760
  /**
15518
15761
  * Handles the loading and updating of data fields and behaviour of
15519
15762
  * a single Task object managed by a {@link TaskContentService} instance.
15520
15763
  */
15521
15764
  class TaskDataService extends TaskHandlingService {
15522
- constructor(_taskState, _translate, _log, _snackBar, _taskResourceService, _fieldConverterService, _taskEvent, _taskOperations, _selectedCaseService, _taskContentService, _afterActionFactory, _eventQueue, _userComparator, _eventService, _changedFieldsService) {
15765
+ constructor(_taskState, _translate, _log, _snackBar, _taskResourceService, _fieldConverterService, _taskEvent, _taskOperations, _selectedCaseService, _taskContentService, _afterActionFactory, _eventQueue, _userComparator, _eventService, _changedFieldsService, _frontActionService) {
15523
15766
  super(_taskContentService, _selectedCaseService);
15524
15767
  this._taskState = _taskState;
15525
15768
  this._translate = _translate;
@@ -15534,13 +15777,10 @@ class TaskDataService extends TaskHandlingService {
15534
15777
  this._userComparator = _userComparator;
15535
15778
  this._eventService = _eventService;
15536
15779
  this._changedFieldsService = _changedFieldsService;
15780
+ this._frontActionService = _frontActionService;
15537
15781
  this._updateSuccess$ = new Subject();
15538
15782
  this._dataReloadSubscription = this._taskContentService.taskDataReloadRequest$.subscribe(queuedFrontendAction => {
15539
- this.initializeTaskDataFields(this._afterActionFactory.create(success => {
15540
- if (success && queuedFrontendAction) {
15541
- this._taskContentService.performFrontendAction(queuedFrontendAction);
15542
- }
15543
- }), true);
15783
+ this.initializeTaskDataFields(new AfterAction(), true);
15544
15784
  });
15545
15785
  }
15546
15786
  ngOnDestroy() {
@@ -15915,9 +16155,13 @@ class TaskDataService extends TaskHandlingService {
15915
16155
  processSuccessfulSetDataRequest(setTaskId, response, afterAction, nextEvent, body) {
15916
16156
  const outcome = response.outcome;
15917
16157
  const changedFieldsMap = this._eventService.parseChangedFieldsFromOutcomeTree(outcome);
16158
+ const frontActions = this._eventService.parseFrontActionsFromOutcomeTree(outcome);
15918
16159
  if (Object.keys(changedFieldsMap).length > 0) {
15919
16160
  this._changedFieldsService.emitChangedFields(changedFieldsMap);
15920
16161
  }
16162
+ if (!!frontActions && frontActions.length > 0) {
16163
+ this._frontActionService.runAll(frontActions);
16164
+ }
15921
16165
  this.clearWaitingForResponseFlag(body);
15922
16166
  this._snackBar.openSuccessSnackBar(!!outcome.message ? outcome.message : this._translate.instant('tasks.snackbar.dataSaved'));
15923
16167
  this.updateStateInfo(afterAction, true, setTaskId);
@@ -16035,7 +16279,7 @@ class TaskDataService extends TaskHandlingService {
16035
16279
  });
16036
16280
  }
16037
16281
  }
16038
- TaskDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskDataService, deps: [{ token: TaskRequestStateService }, { token: i1$2.TranslateService }, { token: LoggerService }, { token: SnackBarService }, { token: TaskResourceService }, { token: FieldConverterService }, { token: TaskEventService }, { token: NAE_TASK_OPERATIONS }, { token: SelectedCaseService, optional: true }, { token: TaskContentService }, { token: CallChainService }, { token: EventQueueService }, { token: UserComparatorService }, { token: EventService }, { token: ChangedFieldsService }], target: i0.ɵɵFactoryTarget.Injectable });
16282
+ TaskDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskDataService, deps: [{ token: TaskRequestStateService }, { token: i1$2.TranslateService }, { token: LoggerService }, { token: SnackBarService }, { token: TaskResourceService }, { token: FieldConverterService }, { token: TaskEventService }, { token: NAE_TASK_OPERATIONS }, { token: SelectedCaseService, optional: true }, { token: TaskContentService }, { token: CallChainService }, { token: EventQueueService }, { token: UserComparatorService }, { token: EventService }, { token: ChangedFieldsService }, { token: FrontActionService }], target: i0.ɵɵFactoryTarget.Injectable });
16039
16283
  TaskDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskDataService });
16040
16284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskDataService, decorators: [{
16041
16285
  type: Injectable
@@ -16044,7 +16288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16044
16288
  args: [NAE_TASK_OPERATIONS]
16045
16289
  }] }, { type: SelectedCaseService, decorators: [{
16046
16290
  type: Optional
16047
- }] }, { type: TaskContentService }, { type: CallChainService }, { type: EventQueueService }, { type: UserComparatorService }, { type: EventService }, { type: ChangedFieldsService }]; } });
16291
+ }] }, { type: TaskContentService }, { type: CallChainService }, { type: EventQueueService }, { type: UserComparatorService }, { type: EventService }, { type: ChangedFieldsService }, { type: FrontActionService }]; } });
16048
16292
 
16049
16293
  class AbstractTaskRefDashboardTileComponent {
16050
16294
  constructor(_caseResourceService, _processService, _logger, _taskResourceService, _callChainService, _parentTaskContentService, _taskDataService, _taskOperations) {
@@ -16339,11 +16583,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16339
16583
  args: [DATA_FIELD_PORTAL_DATA]
16340
16584
  }] }]; } });
16341
16585
 
16342
- const NAE_DEFAULT_HEADERS = new InjectionToken('NaeDefaultHeaders');
16343
-
16344
- const NAE_CASE_REF_CREATE_CASE = new InjectionToken('NaeCaseRefCreateCase');
16345
- const NAE_CASE_REF_SEARCH = new InjectionToken('NaeCaseRefSearch');
16346
-
16347
16586
  class AbstractCaseRefDefaultComponent extends AbstractBaseDataFieldComponent {
16348
16587
  constructor(injector, caseViewType, dataFieldPortalData) {
16349
16588
  super(dataFieldPortalData);
@@ -16378,6 +16617,10 @@ class AbstractCaseRefDefaultComponent extends AbstractBaseDataFieldComponent {
16378
16617
  provide: NAE_VIEW_ID_SEGMENT,
16379
16618
  useValue: this.dataField.parentCaseId + '_' + this.dataField.parentTaskId + '_' + this.dataField.stringId
16380
16619
  },
16620
+ {
16621
+ provide: NAE_CASE_REF_DATAFIELD,
16622
+ useValue: this.dataField
16623
+ },
16381
16624
  { provide: ViewIdService, useClass: ViewIdService }
16382
16625
  ],
16383
16626
  parent: this.injector
@@ -18331,6 +18574,10 @@ class AbstractCasePanelComponent extends AbstractPanelWithImmediateDataComponent
18331
18574
  this.showCasePanelIcon = true;
18332
18575
  this.showDeleteMenu = false;
18333
18576
  this.textEllipsis = false;
18577
+ this._approvalFormControl = new FormControl();
18578
+ }
18579
+ get approvalFormControl() {
18580
+ return this._approvalFormControl;
18334
18581
  }
18335
18582
  show(event) {
18336
18583
  event.stopPropagation();
@@ -18385,7 +18632,7 @@ class AbstractCasePanelComponent extends AbstractPanelWithImmediateDataComponent
18385
18632
  }
18386
18633
  }
18387
18634
  AbstractCasePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCasePanelComponent, deps: [{ token: CaseResourceService }, { token: CaseViewService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }, { token: UserService }, { token: i5.CurrencyPipe }, { token: PermissionService }, { token: OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
18388
- AbstractCasePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCasePanelComponent, selector: "ncc-abstract-case-panel", inputs: { case_: "case_", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", first: "first", last: "last", showCasePanelIcon: "showCasePanelIcon", showDeleteMenu: "showDeleteMenu", textEllipsis: "textEllipsis" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
18635
+ AbstractCasePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCasePanelComponent, selector: "ncc-abstract-case-panel", inputs: { case_: "case_", approval: "approval", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", first: "first", last: "last", showCasePanelIcon: "showCasePanelIcon", showDeleteMenu: "showDeleteMenu", textEllipsis: "textEllipsis" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
18389
18636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCasePanelComponent, decorators: [{
18390
18637
  type: Component,
18391
18638
  args: [{
@@ -18396,6 +18643,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
18396
18643
  type: Optional
18397
18644
  }] }]; }, propDecorators: { case_: [{
18398
18645
  type: Input
18646
+ }], approval: [{
18647
+ type: Input
18399
18648
  }], selectedHeaders$: [{
18400
18649
  type: Input
18401
18650
  }], responsiveBody: [{
@@ -18899,6 +19148,7 @@ const NAE_SAVE_FILTER_COMPONENT = new InjectionToken('NaeSaveFilterComponent');
18899
19148
  const NAE_LOAD_FILTER_COMPONENT = new InjectionToken('NaeLoadFilterComponent');
18900
19149
  const NAE_USER_IMPERSONATE_COMPONENT = new InjectionToken('NaeUserImpersonateComponent');
18901
19150
  const NAE_ADMIN_IMPERSONATE_COMPONENT = new InjectionToken('NaeAdminImpersonateComponent');
19151
+ const NAE_TASK_VIEW_COMPONENT = new InjectionToken('NaeTaskViewComponent');
18902
19152
 
18903
19153
  const NAE_SIDE_MENU_CONTROL = new InjectionToken('NaeSideMenuControl');
18904
19154
 
@@ -19842,6 +20092,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
19842
20092
  this.responsiveBody = true;
19843
20093
  this.preventCollapse = false;
19844
20094
  this.hidePanelHeader = false;
20095
+ this.hideActionRow = false;
19845
20096
  this.showMoreMenu = true;
19846
20097
  this.thisContext = {
19847
20098
  canAssign: () => this.canAssign(),
@@ -20110,7 +20361,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
20110
20361
  }
20111
20362
  }
20112
20363
  AbstractTaskPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, deps: [{ token: TaskContentService }, { token: LoggerService }, { token: TaskViewService }, { token: PaperViewService }, { token: TaskEventService }, { token: AssignTaskService }, { token: DelegateTaskService }, { token: CancelTaskService }, { token: FinishTaskService }, { token: TaskRequestStateService }, { token: TaskDataService }, { token: AssignPolicyService }, { token: FinishPolicyService }, { token: CallChainService }, { token: SubjectTaskOperations }, { token: NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, optional: true }, { token: i1$2.TranslateService }, { token: i5.CurrencyPipe }, { token: ChangedFieldsService }, { token: PermissionService }, { token: OverflowService, optional: true }, { token: NAE_TASK_FORCE_OPEN, optional: true }], target: i0.ɵɵFactoryTarget.Component });
20113
- AbstractTaskPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskPanelComponent, selector: "ncc-abstract-legal-notice", inputs: { taskListVirtualScroll: "taskListVirtualScroll", panelContentComponent: "panelContentComponent", selectedHeaders$: "selectedHeaders$", first: "first", last: "last", responsiveBody: "responsiveBody", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent", showMoreMenu: "showMoreMenu", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", taskPanelData: "taskPanelData" }, outputs: { taskEvent: "taskEvent", panelRefOutput: "panelRefOutput" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
20364
+ AbstractTaskPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskPanelComponent, selector: "ncc-abstract-legal-notice", inputs: { taskListVirtualScroll: "taskListVirtualScroll", panelContentComponent: "panelContentComponent", selectedHeaders$: "selectedHeaders$", first: "first", last: "last", responsiveBody: "responsiveBody", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", hideActionRow: "hideActionRow", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent", showMoreMenu: "showMoreMenu", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", taskPanelData: "taskPanelData" }, outputs: { taskEvent: "taskEvent", panelRefOutput: "panelRefOutput" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
20114
20365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, decorators: [{
20115
20366
  type: Component,
20116
20367
  args: [{
@@ -20145,6 +20396,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20145
20396
  type: Input
20146
20397
  }], hidePanelHeader: [{
20147
20398
  type: Input
20399
+ }], hideActionRow: [{
20400
+ type: Input
20148
20401
  }], actionButtonTemplates: [{
20149
20402
  type: Input
20150
20403
  }], actionRowJustifyContent: [{
@@ -20360,7 +20613,7 @@ class AbstractTaskListPaginationComponent extends AbstractDefaultTaskListCompone
20360
20613
  }
20361
20614
  }
20362
20615
  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$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20363
- AbstractTaskListPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskListPaginationComponent, selector: "ncc-abstract-task-list-pagination-component", inputs: { tasks$: "tasks$" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
20616
+ 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 });
20364
20617
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskListPaginationComponent, decorators: [{
20365
20618
  type: Component,
20366
20619
  args: [{
@@ -20372,7 +20625,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20372
20625
  }, {
20373
20626
  type: Inject,
20374
20627
  args: [NAE_TAB_DATA]
20375
- }] }, { type: i2$3.ActivatedRoute }]; }, propDecorators: { tasks$: [{
20628
+ }] }, { type: i2$3.ActivatedRoute }]; }, propDecorators: { disabled: [{
20629
+ type: Input
20630
+ }], tasks$: [{
20376
20631
  type: Input
20377
20632
  }] } });
20378
20633
 
@@ -20820,12 +21075,13 @@ class AbstractSingleTaskComponent {
20820
21075
  this.textEllipsis = false;
20821
21076
  this.preventCollapse = true;
20822
21077
  this.hidePanelHeader = true;
21078
+ this.hideActionRow = true;
21079
+ this.showPageHeader = true;
21080
+ this.showPageFooter = true;
20823
21081
  this.taskEvent = new EventEmitter();
20824
- this._unsubscribe$ = new Subject();
20825
21082
  }
20826
21083
  ngOnDestroy() {
20827
21084
  this.taskEvent.complete();
20828
- this._unsubscribe$.complete();
20829
21085
  }
20830
21086
  setPanelRef(panelRef) {
20831
21087
  this._taskPanelRef = panelRef;
@@ -20842,7 +21098,7 @@ class AbstractSingleTaskComponent {
20842
21098
  }
20843
21099
  }
20844
21100
  AbstractSingleTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, deps: [{ token: LoggerService }, { token: i2$3.ActivatedRoute }, { token: NAE_TAB_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
20845
- 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", noTaskSection: "noTaskSection", pageHeader: "pageHeader", pageFooter: "pageFooter", headerTitle: "headerTitle", footerText: "footerText", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent" }, outputs: { taskEvent: "taskEvent" }, ngImport: i0, template: '', isInline: true });
21101
+ 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 });
20846
21102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskComponent, decorators: [{
20847
21103
  type: Component,
20848
21104
  args: [{
@@ -20870,12 +21126,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
20870
21126
  type: Input
20871
21127
  }], hidePanelHeader: [{
20872
21128
  type: Input
21129
+ }], hideActionRow: [{
21130
+ type: Input
20873
21131
  }], noTaskSection: [{
20874
21132
  type: Input
20875
21133
  }], pageHeader: [{
20876
21134
  type: Input
20877
21135
  }], pageFooter: [{
20878
21136
  type: Input
21137
+ }], showPageHeader: [{
21138
+ type: Input
21139
+ }], showPageFooter: [{
21140
+ type: Input
20879
21141
  }], headerTitle: [{
20880
21142
  type: Input
20881
21143
  }], footerText: [{
@@ -21818,6 +22080,150 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
21818
22080
  */
21819
22081
  const NAE_URI_NODE_CASES_PAGE_SIZE = new InjectionToken('NaeUriNodeCasesPageSize');
21820
22082
 
22083
+ var GroupNavigationConstants;
22084
+ (function (GroupNavigationConstants) {
22085
+ /**
22086
+ * Name of the component that indicates the position of the group specific navigation elements.
22087
+ */
22088
+ GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
22089
+ /**
22090
+ * Name of the router param that is used to provide information about the selected filter to the group navigation view component
22091
+ */
22092
+ GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
22093
+ /**
22094
+ * Field id, that contains the tab name of the navigation item.
22095
+ */
22096
+ GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "tab_name";
22097
+ /**
22098
+ * Boolean field id, that determines if the navigation defines a tab icon.
22099
+ */
22100
+ GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_tab_icon";
22101
+ /**
22102
+ * Text field id, that contains the id of the used material icon.
22103
+ */
22104
+ GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "tab_icon";
22105
+ /**
22106
+ * TaskRef field, that contains taskId of filter task
22107
+ * */
22108
+ GroupNavigationConstants["ITEM_FIELD_ID_FILTER_TASKREF"] = "current_filter_preview";
22109
+ /**
22110
+ * Text field id, that contains title of create case button
22111
+ * */
22112
+ GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_TITLE"] = "create_case_button_title";
22113
+ /**
22114
+ * Text field id, that contains icon name of create case button
22115
+ * */
22116
+ GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_ICON"] = "create_case_button_icon";
22117
+ /**
22118
+ * EnumerationMap field, that contains selected search type for case view
22119
+ * */
22120
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
22121
+ /**
22122
+ * EnumerationMap field, that contains selected search type for task view
22123
+ * */
22124
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
22125
+ /**
22126
+ * Boolean field, that is true if user wants to merge base filter and custom filter
22127
+ * */
22128
+ GroupNavigationConstants["ITEM_FIELD_ID_MERGE_FILTERS"] = "merge_filters";
22129
+ /**
22130
+ * TaskRef field, that contains taskId of custom filter for task view
22131
+ * */
22132
+ GroupNavigationConstants["ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF"] = "current_additional_filter_preview";
22133
+ /**
22134
+ * Boolean field, that is true if the user wants to see more menu for case item in case view
22135
+ * */
22136
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
22137
+ /**
22138
+ * Boolean field, that is true if no input for title in case creation is shown
22139
+ * */
22140
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "case_require_title_in_creation";
22141
+ /**
22142
+ * Text field, that contains banned processes in case creation as a value
22143
+ * */
22144
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "case_banned_nets_in_creation";
22145
+ /**
22146
+ * Boolean field, that is true if the user wants to see more menu for task item in task view
22147
+ * */
22148
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
22149
+ /**
22150
+ * MultichoiceMap field, that contains selected header modes for case view as a value
22151
+ * */
22152
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
22153
+ /**
22154
+ * Boolean field, that is true if table mode can be applied in case view
22155
+ * */
22156
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "case_allow_header_table_mode";
22157
+ /**
22158
+ * EnumerationMap field, that contains selected default header mode for case view as a value
22159
+ * */
22160
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
22161
+ /**
22162
+ * Boolean field, that is true to make mode menu in case view visible
22163
+ * */
22164
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
22165
+ /**
22166
+ * MultichoiceMap field, that contains selected header modes for task view as a value
22167
+ * */
22168
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
22169
+ /**
22170
+ * Boolean field, that is true if table mode can be applied in task view
22171
+ * */
22172
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "task_allow_header_table_mode";
22173
+ /**
22174
+ * EnumerationMap field, that contains selected default header mode for task view as a value
22175
+ * */
22176
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
22177
+ /**
22178
+ * Boolean field, that is true to make mode menu in task view visible
22179
+ * */
22180
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
22181
+ /**
22182
+ * Boolean field, that is true to use default headers configuration for case view
22183
+ * */
22184
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
22185
+ /**
22186
+ * Text field, that contains default header metadata separated by comma for case view as a value
22187
+ * */
22188
+ GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
22189
+ /**
22190
+ * Boolean field, that is true to use default headers configuration for task view
22191
+ * */
22192
+ GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
22193
+ /**
22194
+ * Text field, that contains default header metadata separated by comma for task view as a value
22195
+ * */
22196
+ GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
22197
+ /**
22198
+ * MultichoiceMap field, that contains allowed roles as value
22199
+ * */
22200
+ GroupNavigationConstants["ITEM_FIELD_ID_ALLOWED_ROLES"] = "allowed_roles";
22201
+ /**
22202
+ * MultichoiceMap field, that contains banned roles as value
22203
+ * */
22204
+ GroupNavigationConstants["ITEM_FIELD_ID_BANNED_ROLES"] = "banned_roles";
22205
+ /**
22206
+ * Text field, that contains icon identifier
22207
+ * */
22208
+ GroupNavigationConstants["ITEM_FIELD_ID_MENU_ICON"] = "menu_icon";
22209
+ /**
22210
+ * I18n field, that contains labels of menu item
22211
+ * */
22212
+ GroupNavigationConstants["ITEM_FIELD_ID_MENU_NAME"] = "menu_name";
22213
+ /**
22214
+ * Text field, that contains URI
22215
+ * */
22216
+ GroupNavigationConstants["ITEM_FIELD_ID_NODE_PATH"] = "nodePath";
22217
+ /**
22218
+ * Boolean field, that is true if item contains child items
22219
+ * */
22220
+ GroupNavigationConstants["ITEM_FIELD_ID_HAS_CHILDREN"] = "hasChildren";
22221
+ /**
22222
+ * CaseField containing stringIds of child instances of process preference_item
22223
+ * */
22224
+ GroupNavigationConstants["ITEM_FIELD_ID_CHILD_ITEM_IDS"] = "childItemIds";
22225
+ })(GroupNavigationConstants || (GroupNavigationConstants = {}));
22226
+
21821
22227
  /**
21822
22228
  * Service for accessing backend resource to resolve URI objects
21823
22229
  * */
@@ -22143,6 +22549,26 @@ class UriService {
22143
22549
  .set(PaginationParams.PAGE_NUMBER, pageNumber);
22144
22550
  return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
22145
22551
  }
22552
+ /**
22553
+ * Get menu item case by nodePath field value
22554
+ * @param node a node, that is represented by the wanted case
22555
+ * @return page containing 1 case
22556
+ */
22557
+ getItemCaseByNodePath(node) {
22558
+ if (!node) {
22559
+ node = this.activeNode;
22560
+ }
22561
+ const searchBody = {
22562
+ data: {
22563
+ [GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH]: node.uriPath
22564
+ },
22565
+ process: { identifier: "preference_item" }
22566
+ };
22567
+ let httpParams = new HttpParams()
22568
+ .set(PaginationParams.PAGE_SIZE, 1)
22569
+ .set(PaginationParams.PAGE_NUMBER, 0);
22570
+ return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
22571
+ }
22146
22572
  /**
22147
22573
  * Get siblings node of the provided node
22148
22574
  * @param node siblings node
@@ -25022,6 +25448,9 @@ class AbstractHeaderComponent {
25022
25448
  this._initResponsiveHeaders = responsive;
25023
25449
  }
25024
25450
  }
25451
+ get approvalFormControl() {
25452
+ return this._approvalFormControl;
25453
+ }
25025
25454
  changeHeadersMode(mode, saveLastMode = true) {
25026
25455
  if (this.headerService) {
25027
25456
  this.headerService.changeMode(mode, saveLastMode);
@@ -25107,6 +25536,7 @@ class AbstractHeaderComponent {
25107
25536
  Validators.required,
25108
25537
  Validators.min(180)
25109
25538
  ]);
25539
+ this._approvalFormControl = new FormControl(false);
25110
25540
  if (exist) {
25111
25541
  this.initializeValueChanges();
25112
25542
  }
@@ -25135,7 +25565,7 @@ class AbstractHeaderComponent {
25135
25565
  }
25136
25566
  }
25137
25567
  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 });
25138
- 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", maxHeaderColumns: "maxHeaderColumns", responsiveHeaders: "responsiveHeaders" }, ngImport: i0, template: '', isInline: true });
25568
+ 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 });
25139
25569
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, decorators: [{
25140
25570
  type: Component,
25141
25571
  args: [{
@@ -25156,6 +25586,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25156
25586
  type: Input
25157
25587
  }], showTableSection: [{
25158
25588
  type: Input
25589
+ }], approval: [{
25590
+ type: Input
25159
25591
  }], maxHeaderColumns: [{
25160
25592
  type: Input
25161
25593
  }], responsiveHeaders: [{
@@ -25170,7 +25602,7 @@ class AbstractHeaderModeComponent {
25170
25602
  }
25171
25603
  }
25172
25604
  AbstractHeaderModeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderModeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25173
- AbstractHeaderModeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderModeComponent, selector: "ncc-abstract-header-mode", inputs: { overflowWidth: "overflowWidth" }, ngImport: i0, template: '', isInline: true });
25605
+ AbstractHeaderModeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderModeComponent, selector: "ncc-abstract-header-mode", inputs: { overflowWidth: "overflowWidth", approval: "approval", indeterminate: "indeterminate", approvalFormControl: "approvalFormControl", typeApproval: "typeApproval" }, ngImport: i0, template: '', isInline: true });
25174
25606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderModeComponent, decorators: [{
25175
25607
  type: Component,
25176
25608
  args: [{
@@ -25179,6 +25611,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
25179
25611
  }]
25180
25612
  }], ctorParameters: function () { return []; }, propDecorators: { overflowWidth: [{
25181
25613
  type: Input
25614
+ }], approval: [{
25615
+ type: Input
25616
+ }], indeterminate: [{
25617
+ type: Input
25618
+ }], approvalFormControl: [{
25619
+ type: Input
25620
+ }], typeApproval: [{
25621
+ type: Input
25182
25622
  }] } });
25183
25623
 
25184
25624
  class AbstractSortModeComponent extends AbstractHeaderModeComponent {
@@ -26737,146 +27177,6 @@ class ViewClassInfo extends ImportToAdd {
26737
27177
  }
26738
27178
  }
26739
27179
 
26740
- var GroupNavigationConstants;
26741
- (function (GroupNavigationConstants) {
26742
- /**
26743
- * Name of the component that indicates the position of the group specific navigation elements.
26744
- */
26745
- GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
26746
- /**
26747
- * Name of the router param that is used to provide information about the selected filter to the group navigation view component
26748
- */
26749
- GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
26750
- /**
26751
- * Field id, that contains the tab name of the navigation item.
26752
- */
26753
- GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "tab_name";
26754
- /**
26755
- * Boolean field id, that determines if the navigation defines a tab icon.
26756
- */
26757
- GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_tab_icon";
26758
- /**
26759
- * Text field id, that contains the id of the used material icon.
26760
- */
26761
- GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "tab_icon";
26762
- /**
26763
- * TaskRef field, that contains taskId of filter task
26764
- * */
26765
- GroupNavigationConstants["ITEM_FIELD_ID_FILTER_TASKREF"] = "current_filter_preview";
26766
- /**
26767
- * Text field id, that contains title of create case button
26768
- * */
26769
- GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_TITLE"] = "create_case_button_title";
26770
- /**
26771
- * Text field id, that contains icon name of create case button
26772
- * */
26773
- GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_ICON"] = "create_case_button_icon";
26774
- /**
26775
- * EnumerationMap field, that contains selected search type for case view
26776
- * */
26777
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
26778
- /**
26779
- * EnumerationMap field, that contains selected search type for task view
26780
- * */
26781
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
26782
- /**
26783
- * Boolean field, that is true if user wants to merge base filter and custom filter
26784
- * */
26785
- GroupNavigationConstants["ITEM_FIELD_ID_MERGE_FILTERS"] = "merge_filters";
26786
- /**
26787
- * TaskRef field, that contains taskId of custom filter for task view
26788
- * */
26789
- GroupNavigationConstants["ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF"] = "current_additional_filter_preview";
26790
- /**
26791
- * Boolean field, that is true if the user wants to see more menu for case item in case view
26792
- * */
26793
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
26794
- /**
26795
- * Boolean field, that is true if no input for title in case creation is shown
26796
- * */
26797
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "case_require_title_in_creation";
26798
- /**
26799
- * Text field, that contains banned processes in case creation as a value
26800
- * */
26801
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "case_banned_nets_in_creation";
26802
- /**
26803
- * Boolean field, that is true if the user wants to see more menu for task item in task view
26804
- * */
26805
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
26806
- /**
26807
- * MultichoiceMap field, that contains selected header modes for case view as a value
26808
- * */
26809
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
26810
- /**
26811
- * Boolean field, that is true if table mode can be applied in case view
26812
- * */
26813
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "case_allow_header_table_mode";
26814
- /**
26815
- * EnumerationMap field, that contains selected default header mode for case view as a value
26816
- * */
26817
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
26818
- /**
26819
- * Boolean field, that is true to make mode menu in case view visible
26820
- * */
26821
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
26822
- /**
26823
- * MultichoiceMap field, that contains selected header modes for task view as a value
26824
- * */
26825
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
26826
- /**
26827
- * Boolean field, that is true if table mode can be applied in task view
26828
- * */
26829
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "task_allow_header_table_mode";
26830
- /**
26831
- * EnumerationMap field, that contains selected default header mode for task view as a value
26832
- * */
26833
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
26834
- /**
26835
- * Boolean field, that is true to make mode menu in task view visible
26836
- * */
26837
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
26838
- /**
26839
- * Boolean field, that is true to use default headers configuration for case view
26840
- * */
26841
- GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
26842
- /**
26843
- * Text field, that contains default header metadata separated by comma for case view as a value
26844
- * */
26845
- GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
26846
- /**
26847
- * Boolean field, that is true to use default headers configuration for task view
26848
- * */
26849
- GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
26850
- /**
26851
- * Text field, that contains default header metadata separated by comma for task view as a value
26852
- * */
26853
- GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
26854
- /**
26855
- * MultichoiceMap field, that contains allowed roles as value
26856
- * */
26857
- GroupNavigationConstants["ITEM_FIELD_ID_ALLOWED_ROLES"] = "allowed_roles";
26858
- /**
26859
- * MultichoiceMap field, that contains banned roles as value
26860
- * */
26861
- GroupNavigationConstants["ITEM_FIELD_ID_BANNED_ROLES"] = "banned_roles";
26862
- /**
26863
- * Text field, that contains icon identifier
26864
- * */
26865
- GroupNavigationConstants["ITEM_FIELD_ID_MENU_ICON"] = "menu_icon";
26866
- /**
26867
- * I18n field, that contains labels of menu item
26868
- * */
26869
- GroupNavigationConstants["ITEM_FIELD_ID_MENU_NAME"] = "menu_name";
26870
- /**
26871
- * Text field, that contains URI
26872
- * */
26873
- GroupNavigationConstants["ITEM_FIELD_ID_NODE_PATH"] = "nodePath";
26874
- /**
26875
- * Boolean field, that is true if item contains child items
26876
- * */
26877
- GroupNavigationConstants["ITEM_FIELD_ID_HAS_CHILDREN"] = "hasChildren";
26878
- })(GroupNavigationConstants || (GroupNavigationConstants = {}));
26879
-
26880
27180
  /**
26881
27181
  * Holds component for dynamic routing resolution of group navigation component resolver component by the {@link RoutingBuilderService}.
26882
27182
  */
@@ -27234,7 +27534,7 @@ var MenuOrder;
27234
27534
  MenuOrder[MenuOrder["Descending"] = 1] = "Descending";
27235
27535
  })(MenuOrder || (MenuOrder = {}));
27236
27536
  class AbstractNavigationDoubleDrawerComponent {
27237
- constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
27537
+ constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _caseResourceService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
27238
27538
  this._router = _router;
27239
27539
  this._activatedRoute = _activatedRoute;
27240
27540
  this._breakpoint = _breakpoint;
@@ -27245,6 +27545,7 @@ class AbstractNavigationDoubleDrawerComponent {
27245
27545
  this._log = _log;
27246
27546
  this._config = _config;
27247
27547
  this._uriService = _uriService;
27548
+ this._caseResourceService = _caseResourceService;
27248
27549
  this._impersonationUserSelect = _impersonationUserSelect;
27249
27550
  this._impersonation = _impersonation;
27250
27551
  this._dynamicRoutingService = _dynamicRoutingService;
@@ -27280,6 +27581,7 @@ class AbstractNavigationDoubleDrawerComponent {
27280
27581
  this.nodeLoading$ = new LoadingEmitter();
27281
27582
  this.itemsOrder = MenuOrder.Ascending;
27282
27583
  this.hiddenCustomItems = [];
27584
+ this.moreItems = new Array();
27283
27585
  this._childCustomViews = {};
27284
27586
  }
27285
27587
  ngOnInit() {
@@ -27291,10 +27593,6 @@ class AbstractNavigationDoubleDrawerComponent {
27291
27593
  this.resolveLayout(true);
27292
27594
  }
27293
27595
  });
27294
- if (!this._currentNode) {
27295
- this.leftLoading$.on();
27296
- this.rightLoading$.on();
27297
- }
27298
27596
  this._currentNodeSubscription = this._uriService.activeNode$.subscribe(node => {
27299
27597
  this.currentNode = node;
27300
27598
  });
@@ -27311,8 +27609,9 @@ class AbstractNavigationDoubleDrawerComponent {
27311
27609
  return this._currentNode;
27312
27610
  }
27313
27611
  set currentNode(node) {
27314
- if (node === this._currentNode)
27612
+ if (node === this._currentNode || this.leftLoading$.isActive || this.rightLoading$.isActive) {
27315
27613
  return;
27614
+ }
27316
27615
  this._currentNode = node;
27317
27616
  if (!node)
27318
27617
  return;
@@ -27331,19 +27630,19 @@ class AbstractNavigationDoubleDrawerComponent {
27331
27630
  });
27332
27631
  }
27333
27632
  }
27334
- if (this.leftLoading$.isActive || this.rightLoading$.isActive) {
27335
- this.leftLoading$.off();
27336
- this.rightLoading$.off();
27337
- }
27633
+ this.resolveMenuItems(node);
27634
+ }
27635
+ resolveMenuItems(node) {
27338
27636
  if (this._uriService.isRoot(node)) {
27339
27637
  this.leftItems = [];
27340
27638
  this.loadRightSide();
27341
- return;
27342
27639
  }
27343
- if (!this.leftItems.find(item => item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
27344
- this.loadLeftSide();
27640
+ else {
27641
+ if (!this.leftItems.find(item => item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
27642
+ this.loadLeftSide();
27643
+ }
27644
+ this.loadRightSide();
27345
27645
  }
27346
- this.loadRightSide();
27347
27646
  }
27348
27647
  ngOnDestroy() {
27349
27648
  this._breakpointSubscription?.unsubscribe();
@@ -27424,7 +27723,10 @@ class AbstractNavigationDoubleDrawerComponent {
27424
27723
  * set to root node.
27425
27724
  * */
27426
27725
  onHomeClick() {
27427
- this.currentNode = this._uriService.root;
27726
+ if (this.leftLoading$.isActive || this.rightLoading$.isActive) {
27727
+ return;
27728
+ }
27729
+ this._uriService.activeNode = this._uriService.root;
27428
27730
  }
27429
27731
  /**
27430
27732
  * On back click, the parent is set to parent of left nodes, that will solve
@@ -27433,26 +27735,29 @@ class AbstractNavigationDoubleDrawerComponent {
27433
27735
  * Current level is set to a lower number in order to set the left side menu.
27434
27736
  * */
27435
27737
  onBackClick() {
27436
- if (this._uriService.isRoot(this._currentNode))
27738
+ if (this.leftLoading$.isActive || this.rightLoading$.isActive || this._uriService.isRoot(this._currentNode)) {
27437
27739
  return;
27438
- this.currentNode = this._currentNode.parent;
27740
+ }
27741
+ this._uriService.activeNode = this._currentNode.parent;
27439
27742
  }
27440
27743
  onItemClick(item) {
27441
- this._uriService.activeNode = this._currentNode;
27442
- if (this.hasItemChildren(item)) {
27744
+ if (this.hasItemChildren(item) && !this.leftLoading$.isActive && !this.rightLoading$.isActive) {
27443
27745
  const path = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value;
27444
27746
  this._uriService.getNodeByPath(path).subscribe(node => {
27445
- this.currentNode = node;
27747
+ this._uriService.activeNode = node;
27446
27748
  }, error => {
27447
27749
  this._log.error(error);
27448
27750
  });
27449
27751
  }
27752
+ else {
27753
+ this._uriService.activeNode = this._currentNode;
27754
+ }
27450
27755
  }
27451
27756
  hasItemChildren(item) {
27452
- return item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
27757
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
27453
27758
  }
27454
27759
  isItemAndNodeEqual(item, node) {
27455
- return item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
27760
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
27456
27761
  }
27457
27762
  loadLeftSide() {
27458
27763
  if (this._uriService.isRoot(this._currentNode)) {
@@ -27460,29 +27765,53 @@ class AbstractNavigationDoubleDrawerComponent {
27460
27765
  return;
27461
27766
  }
27462
27767
  this.leftLoading$.on();
27463
- this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
27464
- page?.pagination?.totalElements === 0 ? of([]) : this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content)).subscribe(result => {
27465
- this.leftItems = result.filter(folder => folder.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value === true).map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
27466
- this.leftItems.sort((a, b) => a?.navigation?.title.localeCompare(b?.navigation?.title));
27768
+ this._uriService.getItemCaseByNodePath(this.currentNode.parent).subscribe(page => {
27769
+ let childCases$;
27770
+ let targetItem;
27771
+ let orderedChildCaseIds;
27772
+ if (page?.pagination?.totalElements === 0) {
27773
+ childCases$ = of([]);
27774
+ }
27775
+ else {
27776
+ targetItem = page.content[0];
27777
+ orderedChildCaseIds = this.extractChildCaseIds(targetItem);
27778
+ childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
27779
+ }
27780
+ childCases$.subscribe(result => {
27781
+ result = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
27782
+ this.leftItems = result.sort((a, b) => orderedChildCaseIds.indexOf(a.resource.stringId) - orderedChildCaseIds.indexOf(b.resource.stringId));
27783
+ this.resolveCustomViewsInLeftSide();
27467
27784
  this.leftLoading$.off();
27468
27785
  }, error => {
27469
27786
  this._log.error(error);
27470
27787
  this.leftItems = [];
27788
+ this.resolveCustomViewsInLeftSide();
27471
27789
  this.leftLoading$.off();
27472
27790
  });
27473
27791
  }, error => {
27474
27792
  this._log.error(error);
27475
27793
  this.leftItems = [];
27794
+ this.resolveCustomViewsInLeftSide();
27476
27795
  this.leftLoading$.off();
27477
27796
  });
27478
27797
  }
27479
27798
  loadRightSide() {
27480
27799
  this.rightLoading$.on();
27481
27800
  this.moreItems = [];
27482
- this._uriService.getCasesOfNode(this.currentNode, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
27483
- this._log.debug('Number of items for uri ' + this._currentNode.uriPath + ': ' + page?.pagination?.totalElements);
27484
- (page?.pagination?.totalElements === 0 ? of([]) : this._uriService.getCasesOfNode(this._currentNode, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content))).subscribe(result => {
27485
- result = result.sort((a, b) => a?.title.localeCompare(b?.title));
27801
+ this._uriService.getItemCaseByNodePath(this.currentNode).subscribe(page => {
27802
+ let childCases$;
27803
+ let targetItem;
27804
+ let orderedChildCaseIds;
27805
+ if (page?.pagination?.totalElements === 0) {
27806
+ childCases$ = of([]);
27807
+ }
27808
+ else {
27809
+ targetItem = page.content[0];
27810
+ orderedChildCaseIds = this.extractChildCaseIds(targetItem);
27811
+ childCases$ = this.getItemCasesByIdsInOnePage(orderedChildCaseIds).pipe(map(p => p.content));
27812
+ }
27813
+ childCases$.subscribe(result => {
27814
+ result = result.sort((a, b) => orderedChildCaseIds.indexOf(a.stringId) - orderedChildCaseIds.indexOf(b.stringId));
27486
27815
  if (result.length > RIGHT_SIDE_INIT_PAGE_SIZE) {
27487
27816
  const rawRightItems = result.splice(0, RIGHT_SIDE_INIT_PAGE_SIZE);
27488
27817
  this.rightItems = rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
@@ -27508,6 +27837,22 @@ class AbstractNavigationDoubleDrawerComponent {
27508
27837
  this.rightLoading$.off();
27509
27838
  });
27510
27839
  }
27840
+ extractChildCaseIds(item) {
27841
+ return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_CHILD_ITEM_IDS)?.value;
27842
+ }
27843
+ getItemCasesByIdsInOnePage(caseIds) {
27844
+ return this.getItemCasesByIds(caseIds, 0, caseIds.length);
27845
+ }
27846
+ getItemCasesByIds(caseIds, pageNumber, pageSize) {
27847
+ const searchBody = {
27848
+ stringId: caseIds,
27849
+ process: MENU_IDENTIFIERS.map(id => ({ identifier: id }))
27850
+ };
27851
+ let httpParams = new HttpParams()
27852
+ .set(PaginationParams.PAGE_SIZE, pageSize)
27853
+ .set(PaginationParams.PAGE_NUMBER, pageNumber);
27854
+ return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
27855
+ }
27511
27856
  loadMoreItems() {
27512
27857
  if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
27513
27858
  this.rightItems.push(...this.moreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
@@ -27528,14 +27873,21 @@ class AbstractNavigationDoubleDrawerComponent {
27528
27873
  }
27529
27874
  this.rightItems = this.rightItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
27530
27875
  this.leftItems = this.leftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
27531
- this.moreItems = this.moreItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
27532
27876
  }
27533
27877
  resolveCustomViewsInRightSide() {
27534
27878
  if (!!this._childCustomViews[this._currentNode.uriPath]) {
27535
27879
  this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.uriPath]));
27536
27880
  }
27537
27881
  }
27882
+ resolveCustomViewsInLeftSide() {
27883
+ if (!!this._childCustomViews[this._currentNode.parent.uriPath]) {
27884
+ this.leftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.uriPath]));
27885
+ }
27886
+ }
27538
27887
  resolveItemCaseToNavigationItem(itemCase) {
27888
+ if (this.representsRootNode(itemCase)) {
27889
+ return;
27890
+ }
27539
27891
  const item = {
27540
27892
  access: {},
27541
27893
  navigation: {
@@ -27558,6 +27910,9 @@ class AbstractNavigationDoubleDrawerComponent {
27558
27910
  return;
27559
27911
  return item;
27560
27912
  }
27913
+ representsRootNode(item) {
27914
+ return item.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH).value === "/";
27915
+ }
27561
27916
  getTranslation(value) {
27562
27917
  const locale = this._translateService.currentLang.split('-')[0];
27563
27918
  return locale in value.translations ? value.translations[locale] : value.defaultValue;
@@ -27641,7 +27996,7 @@ class AbstractNavigationDoubleDrawerComponent {
27641
27996
  }
27642
27997
  }
27643
27998
  }
27644
- AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i2$3.Router }, { token: i2$3.ActivatedRoute }, { token: i1$7.BreakpointObserver }, { token: LanguageService }, { token: i1$2.TranslateService }, { token: UserService }, { token: AccessService }, { token: LoggerService }, { token: ConfigurationService }, { token: UriService }, { token: ImpersonationUserSelectService }, { token: ImpersonationService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
27999
+ AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i2$3.Router }, { token: i2$3.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 });
27645
28000
  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" }, ngImport: i0, template: '', isInline: true });
27646
28001
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
27647
28002
  type: Component,
@@ -27649,7 +28004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
27649
28004
  selector: 'ncc-abstract-navigation-double-drawer',
27650
28005
  template: '',
27651
28006
  }]
27652
- }], ctorParameters: function () { return [{ type: i2$3.Router }, { type: i2$3.ActivatedRoute }, { type: i1$7.BreakpointObserver }, { type: LanguageService }, { type: i1$2.TranslateService }, { type: UserService }, { type: AccessService }, { type: LoggerService }, { type: ConfigurationService }, { type: UriService }, { type: ImpersonationUserSelectService }, { type: ImpersonationService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
28007
+ }], ctorParameters: function () { return [{ type: i2$3.Router }, { type: i2$3.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: [{
27653
28008
  type: Input
27654
28009
  }], portalRightMenu: [{
27655
28010
  type: Input
@@ -28212,7 +28567,7 @@ class FilterExtractionService {
28212
28567
  return filterSegment;
28213
28568
  }
28214
28569
  const rootViewFilter = this.extractViewFilter(rootViewIdField);
28215
- if (rootViewFilter !== undefined) {
28570
+ if (rootViewFilter !== undefined && rootViewFilter.type === filterSegment.type) {
28216
28571
  return filterSegment.merge(rootViewFilter, MergeOperator.AND);
28217
28572
  }
28218
28573
  return filterSegment;
@@ -28403,6 +28758,37 @@ class CaseTreeNode {
28403
28758
  }
28404
28759
  }
28405
28760
 
28761
+ class NetgrifPaginatorIntl {
28762
+ constructor(_translate, _languageService) {
28763
+ this._translate = _translate;
28764
+ this._languageService = _languageService;
28765
+ this.changes = new Subject();
28766
+ this.initTranslations();
28767
+ this._languageService.getLangChange$().subscribe(lang => {
28768
+ this.initTranslations();
28769
+ });
28770
+ }
28771
+ initTranslations() {
28772
+ this.firstPageLabel = this._translate.instant('paginator.firstPage');
28773
+ this.itemsPerPageLabel = this._translate.instant('paginator.itemsPage');
28774
+ this.lastPageLabel = this._translate.instant('paginator.lastPage');
28775
+ this.nextPageLabel = this._translate.instant('paginator.nextPage');
28776
+ this.previousPageLabel = this._translate.instant('paginator.previousPage');
28777
+ }
28778
+ getRangeLabel(page, pageSize, length) {
28779
+ if (length === 0) {
28780
+ return this._translate.instant('paginator.pageOne');
28781
+ }
28782
+ const amountPages = Math.ceil(length / pageSize);
28783
+ return this._translate.instant('paginator.pageAmount', { page: page + 1, amountPages });
28784
+ }
28785
+ }
28786
+ NetgrifPaginatorIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NetgrifPaginatorIntl, deps: [{ token: i1$2.TranslateService }, { token: LanguageService }], target: i0.ɵɵFactoryTarget.Injectable });
28787
+ NetgrifPaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NetgrifPaginatorIntl });
28788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NetgrifPaginatorIntl, decorators: [{
28789
+ type: Injectable
28790
+ }], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: LanguageService }]; } });
28791
+
28406
28792
  const NAE_AUTOSWITCH_TAB_TOKEN = new InjectionToken('NaeAutoswitchTabToken');
28407
28793
 
28408
28794
  const NAE_OPEN_EXISTING_TAB = new InjectionToken('NaeOpenExistingTab');
@@ -29852,7 +30238,7 @@ class AbstractCaseListPaginatorComponent extends AbstractDefaultCaseListComponen
29852
30238
  }
29853
30239
  }
29854
30240
  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$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
29855
- AbstractCaseListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractCaseListPaginatorComponent, selector: "ncc-abstract-case-list-paginator", usesInheritance: true, ngImport: i0, template: '', isInline: true });
30241
+ 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 });
29856
30242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractCaseListPaginatorComponent, decorators: [{
29857
30243
  type: Component,
29858
30244
  args: [{
@@ -29864,7 +30250,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29864
30250
  }, {
29865
30251
  type: Inject,
29866
30252
  args: [NAE_TAB_DATA]
29867
- }] }, { type: i2$3.ActivatedRoute }]; } });
30253
+ }] }, { type: i2$3.ActivatedRoute }]; }, propDecorators: { approval: [{
30254
+ type: Input
30255
+ }], disabled: [{
30256
+ type: Input
30257
+ }] } });
29868
30258
 
29869
30259
  class AbstractTreeComponent {
29870
30260
  constructor(_treeService) {
@@ -30125,30 +30515,18 @@ class TaskConst {
30125
30515
  }
30126
30516
  TaskConst.TRANSITION_ID = 'transitionId';
30127
30517
  class AbstractSingleTaskViewComponent extends AbstractViewWithHeadersComponent {
30128
- constructor(taskViewService, activatedRoute, async) {
30518
+ constructor(taskViewService, activatedRoute, baseFilter) {
30129
30519
  super(taskViewService, activatedRoute);
30130
30520
  this.taskViewService = taskViewService;
30521
+ this.baseFilter = baseFilter;
30131
30522
  this.initiallyExpanded = true;
30132
30523
  this.preventCollapse = true;
30133
30524
  this.noTaskPresent = new EventEmitter();
30134
- this.taskPanelData = new ReplaySubject(1);
30135
- this.subRoute = this._activatedRoute.paramMap.subscribe(paramMap => {
30136
- if (!!(paramMap?.['params']?.[TaskConst.TRANSITION_ID])) {
30137
- this.transitionId = paramMap['params'][TaskConst.TRANSITION_ID];
30138
- this.subPanelData = this.taskViewService.tasks$.subscribe(tasks => {
30139
- if (!!tasks && tasks.length > 0) {
30140
- this.taskPanelData.next(this.resolveTransitionTask(tasks));
30141
- }
30142
- else {
30143
- const isLoading = async.transform(this.loading$);
30144
- if (!isLoading) {
30145
- this.taskPanelData.next(undefined);
30146
- this.noTaskPresent.next();
30147
- }
30148
- }
30149
- });
30525
+ this.taskPanelData = this.taskViewService.tasks$.pipe(map(tasks => tasks.find(panelData => this.isTaskMatchingFilter(panelData, baseFilter.filter.getRequestBody())))).pipe(tap(panelData => {
30526
+ if (!!panelData) {
30527
+ panelData.initiallyExpanded = true;
30150
30528
  }
30151
- });
30529
+ }));
30152
30530
  this.loading$ = this.taskViewService.loading$;
30153
30531
  }
30154
30532
  ngOnDestroy() {
@@ -30159,22 +30537,15 @@ class AbstractSingleTaskViewComponent extends AbstractViewWithHeadersComponent {
30159
30537
  if (!!this.subPanelData) {
30160
30538
  this.subPanelData.unsubscribe();
30161
30539
  }
30162
- if (!!this.taskPanelData) {
30163
- this.taskPanelData.complete();
30164
- }
30165
30540
  }
30166
30541
  get task$() {
30167
- return this.taskPanelData.asObservable();
30542
+ return this.taskPanelData;
30168
30543
  }
30169
- resolveTransitionTask(tasks) {
30170
- const transitionTask = tasks.find(t => t.task.transitionId === this.transitionId);
30171
- if (!!transitionTask) {
30172
- transitionTask.initiallyExpanded = transitionTask.task.finishDate === undefined;
30173
- }
30174
- return transitionTask;
30544
+ isTaskMatchingFilter(panelData, taskSearchRequestBody) {
30545
+ return panelData.task.stringId === taskSearchRequestBody.stringId || panelData.task.transitionId === taskSearchRequestBody.transitionId;
30175
30546
  }
30176
30547
  }
30177
- AbstractSingleTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, deps: [{ token: TaskViewService }, { token: i2$3.ActivatedRoute }, { token: i5.AsyncPipe }], target: i0.ɵɵFactoryTarget.Component });
30548
+ AbstractSingleTaskViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, deps: [{ token: TaskViewService }, { token: i2$3.ActivatedRoute }, { token: NAE_BASE_FILTER }], target: i0.ɵɵFactoryTarget.Component });
30178
30549
  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 });
30179
30550
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSingleTaskViewComponent, decorators: [{
30180
30551
  type: Component,
@@ -30182,7 +30553,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30182
30553
  selector: 'ncc-abstract-single-task-view',
30183
30554
  template: ''
30184
30555
  }]
30185
- }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$3.ActivatedRoute }, { type: i5.AsyncPipe }]; }, propDecorators: { initiallyExpanded: [{
30556
+ }], ctorParameters: function () { return [{ type: TaskViewService }, { type: i2$3.ActivatedRoute }, { type: undefined, decorators: [{
30557
+ type: Inject,
30558
+ args: [NAE_BASE_FILTER]
30559
+ }] }]; }, propDecorators: { initiallyExpanded: [{
30186
30560
  type: Input
30187
30561
  }], preventCollapse: [{
30188
30562
  type: Input
@@ -30803,7 +31177,7 @@ class AbstractSearchComponent {
30803
31177
  }
30804
31178
  }
30805
31179
  AbstractSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSearchComponent, deps: [{ token: SearchService }, { token: LoggerService }, { token: DialogService }, { token: i1$2.TranslateService }, { token: UserFiltersService }, { token: AllowedNetsService }, { token: ViewIdService }, { token: NAE_SEARCH_CATEGORIES }, { token: NAE_SEARCH_COMPONENT_CONFIGURATION, optional: true }, { token: NAE_FILTERS_FILTER, optional: true }, { token: NAE_NAVIGATION_ITEM_TASK_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
30806
- AbstractSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSearchComponent, selector: "ncc-abstract-search", inputs: { additionalFilterData: "additionalFilterData", showSearchIcon: "showSearchIcon", showAdvancedSearchHelp: "showAdvancedSearchHelp", showSaveFilterButton: "showSaveFilterButton", showLoadFilterButton: "showLoadFilterButton", initialSearchMode: "initialSearchMode", showSearchToggleButton: "showSearchToggleButton" }, outputs: { filterLoaded: "filterLoaded", filterSaved: "filterSaved" }, ngImport: i0, template: '', isInline: true });
31180
+ AbstractSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractSearchComponent, selector: "ncc-abstract-search", inputs: { disabled: "disabled", additionalFilterData: "additionalFilterData", showSearchIcon: "showSearchIcon", showAdvancedSearchHelp: "showAdvancedSearchHelp", showSaveFilterButton: "showSaveFilterButton", showLoadFilterButton: "showLoadFilterButton", initialSearchMode: "initialSearchMode", showSearchToggleButton: "showSearchToggleButton" }, outputs: { filterLoaded: "filterLoaded", filterSaved: "filterSaved" }, ngImport: i0, template: '', isInline: true });
30807
31181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractSearchComponent, decorators: [{
30808
31182
  type: Component,
30809
31183
  args: [{
@@ -30828,7 +31202,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
30828
31202
  }, {
30829
31203
  type: Inject,
30830
31204
  args: [NAE_NAVIGATION_ITEM_TASK_DATA]
30831
- }] }]; }, propDecorators: { additionalFilterData: [{
31205
+ }] }]; }, propDecorators: { disabled: [{
31206
+ type: Input
31207
+ }], additionalFilterData: [{
30832
31208
  type: Input
30833
31209
  }], filterLoaded: [{
30834
31210
  type: Output
@@ -30861,16 +31237,26 @@ class AbstractFulltextSearchComponent {
30861
31237
  }
30862
31238
  });
30863
31239
  }
31240
+ set disabled(value) {
31241
+ if (value) {
31242
+ this.fullTextFormControl.disable();
31243
+ }
31244
+ else {
31245
+ this.fullTextFormControl.enable();
31246
+ }
31247
+ }
30864
31248
  }
30865
31249
  AbstractFulltextSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractFulltextSearchComponent, deps: [{ token: SearchService }], target: i0.ɵɵFactoryTarget.Component });
30866
- AbstractFulltextSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractFulltextSearchComponent, selector: "ncc-abstract-fulltext-search", ngImport: i0, template: '', isInline: true });
31250
+ AbstractFulltextSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractFulltextSearchComponent, selector: "ncc-abstract-fulltext-search", inputs: { disabled: "disabled" }, ngImport: i0, template: '', isInline: true });
30867
31251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractFulltextSearchComponent, decorators: [{
30868
31252
  type: Component,
30869
31253
  args: [{
30870
31254
  selector: 'ncc-abstract-fulltext-search',
30871
31255
  template: ''
30872
31256
  }]
30873
- }], ctorParameters: function () { return [{ type: SearchService }]; } });
31257
+ }], ctorParameters: function () { return [{ type: SearchService }]; }, propDecorators: { disabled: [{
31258
+ type: Input
31259
+ }] } });
30874
31260
 
30875
31261
  class AbstractAdvancedSearchComponent {
30876
31262
  constructor(_searchService, _initializationService) {
@@ -32224,15 +32610,20 @@ function navigationItemTaskViewDefaultHeadersFactory(navigationItemTaskData) {
32224
32610
  return navigationItemDefaultHeadersFactory(navigationItemTaskData, GroupNavigationConstants.ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS, GroupNavigationConstants.ITEM_FIELD_ID_TASK_DEFAULT_HEADERS);
32225
32611
  }
32226
32612
  function navigationItemDefaultHeadersFactory(navigationItemTaskData, useFieldId, defaultHeadersFieldId) {
32227
- const isUse = extractFieldValueFromData(navigationItemTaskData, useFieldId);
32228
- if (isUse) {
32229
- const defaultHeaders = extractFieldValueFromData(navigationItemTaskData, defaultHeadersFieldId);
32230
- if (defaultHeaders === undefined || defaultHeaders === "") {
32613
+ try {
32614
+ const isUse = extractFieldValueFromData(navigationItemTaskData, useFieldId);
32615
+ if (isUse) {
32616
+ const defaultHeaders = extractFieldValueFromData(navigationItemTaskData, defaultHeadersFieldId);
32617
+ if (defaultHeaders === undefined || defaultHeaders === "") {
32618
+ return undefined;
32619
+ }
32620
+ return defaultHeaders.split(',');
32621
+ }
32622
+ else {
32231
32623
  return undefined;
32232
32624
  }
32233
- return defaultHeaders.split(',');
32234
32625
  }
32235
- else {
32626
+ catch (e) {
32236
32627
  return undefined;
32237
32628
  }
32238
32629
  }
@@ -33528,7 +33919,7 @@ class MockProfileService {
33528
33919
  * If you want to use an unlimited number of calls use {@link UnlimitedTaskContentService} instead.
33529
33920
  */
33530
33921
  class SingleTaskContentService extends TaskContentService {
33531
- constructor(_fieldConverterService, _snackBarService, _translate, _logger) {
33922
+ constructor(_fieldConverterService, _snackBarService, _translate, _logger, _injector) {
33532
33923
  super(_fieldConverterService, _snackBarService, _translate, _logger);
33533
33924
  this._task$ = new ReplaySubject(1);
33534
33925
  }
@@ -33570,11 +33961,11 @@ class SingleTaskContentService extends TaskContentService {
33570
33961
  }
33571
33962
  }
33572
33963
  }
33573
- SingleTaskContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SingleTaskContentService, deps: [{ token: FieldConverterService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
33964
+ SingleTaskContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SingleTaskContentService, deps: [{ token: FieldConverterService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
33574
33965
  SingleTaskContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SingleTaskContentService });
33575
33966
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SingleTaskContentService, decorators: [{
33576
33967
  type: Injectable
33577
- }], ctorParameters: function () { return [{ type: FieldConverterService }, { type: SnackBarService }, { type: i1$2.TranslateService }, { type: LoggerService }]; } });
33968
+ }], ctorParameters: function () { return [{ type: FieldConverterService }, { type: SnackBarService }, { type: i1$2.TranslateService }, { type: LoggerService }, { type: i0.Injector }]; } });
33578
33969
 
33579
33970
  /**
33580
33971
  * Provides an implementation of the {@link TaskContentService} abstract class that allows
@@ -33583,7 +33974,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
33583
33974
  * If you want to limit the number of calls to 1 use {@link SingleTaskContentService} instead.
33584
33975
  */
33585
33976
  class UnlimitedTaskContentService extends TaskContentService {
33586
- constructor(_fieldConverterService, _snackBarService, _translate, _logger) {
33977
+ constructor(_fieldConverterService, _snackBarService, _translate, _logger, _injector) {
33587
33978
  super(_fieldConverterService, _snackBarService, _translate, _logger);
33588
33979
  this._task$ = new ReplaySubject(1);
33589
33980
  }
@@ -33617,11 +34008,11 @@ class UnlimitedTaskContentService extends TaskContentService {
33617
34008
  this._task$.complete();
33618
34009
  }
33619
34010
  }
33620
- UnlimitedTaskContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UnlimitedTaskContentService, deps: [{ token: FieldConverterService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
34011
+ UnlimitedTaskContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UnlimitedTaskContentService, deps: [{ token: FieldConverterService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: LoggerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
33621
34012
  UnlimitedTaskContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UnlimitedTaskContentService });
33622
34013
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UnlimitedTaskContentService, decorators: [{
33623
34014
  type: Injectable
33624
- }], ctorParameters: function () { return [{ type: FieldConverterService }, { type: SnackBarService }, { type: i1$2.TranslateService }, { type: LoggerService }]; } });
34015
+ }], ctorParameters: function () { return [{ type: FieldConverterService }, { type: SnackBarService }, { type: i1$2.TranslateService }, { type: LoggerService }, { type: i0.Injector }]; } });
33625
34016
 
33626
34017
  /**
33627
34018
  * Contains types of elements that are used to construct task content, but are not data fields themselves.
@@ -34820,13 +35211,24 @@ const getNetAndCreateCase = (router, route, process, caseResourceService, snackB
34820
35211
  });
34821
35212
  };
34822
35213
 
35214
+ const CASE_ID = "caseId";
35215
+ const PETRI_NET_ID = "petriNetId";
35216
+ const TRANSITION_ID = "transitionId";
34823
35217
  const publicBaseFilterFactory = (router, route, process, caseResourceService, snackBarService, translate, publicTaskLoadingService) => {
34824
- if (route.snapshot.paramMap.get('caseId') === null && route.snapshot.paramMap.get('petriNetId') !== null) {
35218
+ const caseId = route.snapshot.paramMap.get(CASE_ID);
35219
+ const petriNetId = route.snapshot.paramMap.get(PETRI_NET_ID);
35220
+ const transId = route.snapshot.paramMap.get(TRANSITION_ID);
35221
+ if (caseId === null && petriNetId !== null) {
34825
35222
  getNetAndCreateCase(router, route, process, caseResourceService, snackBarService, translate, publicTaskLoadingService);
34826
35223
  }
34827
- else if (route.snapshot.paramMap.get('caseId') !== null) {
35224
+ else if (caseId !== null && transId !== null) {
35225
+ return {
35226
+ filter: new SimpleFilter('', FilterType.TASK, { case: { id: caseId }, transitionId: transId })
35227
+ };
35228
+ }
35229
+ else if (caseId !== null) {
34828
35230
  return {
34829
- filter: new SimpleFilter('', FilterType.TASK, { case: { id: route.snapshot.paramMap.get('caseId') } })
35231
+ filter: new SimpleFilter('', FilterType.TASK, { case: { id: caseId } })
34830
35232
  };
34831
35233
  }
34832
35234
  return {
@@ -34913,6 +35315,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
34913
35315
 
34914
35316
  /* MODELS */
34915
35317
 
35318
+ const redirectAction = {
35319
+ call: (injector, frontAction) => {
35320
+ const router = injector.get(Router);
35321
+ router.navigate([frontAction.args[0]]);
35322
+ }
35323
+ };
35324
+
35325
+ const validateTaskAction = {
35326
+ call: (injector, frontAction) => {
35327
+ const taskContentService = injector.get(TaskContentService);
35328
+ taskContentService.validateTaskData(frontAction.args[0]);
35329
+ }
35330
+ };
35331
+ const reloadTaskAction = {
35332
+ call: (injector, frontAction) => {
35333
+ const taskDataService = injector.get(TaskDataService);
35334
+ taskDataService.initializeTaskDataFields(new AfterAction(), true);
35335
+ }
35336
+ };
35337
+
35338
+ class FrontActionModule {
35339
+ constructor(frontActionsRegistry) {
35340
+ frontActionsRegistry.register('redirect', redirectAction);
35341
+ frontActionsRegistry.register('validate', validateTaskAction);
35342
+ frontActionsRegistry.register('reloadTask', reloadTaskAction);
35343
+ }
35344
+ }
35345
+ FrontActionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, deps: [{ token: FrontActionRegistryService }], target: i0.ɵɵFactoryTarget.NgModule });
35346
+ FrontActionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, imports: [CommonModule] });
35347
+ FrontActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, imports: [[
35348
+ CommonModule
35349
+ ]] });
35350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, decorators: [{
35351
+ type: NgModule,
35352
+ args: [{
35353
+ declarations: [],
35354
+ imports: [
35355
+ CommonModule
35356
+ ]
35357
+ }]
35358
+ }], ctorParameters: function () { return [{ type: FrontActionRegistryService }]; } });
35359
+
34916
35360
  /*
34917
35361
  * Public API Surface of netgrif-components-core
34918
35362
  */
@@ -34921,5 +35365,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
34921
35365
  * Generated bundle index. Do not edit.
34922
35366
  */
34923
35367
 
34924
- 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, 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, AbstractMultichoiceFieldComponent, AbstractMultichoiceListFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractNavigationDoubleDrawerComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractNavigationTreeComponent, AbstractNewCaseComponent, 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, 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, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, 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, GenericSnackBarComponent, GroupGuardService, GroupNavigationComponentResolverService, GroupNavigationConstants, HeaderColumn, HeaderColumnType, HeaderMode, HeaderSearchService, HeaderType, HttpLoaderFactory, I18nField, I18nFieldValidation, ImpersonationService, ImpersonationUserListService, ImpersonationUserResourceService, ImpersonationUserSelectService, InRange, InRangeDate, IncrementingCounter, IsEmptyPipe, IsNonEmptyPipe, IsNull, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MENU_IDENTIFIERS, MaterialAppearance, MaterialModule, 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_SEARCH, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_HEADERS, NAE_DEFAULT_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILES_UPLOAD_COMPONENT, NAE_FILES_UPLOAD_DIALOG_COMPONENT, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, 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_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, NextGroupService, NoConfigurationAutocompleteCategory, NoConfigurationCategory, NoConfigurationUserAutocompleteCategory, NotEquals, NotEqualsDate, NotEqualsDateTime, NullAuthenticationService, NullTaskOperations, NumberField, NumberFieldValidation, OLD_PASSWORD, OpenedTab, Operator, OperatorResolverService, OperatorService, OperatorTemplatePart, OperatorTemplatePartType, Operators, OrganizationListService, OverflowService, PASSWORD, PUBLISHERS, PageLoadRequestContext, PaginationParams, PaginationSort, PaperViewService, PermissionService, PermissionType, PetriNetResourceService, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, 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, Subgrid, SubjectTaskOperations, Substring, SuccessSnackBarComponent, TabLabelStream, TabView, TabbedVirtualScrollComponent, TaskAssignee, TaskConst, TaskContentService, TaskDataService, TaskElementType, TaskEndpoint, TaskEvent, TaskEventService, TaskHandlingService, TaskHeaderService, TaskMetaField, TaskNetAttributeAutocompleteCategory, TaskProcess, TaskRefComponents, TaskRefDashboardConstants, TaskRefDashboardTileConstants, TaskRefField, TaskRequestStateService, TaskResourceService, 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, refreshTree, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, toMoment };
35368
+ 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, 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, 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, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CASE_ID, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, 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, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MENU_IDENTIFIERS, MaterialAppearance, MaterialModule, 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_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILES_UPLOAD_COMPONENT, NAE_FILES_UPLOAD_DIALOG_COMPONENT, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, 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, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, 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, 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, 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 };
34925
35369
  //# sourceMappingURL=netgrif-components-core.mjs.map