barsa-tiles 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +25 -0
  2. package/esm2020/barsa-tiles.mjs +5 -0
  3. package/esm2020/lib/action-item/action-item.component.mjs +17 -0
  4. package/esm2020/lib/action-links.pipe.mjs +16 -0
  5. package/esm2020/lib/actions-link/actions-link.component.mjs +19 -0
  6. package/esm2020/lib/app-finder/app-finder.component.mjs +53 -0
  7. package/esm2020/lib/app-finder-app-list/app-finder-app-list.component.mjs +40 -0
  8. package/esm2020/lib/app-finder-group/app-finder-group.component.mjs +42 -0
  9. package/esm2020/lib/app-finder.service.mjs +121 -0
  10. package/esm2020/lib/barsa-tiles.module.mjs +196 -0
  11. package/esm2020/lib/change-app-tile/change-app-tile.component.mjs +47 -0
  12. package/esm2020/lib/create-app-group/create-app-group.component.mjs +44 -0
  13. package/esm2020/lib/directives/emptylist.directive.mjs +36 -0
  14. package/esm2020/lib/feed-tile/feed-tile.component.mjs +31 -0
  15. package/esm2020/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -0
  16. package/esm2020/lib/footer-tile/footer-tile.component.mjs +28 -0
  17. package/esm2020/lib/form-app-finder/form-app-finder.component.mjs +94 -0
  18. package/esm2020/lib/form-tile/form-tile.component.mjs +34 -0
  19. package/esm2020/lib/logo-tile/logo-tile.component.mjs +22 -0
  20. package/esm2020/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +39 -0
  21. package/esm2020/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +28 -0
  22. package/esm2020/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
  23. package/esm2020/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +19 -0
  24. package/esm2020/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +30 -0
  25. package/esm2020/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +31 -0
  26. package/esm2020/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +26 -0
  27. package/esm2020/lib/models/app-tile-footer-section.mjs +2 -0
  28. package/esm2020/lib/models/app-tile-footer.mjs +2 -0
  29. package/esm2020/lib/models/app-tile-group-pin.mjs +2 -0
  30. package/esm2020/lib/models/base-bt-tile-component.mjs +20 -0
  31. package/esm2020/lib/models/base-tile-component.mjs +57 -0
  32. package/esm2020/lib/models/base-tile-setting.mjs +2 -0
  33. package/esm2020/lib/models/feed-tile-setting.mjs +2 -0
  34. package/esm2020/lib/models/index.mjs +14 -0
  35. package/esm2020/lib/models/logo-tile-setting.mjs +2 -0
  36. package/esm2020/lib/models/micro-tile-chart-bullet-setting.mjs +2 -0
  37. package/esm2020/lib/models/news-tile-setting.mjs +2 -0
  38. package/esm2020/lib/models/numeric-tile-setting.mjs +2 -0
  39. package/esm2020/lib/models/profile-tile-setting.mjs +2 -0
  40. package/esm2020/lib/models/tile-setting.mjs +2 -0
  41. package/esm2020/lib/models/user-portal-settings.mjs +2 -0
  42. package/esm2020/lib/news-tile/news-tile.component.mjs +59 -0
  43. package/esm2020/lib/numeric-tile/numeric-tile.component.mjs +33 -0
  44. package/esm2020/lib/pin-tile/pin-tile.component.mjs +111 -0
  45. package/esm2020/lib/pipes/group-tiles.pipe.mjs +31 -0
  46. package/esm2020/lib/pipes/home-group.pipe.mjs +17 -0
  47. package/esm2020/lib/pipes/tile-home-filter.pipe.mjs +28 -0
  48. package/esm2020/lib/profile-tile/profile-tile.component.mjs +25 -0
  49. package/esm2020/lib/shellbar/shellbar.component.mjs +159 -0
  50. package/esm2020/lib/simple-tile/simple-tile.component.mjs +17 -0
  51. package/esm2020/lib/tile/tile.component.mjs +47 -0
  52. package/esm2020/lib/tile-renderer.directive.mjs +69 -0
  53. package/esm2020/lib/tiles-viewer/tiles-viewer.component.mjs +118 -0
  54. package/esm2020/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +158 -0
  55. package/esm2020/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +75 -0
  56. package/esm2020/lib/tiles-viewer.service.mjs +130 -0
  57. package/esm2020/lib/tiles.service.mjs +500 -0
  58. package/esm2020/public-api.mjs +43 -0
  59. package/fesm2015/barsa-tiles.mjs +2415 -0
  60. package/fesm2015/barsa-tiles.mjs.map +1 -0
  61. package/fesm2020/barsa-tiles.mjs +2386 -0
  62. package/fesm2020/barsa-tiles.mjs.map +1 -0
  63. package/index.d.ts +5 -0
  64. package/lib/action-item/action-item.component.d.ts +6 -0
  65. package/lib/action-links.pipe.d.ts +7 -0
  66. package/lib/actions-link/actions-link.component.d.ts +8 -0
  67. package/lib/app-finder/app-finder.component.d.ts +24 -0
  68. package/lib/app-finder-app-list/app-finder-app-list.component.d.ts +20 -0
  69. package/lib/app-finder-group/app-finder-group.component.d.ts +14 -0
  70. package/lib/app-finder.service.d.ts +33 -0
  71. package/lib/barsa-tiles.module.d.ts +65 -0
  72. package/lib/change-app-tile/change-app-tile.component.d.ts +20 -0
  73. package/lib/create-app-group/create-app-group.component.d.ts +19 -0
  74. package/lib/directives/emptylist.directive.d.ts +14 -0
  75. package/lib/feed-tile/feed-tile.component.d.ts +11 -0
  76. package/lib/footer-edit-tile/footer-edit-tile.component.d.ts +6 -0
  77. package/lib/footer-tile/footer-tile.component.d.ts +11 -0
  78. package/lib/form-app-finder/form-app-finder.component.d.ts +38 -0
  79. package/lib/form-tile/form-tile.component.d.ts +24 -0
  80. package/lib/logo-tile/logo-tile.component.d.ts +7 -0
  81. package/lib/micro-tile-chart-area/micro-tile-chart-area.component.d.ts +8 -0
  82. package/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.d.ts +12 -0
  83. package/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.d.ts +16 -0
  84. package/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.d.ts +7 -0
  85. package/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.d.ts +8 -0
  86. package/lib/micro-tile-chart-line/micro-tile-chart-line.component.d.ts +8 -0
  87. package/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.d.ts +8 -0
  88. package/lib/models/app-tile-footer-section.d.ts +6 -0
  89. package/lib/models/app-tile-footer.d.ts +8 -0
  90. package/lib/models/app-tile-group-pin.d.ts +5 -0
  91. package/lib/models/base-bt-tile-component.d.ts +9 -0
  92. package/lib/models/base-tile-component.d.ts +26 -0
  93. package/lib/models/base-tile-setting.d.ts +5 -0
  94. package/lib/models/feed-tile-setting.d.ts +7 -0
  95. package/lib/models/index.d.ts +13 -0
  96. package/lib/models/logo-tile-setting.d.ts +6 -0
  97. package/lib/models/micro-tile-chart-bullet-setting.d.ts +10 -0
  98. package/lib/models/news-tile-setting.d.ts +4 -0
  99. package/lib/models/numeric-tile-setting.d.ts +9 -0
  100. package/lib/models/profile-tile-setting.d.ts +7 -0
  101. package/lib/models/tile-setting.d.ts +9 -0
  102. package/lib/models/user-portal-settings.d.ts +9 -0
  103. package/lib/news-tile/news-tile.component.d.ts +24 -0
  104. package/lib/numeric-tile/numeric-tile.component.d.ts +12 -0
  105. package/lib/pin-tile/pin-tile.component.d.ts +30 -0
  106. package/lib/pipes/group-tiles.pipe.d.ts +14 -0
  107. package/lib/pipes/home-group.pipe.d.ts +9 -0
  108. package/lib/pipes/tile-home-filter.pipe.d.ts +8 -0
  109. package/lib/profile-tile/profile-tile.component.d.ts +7 -0
  110. package/lib/shellbar/shellbar.component.d.ts +64 -0
  111. package/lib/simple-tile/simple-tile.component.d.ts +6 -0
  112. package/lib/tile/tile.component.d.ts +12 -0
  113. package/lib/tile-renderer.directive.d.ts +27 -0
  114. package/lib/tiles-viewer/tiles-viewer.component.d.ts +51 -0
  115. package/lib/tiles-viewer-container/tiles-viewer-container.component.d.ts +55 -0
  116. package/lib/tiles-viewer-group/tiles-viewer-group.component.d.ts +34 -0
  117. package/lib/tiles-viewer.service.d.ts +42 -0
  118. package/lib/tiles.service.d.ts +68 -0
  119. package/package.json +31 -0
  120. package/public-api.d.ts +39 -0
@@ -0,0 +1,2415 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, HostListener, Directive, Injectable, ViewChild, HostBinding, Inject, Pipe, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
3
+ import * as i1$2 from 'barsa-novin-ray-core';
4
+ import { BaseComponent, BarsaApi, BaseDirective, APP_VERSION, BaseModule, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
5
+ import * as i1 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i1$1 from '@fundamental-ngx/core/tile';
8
+ import * as i2$1 from '@fundamental-ngx/core/button';
9
+ import * as i3 from '@fundamental-ngx/core/menu';
10
+ import * as i5 from 'barsa-sap-ui';
11
+ import { BarsaSapUiModule } from 'barsa-sap-ui';
12
+ import * as i2 from '@fundamental-ngx/core/icon';
13
+ import * as i2$2 from '@angular/cdk/drag-drop';
14
+ import { moveItemInArray, transferArrayItem, DragDropModule } from '@angular/cdk/drag-drop';
15
+ import * as i3$1 from '@fundamental-ngx/core/busy-indicator';
16
+ import * as i6 from '@fundamental-ngx/core/layout-panel';
17
+ import * as i9 from '@fundamental-ngx/core/title';
18
+ import * as i8 from '@fundamental-ngx/core/panel';
19
+ import * as i4 from '@fundamental-ngx/core/toolbar';
20
+ import { takeUntil, startWith, shareReplay, distinctUntilChanged, filter, tap, concatMap, debounceTime, exhaustMap, finalize, map, withLatestFrom } from 'rxjs/operators';
21
+ import * as i2$3 from '@fundamental-ngx/core/avatar';
22
+ import * as i4$1 from '@fundamental-ngx/core/card';
23
+ import * as i5$1 from '@fundamental-ngx/core/fixed-card-layout';
24
+ import * as i7 from '@fundamental-ngx/core/list';
25
+ import * as i5$2 from '@fundamental-ngx/platform/shared';
26
+ import * as i6$1 from '@fundamental-ngx/platform/search-field';
27
+ import { Subject, BehaviorSubject, of, from, interval, combineLatest, forkJoin } from 'rxjs';
28
+ import * as i1$3 from '@angular/forms';
29
+ import { UntypedFormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
30
+ import * as i1$4 from '@fundamental-ngx/core';
31
+ import { TabListComponent, CarouselComponent, ComboboxComponent, FundamentalNgxCoreModule, GridListModule } from '@fundamental-ngx/core';
32
+ import * as i5$3 from '@fundamental-ngx/core/bar';
33
+ import * as i6$2 from '@fundamental-ngx/core/form';
34
+ import * as i7$1 from '@fundamental-ngx/core/input-group';
35
+ import * as i8$1 from '@fundamental-ngx/core/dialog';
36
+ import * as i10 from '@fundamental-ngx/core/utils';
37
+ import * as i5$4 from '@fundamental-ngx/core/dynamic-page';
38
+ import * as i7$2 from '@fundamental-ngx/core/switch';
39
+ import * as i8$2 from '@fundamental-ngx/core/tabs';
40
+ import * as i2$4 from 'barsa-echarts';
41
+ import { BarsaEchartsModule } from 'barsa-echarts';
42
+ import * as i3$2 from '@fundamental-ngx/core/carousel';
43
+ import * as i6$3 from '@fundamental-ngx/core/checkbox';
44
+ import { __awaiter } from 'tslib';
45
+ import * as i4$2 from '@fundamental-ngx/core/content-density';
46
+ import * as i9$1 from '@fundamental-ngx/core/notification';
47
+ import * as i10$1 from '@fundamental-ngx/core/product-switch';
48
+ import * as i11 from '@fundamental-ngx/core/popover';
49
+ import * as i12 from '@fundamental-ngx/core/shellbar';
50
+ import { CdkTableModule } from '@angular/cdk/table';
51
+ import { FundamentalNgxPlatformModule } from '@fundamental-ngx/platform';
52
+
53
+ class BaseTileComponent extends BaseComponent {
54
+ constructor(el, _renderer2, _cdr) {
55
+ super();
56
+ this.el = el;
57
+ this._renderer2 = _renderer2;
58
+ this._cdr = _cdr;
59
+ this.hideClick = new EventEmitter();
60
+ this.renameClick = new EventEmitter();
61
+ }
62
+ get settings() {
63
+ return this.data.Component.Settings;
64
+ }
65
+ get title() {
66
+ return this.data.TileTitle;
67
+ }
68
+ get subtitle() {
69
+ return this.data.Subtitle;
70
+ }
71
+ get double() {
72
+ return this.settings.TileSetting.IsDouble;
73
+ }
74
+ get badge() {
75
+ return this.settings.TileSetting.Badge;
76
+ }
77
+ get footer() {
78
+ return this.settings.TileSetting.Footer;
79
+ }
80
+ get tileSetting() {
81
+ return this.settings.TileSetting;
82
+ }
83
+ setEditHome(val) {
84
+ this.editHome = val;
85
+ this._cdr.detectChanges();
86
+ }
87
+ }
88
+ BaseTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseTileComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
89
+ BaseTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BaseTileComponent, selector: "bt-base-tile", inputs: { data: "data", editHome: "editHome" }, outputs: { hideClick: "hideClick", renameClick: "renameClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseTileComponent, decorators: [{
91
+ type: Component,
92
+ args: [{
93
+ selector: 'bt-base-tile',
94
+ template: '',
95
+ changeDetection: ChangeDetectionStrategy.OnPush
96
+ }]
97
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
98
+ type: Input
99
+ }], editHome: [{
100
+ type: Input
101
+ }], hideClick: [{
102
+ type: Output
103
+ }], renameClick: [{
104
+ type: Output
105
+ }] } });
106
+
107
+ class BaseBtTileComponent extends BaseTileComponent {
108
+ ngOnInit() {
109
+ super.ngOnInit();
110
+ this._renderer2.addClass(this.el.nativeElement, 'barsa-tile');
111
+ }
112
+ }
113
+ BaseBtTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseBtTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
114
+ BaseBtTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BaseBtTileComponent, selector: "bt-base-bt-tile", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseBtTileComponent, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'bt-base-bt-tile',
119
+ template: '',
120
+ changeDetection: ChangeDetectionStrategy.OnPush
121
+ }]
122
+ }] });
123
+
124
+ class FooterTileComponent extends BaseComponent {
125
+ get twoColumn() {
126
+ return this.settings.TwoColumn;
127
+ }
128
+ get firstSection() {
129
+ return this.settings.FirstSection;
130
+ }
131
+ get secondSection() {
132
+ return this.settings.SecondSection;
133
+ }
134
+ }
135
+ FooterTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
136
+ FooterTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FooterTileComponent, selector: "bt-footer-tile", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "<div fd-tile-footer [twoColumn]=\"twoColumn\">\r\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\r\n <div fd-tile-section>\r\n <fd-icon fd-tile-refresh [font]=\"firstSection.Icon | sapFont\" [glyph]=\"firstSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ firstSection.Text | bbbTranslate }}</span>\r\n </div>\r\n <div fd-tile-section>\r\n <fd-icon fd-tile-refresh [font]=\"secondSection.Icon | sapFont\" [glyph]=\"secondSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ secondSection.Text | bbbTranslate }}</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #oneColumn>\r\n <fd-icon fd-tile-refresh [font]=\"firstSection.Icon | sapFont\" [glyph]=\"firstSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ firstSection.Text | bbbTranslate }}</span>\r\n </ng-template>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i1$1.TileFooterDirective, selector: "[fdTileFooter], [fd-tile-footer]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileSectionDirective, selector: "[fdTileSection], [fd-tile-section]" }, { kind: "directive", type: i1$1.TileRefreshDirective, selector: "[fdTileRefresh], [fd-tile-refresh]", inputs: ["glyph", "class", "ariaLabel"] }, { kind: "directive", type: i1$1.TileFooterTextDirective, selector: "[fdTileFooterText], [fd-tile-footer-text]" }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i5.SapFontPipe, name: "sapFont" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterTileComponent, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: 'bt-footer-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fd-tile-footer [twoColumn]=\"twoColumn\">\r\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\r\n <div fd-tile-section>\r\n <fd-icon fd-tile-refresh [font]=\"firstSection.Icon | sapFont\" [glyph]=\"firstSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ firstSection.Text | bbbTranslate }}</span>\r\n </div>\r\n <div fd-tile-section>\r\n <fd-icon fd-tile-refresh [font]=\"secondSection.Icon | sapFont\" [glyph]=\"secondSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ secondSection.Text | bbbTranslate }}</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #oneColumn>\r\n <fd-icon fd-tile-refresh [font]=\"firstSection.Icon | sapFont\" [glyph]=\"firstSection.Icon\"></fd-icon>\r\n <span fd-tile-footer-text>{{ firstSection.Text | bbbTranslate }}</span>\r\n </ng-template>\r\n</div>\r\n" }]
140
+ }], propDecorators: { settings: [{
141
+ type: Input
142
+ }] } });
143
+
144
+ class TileComponent extends BaseTileComponent {
145
+ constructor() {
146
+ super(...arguments);
147
+ this.runningCommand = false;
148
+ }
149
+ onClick() {
150
+ if (this.editHome || this.disableClick || this.runningCommand) {
151
+ return false;
152
+ }
153
+ const command = this.data.DynamicCommand;
154
+ const e = { command, DynamicSetting: null };
155
+ this.runningCommand = true;
156
+ this._cdr.detectChanges();
157
+ BarsaApi.Common.CustomCodeManager.RunDynamicCommand(command.Id, e, () => {
158
+ this.runningCommand = false;
159
+ this._cdr.detectChanges();
160
+ });
161
+ return false;
162
+ }
163
+ }
164
+ TileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
165
+ TileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TileComponent, selector: "bt-tile", inputs: { type: "type", footerTemplate: "footerTemplate", disableClick: "disableClick" }, host: { listeners: { "click": "onClick($event)" } }, usesInheritance: true, ngImport: i0, template: "<fd-tile [type]=\"type\" [double]=\"double\" [action]=\"editHome\">\n <ng-container *ngIf=\"editHome && !data.Locked\">\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\n </ng-container>\n <div fd-tile-header>\n <h1 fd-tile-title>\n {{ title | bbbTranslate }}\n </h1>\n <h2 fd-tile-subtitle>\n {{ subtitle | bbbTranslate }}\n </h2>\n </div>\n <ng-content></ng-content>\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" *ngIf=\"footerTemplate; else defaultFooter\"></ng-container>\n</fd-tile>\n<ng-template #defaultFooter>\n <bt-footer-tile *ngIf=\"footer\" [settings]=\"footer\"></bt-footer-tile>\n</ng-template>\n<fd-menu #menu>\n <li fd-menu-item>\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\n </a>\n </li>\n</fd-menu>\n<bsu-mask *ngIf=\"runningCommand\"></bsu-mask>\n", styles: [":host,fd-tile{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i1$1.TileComponent, selector: "fd-tile", inputs: ["class", "size", "double", "type", "action", "clickable"], outputs: ["tileClick"] }, { kind: "directive", type: i1$1.TileHeaderDirective, selector: "[fdTileHeader], [fd-tile-header]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileTitleDirective, selector: "[fdTileTitle], [fd-tile-title]" }, { kind: "directive", type: i1$1.TileSubtitleDirective, selector: "[fdTileTitle], [fd-tile-subtitle]" }, { kind: "directive", type: i1$1.TileActionCloseDirective, selector: "[fdTileActionClose], [fd-tile-action-close]", inputs: ["class"] }, { kind: "directive", type: i1$1.TileActionIndicatorDirective, selector: "[fdTileActionIndicator], [fd-tile-action-indicator]", inputs: ["class"] }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: FooterTileComponent, selector: "bt-footer-tile", inputs: ["settings"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileComponent, decorators: [{
167
+ type: Component,
168
+ args: [{ selector: 'bt-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-tile [type]=\"type\" [double]=\"double\" [action]=\"editHome\">\n <ng-container *ngIf=\"editHome && !data.Locked\">\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\n </ng-container>\n <div fd-tile-header>\n <h1 fd-tile-title>\n {{ title | bbbTranslate }}\n </h1>\n <h2 fd-tile-subtitle>\n {{ subtitle | bbbTranslate }}\n </h2>\n </div>\n <ng-content></ng-content>\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" *ngIf=\"footerTemplate; else defaultFooter\"></ng-container>\n</fd-tile>\n<ng-template #defaultFooter>\n <bt-footer-tile *ngIf=\"footer\" [settings]=\"footer\"></bt-footer-tile>\n</ng-template>\n<fd-menu #menu>\n <li fd-menu-item>\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\n </a>\n </li>\n</fd-menu>\n<bsu-mask *ngIf=\"runningCommand\"></bsu-mask>\n", styles: [":host,fd-tile{display:block}\n"] }]
169
+ }], propDecorators: { type: [{
170
+ type: Input
171
+ }], footerTemplate: [{
172
+ type: Input
173
+ }], disableClick: [{
174
+ type: Input
175
+ }], onClick: [{
176
+ type: HostListener,
177
+ args: ['click', ['$event']]
178
+ }] } });
179
+
180
+ class FormTileComponent extends BaseBtTileComponent {
181
+ ngOnInit() {
182
+ super.ngOnInit();
183
+ const options = {
184
+ Parameters: [],
185
+ Method: this.settings.RunBlMethod,
186
+ SuccessFn: (mo) => {
187
+ this.params = {
188
+ moId: mo.$State === 'New' ? '0' : mo.Id,
189
+ typeDefId: this.settings.TypeDef.Id,
190
+ viewId: this.settings.TypeViewEntity.Id
191
+ };
192
+ this._cdr.detectChanges();
193
+ },
194
+ FailFn: () => { }
195
+ };
196
+ BarsaApi.Bw.RunBlMethodAsync(options);
197
+ }
198
+ }
199
+ FormTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
200
+ FormTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormTileComponent, selector: "bt-form-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-form *ngIf=\"params\" [params]=\"params\"></bnrc-form>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}bnrc-form{z-index:3}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i1$2.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "formPanelCtrlId"], outputs: ["titleChanged", "moChanged", "formClose", "formRendered"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormTileComponent, decorators: [{
202
+ type: Component,
203
+ args: [{ selector: 'bt-form-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-form *ngIf=\"params\" [params]=\"params\"></bnrc-form>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}bnrc-form{z-index:3}\n"] }]
204
+ }] });
205
+
206
+ class ActionItemComponent extends TileComponent {
207
+ }
208
+ ActionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
209
+ ActionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ActionItemComponent, selector: "bt-action-item", usesInheritance: true, ngImport: i0, template: "<div [class.action-item-edit-mode]=\"editHome\" class=\"action-item\">\r\n <h1 fd-tile-title>{{ title }}</h1>\r\n <h2 fd-tile-subtitle *ngIf=\"subtitle\">{{ subtitle }}</h2>\r\n\r\n <div *ngIf=\"editHome && !data.Locked\" class=\"buttons\">\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n </div>\r\n <fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n</div>\r\n", styles: [".action-item{display:flex;justify-content:space-between;height:100%;align-items:center;column-gap:10px;padding:7px;background-color:var(--sapTile_Background, #fff);cursor:pointer;box-shadow:var(--sapContent_Shadow0, 0 0 0 .0625rem rgba(0, 0, 0, .1), 0 .125rem .5rem 0 rgba(0, 0, 0, .1));border-radius:var(--sapElement_BorderCornerRadius, .25rem);border:.0625rem solid var(--sapTile_BorderColor, transparent)}.action-item:hover{background-color:var(--sapBackgroundColor);border-color:var(--sapTile_Interactive_BorderColor)}.action-item-edit-mode h1,.action-item-edit-mode h2{opacity:.3}.action-item-edit-mode .buttons{display:flex;column-gap:2px}.action-item-edit-mode .buttons button{display:flex}h1{text-decoration:none;color:var(--sapLinkColor, #0a6ed1);text-shadow:var(--sapContent_TextShadow, 0 0 .125rem #fff)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "directive", type: i1$1.TileTitleDirective, selector: "[fdTileTitle], [fd-tile-title]" }, { kind: "directive", type: i1$1.TileSubtitleDirective, selector: "[fdTileTitle], [fd-tile-subtitle]" }, { kind: "directive", type: i1$1.TileActionCloseDirective, selector: "[fdTileActionClose], [fd-tile-action-close]", inputs: ["class"] }, { kind: "directive", type: i1$1.TileActionIndicatorDirective, selector: "[fdTileActionIndicator], [fd-tile-action-indicator]", inputs: ["class"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, decorators: [{
211
+ type: Component,
212
+ args: [{ selector: 'bt-action-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class.action-item-edit-mode]=\"editHome\" class=\"action-item\">\r\n <h1 fd-tile-title>{{ title }}</h1>\r\n <h2 fd-tile-subtitle *ngIf=\"subtitle\">{{ subtitle }}</h2>\r\n\r\n <div *ngIf=\"editHome && !data.Locked\" class=\"buttons\">\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n </div>\r\n <fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n</div>\r\n", styles: [".action-item{display:flex;justify-content:space-between;height:100%;align-items:center;column-gap:10px;padding:7px;background-color:var(--sapTile_Background, #fff);cursor:pointer;box-shadow:var(--sapContent_Shadow0, 0 0 0 .0625rem rgba(0, 0, 0, .1), 0 .125rem .5rem 0 rgba(0, 0, 0, .1));border-radius:var(--sapElement_BorderCornerRadius, .25rem);border:.0625rem solid var(--sapTile_BorderColor, transparent)}.action-item:hover{background-color:var(--sapBackgroundColor);border-color:var(--sapTile_Interactive_BorderColor)}.action-item-edit-mode h1,.action-item-edit-mode h2{opacity:.3}.action-item-edit-mode .buttons{display:flex;column-gap:2px}.action-item-edit-mode .buttons button{display:flex}h1{text-decoration:none;color:var(--sapLinkColor, #0a6ed1);text-shadow:var(--sapContent_TextShadow, 0 0 .125rem #fff)}\n"] }]
213
+ }] });
214
+
215
+ class ActionsLinkComponent extends BaseComponent {
216
+ }
217
+ ActionsLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
218
+ ActionsLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ActionsLinkComponent, selector: "bt-actions-link", inputs: { actionsLink: "actionsLink", editHome: "editHome" }, usesInheritance: true, ngImport: i0, template: "<bt-action-item\n *ngFor=\"let actionItem of actionsLink\"\n cdkDrag\n [data]=\"actionItem\"\n [editHome]=\"editHome\"\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\n [mo]=\"actionItem\"\n>\n</bt-action-item>\n", styles: [":host{display:flex;width:100%;row-gap:5px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:10px;padding:1px 10px}bt-action-item{margin-top:auto;margin-bottom:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ActionItemComponent, selector: "bt-action-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, decorators: [{
220
+ type: Component,
221
+ args: [{ selector: 'bt-actions-link', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-action-item\n *ngFor=\"let actionItem of actionsLink\"\n cdkDrag\n [data]=\"actionItem\"\n [editHome]=\"editHome\"\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\n [mo]=\"actionItem\"\n>\n</bt-action-item>\n", styles: [":host{display:flex;width:100%;row-gap:5px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:10px;padding:1px 10px}bt-action-item{margin-top:auto;margin-bottom:auto}\n"] }]
222
+ }], propDecorators: { actionsLink: [{
223
+ type: Input
224
+ }], editHome: [{
225
+ type: Input
226
+ }] } });
227
+
228
+ class TileRendererDirective extends BaseDirective {
229
+ constructor(_cdr, _portalService, _vcr, _injector) {
230
+ super();
231
+ this._cdr = _cdr;
232
+ this._portalService = _portalService;
233
+ this._vcr = _vcr;
234
+ this._injector = _injector;
235
+ this.hideClick = new EventEmitter();
236
+ this.renameClick = new EventEmitter();
237
+ }
238
+ ngOnInit() {
239
+ super.ngOnInit();
240
+ if (!this.component) {
241
+ return;
242
+ }
243
+ const { Module, ModuleFileName, Name, Selector } = this.component;
244
+ this._portalService
245
+ .getComponent(Module, ModuleFileName, Name, Selector, this._injector)
246
+ .pipe(takeUntil(this._onDestroy$))
247
+ .subscribe((componentRef) => {
248
+ const instance = componentRef.instance;
249
+ instance.data = this.data;
250
+ instance.editHome = this.editHome;
251
+ instance.hideClick.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
252
+ this.hideClick.emit();
253
+ });
254
+ instance.renameClick.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.renameClick.emit());
255
+ this._vcr.insert(componentRef.hostView);
256
+ this._tileRef = componentRef;
257
+ this._cdr.detectChanges();
258
+ });
259
+ }
260
+ ngOnChanges(changes) {
261
+ const { editHome } = changes;
262
+ if (editHome && !editHome.firstChange) {
263
+ this._tileRef.instance.setEditHome(editHome.currentValue);
264
+ }
265
+ }
266
+ ngOnDestroy() {
267
+ super.ngOnDestroy();
268
+ if (this._tileRef) {
269
+ this._tileRef.destroy();
270
+ }
271
+ }
272
+ }
273
+ TileRendererDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileRendererDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.PortalService }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
274
+ TileRendererDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: TileRendererDirective, selector: "[tileRenderer]", inputs: { component: "component", data: "data", editHome: "editHome" }, outputs: { hideClick: "hideClick", renameClick: "renameClick" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileRendererDirective, decorators: [{
276
+ type: Directive,
277
+ args: [{
278
+ selector: '[tileRenderer]'
279
+ }]
280
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$2.PortalService }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { component: [{
281
+ type: Input
282
+ }], data: [{
283
+ type: Input
284
+ }], editHome: [{
285
+ type: Input
286
+ }], hideClick: [{
287
+ type: Output
288
+ }], renameClick: [{
289
+ type: Output
290
+ }] } });
291
+
292
+ class TilesViewerGroupComponent extends BaseComponent {
293
+ constructor() {
294
+ super();
295
+ this.tilesDropped = new EventEmitter();
296
+ this.hideAppTileClick = new EventEmitter();
297
+ this.renameAppTileClick = new EventEmitter();
298
+ this.toggleGroup = new EventEmitter();
299
+ this.resetGroup = new EventEmitter();
300
+ this.deleteGroup = new EventEmitter();
301
+ }
302
+ onDrop(appTileGroup, event) {
303
+ if (!this.editHome || appTileGroup.Locked) {
304
+ return;
305
+ }
306
+ this.tilesDropped.emit({ appTileGroup, event });
307
+ }
308
+ onAppTileHideClick(appTile) {
309
+ this.hideAppTileClick.emit(appTile);
310
+ }
311
+ onAppTileRenameClick(appTile) {
312
+ this.renameAppTileClick.emit(appTile);
313
+ }
314
+ onDelete(appTileGroup) {
315
+ this.deleteGroup.emit(appTileGroup);
316
+ }
317
+ onToggleShowHide(appTileGroup) {
318
+ this.toggleGroup.emit(appTileGroup);
319
+ }
320
+ onReset(appTileGroup) {
321
+ this.resetGroup.emit(appTileGroup);
322
+ }
323
+ }
324
+ TilesViewerGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
325
+ TilesViewerGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: { appTileGroup: "appTileGroup", stackContent: "stackContent", editHome: "editHome", isAppTileSubGroup: "isAppTileSubGroup" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, ngImport: i0, template: "<fd-layout-panel [fixed]=\"true\" [attr.editHome]=\"editHome\" cdkDrag [cdkDragDisabled]=\"!editHome || !stackContent\">\r\n <fd-layout-panel-header *ngIf=\"editHome || stackContent || isAppTileSubGroup\">\r\n <fd-layout-panel-head>\r\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\r\n </fd-layout-panel-head>\r\n <fd-layout-panel-actions *ngIf=\"editHome\" class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n <button\r\n fd-button\r\n *ngIf=\"appTileGroup.Predefined && appTileGroup.$TileSettingChanged\"\r\n [label]=\"'Refresh' | bbbTranslate\"\r\n (click)=\"onReset(appTileGroup)\"\r\n ></button>\r\n <button\r\n *ngIf=\"!appTileGroup.Predefined\"\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body [bleed]=\"!stackContent\">\r\n <div\r\n class=\"tile-wrapper\"\r\n fd-panel-content\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n <ng-container *ngIf=\"!editHome\">\r\n <fd-busy-indicator fd-title *ngIf=\"!appTileGroup.$TilesLoaded\" [loading]=\"true\"></fd-busy-indicator>\r\n\r\n <h5 fd-title *ngIf=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"></h5>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let appTile of appTileGroup.navigatorTiles; let k = index\"\r\n [class.edit-home]=\"editHome\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!editHome || appTileGroup.Locked\"\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [enableCommand]=\"!editHome && appTile.Component\"\r\n tileRenderer\r\n [data]=\"appTile\"\r\n [editHome]=\"editHome\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></div>\r\n <fd-tile class=\"add-tile\" *ngIf=\"editHome\" [routerLink]=\"['/home/appfinder']\">\r\n <div>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"editHome\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [editHome]=\"editHome\"\r\n [style.min-height]=\"editHome ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n<ng-container *ngFor=\"let appTileSubGroup of appTileGroup.$Children\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"true\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-container>\r\n", styles: [":host{display:block}fd-layout-panel{margin-top:1rem;box-shadow:none}fd-layout-panel fd-layout-panel-body{padding:0}fd-layout-panel[editHome=false]{background:transparent}::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}::ng-deep .fd-panel__content{border-bottom:none;padding:1px}.tile-wrapper{--gap: 12px;display:inline-flex;flex-wrap:wrap}.tile-wrapper ::ng-deep .barsa-tile{margin:10px}.actions-link-edit-home{background-color:var(--sapGroup_ContentBackground, #fff);border-color:var(--sapGroup_ContentBorderColor, #d9d9d9);border-width:var(--sapElement_BorderWidth, .0625rem);border-style:solid}.add-tile{background-color:transparent!important}.add-tile ::ng-deep div{background-color:transparent!important;margin:10px 0}.add-tile div:first-child{display:flex;align-items:center;justify-content:center;height:100%;width:100%}.add-tile fd-icon{font-size:1.5rem;color:#3c4043}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i3$1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i6.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage"] }, { kind: "component", type: i6.LayoutPanelHeaderComponent, selector: "fd-layout-panel-header" }, { kind: "component", type: i6.LayoutPanelHeadComponent, selector: "fd-layout-panel-head" }, { kind: "directive", type: i6.LayoutPanelTitleDirective, selector: "[fd-layout-panel-title]" }, { kind: "component", type: i6.LayoutPanelActionsComponent, selector: "fd-layout-panel-actions" }, { kind: "component", type: i6.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i8.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "id"] }, { kind: "component", type: i1$1.TileComponent, selector: "fd-tile", inputs: ["class", "size", "double", "type", "action", "clickable"], outputs: ["tileClick"] }, { kind: "component", type: i4.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i4.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "editHome"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "editHome", "isAppTileSubGroup"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "directive", type: TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "editHome"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
327
+ type: Component,
328
+ args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-layout-panel [fixed]=\"true\" [attr.editHome]=\"editHome\" cdkDrag [cdkDragDisabled]=\"!editHome || !stackContent\">\r\n <fd-layout-panel-header *ngIf=\"editHome || stackContent || isAppTileSubGroup\">\r\n <fd-layout-panel-head>\r\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\r\n </fd-layout-panel-head>\r\n <fd-layout-panel-actions *ngIf=\"editHome\" class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n <button\r\n fd-button\r\n *ngIf=\"appTileGroup.Predefined && appTileGroup.$TileSettingChanged\"\r\n [label]=\"'Refresh' | bbbTranslate\"\r\n (click)=\"onReset(appTileGroup)\"\r\n ></button>\r\n <button\r\n *ngIf=\"!appTileGroup.Predefined\"\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body [bleed]=\"!stackContent\">\r\n <div\r\n class=\"tile-wrapper\"\r\n fd-panel-content\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n <ng-container *ngIf=\"!editHome\">\r\n <fd-busy-indicator fd-title *ngIf=\"!appTileGroup.$TilesLoaded\" [loading]=\"true\"></fd-busy-indicator>\r\n\r\n <h5 fd-title *ngIf=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"></h5>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let appTile of appTileGroup.navigatorTiles; let k = index\"\r\n [class.edit-home]=\"editHome\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!editHome || appTileGroup.Locked\"\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [enableCommand]=\"!editHome && appTile.Component\"\r\n tileRenderer\r\n [data]=\"appTile\"\r\n [editHome]=\"editHome\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></div>\r\n <fd-tile class=\"add-tile\" *ngIf=\"editHome\" [routerLink]=\"['/home/appfinder']\">\r\n <div>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"editHome\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [editHome]=\"editHome\"\r\n [style.min-height]=\"editHome ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n<ng-container *ngFor=\"let appTileSubGroup of appTileGroup.$Children\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"true\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-container>\r\n", styles: [":host{display:block}fd-layout-panel{margin-top:1rem;box-shadow:none}fd-layout-panel fd-layout-panel-body{padding:0}fd-layout-panel[editHome=false]{background:transparent}::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}::ng-deep .fd-panel__content{border-bottom:none;padding:1px}.tile-wrapper{--gap: 12px;display:inline-flex;flex-wrap:wrap}.tile-wrapper ::ng-deep .barsa-tile{margin:10px}.actions-link-edit-home{background-color:var(--sapGroup_ContentBackground, #fff);border-color:var(--sapGroup_ContentBorderColor, #d9d9d9);border-width:var(--sapElement_BorderWidth, .0625rem);border-style:solid}.add-tile{background-color:transparent!important}.add-tile ::ng-deep div{background-color:transparent!important;margin:10px 0}.add-tile div:first-child{display:flex;align-items:center;justify-content:center;height:100%;width:100%}.add-tile fd-icon{font-size:1.5rem;color:#3c4043}\n"] }]
329
+ }], ctorParameters: function () { return []; }, propDecorators: { appTileGroup: [{
330
+ type: Input
331
+ }], stackContent: [{
332
+ type: Input
333
+ }], editHome: [{
334
+ type: Input
335
+ }], isAppTileSubGroup: [{
336
+ type: Input
337
+ }], tilesDropped: [{
338
+ type: Output
339
+ }], hideAppTileClick: [{
340
+ type: Output
341
+ }], renameAppTileClick: [{
342
+ type: Output
343
+ }], toggleGroup: [{
344
+ type: Output
345
+ }], resetGroup: [{
346
+ type: Output
347
+ }], deleteGroup: [{
348
+ type: Output
349
+ }] } });
350
+
351
+ class EmptyListDirective {
352
+ constructor(templateRef, viewContainer, bbbPipe) {
353
+ this.templateRef = templateRef;
354
+ this.viewContainer = viewContainer;
355
+ this.bbbPipe = bbbPipe;
356
+ this.hasView = false;
357
+ }
358
+ set emptyList(list) {
359
+ if (!list || (!list.length && !this.hasView)) {
360
+ const _view = this.viewContainer.createEmbeddedView(this.templateRef);
361
+ this.setNoData(_view);
362
+ this.hasView = true;
363
+ }
364
+ else if (list && list.length > 0 && this.hasView) {
365
+ this.viewContainer.clear();
366
+ this.hasView = false;
367
+ }
368
+ }
369
+ setNoData(view) {
370
+ view.rootNodes[0].innerHTML = this.bbbPipe.transform('NoData');
371
+ }
372
+ }
373
+ EmptyListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EmptyListDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$2.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Directive });
374
+ EmptyListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: EmptyListDirective, selector: "[emptyList]", inputs: { emptyList: "emptyList" }, ngImport: i0 });
375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EmptyListDirective, decorators: [{
376
+ type: Directive,
377
+ args: [{
378
+ selector: '[emptyList]'
379
+ }]
380
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$2.BbbTranslatePipe }]; }, propDecorators: { emptyList: [{
381
+ type: Input
382
+ }] } });
383
+
384
+ class AppFinderAppListComponent extends BaseComponent {
385
+ constructor() {
386
+ super(...arguments);
387
+ this.pinClick = new EventEmitter();
388
+ this.appTileGroupsPinChange = new EventEmitter();
389
+ }
390
+ onPinTap(app) {
391
+ this.pinClick.emit(app);
392
+ }
393
+ }
394
+ AppFinderAppListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
395
+ AppFinderAppListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: { appGroup: "appGroup", mobile: "mobile", searchTerm: "searchTerm", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", appTileGroupsPinChange: "appTileGroupsPinChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"appGroup\">\r\n <h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n <ng-container *ngIf=\"(appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0\">\r\n <fd-fixed-card-layout [disableDragDrop]=\"true\">\r\n <ng-container\r\n *ngFor=\"let app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; let i = index\"\r\n >\r\n <fd-card *fdCardDef=\"i\">\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-avatar *ngIf=\"app.Icon\" [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n <h2 fd-card-title class=\"header-title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n </ng-container>\r\n </fd-fixed-card-layout>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i4$1.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "component", type: i4$1.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i4$1.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "directive", type: i4$1.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i5$1.FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: ["disableDragDrop", "dragStartDelay", "cardMinimumWidth", "columnsWidthConfig", "maxColumns"], outputs: ["layoutChange", "cardDraggedDropped"] }, { kind: "directive", type: i5$1.CardDefinitionDirective, selector: "[fdCardDef]", inputs: ["fdCardDef"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i1$2.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: EmptyListDirective, selector: "[emptyList]", inputs: ["emptyList"] }, { kind: "pipe", type: i1$2.FilterStringPipe, name: "filterStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, decorators: [{
397
+ type: Component,
398
+ args: [{ selector: 'bt-app-finder-app-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"appGroup\">\r\n <h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n <ng-container *ngIf=\"(appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0\">\r\n <fd-fixed-card-layout [disableDragDrop]=\"true\">\r\n <ng-container\r\n *ngFor=\"let app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; let i = index\"\r\n >\r\n <fd-card *fdCardDef=\"i\">\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-avatar *ngIf=\"app.Icon\" [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n <h2 fd-card-title class=\"header-title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n </ng-container>\r\n </fd-fixed-card-layout>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"] }]
399
+ }], propDecorators: { appGroup: [{
400
+ type: Input
401
+ }], mobile: [{
402
+ type: Input
403
+ }], searchTerm: [{
404
+ type: Input
405
+ }], pinnedAppInAppTileGroups: [{
406
+ type: Input
407
+ }], pinClick: [{
408
+ type: Output
409
+ }], appTileGroupsPinChange: [{
410
+ type: Output
411
+ }] } });
412
+
413
+ class AppFinderGroupComponent extends BaseComponent {
414
+ constructor() {
415
+ super(...arguments);
416
+ this.selectedIdChange = new EventEmitter();
417
+ }
418
+ ngOnChanges(changes) {
419
+ super.ngOnChanges(changes);
420
+ if (changes.appGroups && !changes.appGroups.firstChange) {
421
+ const appGroups = changes.appGroups.currentValue;
422
+ if (appGroups && appGroups.length > 0 && !this.selectedId) {
423
+ this.selectedIdChange.emit(appGroups[0].Id);
424
+ }
425
+ }
426
+ }
427
+ OnMenuGroupClick(group) {
428
+ this.selectedIdChange.emit(group.Id);
429
+ }
430
+ OnGroupClick(group) {
431
+ this.selectedIdChange.emit(group.Id);
432
+ }
433
+ }
434
+ AppFinderGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
435
+ AppFinderGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: { appGroups: "appGroups", selectedId: "selectedId", listMode: "listMode" }, outputs: { selectedIdChange: "selectedIdChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"listMode; else menuTpl\">\n <div class=\"app-groups\">\n <ul fd-list [selection]=\"true\">\n <li\n fd-list-item\n *ngFor=\"let group of appGroups; let i = index\"\n [selected]=\"group.Id === selectedId\"\n (click)=\"OnGroupClick(group)\"\n >\n <span fd-list-title>\n {{ group.Title }}\n </span>\n </li>\n </ul>\n </div>\n</ng-container>\n<ng-template #menuTpl>\n <li *ngFor=\"let group of appGroups; let i = index\" fd-menu-item [selected]=\"group.Id === selectedId\">\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\n <span fd-menu-title>\n {{ group.Title }}\n </span>\n </a>\n </li>\n</ng-template>\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, decorators: [{
437
+ type: Component,
438
+ args: [{ selector: 'bt-app-finder-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"listMode; else menuTpl\">\n <div class=\"app-groups\">\n <ul fd-list [selection]=\"true\">\n <li\n fd-list-item\n *ngFor=\"let group of appGroups; let i = index\"\n [selected]=\"group.Id === selectedId\"\n (click)=\"OnGroupClick(group)\"\n >\n <span fd-list-title>\n {{ group.Title }}\n </span>\n </li>\n </ul>\n </div>\n</ng-container>\n<ng-template #menuTpl>\n <li *ngFor=\"let group of appGroups; let i = index\" fd-menu-item [selected]=\"group.Id === selectedId\">\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\n <span fd-menu-title>\n {{ group.Title }}\n </span>\n </a>\n </li>\n</ng-template>\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
439
+ }], propDecorators: { appGroups: [{
440
+ type: Input
441
+ }], selectedId: [{
442
+ type: Input
443
+ }], listMode: [{
444
+ type: Input
445
+ }], selectedIdChange: [{
446
+ type: Output
447
+ }] } });
448
+
449
+ class AppFinderComponent extends BaseComponent {
450
+ constructor() {
451
+ super(...arguments);
452
+ this.contentDensity = 'compact';
453
+ this.pinClick = new EventEmitter();
454
+ this.selectedAppGroupIdChange = new EventEmitter();
455
+ }
456
+ onSearchSubmit($event) {
457
+ this.searchTerm = $event.text;
458
+ }
459
+ }
460
+ AppFinderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
461
+ AppFinderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: AppFinderComponent, selector: "bt-app-finder", inputs: { appGroups: "appGroups", deviceSize: "deviceSize", sideContentSize: "sideContentSize", selectedAppGroup: "selectedAppGroup", selectedAppGroupId: "selectedAppGroupId", mobile: "mobile", contentDensity: "contentDensity", contentHeight: "contentHeight", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", selectedAppGroupIdChange: "selectedAppGroupIdChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"wrapper\">\n <ng-container *ngIf=\"appGroups; else loading\">\n <fd-toolbar [fdType]=\"'solid'\">\n <button\n fd-toolbar-item\n fd-button\n [fdMenu]=\"true\"\n [glyph]=\"'menu2'\"\n [fdType]=\"'transparent'\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"selectedAppGroup?.Title\"\n *ngIf=\"deviceSize === 's'\"\n ></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-search-field\n fd-toolbar-item\n [contentDensity]=\"contentDensity\"\n [placeholder]=\"'Search' | bbbTranslate\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n [suggestions]=\"[]\"\n ></fdp-search-field>\n </fd-toolbar>\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\n <div class=\"app-groups\">\n <bt-app-finder-group\n *ngIf=\"deviceSize !== 's'\"\n [appGroups]=\"appGroups\"\n [listMode]=\"true\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </div>\n <bt-app-finder-app-list\n [appGroup]=\"selectedAppGroup\"\n [mobile]=\"mobile\"\n [searchTerm]=\"searchTerm\"\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\n (pinClick)=\"pinClick.emit($event)\"\n ></bt-app-finder-app-list>\n </div>\n <fd-menu\n #menu\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\n >\n <bt-app-finder-group\n *ngIf=\"deviceSize === 's'\"\n [appGroups]=\"appGroups\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </fd-menu>\n </ng-container>\n <ng-template #loading>\n <bsu-mask></bsu-mask>\n </ng-template>\n</div>\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i4.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i4.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i4.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i5$2.PlatformContentDensityDeprecationDirective, selector: " fdp-action-bar[contentDensity], fdp-button[contentDensity], fdp-object-list-item[contentDensity], fdp-standard-list-item[contentDensity], fdp-menu[contentDensity], fdp-menu-button[contentDensity], fdp-panel[contentDensity], fdp-search-field[contentDensity], fdp-split-menu-button[contentDensity], fdp-file-uploader[contentDensity], fdp-upload-collection[contentDensity], fdp-table[contentDensity], fdp-multi-input[contentDensity], fdp-list[contentDensity], fdp-slider[contentDensity], fdp-time-picker[contentDensity], fdp-textarea[contentDensity], fdp-switch[contentDensity], fdp-number-step-input[contentDensity], fdp-select[contentDensity], fdp-date-picker[contentDensity], fdp-checkbox[contentDensity], fdp-checkbox-group[contentDensity], fdp-combobox[contentDensity], fdp-datetime-picker[contentDensity], fdp-input[contentDensity], fdp-radio-group[contentDensity], fdp-radio-button[contentDensity], fdp-multi-combobox[contentDensity], fdp-input-group-addon-body[contentDensity], fdp-input-group[contentDensity], fdp-value-help-dialog[contentDensity], fdp-filter-single-select[contentDensity], fdp-filter-multi-select[contentDensity], fdp-filter-custom[contentDensity] " }, { kind: "component", type: i6$1.SearchFieldComponent, selector: "fdp-search-field", inputs: ["placeholder", "mobile", "mobileConfig", "disableRefresh", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: ["appGroups", "selectedId", "listMode"], outputs: ["selectedIdChange"] }, { kind: "component", type: AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: ["appGroup", "mobile", "searchTerm", "pinnedAppInAppTileGroups"], outputs: ["pinClick", "appTileGroupsPinChange"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, decorators: [{
463
+ type: Component,
464
+ args: [{ selector: 'bt-app-finder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\">\n <ng-container *ngIf=\"appGroups; else loading\">\n <fd-toolbar [fdType]=\"'solid'\">\n <button\n fd-toolbar-item\n fd-button\n [fdMenu]=\"true\"\n [glyph]=\"'menu2'\"\n [fdType]=\"'transparent'\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"selectedAppGroup?.Title\"\n *ngIf=\"deviceSize === 's'\"\n ></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-search-field\n fd-toolbar-item\n [contentDensity]=\"contentDensity\"\n [placeholder]=\"'Search' | bbbTranslate\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n [suggestions]=\"[]\"\n ></fdp-search-field>\n </fd-toolbar>\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\n <div class=\"app-groups\">\n <bt-app-finder-group\n *ngIf=\"deviceSize !== 's'\"\n [appGroups]=\"appGroups\"\n [listMode]=\"true\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </div>\n <bt-app-finder-app-list\n [appGroup]=\"selectedAppGroup\"\n [mobile]=\"mobile\"\n [searchTerm]=\"searchTerm\"\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\n (pinClick)=\"pinClick.emit($event)\"\n ></bt-app-finder-app-list>\n </div>\n <fd-menu\n #menu\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\n >\n <bt-app-finder-group\n *ngIf=\"deviceSize === 's'\"\n [appGroups]=\"appGroups\"\n [selectedId]=\"selectedAppGroupId\"\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\n >\n </bt-app-finder-group>\n </fd-menu>\n </ng-container>\n <ng-template #loading>\n <bsu-mask></bsu-mask>\n </ng-template>\n</div>\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"] }]
465
+ }], propDecorators: { appGroups: [{
466
+ type: Input
467
+ }], deviceSize: [{
468
+ type: Input
469
+ }], sideContentSize: [{
470
+ type: Input
471
+ }], selectedAppGroup: [{
472
+ type: Input
473
+ }], selectedAppGroupId: [{
474
+ type: Input
475
+ }], mobile: [{
476
+ type: Input
477
+ }], contentDensity: [{
478
+ type: Input
479
+ }], contentHeight: [{
480
+ type: Input
481
+ }], pinnedAppInAppTileGroups: [{
482
+ type: Input
483
+ }], pinClick: [{
484
+ type: Output
485
+ }], selectedAppGroupIdChange: [{
486
+ type: Output
487
+ }] } });
488
+
489
+ class ChangeAppTileComponent extends BaseComponent {
490
+ constructor(fb, dialogRef, bbbPipe) {
491
+ super();
492
+ this.fb = fb;
493
+ this.dialogRef = dialogRef;
494
+ this.bbbPipe = bbbPipe;
495
+ this.title = dialogRef.data.TileTitle;
496
+ this.subtitle = dialogRef.data.Subtitle;
497
+ }
498
+ ngOnInit() {
499
+ super.ngOnInit();
500
+ this.appGroupForm = this.fb.group({
501
+ title: new UntypedFormControl(this.title, [Validators.required]),
502
+ subtitle: new UntypedFormControl(this.subtitle)
503
+ });
504
+ this.RequiredText = this.bbbPipe
505
+ .transform(')AlertFieldIsMandatory')
506
+ .replace('{0}', this.bbbPipe.transform('Title'));
507
+ }
508
+ onSave() {
509
+ this.submitted = true;
510
+ if (this.appGroupForm.valid) {
511
+ this.dialogRef.close({ title: this.title, subtitle: this.subtitle });
512
+ }
513
+ }
514
+ }
515
+ ChangeAppTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ChangeAppTileComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1$4.DialogRef }, { token: i1$2.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Component });
516
+ ChangeAppTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ChangeAppTileComponent, selector: "bt-change-app-tile", usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ dialogRef.data.$Caption }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialogRef.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body [formGroup]=\"appGroupForm\">\r\n <div fd-form-item>\r\n <label fd-form-label [required]=\"true\">{{ 'Title' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group\r\n class=\"form-control\"\r\n formControlName=\"title\"\r\n form-control\r\n [button]=\"true\"\r\n [(ngModel)]=\"title\"\r\n [state]=\"submitted && appGroupForm.controls.title.errors ? 'error' : 'information'\"\r\n >\r\n </fd-input-group>\r\n <fd-form-message *ngIf=\"submitted && appGroupForm.controls.title.errors\" type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n </fd-form-input-message-group>\r\n </div>\r\n <br />\r\n <div fd-form-item>\r\n <label fd-form-label>{{ 'Subtitle' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group formControlName=\"subtitle\" form-control [button]=\"true\" [(ngModel)]=\"subtitle\">\r\n </fd-input-group>\r\n </fd-form-input-message-group>\r\n </div>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <fd-button-bar [label]=\"'Save' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onSave()\"> </fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n fdInitialFocus\r\n fdType=\"transparent\"\r\n (click)=\"this.dialogRef.close()\"\r\n >\r\n </fd-button-bar>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i6$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i6$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: i7$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i8$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i8$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ChangeAppTileComponent, decorators: [{
518
+ type: Component,
519
+ args: [{ selector: 'bt-change-app-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ dialogRef.data.$Caption }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialogRef.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body [formGroup]=\"appGroupForm\">\r\n <div fd-form-item>\r\n <label fd-form-label [required]=\"true\">{{ 'Title' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group\r\n class=\"form-control\"\r\n formControlName=\"title\"\r\n form-control\r\n [button]=\"true\"\r\n [(ngModel)]=\"title\"\r\n [state]=\"submitted && appGroupForm.controls.title.errors ? 'error' : 'information'\"\r\n >\r\n </fd-input-group>\r\n <fd-form-message *ngIf=\"submitted && appGroupForm.controls.title.errors\" type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n </fd-form-input-message-group>\r\n </div>\r\n <br />\r\n <div fd-form-item>\r\n <label fd-form-label>{{ 'Subtitle' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group formControlName=\"subtitle\" form-control [button]=\"true\" [(ngModel)]=\"subtitle\">\r\n </fd-input-group>\r\n </fd-form-input-message-group>\r\n </div>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <fd-button-bar [label]=\"'Save' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onSave()\"> </fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n fdInitialFocus\r\n fdType=\"transparent\"\r\n (click)=\"this.dialogRef.close()\"\r\n >\r\n </fd-button-bar>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
520
+ }], ctorParameters: function () { return [{ type: i1$3.UntypedFormBuilder }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; } });
521
+
522
+ class TilesService {
523
+ constructor(_portalService, _rtlService, _bbbTranslatePipe) {
524
+ this._portalService = _portalService;
525
+ this._rtlService = _rtlService;
526
+ this._bbbTranslatePipe = _bbbTranslatePipe;
527
+ this.shellbarSource = new Subject();
528
+ this._OnDestroy$ = new Subject();
529
+ this._homeAppTileGroupsSource = new BehaviorSubject([]);
530
+ this.pinTilesSource = new Subject();
531
+ this._appTileGroupsSource = new BehaviorSubject(null);
532
+ this._edithomeSource = new BehaviorSubject(false);
533
+ BarsaApi.Bw.TilesService = this;
534
+ this.homeAppTileGroups$ = this._homeAppTileGroupsSource.asObservable();
535
+ this.pinTiles$ = this.pinTilesSource.asObservable().pipe(startWith(null));
536
+ this.shellbarSource = new Subject();
537
+ this.shellbar$ = this.shellbarSource.asObservable().pipe(shareReplay(1));
538
+ this.appTileGroups$ = this._appTileGroupsSource.pipe(shareReplay(1));
539
+ this.editHome$ = this._edithomeSource.asObservable().pipe(takeUntil(this._OnDestroy$), distinctUntilChanged());
540
+ this.deviceSize$ = this._portalService.deviceSize$;
541
+ this._rtlService.rtl.next(BarsaApi.LoginFormData.IsRtl);
542
+ this.loadAllAppTileGroups();
543
+ this.appTileGroups$
544
+ .pipe(filter((moForReportModel) => moForReportModel !== null), tap((moForReportModel) => {
545
+ if (moForReportModel) {
546
+ this._allAppsLoaded(moForReportModel);
547
+ }
548
+ }))
549
+ .subscribe();
550
+ }
551
+ get appTileGroups() {
552
+ return this._appTileGroupsSource.getValue();
553
+ }
554
+ ngOnDestroy() {
555
+ this._OnDestroy$.next();
556
+ }
557
+ loadAppTileGroups(appTileGroup) {
558
+ var _a;
559
+ if (!appTileGroup || appTileGroup.$TilesLoaded) {
560
+ return;
561
+ }
562
+ const allApps = this._appTileGroupsSource.getValue();
563
+ if (allApps) {
564
+ const selectedAppTilegroup = allApps === null || allApps === void 0 ? void 0 : allApps.MoDataList.find((c) => c.Id === appTileGroup.Id);
565
+ if (selectedAppTilegroup) {
566
+ this._loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps);
567
+ (_a = selectedAppTilegroup.$Children) === null || _a === void 0 ? void 0 : _a.forEach((subGroup) => {
568
+ this._loadAppTilesOfAppTileGroup(subGroup, allApps);
569
+ });
570
+ }
571
+ }
572
+ }
573
+ saveTilesStackContent(tilesStackContent) {
574
+ const userPortalSettings = this._portalService.userPortalSettings;
575
+ if (userPortalSettings == null) {
576
+ return Promise.resolve();
577
+ }
578
+ userPortalSettings.TilesStackContent = tilesStackContent;
579
+ userPortalSettings.$State = 'Modified';
580
+ return this._saveUserPortalSettings(userPortalSettings).then(() => this._portalService.setUserPortalSettings(userPortalSettings));
581
+ }
582
+ loadUserPortalSettings() {
583
+ return this._portalService.getData('UserPortalSetting').pipe(concatMap((data) => {
584
+ if (data) {
585
+ return of(data);
586
+ }
587
+ else {
588
+ return this.loadFromServerUserPortalSetting();
589
+ }
590
+ }));
591
+ }
592
+ loadFromServerUserPortalSetting() {
593
+ return from(new Promise((resolve, reject) => {
594
+ BarsaApi.Bw.RunBlMethodAsync({
595
+ Parameters: [],
596
+ Method: 'GetUserPortalSettings',
597
+ SuccessFn: (userPortalSetting) => {
598
+ this._portalService.setData('UserPortalSetting', userPortalSetting);
599
+ resolve(userPortalSetting);
600
+ },
601
+ FailFn: () => {
602
+ reject(null);
603
+ }
604
+ });
605
+ }));
606
+ }
607
+ toggleAppGroupSettingVisible(appGroup) {
608
+ return from(new Promise((resolve, reject) => {
609
+ BarsaApi.Bw.RunBlMethodAsync({
610
+ Parameters: [appGroup.Id],
611
+ Method: 'ToggleAppTileGroupSettingVisible',
612
+ SuccessFn: (appGroupSetting) => {
613
+ this._updateAppTileGroupSettings(appGroup, appGroupSetting);
614
+ resolve(appGroupSetting);
615
+ },
616
+ FailFn: () => {
617
+ reject(null);
618
+ }
619
+ });
620
+ })).pipe(tap((appGroupSetting) => {
621
+ this._updateAppGroupSetting(appGroup, appGroupSetting);
622
+ }));
623
+ }
624
+ resetAppGroupSetting(appGroup) {
625
+ return from(new Promise((resolve, reject) => {
626
+ BarsaApi.Bw.RunBlMethodAsync({
627
+ Parameters: [appGroup.Id],
628
+ Method: 'ResetAppTileGroupSettingVisible',
629
+ SuccessFn: (appGroupSetting) => {
630
+ this._updateAppTileGroupSettings(appGroup, appGroupSetting);
631
+ resolve(appGroupSetting);
632
+ },
633
+ FailFn: () => {
634
+ reject(null);
635
+ }
636
+ });
637
+ })).pipe(tap((appGroupSetting) => {
638
+ this._updateAppGroupSetting(appGroup, appGroupSetting);
639
+ }));
640
+ }
641
+ deleteAppGroup(appGroup) {
642
+ return from(new Promise((resolve, reject) => {
643
+ BarsaApi.Bw.RunBlMethodAsync({
644
+ Parameters: [appGroup.Id],
645
+ Method: 'DeleteAppGroup',
646
+ SuccessFn: () => {
647
+ resolve(appGroup.Id);
648
+ },
649
+ FailFn: () => {
650
+ reject(null);
651
+ }
652
+ });
653
+ })).pipe(tap((appGroupId) => {
654
+ const allApps = this.appTileGroups;
655
+ if (allApps) {
656
+ allApps.MoDataList = allApps.MoDataList.filter((c) => c.Id !== appGroupId);
657
+ this._appTileGroupsSource.next(allApps);
658
+ }
659
+ }));
660
+ }
661
+ changeAppTileSetting(appTile) {
662
+ const allApps = this.appTileGroups;
663
+ const selectedGroup = this.findGroupWithAppTileId(allApps, appTile.Id);
664
+ if (selectedGroup === null) {
665
+ return of(null);
666
+ }
667
+ return from(new Promise((resolve, reject) => {
668
+ BarsaApi.Bw.RunBlMethodAsync({
669
+ Parameters: [selectedGroup.Id, appTile.Id, appTile.Title, appTile.Subtitle],
670
+ Method: 'ChangeAppTileSetting',
671
+ SuccessFn: () => {
672
+ this._nextAllAppTileGroups(allApps);
673
+ resolve(selectedGroup);
674
+ },
675
+ FailFn: () => {
676
+ reject(null);
677
+ }
678
+ });
679
+ })).pipe(tap((appGroupSetting) => this.updataAppTileSetting(selectedGroup, appGroupSetting)));
680
+ }
681
+ saveAppGroupOrders(appGroups) {
682
+ const groupOrders = appGroups.map((c) => c.Id);
683
+ return from(new Promise((resolve, reject) => {
684
+ BarsaApi.Bw.RunBlMethodAsync({
685
+ Parameters: [groupOrders],
686
+ Method: 'ChangeOrderAppTileGroups',
687
+ SuccessFn: () => {
688
+ resolve();
689
+ },
690
+ FailFn: () => {
691
+ reject(null);
692
+ }
693
+ });
694
+ })).pipe();
695
+ }
696
+ createAppGroup(title) {
697
+ return from(new Promise((resolve, reject) => {
698
+ BarsaApi.Bw.RunBlMethodAsync({
699
+ Parameters: [title],
700
+ Method: 'CreateAppTileGroup',
701
+ SuccessFn: (mo) => {
702
+ resolve(mo);
703
+ },
704
+ FailFn: () => {
705
+ reject(null);
706
+ }
707
+ });
708
+ })).pipe(tap((mo) => this.addAppGroup(mo)));
709
+ }
710
+ saveOrderAppTiles(appGroup, appTiles, isActionLink = false, appTileIdTransferedId = '0') {
711
+ BarsaApi.Bw.RunBlMethodAsync({
712
+ Parameters: [appGroup.Id, appTiles, isActionLink, appTileIdTransferedId],
713
+ Method: 'ChangeOrderAppTiles',
714
+ SuccessFn: () => { },
715
+ FailFn: () => { }
716
+ });
717
+ }
718
+ updataAppTileSetting(selectedGroup, appGroupSetting) {
719
+ const allApps = this.appTileGroups;
720
+ allApps === null || allApps === void 0 ? void 0 : allApps.MoDataList.forEach((appGroup) => {
721
+ if (appGroup.Id === selectedGroup.Id) {
722
+ appGroup.UserAppTileGroupSetting = appGroupSetting;
723
+ }
724
+ });
725
+ this._appTileGroupsSource.next(allApps);
726
+ }
727
+ addAppGroup(mo) {
728
+ const allApps = this.appTileGroups;
729
+ if (allApps) {
730
+ allApps.MoDataList.push(mo);
731
+ this._appTileGroupsSource.next(allApps);
732
+ }
733
+ }
734
+ singlePinTileChanged(appTileId) {
735
+ const allApps = this.appTileGroups;
736
+ const group = this.findGroupWithAppTileId(allApps, appTileId);
737
+ if (group === null) {
738
+ return of(false);
739
+ }
740
+ return from(new Promise((resolve, reject) => {
741
+ BarsaApi.Bw.RunBlMethodAsync({
742
+ Parameters: [group.Id, appTileId],
743
+ Method: 'RemoveAppTileFromTileGroup',
744
+ SuccessFn: (setting) => {
745
+ this._updateAppTileGroupSettings(group, setting);
746
+ this._nextAllAppTileGroups(allApps);
747
+ resolve(true);
748
+ },
749
+ FailFn: () => {
750
+ reject(false);
751
+ }
752
+ });
753
+ }));
754
+ }
755
+ pinTileChanged(appTileGroupsPin, app, callback) {
756
+ const allApps = this.appTileGroups;
757
+ const visible = appTileGroupsPin.map((c) => c.visible);
758
+ const groupChanges = appTileGroupsPin.map((c) => new BarsaApi.Common.MetaObjectWeb({
759
+ Id: c.appTileGroup.Id,
760
+ TypeDefId: allApps === null || allApps === void 0 ? void 0 : allApps.TypeDefId
761
+ }));
762
+ BarsaApi.Bw.RunBlMethodAsync({
763
+ Parameters: [groupChanges, visible, app.Id],
764
+ Method: 'TilePinChanged',
765
+ SuccessFn: (settings) => {
766
+ this._tilePinChange(appTileGroupsPin, allApps);
767
+ callback(settings);
768
+ },
769
+ FailFn: () => {
770
+ // TODO show error
771
+ }
772
+ });
773
+ }
774
+ _tilePinChange(appTileGroupsPin, allApps) {
775
+ for (const appTileGroupPin of appTileGroupsPin) {
776
+ let selectedAppGroup;
777
+ const appGroupId = appTileGroupPin.appTileGroup.Id;
778
+ allApps === null || allApps === void 0 ? void 0 : allApps.MoDataList.forEach((c) => {
779
+ var _a;
780
+ if (c.Id === appGroupId) {
781
+ selectedAppGroup = c;
782
+ }
783
+ else if (!selectedAppGroup) {
784
+ selectedAppGroup = (_a = c.$Children) === null || _a === void 0 ? void 0 : _a.find((child) => child.Id === appGroupId);
785
+ }
786
+ });
787
+ if (selectedAppGroup && selectedAppGroup.$TilesLoaded) {
788
+ // let moDataList = selectedAppGroup.AppTiles.MoDataList;
789
+ // if (appTileGroups[i].visible)
790
+ // selectedAppGroup.AppTiles.MoDataList = [...moDataList, settings[i]];
791
+ // else
792
+ // selectedAppGroup.AppTiles.MoDataList = moDataList.filter(
793
+ // (c) => c.App.Id !== app.Id
794
+ // );
795
+ this._loadAppTilesOfAppTileGroup(selectedAppGroup, allApps);
796
+ }
797
+ }
798
+ this._nextAllAppTileGroups(allApps);
799
+ }
800
+ loadShellbar() {
801
+ this._portalService
802
+ .ReportExecutePromise('Shellbar')
803
+ .then((moForReportModel) => this.shellbarSource.next(moForReportModel.MoDataList[0]));
804
+ }
805
+ loadAllAppTileGroups() {
806
+ this._portalService
807
+ .ReportExecute('AllAppTileGroups')
808
+ .subscribe((allApps) => this._nextAllAppTileGroups(allApps));
809
+ }
810
+ _setTileInfo(appTile) {
811
+ {
812
+ const title = BarsaApi.Common.Util.TryGetValue(appTile, 'Component.Settings.TileSetting.Title', null);
813
+ appTile.TileTitle = !appTile.Title ? title : appTile.Title;
814
+ const subtitle = BarsaApi.Common.Util.TryGetValue(appTile, 'Component.Settings.TileSetting.Subtitle', null);
815
+ appTile.Subtitle = !appTile.Subtitle ? subtitle : appTile.Subtitle;
816
+ }
817
+ }
818
+ getTileGroups() {
819
+ return this._appTileGroupsSource.getValue();
820
+ }
821
+ setEditHome(edit) {
822
+ this._edithomeSource.next(edit);
823
+ }
824
+ _allAppsLoaded(moForReportModel) {
825
+ moForReportModel.MoDataList.forEach((c) => {
826
+ this._prepareNavigator(c);
827
+ });
828
+ this._setHomeAppTileGroups(moForReportModel.MoDataList);
829
+ }
830
+ _loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps) {
831
+ const callback = () => {
832
+ this._nextAllAppTileGroups(allApps);
833
+ };
834
+ if (!selectedAppTilegroup.UserAppTileGroupSetting) {
835
+ this._loadAppTilesByAppTileGroup(selectedAppTilegroup, callback);
836
+ }
837
+ else {
838
+ this._loadAppTilesByAppTileGroupSetting(selectedAppTilegroup, callback);
839
+ }
840
+ }
841
+ _loadAppTilesByAppTileGroup(appGroup, callback) {
842
+ BarsaApi.Bw.RunBlMethodAsync({
843
+ Parameters: [appGroup.Id],
844
+ Method: 'LoadAllAppTilesByAppTileGroup',
845
+ SuccessFn: (appTiles) => {
846
+ this._updateAppTilesOfAppTileGroup(appGroup, appTiles);
847
+ callback();
848
+ },
849
+ FailFn: () => {
850
+ // TODO show error
851
+ }
852
+ });
853
+ }
854
+ _updateAppTilesOfAppTileGroup(selectedAppTilegroup, appTiles) {
855
+ var _a;
856
+ if (this.appTileGroups) {
857
+ selectedAppTilegroup = Object.assign(Object.assign({}, selectedAppTilegroup), { $TilesLoaded: true });
858
+ appTiles.MoDataList.forEach((element) => {
859
+ var _a, _b, _c;
860
+ element.Component = (_a = element.A_App_Component) !== null && _a !== void 0 ? _a : element.A_AppTile_App_Component;
861
+ element.DynamicCommand = (_b = element.A_App_DynamicCommand) !== null && _b !== void 0 ? _b : element.A_AppTile_App_DynamicCommand;
862
+ element.Predefined = (_c = element.Predefined) !== null && _c !== void 0 ? _c : element.A_AppTile_Predefined;
863
+ });
864
+ const apptileGroupIndex = (_a = this.appTileGroups) === null || _a === void 0 ? void 0 : _a.MoDataList.findIndex((c) => c.Id === selectedAppTilegroup.Id || c.Id === selectedAppTilegroup.$ParentId);
865
+ selectedAppTilegroup.AppTiles = appTiles;
866
+ const tileGroup = this.appTileGroups.MoDataList[apptileGroupIndex];
867
+ if (selectedAppTilegroup.$ParentId) {
868
+ if (tileGroup.$Children) {
869
+ const idOfSubGroup = tileGroup.$Children.findIndex((c) => c.Id === selectedAppTilegroup.Id);
870
+ tileGroup.$Children[idOfSubGroup] = selectedAppTilegroup;
871
+ }
872
+ this.appTileGroups.MoDataList[apptileGroupIndex] = Object.assign({}, tileGroup);
873
+ }
874
+ else {
875
+ this.appTileGroups.MoDataList[apptileGroupIndex] = selectedAppTilegroup;
876
+ }
877
+ }
878
+ }
879
+ _loadAppTilesByAppTileGroupSetting(appTileGroup, callback) {
880
+ BarsaApi.Bw.RunBlMethodAsync({
881
+ Parameters: [appTileGroup.Id],
882
+ Method: 'LoadAllAppTilesByUserAppTileGroupSettings',
883
+ SuccessFn: (appTiles) => {
884
+ this._updateAppTilesOfAppTileGroup(appTileGroup, appTiles);
885
+ callback();
886
+ },
887
+ FailFn: () => {
888
+ // TODO show error
889
+ }
890
+ });
891
+ }
892
+ _nextAllAppTileGroups(newAllApps = null) {
893
+ const allApps = newAllApps !== null && newAllApps !== void 0 ? newAllApps : this._appTileGroupsSource.getValue();
894
+ this._appTileGroupsSource.next(allApps ? Object.assign({}, allApps) : null);
895
+ }
896
+ _setHomeAppTileGroups(appGroups) {
897
+ let newAppGroups = [...appGroups];
898
+ newAppGroups = newAppGroups
899
+ .filter((c) => c.Visible)
900
+ .sort((a, b) => Number(a.navigatorOrderItem) - Number(b.navigatorOrderItem));
901
+ this._homeAppTileGroupsSource.next(newAppGroups);
902
+ }
903
+ _saveUserPortalSettings(userPortalSettings) {
904
+ return new Promise((resolve, reject) => {
905
+ BarsaApi.Bw.RunBlMethodAsync({
906
+ Parameters: [new BarsaApi.Common.MetaObjectWeb(userPortalSettings)],
907
+ Method: 'SaveUserPortalSettings',
908
+ SuccessFn: () => {
909
+ resolve();
910
+ },
911
+ FailFn: () => {
912
+ reject(null);
913
+ }
914
+ });
915
+ });
916
+ }
917
+ _updateAppGroupSetting(appGroup, appGroupSetting) {
918
+ const allApps = this.appTileGroups;
919
+ const selectedAppGroup = allApps === null || allApps === void 0 ? void 0 : allApps.MoDataList.find((c) => c.Id === appGroup.Id);
920
+ if (selectedAppGroup && allApps) {
921
+ selectedAppGroup.UserAppTileGroupSetting = appGroupSetting;
922
+ this._nextAllAppTileGroups(allApps);
923
+ }
924
+ }
925
+ findGroupWithAppTileId(allApps, appTileId) {
926
+ let selectedGroup;
927
+ if (!allApps) {
928
+ return null;
929
+ }
930
+ allApps.MoDataList.forEach((appGroup) => {
931
+ var _a;
932
+ if (selectedGroup) {
933
+ return;
934
+ }
935
+ if (appGroup.navigatorTiles.some((appTile) => appTile.Id === appTileId)) {
936
+ selectedGroup = appGroup;
937
+ return;
938
+ }
939
+ (_a = appGroup.$Children) === null || _a === void 0 ? void 0 : _a.forEach((subGroup) => {
940
+ if (subGroup.navigatorTiles.some((appTile) => appTile.Id === appTileId)) {
941
+ selectedGroup = subGroup;
942
+ return;
943
+ }
944
+ });
945
+ });
946
+ return selectedGroup;
947
+ }
948
+ _findGroupWithAppGroupId(allApps, appGroupId) {
949
+ let selectedGroup;
950
+ if (!allApps) {
951
+ return null;
952
+ }
953
+ allApps.MoDataList.forEach((appGroup) => {
954
+ var _a;
955
+ if (selectedGroup) {
956
+ return;
957
+ }
958
+ if (appGroup.Id === appGroupId) {
959
+ selectedGroup = appGroup;
960
+ return;
961
+ }
962
+ (_a = appGroup.$Children) === null || _a === void 0 ? void 0 : _a.forEach((subGroup) => {
963
+ if (subGroup.Id === appGroupId) {
964
+ selectedGroup = subGroup;
965
+ return;
966
+ }
967
+ });
968
+ });
969
+ return selectedGroup;
970
+ }
971
+ _updateAppTileGroupSettings(appTileGroup, setting) {
972
+ appTileGroup.UserAppTileGroupSetting = setting;
973
+ appTileGroup = JSON.parse(JSON.stringify(appTileGroup));
974
+ this._nextAllAppTileGroups();
975
+ return appTileGroup;
976
+ }
977
+ _prepareNavigator(appTileGroup) {
978
+ var _a, _b, _c;
979
+ appTileGroup.$TileSettingChanged = false;
980
+ appTileGroup.$Disabledpin = false;
981
+ appTileGroup.navigatorTitle = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.Title', appTileGroup.Title);
982
+ appTileGroup.navigatorTitle = appTileGroup.navigatorTitle =
983
+ appTileGroup.navigatorTitle === '' ? appTileGroup.Title : appTileGroup.navigatorTitle;
984
+ appTileGroup.navigatorTitle = this._bbbTranslatePipe.transform(appTileGroup.navigatorTitle);
985
+ const orderItem = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.OrderItem', null);
986
+ if (orderItem !== null) {
987
+ appTileGroup.navigatorOrderItem = orderItem;
988
+ }
989
+ else {
990
+ appTileGroup.navigatorOrderItem = appTileGroup.OrderItem;
991
+ }
992
+ const visible = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.Visible', null);
993
+ if (visible !== null) {
994
+ appTileGroup.navigatorVisible = visible;
995
+ }
996
+ else {
997
+ appTileGroup.navigatorVisible = appTileGroup.Visible;
998
+ }
999
+ const appTiles = (_b = (_a = appTileGroup.AppTiles) === null || _a === void 0 ? void 0 : _a.MoDataList) !== null && _b !== void 0 ? _b : [];
1000
+ appTileGroup.navigatorTiles = appTiles
1001
+ .filter((c) => c.Visible && !c.IsActionLink)
1002
+ .sort((a, b) => Number(a.OrderItem) - Number(b.OrderItem));
1003
+ appTileGroup.navigatorActionLinks = appTiles
1004
+ .filter((c) => c.Visible && c.IsActionLink)
1005
+ .sort((a, b) => Number(a.OrderItemActionLink) - Number(b.OrderItemActionLink));
1006
+ appTileGroup.navigatorTiles.forEach((appTile) => this._setTileInfo(appTile));
1007
+ appTileGroup.navigatorActionLinks.forEach((appTile) => this._setTileInfo(appTile));
1008
+ (_c = appTileGroup.$Children) === null || _c === void 0 ? void 0 : _c.forEach((subAppTileGroup) => {
1009
+ this._prepareNavigator(subAppTileGroup);
1010
+ });
1011
+ }
1012
+ }
1013
+ TilesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesService, deps: [{ token: i1$2.PortalService }, { token: i1$4.RtlService }, { token: i1$2.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
1014
+ TilesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesService, providedIn: 'root' });
1015
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesService, decorators: [{
1016
+ type: Injectable,
1017
+ args: [{
1018
+ providedIn: 'root'
1019
+ }]
1020
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: i1$4.RtlService }, { type: i1$2.BbbTranslatePipe }]; } });
1021
+
1022
+ class TilesViewerService {
1023
+ constructor(dialogService, tilesService) {
1024
+ this.dialogService = dialogService;
1025
+ this.tilesService = tilesService;
1026
+ this._onDestroy$ = new Subject();
1027
+ this._hideTileSource = new Subject();
1028
+ this._updateAppTileSettingSource = new Subject();
1029
+ this._deleteGroupSource = new Subject();
1030
+ this._loadAppGroupSource = new Subject();
1031
+ this._saveAppGroupOrdersSource = new Subject();
1032
+ this.saveAppGroupOrders$ = this._saveAppGroupOrdersSource.asObservable();
1033
+ this._resetAppGroupSource = new Subject();
1034
+ this.resetAppGroup$ = this._resetAppGroupSource.asObservable();
1035
+ this._hideAppGroupSource = new Subject();
1036
+ this.hideAppGroup$ = this._hideAppGroupSource.asObservable();
1037
+ this._viewLoadingSource = new BehaviorSubject(false);
1038
+ this.viewLoading$ = this._viewLoadingSource.asObservable().pipe(debounceTime(200));
1039
+ this.hideTile$ = this._hideTileSource.asObservable();
1040
+ this.updateAppTileSetting$ = this._updateAppTileSettingSource.asObservable();
1041
+ this.deleteAppGroup$ = this._deleteGroupSource.asObservable();
1042
+ this._loadAppGroupSource
1043
+ .asObservable()
1044
+ .pipe(takeUntil(this._onDestroy$))
1045
+ .subscribe((group) => {
1046
+ this.tilesService.loadAppTileGroups(group);
1047
+ });
1048
+ this.hideTile$
1049
+ .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appTile) => this.tilesService
1050
+ .singlePinTileChanged(appTile.AppTile ? appTile.AppTile.Id : appTile.Id)
1051
+ .pipe(finalize(() => this.setLoaded()))), finalize(() => this.setLoaded()))
1052
+ .subscribe();
1053
+ this.updateAppTileSetting$
1054
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this.tilesService.changeAppTileSetting(appTile).pipe(finalize(() => {
1055
+ this.setLoaded();
1056
+ }))), finalize(() => {
1057
+ this.setLoaded();
1058
+ }))
1059
+ .subscribe();
1060
+ this.deleteAppGroup$
1061
+ .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appGroup) => this.tilesService.deleteAppGroup(appGroup).pipe(finalize(() => {
1062
+ this.setLoaded();
1063
+ }))))
1064
+ .subscribe();
1065
+ this.resetAppGroup$
1066
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.resetAppGroupSetting(appGroup).pipe(finalize(() => {
1067
+ this.setLoaded();
1068
+ }))), finalize(() => {
1069
+ this.setLoaded();
1070
+ }))
1071
+ .subscribe();
1072
+ this.hideAppGroup$
1073
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize(() => {
1074
+ this.setLoaded();
1075
+ }))), finalize(() => {
1076
+ this.setLoaded();
1077
+ }))
1078
+ .subscribe();
1079
+ this.saveAppGroupOrders$
1080
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this.tilesService.saveAppGroupOrders(appGroups).pipe(finalize(() => {
1081
+ this.setLoaded();
1082
+ }))), finalize(() => {
1083
+ this.setLoaded();
1084
+ }))
1085
+ .subscribe();
1086
+ }
1087
+ get selectedAppGroupId() {
1088
+ var _a;
1089
+ return (_a = localStorage.getItem('selectedTab')) !== null && _a !== void 0 ? _a : '';
1090
+ }
1091
+ set selectedAppGroupId(groupId) {
1092
+ localStorage.setItem('selectedTab', groupId);
1093
+ }
1094
+ setSelectedTab(group) {
1095
+ this.selectedAppGroupId = group.Id;
1096
+ }
1097
+ loadAppGroup(group) {
1098
+ this._loadAppGroupSource.next(group);
1099
+ }
1100
+ ngOnDestroy() {
1101
+ this._onDestroy$.next();
1102
+ }
1103
+ openRenameForm(appTile) {
1104
+ const newGroupDialogRef = this.dialogService.open(ChangeAppTileComponent, {
1105
+ data: appTile,
1106
+ verticalPadding: true,
1107
+ responsivePadding: true
1108
+ });
1109
+ newGroupDialogRef.afterClosed.subscribe((setting) => {
1110
+ if (setting) {
1111
+ const newAppTile = Object.assign({}, appTile);
1112
+ newAppTile.Title = newAppTile.TileTitle = setting.title;
1113
+ newAppTile.Subtitle = setting.subtitle;
1114
+ this._updateAppTileSettingSource.next(newAppTile);
1115
+ }
1116
+ });
1117
+ }
1118
+ resetAppGroup(appGroup) {
1119
+ this._resetAppGroupSource.next(appGroup);
1120
+ }
1121
+ toggleAppGroupSettingVisible(appGroup) {
1122
+ this._hideAppGroupSource.next(appGroup);
1123
+ }
1124
+ deleteAppGroup(appGroup) {
1125
+ this._deleteGroupSource.next(appGroup);
1126
+ }
1127
+ hideTile(appTile) {
1128
+ this._hideTileSource.next(appTile);
1129
+ }
1130
+ saveAppGroupOrders(appGroups) {
1131
+ this._saveAppGroupOrdersSource.next(appGroups);
1132
+ }
1133
+ setLoaded() {
1134
+ this._viewLoadingSource.next(false);
1135
+ }
1136
+ setLoading() {
1137
+ this._viewLoadingSource.next(true);
1138
+ }
1139
+ }
1140
+ TilesViewerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService, deps: [{ token: i1$4.DialogService }, { token: TilesService }], target: i0.ɵɵFactoryTarget.Injectable });
1141
+ TilesViewerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService });
1142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService, decorators: [{
1143
+ type: Injectable
1144
+ }], ctorParameters: function () { return [{ type: i1$4.DialogService }, { type: TilesService }]; } });
1145
+
1146
+ class TilesViewerComponent extends BaseComponent {
1147
+ constructor() {
1148
+ super(...arguments);
1149
+ this.pageContentClass = true;
1150
+ this.stackContentChange = new EventEmitter();
1151
+ this.closeEditHome = new EventEmitter();
1152
+ this.save = new EventEmitter();
1153
+ this.listDropped = new EventEmitter();
1154
+ this.tabChanged = new EventEmitter();
1155
+ this.toggleGroup = new EventEmitter();
1156
+ this.resetGroup = new EventEmitter();
1157
+ this.deleteGroup = new EventEmitter();
1158
+ this.hideAppTileClick = new EventEmitter();
1159
+ this.renameAppTileClick = new EventEmitter();
1160
+ this.tilesDropped = new EventEmitter();
1161
+ this.rtl = BarsaApi.LoginFormData.IsRtl;
1162
+ }
1163
+ onSelectedTabChange(selectedTab, appTileGroups) {
1164
+ this.selectedTabTitle = selectedTab.title;
1165
+ if (!this.tabListComponent) {
1166
+ return;
1167
+ }
1168
+ this.tabChanged.emit({
1169
+ tabPanels: this.tabListComponent.tabPanels.toArray(),
1170
+ selectedTab,
1171
+ appTileGroups
1172
+ });
1173
+ }
1174
+ onDropGroup(appTileGroups, event) {
1175
+ if (!this.editHome) {
1176
+ return;
1177
+ }
1178
+ this.listDropped.emit({ appTileGroups, event });
1179
+ }
1180
+ onDrop($event) {
1181
+ this.tilesDropped.emit($event);
1182
+ }
1183
+ onStackContentChanged(checked) {
1184
+ this.stackContentChange.emit(checked);
1185
+ }
1186
+ onExitEditHome(appGroups) {
1187
+ this.save.emit(appGroups);
1188
+ }
1189
+ onCloseEditHome() {
1190
+ this.closeEditHome.emit();
1191
+ }
1192
+ _trackById(item, index) {
1193
+ return item ? item.Id : index;
1194
+ }
1195
+ }
1196
+ TilesViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1197
+ TilesViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", editHome: "editHome", stackContent: "stackContent", deviceSize: "deviceSize", selectedAppGroupId: "selectedAppGroupId", DynamicComponents: "DynamicComponents" }, outputs: { stackContentChange: "stackContentChange", closeEditHome: "closeEditHome", save: "save", listDropped: "listDropped", tabChanged: "tabChanged", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "attr.rtl": "this.rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"appTileGroups; else loadingTpl\">\r\n <bsu-mask *ngIf=\"loading\"></bsu-mask>\r\n <fd-dynamic-page\r\n size=\"large\"\r\n [ariaLabel]=\"'HomeEdit' | bbbTranslate\"\r\n [autoResponsive]=\"true\"\r\n [class.stack-mode]=\"stackContent\"\r\n >\r\n <fd-dynamic-page-header *ngIf=\"editHome\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar *ngIf=\"editHome\" fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-content>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n stackContent ? renderTabsStacked : renderTabs;\r\n context: {\r\n $implicit: appTileGroups,\r\n stackContent: stackContent,\r\n editHome: editHome\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n <fd-dynamic-page-footer>\r\n <div fd-bar barDesign=\"footer\" *ngIf=\"editHome\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </fd-dynamic-page-footer>\r\n </fd-dynamic-page>\r\n</ng-container>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template #renderTabs let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n (selectedTabChange)=\"onSelectedTabChange($event, appTileGroups)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [class.is-expanded]=\"selectedTabTitle === (appTileGroup.navigatorTitle | bbbTranslate)\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderTabsStacked let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n [stackContent]=\"true\"\r\n [maxContentHeight]=\"stackContent ? 'calc(99vh - 2.75rem - 44px)' : 'calc(100vh - 44px)'\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [count]=\"appTileGroup.$Children?.length\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-editHome=\"editHome\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"isAppTileSubGroup\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-template>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page section{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page-content{padding:0!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: i5$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i5$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$4.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i5$4.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "subtitle"] }, { kind: "component", type: i5$4.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i5$4.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5$4.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5$4.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i7$2.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "disabled", "id", "name", "required", "checked", "semantic", "ariaLabel", "ariaLabelledby", "ariaLabelledBy", "semanticAcceptLabel", "semanticDeclineLabel"], outputs: ["checkedChange"] }, { kind: "component", type: i8$2.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i8$2.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i4.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i4.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "editHome", "isAppTileSubGroup"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, decorators: [{
1199
+ type: Component,
1200
+ args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"appTileGroups; else loadingTpl\">\r\n <bsu-mask *ngIf=\"loading\"></bsu-mask>\r\n <fd-dynamic-page\r\n size=\"large\"\r\n [ariaLabel]=\"'HomeEdit' | bbbTranslate\"\r\n [autoResponsive]=\"true\"\r\n [class.stack-mode]=\"stackContent\"\r\n >\r\n <fd-dynamic-page-header *ngIf=\"editHome\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar *ngIf=\"editHome\" fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-content>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n stackContent ? renderTabsStacked : renderTabs;\r\n context: {\r\n $implicit: appTileGroups,\r\n stackContent: stackContent,\r\n editHome: editHome\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n <fd-dynamic-page-footer>\r\n <div fd-bar barDesign=\"footer\" *ngIf=\"editHome\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </fd-dynamic-page-footer>\r\n </fd-dynamic-page>\r\n</ng-container>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template #renderTabs let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n (selectedTabChange)=\"onSelectedTabChange($event, appTileGroups)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [class.is-expanded]=\"selectedTabTitle === (appTileGroup.navigatorTitle | bbbTranslate)\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderTabsStacked let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n [stackContent]=\"true\"\r\n [maxContentHeight]=\"stackContent ? 'calc(99vh - 2.75rem - 44px)' : 'calc(100vh - 44px)'\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [count]=\"appTileGroup.$Children?.length\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-editHome=\"editHome\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"isAppTileSubGroup\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-template>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page section{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page-content{padding:0!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
1201
+ }], propDecorators: { tabListComponent: [{
1202
+ type: ViewChild,
1203
+ args: [TabListComponent]
1204
+ }], pageContentClass: [{
1205
+ type: HostBinding,
1206
+ args: ['class.page-content']
1207
+ }], appTileGroups: [{
1208
+ type: Input
1209
+ }], loading: [{
1210
+ type: Input
1211
+ }], editHome: [{
1212
+ type: Input
1213
+ }], stackContent: [{
1214
+ type: Input
1215
+ }], deviceSize: [{
1216
+ type: Input
1217
+ }], selectedAppGroupId: [{
1218
+ type: Input
1219
+ }], DynamicComponents: [{
1220
+ type: Input
1221
+ }], stackContentChange: [{
1222
+ type: Output
1223
+ }], closeEditHome: [{
1224
+ type: Output
1225
+ }], save: [{
1226
+ type: Output
1227
+ }], listDropped: [{
1228
+ type: Output
1229
+ }], tabChanged: [{
1230
+ type: Output
1231
+ }], toggleGroup: [{
1232
+ type: Output
1233
+ }], resetGroup: [{
1234
+ type: Output
1235
+ }], deleteGroup: [{
1236
+ type: Output
1237
+ }], hideAppTileClick: [{
1238
+ type: Output
1239
+ }], renameAppTileClick: [{
1240
+ type: Output
1241
+ }], tilesDropped: [{
1242
+ type: Output
1243
+ }], rtl: [{
1244
+ type: HostBinding,
1245
+ args: ['attr.rtl']
1246
+ }] } });
1247
+
1248
+ class TilesViewerContainerComponent extends BaseComponent {
1249
+ constructor(_portalService, _tilesService, _tilesViewerService) {
1250
+ super();
1251
+ this._portalService = _portalService;
1252
+ this._tilesService = _tilesService;
1253
+ this._tilesViewerService = _tilesViewerService;
1254
+ this.changedOrder = false;
1255
+ this.userStackContent = false;
1256
+ this.initialStackContentValue = false;
1257
+ this.firstSelected = false;
1258
+ this.stackContent$ = this._portalService.userPortalSettings$.pipe(takeUntil(this._onDestroy$), map((settings) => settings === null || settings === void 0 ? void 0 : settings.TilesStackContent), distinctUntilChanged());
1259
+ this.stackContent$.subscribe((stackContent) => {
1260
+ this.initialStackContentValue = this.userStackContent = stackContent;
1261
+ if (stackContent) {
1262
+ }
1263
+ });
1264
+ }
1265
+ ngOnInit() {
1266
+ super.ngOnInit();
1267
+ this.viewLoading$ = this._tilesViewerService.viewLoading$;
1268
+ this.deviceSize$ = this._portalService.deviceSize$;
1269
+ this.editHome$ = this._tilesService.editHome$;
1270
+ this.appTileGroups$ = this._tilesService.homeAppTileGroups$;
1271
+ this.appTileGroups$.pipe(withLatestFrom(this.stackContent$)).subscribe(([tiles, stackContent]) => {
1272
+ if (tiles && stackContent) {
1273
+ tiles.forEach((c) => {
1274
+ this._tilesService.loadAppTileGroups(c);
1275
+ });
1276
+ }
1277
+ });
1278
+ }
1279
+ ngOnDestroy() {
1280
+ super.ngOnDestroy();
1281
+ this._tilesService.setEditHome(false);
1282
+ }
1283
+ onSelectedTabChange(e) {
1284
+ const { selectedTab, appTileGroups: appGroups, tabPanels } = e;
1285
+ const appTileGroupTitle = selectedTab.title;
1286
+ let appTileGroup;
1287
+ if (!this.firstSelected) {
1288
+ this.firstSelected = true;
1289
+ const lastSelectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
1290
+ if (lastSelectedAppGroupId) {
1291
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
1292
+ if (appTileGroup) {
1293
+ const lastTab = tabPanels.find((c) => c.title === (appTileGroup === null || appTileGroup === void 0 ? void 0 : appTileGroup.navigatorTitle));
1294
+ if (lastTab) {
1295
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
1296
+ lastTab.open(true);
1297
+ }
1298
+ }
1299
+ }
1300
+ }
1301
+ if (!appTileGroup) {
1302
+ appTileGroup = appGroups.find((c) => c.navigatorTitle === appTileGroupTitle);
1303
+ }
1304
+ if (appTileGroup) {
1305
+ this._tilesViewerService.setSelectedTab(appTileGroup);
1306
+ this._tilesViewerService.loadAppGroup(appTileGroup);
1307
+ }
1308
+ }
1309
+ onDropGroup(e) {
1310
+ const { event, appTileGroups: appGroups } = e;
1311
+ moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
1312
+ this.changedOrder = true;
1313
+ // this.saveOrderAppTiles(allApps, group);
1314
+ }
1315
+ onDrop(e) {
1316
+ var _a, _b, _c;
1317
+ const { appTileGroup: group, event } = e;
1318
+ const previousContainer = event.previousContainer;
1319
+ const container = event.container;
1320
+ const containerIsTile = container.data.isTile;
1321
+ const previousItems = previousContainer.data.items;
1322
+ const containerItems = container.data.items;
1323
+ const { previousIndex, currentIndex } = event;
1324
+ if (previousContainer === container) {
1325
+ moveItemInArray(previousItems, previousIndex, currentIndex);
1326
+ if (containerIsTile) {
1327
+ this._saveOrderAppTiles(group);
1328
+ }
1329
+ else {
1330
+ this._saveOrderActionLinks(group);
1331
+ }
1332
+ }
1333
+ else {
1334
+ transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
1335
+ const appTileIdTransferedId = (_c = (_b = (_a = containerItems[currentIndex]) === null || _a === void 0 ? void 0 : _a.AppTile) === null || _b === void 0 ? void 0 : _b.Id) !== null && _c !== void 0 ? _c : containerItems[currentIndex].Id;
1336
+ if (containerIsTile) {
1337
+ this._saveOrderActionLinks(group);
1338
+ this._saveOrderAppTiles(group, appTileIdTransferedId);
1339
+ }
1340
+ else {
1341
+ this._saveOrderAppTiles(group);
1342
+ this._saveOrderActionLinks(group, appTileIdTransferedId);
1343
+ }
1344
+ }
1345
+ }
1346
+ onStackContentChanged(checked) {
1347
+ this.userStackContent = checked;
1348
+ }
1349
+ onExitEditHome(appTileGroups) {
1350
+ if (this.changedOrder) {
1351
+ this._tilesViewerService.saveAppGroupOrders(appTileGroups);
1352
+ this.changedOrder = false;
1353
+ }
1354
+ if (this.userStackContent !== this.initialStackContentValue) {
1355
+ this._tilesService.saveTilesStackContent(this.userStackContent);
1356
+ }
1357
+ this._setEditHome(false);
1358
+ }
1359
+ onCloseEditHome() {
1360
+ this._setEditHome(false);
1361
+ }
1362
+ onDelete(appTileGroup) {
1363
+ this._tilesViewerService.deleteAppGroup(appTileGroup);
1364
+ }
1365
+ onToggleShowHide(appTileGroup) {
1366
+ this._tilesViewerService.toggleAppGroupSettingVisible(appTileGroup);
1367
+ }
1368
+ onReset(appTileGroup) {
1369
+ this._tilesViewerService.resetAppGroup(appTileGroup);
1370
+ }
1371
+ onHideAppTile(appTile) {
1372
+ this._tilesViewerService.hideTile(appTile);
1373
+ }
1374
+ onRenameAppTile(appTile) {
1375
+ this._tilesViewerService.openRenameForm(appTile);
1376
+ }
1377
+ _setEditHome(val) {
1378
+ this._tilesService.setEditHome(val);
1379
+ }
1380
+ _saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
1381
+ const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
1382
+ this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
1383
+ }
1384
+ _saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
1385
+ const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
1386
+ this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
1387
+ }
1388
+ }
1389
+ TilesViewerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerContainerComponent, deps: [{ token: i1$2.PortalService }, { token: TilesService }, { token: TilesViewerService }], target: i0.ɵɵFactoryTarget.Component });
1390
+ TilesViewerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerContainerComponent, selector: "bt-tiles-viewer-container", providers: [TilesViewerService], usesInheritance: true, ngImport: i0, template: "<bt-tiles-viewer\r\n [appTileGroups]=\"(appTileGroups$ | async)!!\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [editHome]=\"(editHome$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "editHome", "stackContent", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "tilesDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
1392
+ type: Component,
1393
+ args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tiles-viewer\r\n [appTileGroups]=\"(appTileGroups$ | async)!!\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [editHome]=\"(editHome$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n", styles: [":host{display:block}\n"] }]
1394
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: TilesService }, { type: TilesViewerService }]; } });
1395
+
1396
+ class MicroTileChartBulletComponent extends BaseBtTileComponent {
1397
+ ngOnInit() {
1398
+ super.ngOnInit();
1399
+ this.target = this.settings.Target;
1400
+ this.value = this.settings.Value;
1401
+ this.range = this.settings.Range;
1402
+ this.forecast = this.settings.Forecast;
1403
+ this.suffix = this.settings.Suffix;
1404
+ this.separatorLines = this.settings.SeparatorLines;
1405
+ this.isDelta = this.settings.IsDelta;
1406
+ }
1407
+ }
1408
+ MicroTileChartBulletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBulletComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1409
+ MicroTileChartBulletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartBulletComponent, selector: "bt-micro-tile-chart-bullet", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-bullet\r\n *ngIf=\"double\"\r\n [target]=\"target\"\r\n [value]=\"value\"\r\n [range]=\"range\"\r\n [forecast]=\"forecast\"\r\n [isDelta]=\"isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n\r\n <be-micro-chart-bullet\r\n [target]=\"target\"\r\n [value]=\"value\"\r\n [range]=\"range\"\r\n [forecast]=\"forecast\"\r\n [isDelta]=\"double ? false : isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host ::ng-deep .fd-tile__content{display:flex;column-gap:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartBulletComponent, selector: "be-micro-chart-bullet", inputs: ["range", "value", "forecast", "target", "suffix", "separatorLines", "isDelta"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBulletComponent, decorators: [{
1411
+ type: Component,
1412
+ args: [{ selector: 'bt-micro-tile-chart-bullet', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-bullet\r\n *ngIf=\"double\"\r\n [target]=\"target\"\r\n [value]=\"value\"\r\n [range]=\"range\"\r\n [forecast]=\"forecast\"\r\n [isDelta]=\"isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n\r\n <be-micro-chart-bullet\r\n [target]=\"target\"\r\n [value]=\"value\"\r\n [range]=\"range\"\r\n [forecast]=\"forecast\"\r\n [isDelta]=\"double ? false : isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host ::ng-deep .fd-tile__content{display:flex;column-gap:20px}\n"] }]
1413
+ }] });
1414
+
1415
+ class NewsTileComponent extends BaseBtTileComponent {
1416
+ constructor(el, _renderer2, _cdr) {
1417
+ super(el, _renderer2, _cdr);
1418
+ this.el = el;
1419
+ this._renderer2 = _renderer2;
1420
+ this._cdr = _cdr;
1421
+ this.isStop = false;
1422
+ }
1423
+ get twoColumn() {
1424
+ return this.footer.TwoColumn;
1425
+ }
1426
+ ngOnInit() {
1427
+ super.ngOnInit();
1428
+ const slides = this.settings.Report.MoDataList;
1429
+ if (slides.length) {
1430
+ this._updateTile(slides[0]);
1431
+ interval(5000)
1432
+ .pipe(takeUntil(this._onDestroy$), tap(() => {
1433
+ if (!this.isStop) {
1434
+ this.carouselComponent.next();
1435
+ }
1436
+ }))
1437
+ .subscribe();
1438
+ }
1439
+ this.slides = slides;
1440
+ }
1441
+ trigger() {
1442
+ this.isStop = !this.isStop;
1443
+ }
1444
+ slideChange(activeSlide) {
1445
+ const currentSlide = activeSlide.activeItems[0].value;
1446
+ this._updateTile(currentSlide);
1447
+ }
1448
+ _updateTile(newsMo) {
1449
+ this.activeNews = newsMo;
1450
+ }
1451
+ }
1452
+ NewsTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NewsTileComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1453
+ NewsTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NewsTileComponent, selector: "bt-news-tile", viewQueries: [{ propertyName: "carouselComponent", first: true, predicate: CarouselComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<bt-tile [data]=\"data\" [type]=\"'launch'\" [footerTemplate]=\"newsFooter\" [editHome]=\"editHome\">\n <div fd-tile-content style=\"align-items: center; padding-top: 1rem\">\n <span>\n {{ activeNews?.Text }}\n </span>\n\n <div class=\"wrapper-carousel\">\n <div class=\"cover\"></div>\n <button *ngIf=\"isStop; else stop\" fd-button fdType=\"transparent\" glyph=\"play\" (click)=\"trigger()\"></button>\n <ng-template #stop>\n <button fd-button fdType=\"transparent\" glyph=\"pause\" (click)=\"trigger()\"></button>\n </ng-template>\n <fd-carousel\n *ngIf=\"slides && slides.length\"\n carouselIndicatorsOrientation=\"top\"\n [slideTransitionDuration]=\"1000\"\n (slideChange)=\"slideChange($event)\"\n [loop]=\"true\"\n [navigation]=\"false\"\n width=\"100%\"\n >\n <fd-carousel-item *ngFor=\"let slide of slides\" [value]=\"slide\">\n <img\n [src]=\"slide.Img ? (slide.Img.FileId | picFieldSrc: 'ID':null:slide.Img.FileId:335:170) : ''\"\n />\n </fd-carousel-item>\n </fd-carousel>\n </div>\n </div>\n</bt-tile>\n\n<!-- tile footer-->\n<ng-template #newsFooter>\n <div fd-tile-footer [twoColumn]=\"twoColumn\" *untilInView=\"el\">\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\n <div fd-tile-section>\n <span fd-tile-footer-text>{{ activeNews?.Footer1 }}</span>\n </div>\n <div fd-tile-section>\n <span fd-tile-footer-text>{{ activeNews?.Footer2 }}</span>\n </div>\n </ng-container>\n <ng-template #oneColumn>\n <span fd-tile-footer-text>{{ activeNews?.Footer1 }}</span>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:block}:host bt-tile{position:relative}:host bt-tile .wrapper-carousel{position:absolute;top:0;width:100%;height:100%;left:0;z-index:0}:host bt-tile .wrapper-carousel img{width:335px;height:165px;object-fit:cover}:host ::ng-deep span{z-index:3;color:#fff}:host ::ng-deep button{position:absolute;right:15px;top:15px;display:none}:host ::ng-deep button fd-icon{z-index:4;min-width:1.5rem!important;font-size:1.5rem!important;color:#fff!important}:host ::ng-deep .fd-carousel__content{z-index:3}:host ::ng-deep .fd-carousel__page-indicator-container{position:absolute;bottom:0;display:none;background-color:transparent}:host ::ng-deep .fd-carousel__page-indicator-container ol{z-index:5}:host ::ng-deep .fd-carousel__page-indicator-container ol li{background-color:#dad7d7}:host ::ng-deep .fd-carousel__page-indicator-container ol li.fd-carousel__page-indicator--active{background-color:#fff}:host .cover{background-color:#064079d9;position:absolute;bottom:0;left:0;right:0;height:50%;z-index:4;opacity:.6}:host:hover ::ng-deep .fd-carousel__page-indicator-container{display:inherit}:host:hover ::ng-deep button{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3$2.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "leftNavigationBtnLabel", "rightNavigationBtnLabel", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i3$2.CarouselItemComponent, selector: "fd-carousel-item", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "loading", "title", "initialHeight", "initialWidth", "value"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileFooterDirective, selector: "[fdTileFooter], [fd-tile-footer]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileSectionDirective, selector: "[fdTileSection], [fd-tile-section]" }, { kind: "directive", type: i1$1.TileFooterTextDirective, selector: "[fdTileFooterText], [fd-tile-footer-text]" }, { kind: "directive", type: i1$2.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i1$2.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NewsTileComponent, decorators: [{
1455
+ type: Component,
1456
+ args: [{ selector: 'bt-news-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile [data]=\"data\" [type]=\"'launch'\" [footerTemplate]=\"newsFooter\" [editHome]=\"editHome\">\n <div fd-tile-content style=\"align-items: center; padding-top: 1rem\">\n <span>\n {{ activeNews?.Text }}\n </span>\n\n <div class=\"wrapper-carousel\">\n <div class=\"cover\"></div>\n <button *ngIf=\"isStop; else stop\" fd-button fdType=\"transparent\" glyph=\"play\" (click)=\"trigger()\"></button>\n <ng-template #stop>\n <button fd-button fdType=\"transparent\" glyph=\"pause\" (click)=\"trigger()\"></button>\n </ng-template>\n <fd-carousel\n *ngIf=\"slides && slides.length\"\n carouselIndicatorsOrientation=\"top\"\n [slideTransitionDuration]=\"1000\"\n (slideChange)=\"slideChange($event)\"\n [loop]=\"true\"\n [navigation]=\"false\"\n width=\"100%\"\n >\n <fd-carousel-item *ngFor=\"let slide of slides\" [value]=\"slide\">\n <img\n [src]=\"slide.Img ? (slide.Img.FileId | picFieldSrc: 'ID':null:slide.Img.FileId:335:170) : ''\"\n />\n </fd-carousel-item>\n </fd-carousel>\n </div>\n </div>\n</bt-tile>\n\n<!-- tile footer-->\n<ng-template #newsFooter>\n <div fd-tile-footer [twoColumn]=\"twoColumn\" *untilInView=\"el\">\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\n <div fd-tile-section>\n <span fd-tile-footer-text>{{ activeNews?.Footer1 }}</span>\n </div>\n <div fd-tile-section>\n <span fd-tile-footer-text>{{ activeNews?.Footer2 }}</span>\n </div>\n </ng-container>\n <ng-template #oneColumn>\n <span fd-tile-footer-text>{{ activeNews?.Footer1 }}</span>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:block}:host bt-tile{position:relative}:host bt-tile .wrapper-carousel{position:absolute;top:0;width:100%;height:100%;left:0;z-index:0}:host bt-tile .wrapper-carousel img{width:335px;height:165px;object-fit:cover}:host ::ng-deep span{z-index:3;color:#fff}:host ::ng-deep button{position:absolute;right:15px;top:15px;display:none}:host ::ng-deep button fd-icon{z-index:4;min-width:1.5rem!important;font-size:1.5rem!important;color:#fff!important}:host ::ng-deep .fd-carousel__content{z-index:3}:host ::ng-deep .fd-carousel__page-indicator-container{position:absolute;bottom:0;display:none;background-color:transparent}:host ::ng-deep .fd-carousel__page-indicator-container ol{z-index:5}:host ::ng-deep .fd-carousel__page-indicator-container ol li{background-color:#dad7d7}:host ::ng-deep .fd-carousel__page-indicator-container ol li.fd-carousel__page-indicator--active{background-color:#fff}:host .cover{background-color:#064079d9;position:absolute;bottom:0;left:0;right:0;height:50%;z-index:4;opacity:.6}:host:hover ::ng-deep .fd-carousel__page-indicator-container{display:inherit}:host:hover ::ng-deep button{display:inline-flex}\n"] }]
1457
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselComponent: [{
1458
+ type: ViewChild,
1459
+ args: [CarouselComponent]
1460
+ }] } });
1461
+
1462
+ class MicroTileChartComparisonComponent extends BaseBtTileComponent {
1463
+ constructor() {
1464
+ super(...arguments);
1465
+ this.chartData = {
1466
+ data: [
1467
+ { value: 5, color: '#de890d', label: 'تاخیر' },
1468
+ {
1469
+ value: 45,
1470
+ color: '#dc0d0e',
1471
+ label: 'هم اکنون'
1472
+ },
1473
+ { value: 100, color: '#3fa45b', label: 'به موقع' }
1474
+ ],
1475
+ suffix: '%'
1476
+ };
1477
+ }
1478
+ }
1479
+ MicroTileChartComparisonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartComparisonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1480
+ MicroTileChartComparisonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartComparisonComponent, selector: "bt-micro-tile-chart-comparison", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-comparison [data]=\"chartData\" [size]=\"double ? 'l' : 's'\"></be-micro-chart-comparison>\r\n </div>\r\n</bt-tile>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartComparisonComponent, selector: "be-micro-chart-comparison", inputs: ["data", "size"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartComparisonComponent, decorators: [{
1482
+ type: Component,
1483
+ args: [{ selector: 'bt-micro-tile-chart-comparison', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-comparison [data]=\"chartData\" [size]=\"double ? 'l' : 's'\"></be-micro-chart-comparison>\r\n </div>\r\n</bt-tile>\r\n" }]
1484
+ }] });
1485
+
1486
+ class MicroTileChartStackbarComponent extends BaseBtTileComponent {
1487
+ constructor() {
1488
+ super(...arguments);
1489
+ this.charData = {
1490
+ data: [
1491
+ { value: 20, color: '#3fa45b' },
1492
+ { value: 30, color: '#e9730c' },
1493
+ { value: 50, color: '#dc0d0e' }
1494
+ ],
1495
+ suffix: '%'
1496
+ };
1497
+ }
1498
+ }
1499
+ MicroTileChartStackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartStackbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1500
+ MicroTileChartStackbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartStackbarComponent, selector: "bt-micro-tile-chart-stackbar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-stackbar [data]=\"charData\"></be-micro-chart-stackbar>\r\n </div>\r\n</bt-tile>\r\n", styles: [".chart{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartStackbarComponent, selector: "be-micro-chart-stackbar", inputs: ["data"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartStackbarComponent, decorators: [{
1502
+ type: Component,
1503
+ args: [{ selector: 'bt-micro-tile-chart-stackbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-stackbar [data]=\"charData\"></be-micro-chart-stackbar>\r\n </div>\r\n</bt-tile>\r\n", styles: [".chart{width:100%}\n"] }]
1504
+ }] });
1505
+
1506
+ class MicroTileChartLineComponent extends BaseBtTileComponent {
1507
+ constructor() {
1508
+ super(...arguments);
1509
+ this.chartData = {
1510
+ data: [
1511
+ { value: 2, label: '1 آبان' },
1512
+ { value: 4, label: 'آبان 20' },
1513
+ {
1514
+ value: 3,
1515
+ label: 'آبان 27'
1516
+ },
1517
+ { value: 5, label: 'آبان 30' }
1518
+ ],
1519
+ color: '',
1520
+ suffix: 'M'
1521
+ };
1522
+ }
1523
+ }
1524
+ MicroTileChartLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartLineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1525
+ MicroTileChartLineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartLineComponent, selector: "bt-micro-tile-chart-line", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-line [line]=\"chartData\"></be-micro-chart-line>\r\n </div>\r\n</bt-tile>\r\n", styles: ["be-micro-chart-bar{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartLineComponent, selector: "be-micro-chart-line", inputs: ["line"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartLineComponent, decorators: [{
1527
+ type: Component,
1528
+ args: [{ selector: 'bt-micro-tile-chart-line', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-line [line]=\"chartData\"></be-micro-chart-line>\r\n </div>\r\n</bt-tile>\r\n", styles: ["be-micro-chart-bar{display:flex;flex-direction:column}\n"] }]
1529
+ }] });
1530
+
1531
+ class MicroTileChartCircularComponent extends BaseBtTileComponent {
1532
+ constructor() {
1533
+ super(...arguments);
1534
+ this.chartData = 70;
1535
+ }
1536
+ }
1537
+ MicroTileChartCircularComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartCircularComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1538
+ MicroTileChartCircularComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartCircularComponent, selector: "bt-micro-tile-chart-circular", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-circular [data]=\"chartData\"></be-micro-chart-circular>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartCircularComponent, selector: "be-micro-chart-circular", inputs: ["data"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartCircularComponent, decorators: [{
1540
+ type: Component,
1541
+ args: [{ selector: 'bt-micro-tile-chart-circular', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-circular [data]=\"chartData\"></be-micro-chart-circular>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}\n"] }]
1542
+ }] });
1543
+
1544
+ class MicroTileChartAreaComponent extends BaseBtTileComponent {
1545
+ constructor() {
1546
+ super(...arguments);
1547
+ this.chartData = {
1548
+ areas: [
1549
+ { data: [2.5, 2.5, 2.5, 2.5], color: '#3fa45b' },
1550
+ {
1551
+ data: [2, 2, 2, 2],
1552
+ color: '#e9730c'
1553
+ },
1554
+ { data: [1.5, 1.5, 1.5, 1.5], color: '#dc0d0e' }
1555
+ ],
1556
+ line: {
1557
+ data: [
1558
+ { value: 2, label: 'june 1' },
1559
+ { value: 4, label: 'june 20' },
1560
+ { value: 3, label: 'june 27' },
1561
+ { value: 5, label: 'june 30' }
1562
+ ],
1563
+ suffix: 'M'
1564
+ },
1565
+ firstValueColor: '#3fa45b',
1566
+ lastValueColor: '#dc0d0e'
1567
+ };
1568
+ }
1569
+ }
1570
+ MicroTileChartAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1571
+ MicroTileChartAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartAreaComponent, selector: "bt-micro-tile-chart-area", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-area\r\n [style.flex-direction]=\"double ? 'row' : 'column'\"\r\n [chartData]=\"chartData\"\r\n [size]=\"double ? 'l' : 's'\"\r\n ></be-micro-chart-area>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}be-micro-chart-area{display:flex}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartAreaComponent, selector: "be-micro-chart-area", inputs: ["size", "chartData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartAreaComponent, decorators: [{
1573
+ type: Component,
1574
+ args: [{ selector: 'bt-micro-tile-chart-area', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-area\r\n [style.flex-direction]=\"double ? 'row' : 'column'\"\r\n [chartData]=\"chartData\"\r\n [size]=\"double ? 'l' : 's'\"\r\n ></be-micro-chart-area>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}be-micro-chart-area{display:flex}\n"] }]
1575
+ }] });
1576
+
1577
+ class MicroTileChartBarComponent extends BaseBtTileComponent {
1578
+ constructor() {
1579
+ super(...arguments);
1580
+ this.chartData = [
1581
+ { value: 5, color: '#dc0d0e', label: 'q1' },
1582
+ { value: 10, color: '#dc0d0e', label: 'q4' },
1583
+ { value: 20, color: '#e9730c', label: 'q2' },
1584
+ { value: 36, color: '#3fa45b', label: 'q3' }
1585
+ ];
1586
+ this.extraData = {
1587
+ value: 1.8,
1588
+ suffix: 'M'
1589
+ };
1590
+ }
1591
+ }
1592
+ MicroTileChartBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1593
+ MicroTileChartBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: MicroTileChartBarComponent, selector: "bt-micro-tile-chart-bar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-bar [data]=\"chartData\" [size]=\"double ? 'l' : 's'\" [extraData]=\"extraData\"></be-micro-chart-bar>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartBarComponent, selector: "be-micro-chart-bar", inputs: ["data", "size", "extraData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBarComponent, decorators: [{
1595
+ type: Component,
1596
+ args: [{ selector: 'bt-micro-tile-chart-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <be-micro-chart-bar [data]=\"chartData\" [size]=\"double ? 'l' : 's'\" [extraData]=\"extraData\"></be-micro-chart-bar>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}\n"] }]
1597
+ }] });
1598
+
1599
+ class CreateAppGroupComponent extends BaseComponent {
1600
+ constructor(fb, dialogRef, bbbPipe) {
1601
+ super();
1602
+ this.fb = fb;
1603
+ this.dialogRef = dialogRef;
1604
+ this.bbbPipe = bbbPipe;
1605
+ }
1606
+ ngOnInit() {
1607
+ super.ngOnInit();
1608
+ this.appGroupForm = this.fb.group({
1609
+ title: new UntypedFormControl(this.title, [Validators.required])
1610
+ });
1611
+ const mandatoryFieldText = this.bbbPipe.transform('AlertFieldIsMandatory');
1612
+ const titleText = this.bbbPipe.transform('Title');
1613
+ this.RequiredText = mandatoryFieldText.replace('{0}', titleText);
1614
+ }
1615
+ onSave() {
1616
+ this.submitted = true;
1617
+ if (this.appGroupForm.valid) {
1618
+ this.dialogRef.close(this.title);
1619
+ }
1620
+ }
1621
+ }
1622
+ CreateAppGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CreateAppGroupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1$4.DialogRef }, { token: i1$2.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Component });
1623
+ CreateAppGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: CreateAppGroupComponent, selector: "bt-create-app-group", usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ dialogRef.data.title }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialogRef.dismiss()\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div fd-form-item [formGroup]=\"appGroupForm\">\r\n <label fd-form-label [required]=\"true\"> {{ 'Title' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group\r\n class=\"form-control\"\r\n formControlName=\"title\"\r\n form-control\r\n [button]=\"true\"\r\n [(ngModel)]=\"title\"\r\n [state]=\"submitted && appGroupForm.controls.title.errors ? 'error' : 'information'\"\r\n >\r\n </fd-input-group>\r\n <fd-form-message *ngIf=\"submitted && appGroupForm.controls.title.errors\" type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n </fd-form-input-message-group>\r\n </div>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <fd-button-bar [label]=\"'Save' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onSave()\"> </fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n fdInitialFocus\r\n fdType=\"transparent\"\r\n (click)=\"this.dialogRef.dismiss()\"\r\n >\r\n </fd-button-bar>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i6$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i6$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i6$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: i7$1.InputGroupComponent, selector: "fd-input-group", inputs: ["inputTemplate", "placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledby", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i8$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i8$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8$1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1624
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CreateAppGroupComponent, decorators: [{
1625
+ type: Component,
1626
+ args: [{ selector: 'bt-create-app-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ dialogRef.data.title }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialogRef.dismiss()\"></button>\r\n </fd-dialog-header>\r\n\r\n <fd-dialog-body>\r\n <div fd-form-item [formGroup]=\"appGroupForm\">\r\n <label fd-form-label [required]=\"true\"> {{ 'Title' | bbbTranslate }}</label>\r\n <fd-form-input-message-group>\r\n <fd-input-group\r\n class=\"form-control\"\r\n formControlName=\"title\"\r\n form-control\r\n [button]=\"true\"\r\n [(ngModel)]=\"title\"\r\n [state]=\"submitted && appGroupForm.controls.title.errors ? 'error' : 'information'\"\r\n >\r\n </fd-input-group>\r\n <fd-form-message *ngIf=\"submitted && appGroupForm.controls.title.errors\" type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n </fd-form-input-message-group>\r\n </div>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <fd-button-bar [label]=\"'Save' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onSave()\"> </fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n fdInitialFocus\r\n fdType=\"transparent\"\r\n (click)=\"this.dialogRef.dismiss()\"\r\n >\r\n </fd-button-bar>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n" }]
1627
+ }], ctorParameters: function () { return [{ type: i1$3.UntypedFormBuilder }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; } });
1628
+
1629
+ class PinTileComponent extends BaseComponent {
1630
+ constructor(_dialogService, _dialogRef, bbbPipe) {
1631
+ super();
1632
+ this._dialogService = _dialogService;
1633
+ this._dialogRef = _dialogRef;
1634
+ this.bbbPipe = bbbPipe;
1635
+ this.newGroupText = BarsaApi.LoginFormData.IsRtl
1636
+ ? this.bbbPipe.transform('Groups') + ' ' + this.bbbPipe.transform('New')
1637
+ : this.bbbPipe.transform('New') + ' ' + this.bbbPipe.transform('Groups');
1638
+ this.app = _dialogRef.data.app;
1639
+ this.appTileGroups = _dialogRef.data.appTileGroups;
1640
+ this.pinnedAppInTileGroups = _dialogRef.data.pinnedAppInTileGroups;
1641
+ }
1642
+ ngOnInit() {
1643
+ this._setLoading(true);
1644
+ const tileGroupsId = this.pinnedAppInTileGroups[this.app.Id];
1645
+ this.appTileGroups.forEach((appGroup) => {
1646
+ this._setDefaultPinTile(appGroup, tileGroupsId);
1647
+ });
1648
+ this._setLoading(false);
1649
+ }
1650
+ onAccept() {
1651
+ const appTileGroupsPin = [];
1652
+ this.appTileGroups.forEach((group) => {
1653
+ this._getChangedPinTileGroups(group, appTileGroupsPin);
1654
+ });
1655
+ this._close({ appTileGroupsPin, app: this.app });
1656
+ }
1657
+ onClose() {
1658
+ this._close();
1659
+ }
1660
+ onNewGroup() {
1661
+ this.newGroupDialogRef = this._dialogService.open(CreateAppGroupComponent, {
1662
+ data: { title: this.newGroupText },
1663
+ verticalPadding: true,
1664
+ mobile: this.mobile,
1665
+ responsivePadding: true
1666
+ });
1667
+ this.newGroupDialogRef.afterClosed.subscribe(() => {
1668
+ // if (result) {
1669
+ // this.dialogRef.loading(true);
1670
+ // this.tilesService
1671
+ // .createAppGroup(result)
1672
+ // .pipe(
1673
+ // takeUntil(this._onDestroy$),
1674
+ // finalize(() => {
1675
+ // this.dialogRef.loading(false);
1676
+ // })
1677
+ // )
1678
+ // .subscribe();
1679
+ // }
1680
+ });
1681
+ }
1682
+ _setLoading(loading) {
1683
+ this._dialogRef.loading(loading);
1684
+ }
1685
+ _setDefaultPinTile(appTileGroup, tileGroupsId) {
1686
+ var _a, _b;
1687
+ appTileGroup.$PinTile = appTileGroup.$DefaultPinTile =
1688
+ tileGroupsId.includes(appTileGroup.Id) || tileGroupsId.includes((_a = appTileGroup.UserAppTileGroupSetting) === null || _a === void 0 ? void 0 : _a.Id);
1689
+ (_b = appTileGroup.$Children) === null || _b === void 0 ? void 0 : _b.forEach((subGroup) => {
1690
+ this._setDefaultPinTile(subGroup, tileGroupsId);
1691
+ });
1692
+ appTileGroup.$Disabledpin = false;
1693
+ }
1694
+ _getChangedPinTileGroups(appTileGroup, appTileGroupsPin) {
1695
+ var _a;
1696
+ if (appTileGroup.$PinTile && !appTileGroup.$DefaultPinTile) {
1697
+ // Add
1698
+ appTileGroupsPin.push({ appTileGroup, visible: true });
1699
+ }
1700
+ else if (appTileGroup.$PinTile === false && appTileGroup.$DefaultPinTile) {
1701
+ // Remove
1702
+ appTileGroupsPin.push({ appTileGroup, visible: false });
1703
+ }
1704
+ (_a = appTileGroup.$Children) === null || _a === void 0 ? void 0 : _a.forEach((subGroup) => {
1705
+ this._getChangedPinTileGroups(subGroup, appTileGroupsPin);
1706
+ });
1707
+ }
1708
+ _close(result) {
1709
+ this._dialogRef.close(result);
1710
+ }
1711
+ }
1712
+ PinTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PinTileComponent, deps: [{ token: i1$4.DialogService }, { token: i1$4.DialogRef }, { token: i1$2.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Component });
1713
+ PinTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: PinTileComponent, selector: "bt-pin-tile", inputs: { app: "app", appTileGroups: "appTileGroups", mobile: "mobile", pin: "pin" }, usesInheritance: true, ngImport: i0, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'AddToList' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ul fd-list [navigationIndicator]=\"true\" style=\"margin-bottom: 1rem\">\r\n <li fd-list-item [navigationIndicator]=\"true\" (click)=\"onNewGroup()\">\r\n <fd-icon glyph=\"add\"></fd-icon><span fd-list-title>{{ newGroupText }}</span>\r\n </li>\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups\">\r\n <li *ngIf=\"!appTileGroup.$Disabledpin\" fd-list-item [selected]=\"appTileGroup.$PinTile\">\r\n <fd-checkbox [(ngModel)]=\"appTileGroup.$PinTile\"></fd-checkbox>\r\n <span fd-list-title>{{ appTileGroup.navigatorTitle || appTileGroup.Title }}</span>\r\n </li>\r\n <ng-container *ngFor=\"let subGroup of appTileGroup.$Children\">\r\n <li *ngIf=\"!subGroup.$Disabledpin\" fd-list-item [selected]=\"subGroup.$PinTile\">\r\n <fd-checkbox [(ngModel)]=\"subGroup.$PinTile\"></fd-checkbox>\r\n <span fd-list-title>{{ subGroup.navigatorTitle || subGroup.Title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fd-initial-focus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar\r\n fd-initial-focus\r\n fdType=\"transparent\"\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onClose()\"\r\n >\r\n </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [":host ::ng-deep .cdk-drag{cursor:default!important}:host *{cursor:default!important}li{cursor:pointer}fd-dialog-body,fd-dialog-footer,fd-dialog-header{cursor:default}fd-icon{padding:0 5px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i5$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i5$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6$3.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values"], outputs: ["focusChange"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i8$1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8$1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8$1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i8$1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "directive", type: i10.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PinTileComponent, decorators: [{
1715
+ type: Component,
1716
+ args: [{ selector: 'bt-pin-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dialog>\r\n <fd-dialog-header>\r\n <h1 fd-title>{{ 'AddToList' | bbbTranslate }}</h1>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ul fd-list [navigationIndicator]=\"true\" style=\"margin-bottom: 1rem\">\r\n <li fd-list-item [navigationIndicator]=\"true\" (click)=\"onNewGroup()\">\r\n <fd-icon glyph=\"add\"></fd-icon><span fd-list-title>{{ newGroupText }}</span>\r\n </li>\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups\">\r\n <li *ngIf=\"!appTileGroup.$Disabledpin\" fd-list-item [selected]=\"appTileGroup.$PinTile\">\r\n <fd-checkbox [(ngModel)]=\"appTileGroup.$PinTile\"></fd-checkbox>\r\n <span fd-list-title>{{ appTileGroup.navigatorTitle || appTileGroup.Title }}</span>\r\n </li>\r\n <ng-container *ngFor=\"let subGroup of appTileGroup.$Children\">\r\n <li *ngIf=\"!subGroup.$Disabledpin\" fd-list-item [selected]=\"subGroup.$PinTile\">\r\n <fd-checkbox [(ngModel)]=\"subGroup.$PinTile\"></fd-checkbox>\r\n <span fd-list-title>{{ subGroup.navigatorTitle || subGroup.Title }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fd-initial-focus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar\r\n fd-initial-focus\r\n fdType=\"transparent\"\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onClose()\"\r\n >\r\n </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>\r\n", styles: [":host ::ng-deep .cdk-drag{cursor:default!important}:host *{cursor:default!important}li{cursor:pointer}fd-dialog-body,fd-dialog-footer,fd-dialog-header{cursor:default}fd-icon{padding:0 5px}\n"] }]
1717
+ }], ctorParameters: function () { return [{ type: i1$4.DialogService }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; }, propDecorators: { app: [{
1718
+ type: Input
1719
+ }], appTileGroups: [{
1720
+ type: Input
1721
+ }], mobile: [{
1722
+ type: Input
1723
+ }], pin: [{
1724
+ type: Input
1725
+ }] } });
1726
+
1727
+ class AppFinderService {
1728
+ constructor(_portalService, _tileService) {
1729
+ this._portalService = _portalService;
1730
+ this._tileService = _tileService;
1731
+ this._appGroupsSource = new BehaviorSubject([]);
1732
+ this._OnDestroy$ = new Subject();
1733
+ this._selectedAppGroupIdSource = new Subject();
1734
+ this._pinnedAppInAppTileGroupsSource = new BehaviorSubject({});
1735
+ this.loadAppGroups();
1736
+ this.deviceSize$ = this._tileService.deviceSize$;
1737
+ this.pinnedAppInAppTileGroups$ = this._pinnedAppInAppTileGroupsSource.asObservable();
1738
+ this.appGroups$ = this._appGroupsSource.asObservable();
1739
+ this.selectedAppGroupId$ = this._selectedAppGroupIdSource.asObservable().pipe(distinctUntilChanged());
1740
+ this.selectedAppGroup$ = combineLatest([this.appGroups$, this.selectedAppGroupId$]).pipe(map(([moDataList, selectedId]) => moDataList === null || moDataList === void 0 ? void 0 : moDataList.find((c) => c.Id === selectedId)));
1741
+ }
1742
+ get deviceSize() {
1743
+ return this._portalService.deviceSize;
1744
+ }
1745
+ get appTileGroups() {
1746
+ var _a;
1747
+ return (_a = this._tileService.appTileGroups) === null || _a === void 0 ? void 0 : _a.MoDataList;
1748
+ }
1749
+ ngOnDestroy() {
1750
+ this._OnDestroy$.next();
1751
+ }
1752
+ loadAppGroups() {
1753
+ this._portalService
1754
+ .ReportExecute('UserAppGroups')
1755
+ .subscribe((allApps) => this._nextAllApps(allApps.MoDataList));
1756
+ }
1757
+ selectAppGroup(appGroupId) {
1758
+ const appGroups = this._appGroupsSource.getValue();
1759
+ const group = appGroups.find((c) => c.Id === appGroupId);
1760
+ if (group) {
1761
+ this._selectedAppGroupIdSource.next(appGroupId);
1762
+ this.loadAppsByAppGroup(appGroups, group);
1763
+ }
1764
+ }
1765
+ loadAppsByAppGroup(appGroups, appGroup) {
1766
+ var _a;
1767
+ if (appGroup.Apps) {
1768
+ return;
1769
+ }
1770
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('LoadAppsByAppGroup', appGroup.Id);
1771
+ const moForReport = reportWrapper.Unwrap();
1772
+ appGroup.Apps = (_a = appGroup.Apps) !== null && _a !== void 0 ? _a : [];
1773
+ const apps = moForReport.MoDataList;
1774
+ if (apps.length > 0) {
1775
+ const customColumns = Object.keys(apps[0]).filter((c) => c.indexOf('$Caption') > -1 && !c.startsWith('$'));
1776
+ apps.forEach((app) => {
1777
+ customColumns.forEach((column) => {
1778
+ app.$HasPinned = app.$HasPinned || Number(app[column.split('$Caption')[0]]);
1779
+ });
1780
+ });
1781
+ }
1782
+ appGroup.Apps = [...appGroup.Apps, ...apps];
1783
+ this._nextAllApps(appGroups);
1784
+ }
1785
+ loadPinnedAppInTileGroups(app) {
1786
+ var _a;
1787
+ const appId = app.Id;
1788
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
1789
+ if (val[appId]) {
1790
+ return val;
1791
+ }
1792
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('PinnedAppInTileGroups', appId);
1793
+ const moForReport = reportWrapper.Unwrap();
1794
+ val[appId] = (_a = val[appId]) !== null && _a !== void 0 ? _a : [];
1795
+ const apps = moForReport.MoDataList;
1796
+ if (apps.length > 0) {
1797
+ apps.forEach((itemApp) => {
1798
+ var _a;
1799
+ const predefined = itemApp.Id.Id;
1800
+ const userSetting = (_a = itemApp.UserAppTileGroupSetting) === null || _a === void 0 ? void 0 : _a.Id;
1801
+ if (predefined) {
1802
+ val[appId] = [...val[appId], predefined];
1803
+ }
1804
+ if (userSetting) {
1805
+ val[appId] = [...val[appId], userSetting];
1806
+ }
1807
+ });
1808
+ }
1809
+ this._pinnedAppInAppTileGroupsSource.next(val);
1810
+ return val;
1811
+ }
1812
+ pinTileChanged(appTileGroups, app, callback) {
1813
+ this._tileService.pinTileChanged(appTileGroups, app, (settings) => {
1814
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
1815
+ const appId = app.Id;
1816
+ for (let i = 0; i < appTileGroups.length; i++) {
1817
+ const appTileSetting = settings[i];
1818
+ const appTileGroupSettingId = appTileSetting.UserAppTileGroupSettingId;
1819
+ const appTileGroupId = appTileSetting.AppTileGroupId;
1820
+ if (appTileGroups[i].visible) {
1821
+ val[appId] = [...val[appId], appTileGroupSettingId, appTileGroupId];
1822
+ }
1823
+ else {
1824
+ val[appId] = val[appId].filter((c) => c !== appTileGroupSettingId && c !== appTileGroupId);
1825
+ }
1826
+ }
1827
+ this._pinnedAppInAppTileGroupsSource.next(Object.assign({}, val));
1828
+ callback();
1829
+ });
1830
+ }
1831
+ _nextAllApps(appGroups) {
1832
+ const newAppGroups = appGroups !== null && appGroups !== void 0 ? appGroups : this._appGroupsSource.getValue();
1833
+ this._appGroupsSource.next([...newAppGroups]);
1834
+ }
1835
+ }
1836
+ AppFinderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, deps: [{ token: i1$2.PortalService }, { token: TilesService }], target: i0.ɵɵFactoryTarget.Injectable });
1837
+ AppFinderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, providedIn: 'root' });
1838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, decorators: [{
1839
+ type: Injectable,
1840
+ args: [{
1841
+ providedIn: 'root'
1842
+ }]
1843
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: TilesService }]; } });
1844
+
1845
+ class FormAppFinderComponent extends BaseComponent {
1846
+ constructor(_cdr, _dialogService, _appFinderService, _el, _contentDensityService) {
1847
+ super();
1848
+ this._cdr = _cdr;
1849
+ this._dialogService = _dialogService;
1850
+ this._appFinderService = _appFinderService;
1851
+ this._el = _el;
1852
+ this.isAllSelected = true;
1853
+ this.contentDensity$ = _contentDensityService.contentDensity.asObservable();
1854
+ this.appGroups$ = this._appFinderService.appGroups$;
1855
+ this.selectedAppGroup$ = this._appFinderService.selectedAppGroup$;
1856
+ this.selectedAppGroupId$ = this._appFinderService.selectedAppGroupId$;
1857
+ this.deviceSize$ = this._appFinderService.deviceSize$;
1858
+ this.pinnedAppInAppTileGroups$ = this._appFinderService.pinnedAppInAppTileGroups$;
1859
+ this.mobile$ = this.deviceSize$.pipe(map((c) => c === 's'));
1860
+ }
1861
+ ngOnInit() {
1862
+ super.ngOnInit();
1863
+ this.contentHeight = 'calc(' + this._el.nativeElement.offsetHeight + 'px - 2.75rem)';
1864
+ this.sideContentSize$ = this.deviceSize$.pipe(takeUntil(this._onDestroy$), map((deviceSize) => {
1865
+ switch (deviceSize) {
1866
+ case 's':
1867
+ return 'sm';
1868
+ case 'm':
1869
+ return 'md';
1870
+ case 'l':
1871
+ return 'lg';
1872
+ case 'xl':
1873
+ return 'xl';
1874
+ default:
1875
+ return 'l';
1876
+ }
1877
+ }));
1878
+ }
1879
+ onSelectedAppGroupChange(appGroupId) {
1880
+ this._changeGroup(appGroupId);
1881
+ }
1882
+ onPinClick(app) {
1883
+ const pinnedAppInTileGroups = this._appFinderService.loadPinnedAppInTileGroups(app);
1884
+ const appTileGroups = this._appFinderService.appTileGroups;
1885
+ const deviceSize = this._appFinderService.deviceSize;
1886
+ const mobile = deviceSize === 's';
1887
+ this._dialogService
1888
+ .open(PinTileComponent, {
1889
+ data: { app, pinnedAppInTileGroups, appTileGroups },
1890
+ minWidth: '350px',
1891
+ minHeight: '420px',
1892
+ draggable: false,
1893
+ mobile,
1894
+ resizable: false,
1895
+ verticalPadding: false,
1896
+ backdropClickCloseable: false
1897
+ })
1898
+ .afterClosed.subscribe((result) => {
1899
+ this._appTileGroupsPinChange(result);
1900
+ });
1901
+ }
1902
+ onRefresh() { }
1903
+ _appTileGroupsPinChange(result) {
1904
+ return __awaiter(this, void 0, void 0, function* () {
1905
+ try {
1906
+ // Will try to ask for permission
1907
+ this._appFinderService.pinTileChanged(result.appTileGroupsPin, result.app, () => {
1908
+ this._cdr.detectChanges();
1909
+ });
1910
+ }
1911
+ catch (err) {
1912
+ // show msg error
1913
+ }
1914
+ finally {
1915
+ // show toast successful
1916
+ }
1917
+ });
1918
+ }
1919
+ _changeGroup(appGroupId) {
1920
+ this.isAllSelected = false;
1921
+ this._appFinderService.selectAppGroup(appGroupId);
1922
+ this._cdr.detectChanges();
1923
+ }
1924
+ }
1925
+ FormAppFinderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormAppFinderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$4.DialogService }, { token: AppFinderService }, { token: i0.ElementRef }, { token: i1$4.ContentDensityService }], target: i0.ɵɵFactoryTarget.Component });
1926
+ FormAppFinderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormAppFinderComponent, selector: "bt-form-app-finder", usesInheritance: true, ngImport: i0, template: "<bt-app-finder\n [appGroups]=\"(appGroups$ | async)!!\"\n [selectedAppGroupId]=\"(selectedAppGroupId$ | async)!!\"\n [selectedAppGroup]=\"(selectedAppGroup$ | async)!!\"\n [mobile]=\"(mobile$ | async)!!\"\n [sideContentSize]=\"(sideContentSize$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [contentDensity]=\"(contentDensity$ | async) ?? 'compact'\"\n [pinnedAppInAppTileGroups]=\"(pinnedAppInAppTileGroups$ | async)!!\"\n [contentHeight]=\"contentHeight\"\n (selectedAppGroupIdChange)=\"onSelectedAppGroupChange($event)\"\n (pinClick)=\"onPinClick($event)\"\n>\n</bt-app-finder>\n", styles: [":host{display:block;min-height:100vh}\n"], dependencies: [{ kind: "component", type: AppFinderComponent, selector: "bt-app-finder", inputs: ["appGroups", "deviceSize", "sideContentSize", "selectedAppGroup", "selectedAppGroupId", "mobile", "contentDensity", "contentHeight", "pinnedAppInAppTileGroups"], outputs: ["pinClick", "selectedAppGroupIdChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1927
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormAppFinderComponent, decorators: [{
1928
+ type: Component,
1929
+ args: [{ selector: 'bt-form-app-finder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-app-finder\n [appGroups]=\"(appGroups$ | async)!!\"\n [selectedAppGroupId]=\"(selectedAppGroupId$ | async)!!\"\n [selectedAppGroup]=\"(selectedAppGroup$ | async)!!\"\n [mobile]=\"(mobile$ | async)!!\"\n [sideContentSize]=\"(sideContentSize$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [contentDensity]=\"(contentDensity$ | async) ?? 'compact'\"\n [pinnedAppInAppTileGroups]=\"(pinnedAppInAppTileGroups$ | async)!!\"\n [contentHeight]=\"contentHeight\"\n (selectedAppGroupIdChange)=\"onSelectedAppGroupChange($event)\"\n (pinClick)=\"onPinClick($event)\"\n>\n</bt-app-finder>\n", styles: [":host{display:block;min-height:100vh}\n"] }]
1930
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$4.DialogService }, { type: AppFinderService }, { type: i0.ElementRef }, { type: i1$4.ContentDensityService }]; } });
1931
+
1932
+ class FooterEditTileComponent extends BaseComponent {
1933
+ }
1934
+ FooterEditTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterEditTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1935
+ FooterEditTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FooterEditTileComponent, selector: "bt-footer-edit-tile", usesInheritance: true, ngImport: i0, template: "<button fd-button [glyph]=\"'pushpin-off'\" fdType=\"\"></button>\r\n", styles: [":host{border-top:1px solid #ccc;padding-bottom:5px}\n"], dependencies: [{ kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterEditTileComponent, decorators: [{
1937
+ type: Component,
1938
+ args: [{ selector: 'bt-footer-edit-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button fd-button [glyph]=\"'pushpin-off'\" fdType=\"\"></button>\r\n", styles: [":host{border-top:1px solid #ccc;padding-bottom:5px}\n"] }]
1939
+ }] });
1940
+
1941
+ class NumericTileComponent extends BaseBtTileComponent {
1942
+ get launchIcon() {
1943
+ return this.settings.LaunchIcon;
1944
+ }
1945
+ get kpiState() {
1946
+ return this.settings.ContentKpiState;
1947
+ }
1948
+ get kpi() {
1949
+ return this.settings.ContentKpi;
1950
+ }
1951
+ get scaleState() {
1952
+ return this.settings.ScaleState;
1953
+ }
1954
+ get scaleText() {
1955
+ return this.settings.ScaleText;
1956
+ }
1957
+ get scaleArrowIcon() {
1958
+ return this.settings.ScaleArrowIcon;
1959
+ }
1960
+ }
1961
+ NumericTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NumericTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1962
+ NumericTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NumericTileComponent, selector: "bt-numeric-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <div fd-numeric-content>\r\n <div fd-numeric-content-launch-icon-container>\r\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\r\n </div>\r\n <div fd-numeric-content-kpi-container>\r\n <div fd-numeric-content-kpi [state]=\"kpiState\">{{ kpi }}</div>\r\n </div>\r\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\r\n <div fd-numeric-content-scale [state]=\"scaleState\">\r\n <span\r\n fd-numeric-content-scale-arrow\r\n [glyph]=\"scaleArrowIcon\"\r\n [class]=\"scaleArrowIcon | sapFontClass\"\r\n ></span>\r\n <span fd-numeric-content-scale-text>{{ scaleText }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</bt-tile>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.NumericContentDirective, selector: "[fd-numeric-content]", inputs: ["class", "size"] }, { kind: "directive", type: i1$1.NumericContentKpiContainerDirective, selector: "[fd-numeric-content-kpi-container]" }, { kind: "directive", type: i1$1.NumericContentKpiDirective, selector: "[fd-numeric-content-kpi]", inputs: ["state", "class", "glyph"] }, { kind: "directive", type: i1$1.NumericContentLaunchIconContainerDirective, selector: "[fd-numeric-content-launch-icon-container]" }, { kind: "directive", type: i1$1.NumericContentLaunchIconDirective, selector: "[fd-numeric-content-launch-icon]", inputs: ["class", "glyph"] }, { kind: "directive", type: i1$1.NumericContentScaleArrowDirective, selector: "[fd-numeric-content-scale-arrow]", inputs: ["class", "glyph"] }, { kind: "directive", type: i1$1.NumericContentScaleContainerDirective, selector: "[fd-numeric-content-scale-container]" }, { kind: "directive", type: i1$1.NumericContentScaleDirective, selector: "[fd-numeric-content-scale]", inputs: ["state", "class"] }, { kind: "directive", type: i1$1.NumericContentScaleTextDirective, selector: "[fd-numeric-content-scale-text]" }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i5.SapFontClassPipe, name: "sapFontClass" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NumericTileComponent, decorators: [{
1964
+ type: Component,
1965
+ args: [{ selector: 'bt-numeric-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <div fd-numeric-content>\r\n <div fd-numeric-content-launch-icon-container>\r\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\r\n </div>\r\n <div fd-numeric-content-kpi-container>\r\n <div fd-numeric-content-kpi [state]=\"kpiState\">{{ kpi }}</div>\r\n </div>\r\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\r\n <div fd-numeric-content-scale [state]=\"scaleState\">\r\n <span\r\n fd-numeric-content-scale-arrow\r\n [glyph]=\"scaleArrowIcon\"\r\n [class]=\"scaleArrowIcon | sapFontClass\"\r\n ></span>\r\n <span fd-numeric-content-scale-text>{{ scaleText }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</bt-tile>\r\n" }]
1966
+ }] });
1967
+
1968
+ class LogoTileComponent extends BaseBtTileComponent {
1969
+ get fileId() {
1970
+ var _a, _b;
1971
+ let fileId = (_a = this.settings.Logo) === null || _a === void 0 ? void 0 : _a.FileId;
1972
+ if (!fileId) {
1973
+ fileId = (_b = this.settings.CalcLogo) === null || _b === void 0 ? void 0 : _b.FileId;
1974
+ }
1975
+ return fileId;
1976
+ }
1977
+ }
1978
+ LogoTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LogoTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1979
+ LogoTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: LogoTileComponent, selector: "bt-logo-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <img fd-tile-logo [src]=\"fileId | picFieldSrc: 'GetPictureFromFileInfo':null\" />\r\n </div>\r\n</bt-tile>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileLogoDirective, selector: "[fdTileLogo], [fd-tile-logo]" }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i1$2.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1980
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LogoTileComponent, decorators: [{
1981
+ type: Component,
1982
+ args: [{ selector: 'bt-logo-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <img fd-tile-logo [src]=\"fileId | picFieldSrc: 'GetPictureFromFileInfo':null\" />\r\n </div>\r\n</bt-tile>\r\n" }]
1983
+ }] });
1984
+
1985
+ class FeedTileComponent extends BaseBtTileComponent {
1986
+ get twoColumn() {
1987
+ return this.settings.TwoColumn;
1988
+ }
1989
+ get text() {
1990
+ return this.settings.ContentText;
1991
+ }
1992
+ get byline() {
1993
+ return this.settings.ContentByLine;
1994
+ }
1995
+ get kpi() {
1996
+ return this.settings.ContentKpi;
1997
+ }
1998
+ get state() {
1999
+ return this.settings.State;
2000
+ }
2001
+ }
2002
+ FeedTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FeedTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2003
+ FeedTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FeedTileComponent, selector: "bt-feed-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'feed'\"\n [editHome]=\"editHome\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n>\n <div fd-tile-content [twoColumn]=\"twoColumn\">\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\n <div fd-tile-section>\n <div fd-tile-content-text>{{ text | bbbTranslate }}</div>\n <div fd-tile-content-byline>{{ byline }}</div>\n </div>\n <div fd-tile-section>\n <div fd-numeric-content>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"state\">{{ kpi }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #oneColumn>\n <div fd-numeric-content>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"state\">{{ kpi }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n</bt-tile>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileSectionDirective, selector: "[fdTileSection], [fd-tile-section]" }, { kind: "directive", type: i1$1.TileContentBylineDirective, selector: "[fdTileContentByline], [fd-tile-content-byline]" }, { kind: "directive", type: i1$1.TileContentTextDirective, selector: "[fdTileContentText], [fd-tile-content-text]" }, { kind: "directive", type: i1$1.NumericContentDirective, selector: "[fd-numeric-content]", inputs: ["class", "size"] }, { kind: "directive", type: i1$1.NumericContentKpiContainerDirective, selector: "[fd-numeric-content-kpi-container]" }, { kind: "directive", type: i1$1.NumericContentKpiDirective, selector: "[fd-numeric-content-kpi]", inputs: ["state", "class", "glyph"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2004
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FeedTileComponent, decorators: [{
2005
+ type: Component,
2006
+ args: [{ selector: 'bt-feed-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'feed'\"\n [editHome]=\"editHome\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n>\n <div fd-tile-content [twoColumn]=\"twoColumn\">\n <ng-container *ngIf=\"twoColumn; else oneColumn\">\n <div fd-tile-section>\n <div fd-tile-content-text>{{ text | bbbTranslate }}</div>\n <div fd-tile-content-byline>{{ byline }}</div>\n </div>\n <div fd-tile-section>\n <div fd-numeric-content>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"state\">{{ kpi }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #oneColumn>\n <div fd-numeric-content>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"state\">{{ kpi }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n</bt-tile>\n" }]
2007
+ }] });
2008
+
2009
+ class SimpleTileComponent extends BaseBtTileComponent {
2010
+ }
2011
+ SimpleTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SimpleTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2012
+ SimpleTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: SimpleTileComponent, selector: "bt-simple-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <fd-icon\r\n *ngIf=\"settings.Icon\"\r\n [glyph]=\"settings.Icon\"\r\n [font]=\"settings.Icon | sapFont\"\r\n [style.color]=\"settings.IconColor\"\r\n ></fd-icon>\r\n </div>\r\n</bt-tile>\r\n", styles: ["::ng-deep .fd-tile--launch .fd-tile__content{align-items:normal!important}fd-icon{font-size:3rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i5.SapFontPipe, name: "sapFont" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SimpleTileComponent, decorators: [{
2014
+ type: Component,
2015
+ args: [{ selector: 'bt-simple-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <fd-icon\r\n *ngIf=\"settings.Icon\"\r\n [glyph]=\"settings.Icon\"\r\n [font]=\"settings.Icon | sapFont\"\r\n [style.color]=\"settings.IconColor\"\r\n ></fd-icon>\r\n </div>\r\n</bt-tile>\r\n", styles: ["::ng-deep .fd-tile--launch .fd-tile__content{align-items:normal!important}fd-icon{font-size:3rem}\n"] }]
2016
+ }] });
2017
+
2018
+ class ProfileTileComponent extends BaseBtTileComponent {
2019
+ get fileId() {
2020
+ var _a;
2021
+ let fileId = (_a = this.settings.Image) === null || _a === void 0 ? void 0 : _a.FileId;
2022
+ if (!fileId) {
2023
+ fileId = this.settings.CalcImage;
2024
+ }
2025
+ return fileId;
2026
+ }
2027
+ }
2028
+ ProfileTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2029
+ ProfileTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ProfileTileComponent, selector: "bt-profile-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <span\r\n *ngIf=\"fileId; else showIcon\"\r\n class=\"profile\"\r\n fd-tile-profile-img\r\n [backgroundImage]=\"fileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n ></span>\r\n <ng-template #showIcon>\r\n <fd-icon\r\n *ngIf=\"settings.Icon; else avatar\"\r\n [font]=\"settings.Icon | sapFont\"\r\n fd-tile-profile-img\r\n style=\"font-size: 2rem\"\r\n [glyph]=\"settings.Icon\"\r\n ></fd-icon>\r\n </ng-template>\r\n <ng-template #avatar>\r\n <fd-icon font=\"SAP-icons-TNT\" fd-tile-profile-img style=\"font-size: 2rem\" glyph=\"user\"></fd-icon>\r\n </ng-template>\r\n </div>\r\n</bt-tile>\r\n", styles: [".profile{background-size:contain;background-repeat:no-repeat}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileProfileImgDirective, selector: "[fdTileProfileImg], [fd-tile-profile-img]", inputs: ["id", "ariaLabel", "ariaLabelledby", "backgroundImage"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "disableClick"] }, { kind: "pipe", type: i1$2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.SapFontPipe, name: "sapFont" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2030
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileTileComponent, decorators: [{
2031
+ type: Component,
2032
+ args: [{ selector: 'bt-profile-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [editHome]=\"editHome\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n>\r\n <div fd-tile-content>\r\n <span\r\n *ngIf=\"fileId; else showIcon\"\r\n class=\"profile\"\r\n fd-tile-profile-img\r\n [backgroundImage]=\"fileId | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n ></span>\r\n <ng-template #showIcon>\r\n <fd-icon\r\n *ngIf=\"settings.Icon; else avatar\"\r\n [font]=\"settings.Icon | sapFont\"\r\n fd-tile-profile-img\r\n style=\"font-size: 2rem\"\r\n [glyph]=\"settings.Icon\"\r\n ></fd-icon>\r\n </ng-template>\r\n <ng-template #avatar>\r\n <fd-icon font=\"SAP-icons-TNT\" fd-tile-profile-img style=\"font-size: 2rem\" glyph=\"user\"></fd-icon>\r\n </ng-template>\r\n </div>\r\n</bt-tile>\r\n", styles: [".profile{background-size:contain;background-repeat:no-repeat}\n"] }]
2033
+ }] });
2034
+
2035
+ class ShellbarComponent extends BaseComponent {
2036
+ constructor(_portalService, _breadCrumbService, _tilesService, _cdr, _bbbTranslatePipe, appVersion) {
2037
+ super();
2038
+ this._portalService = _portalService;
2039
+ this._breadCrumbService = _breadCrumbService;
2040
+ this._tilesService = _tilesService;
2041
+ this._cdr = _cdr;
2042
+ this._bbbTranslatePipe = _bbbTranslatePipe;
2043
+ this.appVersion = appVersion;
2044
+ this.isOpenNotificatoin = false;
2045
+ this.deviceSize = 'xl';
2046
+ this.user = {
2047
+ initials: 'WW',
2048
+ colorAccent: 1
2049
+ };
2050
+ this.searchTerms = ['مرخصی', 'ماموریت', 'تیکت', 'پروژه'];
2051
+ this.allowAnonymous = true;
2052
+ this.showVersion = false;
2053
+ this.onOpenNotification = () => {
2054
+ this.isOpenNotificatoin = true;
2055
+ };
2056
+ this.onLanguage = (e) => {
2057
+ const culture = e.currentTarget.textContent.trim();
2058
+ this._changeCulture(culture);
2059
+ };
2060
+ this.userLoggedIn$ = this._portalService.userLoggedIn$;
2061
+ this.showVersion = !BarsaApi.LoginFormData.IsServiceDesk;
2062
+ }
2063
+ get subtitle() {
2064
+ var _a, _b, _c;
2065
+ return ((_a = this.shellbarData) === null || _a === void 0 ? void 0 : _a.Subtitle)
2066
+ ? `${(_b = this.shellbarData) === null || _b === void 0 ? void 0 : _b.Subtitle} ${typeof ((_c = this.shellbarData) === null || _c === void 0 ? void 0 : _c.CalcSubtitle) === 'string' ? this.shellbarData.CalcSubtitle : ''}`
2067
+ : '';
2068
+ }
2069
+ get logo() {
2070
+ var _a;
2071
+ return (_a = this.shellbarData) === null || _a === void 0 ? void 0 : _a.Logo;
2072
+ }
2073
+ get actions() {
2074
+ var _a, _b, _c, _d;
2075
+ return ((_a = this.settings) === null || _a === void 0 ? void 0 : _a.HideUserMenu) ? [] : (_d = (_c = (_b = this.shellbarData) === null || _b === void 0 ? void 0 : _b.ActionItems) === null || _c === void 0 ? void 0 : _c.MoDataList) !== null && _d !== void 0 ? _d : [];
2076
+ }
2077
+ get userMenu() {
2078
+ var _a;
2079
+ const moDataList = BarsaApi.Common.Util.TryGetValue(this.shellbarData, 'UserMenuItems.MoDataList');
2080
+ const items = moDataList ? [...moDataList] : [];
2081
+ if (!items.length) {
2082
+ return [];
2083
+ }
2084
+ items.forEach((c) => {
2085
+ c.text = this._bbbTranslatePipe.transform(c.text);
2086
+ c.callback = new Function(c.Code + this.bodyClick);
2087
+ });
2088
+ if (!BarsaApi.LoginFormData.IsAnonymous && BarsaApi.LoginFormData.IsUserLoggedIn) {
2089
+ items.splice(0, 0, { Id: '-1', $Caption: '', text: BarsaApi.LoginFormData.UserDisplayName });
2090
+ }
2091
+ return ((_a = this.settings) === null || _a === void 0 ? void 0 : _a.HideUserMenu) ? [] : items;
2092
+ }
2093
+ get productSwitcher() {
2094
+ var _a, _b, _c;
2095
+ return (_c = (_b = (_a = this.shellbarData) === null || _a === void 0 ? void 0 : _a.ProductSwitchItem) === null || _b === void 0 ? void 0 : _b.MoDataList) !== null && _c !== void 0 ? _c : [];
2096
+ }
2097
+ get productMenuItems() {
2098
+ var _a, _b, _c;
2099
+ const items = (_c = (_b = (_a = this.shellbarData) === null || _a === void 0 ? void 0 : _a.ProductMenuItems) === null || _b === void 0 ? void 0 : _b.MoDataList) !== null && _c !== void 0 ? _c : [];
2100
+ items.forEach((c) => (c.callback = new Function(c.Code + this.bodyClick)));
2101
+ return items;
2102
+ }
2103
+ get bodyClick() {
2104
+ return ';$("body").click()';
2105
+ }
2106
+ ngOnInit() {
2107
+ super.ngOnInit();
2108
+ this.cultures = BarsaApi.LoginFormData.Cultures;
2109
+ this.cssUrl$ = this._portalService.cssUrl$;
2110
+ this.cssCustomUrl$ = this._portalService.cssCustomUrl$;
2111
+ this.notificationsCount$ = this._portalService.notificationsCount$.pipe();
2112
+ this.notifications$ = this._portalService.notifications$;
2113
+ BarsaApi.Bw.SetUserPortalSettings = (userPortalSettings) => {
2114
+ this._portalService.setUserPortalSettings(userPortalSettings);
2115
+ };
2116
+ BarsaApi.Bw.SetShellbarSubtitle = (calcSubtitle) => {
2117
+ this.shellbarData.calcSubtitle = calcSubtitle;
2118
+ this._cdr.detectChanges();
2119
+ };
2120
+ this._portalService.deviceSize$.pipe(takeUntil(this._onDestroy$)).subscribe((c) => {
2121
+ this.deviceSize = c;
2122
+ this._cdr.detectChanges();
2123
+ });
2124
+ this._breadCrumbService.breadcrumbs$.pipe(takeUntil(this._onDestroy$)).subscribe((breadCrumbs) => {
2125
+ if (breadCrumbs.length > 0) {
2126
+ this.productMenuControl = breadCrumbs[breadCrumbs.length - 1].label;
2127
+ }
2128
+ this._cdr.detectChanges();
2129
+ });
2130
+ this._tilesService.shellbar$.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
2131
+ this.shellbarData = mo;
2132
+ // this._cdr.detectChanges();
2133
+ forkJoin([of(this.productMenuItems), of([])]) // to append user defined
2134
+ .pipe(takeUntil(this._onDestroy$), map(([s1, s2]) => [...s1, ...s2]))
2135
+ .subscribe((c) => {
2136
+ this.productMenuItems1 = c;
2137
+ this._cdr.detectChanges();
2138
+ });
2139
+ });
2140
+ if (this.allowAnonymous) {
2141
+ this._tilesService.loadShellbar();
2142
+ }
2143
+ this._portalService.userLoggedIn$.pipe(takeUntil(this._onDestroy$)).subscribe((loggedIn) => {
2144
+ if (!loggedIn) {
2145
+ return;
2146
+ }
2147
+ this._tilesService.loadShellbar();
2148
+ this._portalService.loadNotifications();
2149
+ });
2150
+ }
2151
+ onCultureChange(culture) {
2152
+ this._changeCulture(culture);
2153
+ }
2154
+ onNotificationRelatedClick(mo, nama) {
2155
+ this.isOpenNotificatoin = false;
2156
+ BarsaApi.Bw.Form.Show({
2157
+ Mo: mo,
2158
+ MoContext: {
2159
+ ViewName: nama
2160
+ }
2161
+ });
2162
+ }
2163
+ _changeCulture(culture /* culture sample :English */) {
2164
+ BarsaApi.Bw.SetCultureByDisplayName(culture);
2165
+ BarsaApi.Bw.NavigateTo('/');
2166
+ }
2167
+ }
2168
+ ShellbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ShellbarComponent, deps: [{ token: i1$2.PortalService }, { token: i1$2.BreadcrumbService }, { token: TilesService }, { token: i0.ChangeDetectorRef }, { token: i1$2.BbbTranslatePipe }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component });
2169
+ ShellbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body>\n <fd-notification\n *ngFor=\"let mo of notifications$ | async; let first = first; let last = last\"\n style=\"margin-bottom: 1px\"\n [style.border-bottom-left-radius]=\"!last ? 0 : null\"\n [style.border-bottom-right-radius]=\"!last ? 0 : null\"\n [style.border-top-right-radius]=\"!first ? 0 : null\"\n [style.border-top-left-radius]=\"!first ? 0 : null\"\n >\n <fd-notification-body>\n <fd-avatar\n [circle]=\"true\"\n size=\"xs\"\n [glyph]=\"mo.Icon ? mo.Icon : 'bell'\"\n [image]=\"mo.Picture ? mo.Picture : null\"\n ></fd-avatar>\n <fd-notification-content style=\"min-width: 200px; overflow: hidden\">\n <fd-notification-header>\n <div fd-notification-indicator [type]=\"mo.Type\"></div>\n <h2 fd-notification-title [unread]=\"true\">{{ mo.Title }}</h2>\n </fd-notification-header>\n <p fd-notification-paragraph>\n {{ mo.Paragraph }}\n </p>\n <fd-notification-footer>\n <span fd-notification-footer-content>{{ mo.FirstFooterContent }}</span>\n <span fd-notification-separator></span>\n <span fd-notification-footer-content>{{ mo.SecondFooterContent }}</span>\n </fd-notification-footer>\n </fd-notification-content>\n <fd-notification-actions>\n <button\n *ngIf=\"mo.RelatedMo\"\n fd-button\n (click)=\"onNotificationRelatedClick(mo.RelatedMo, mo.NamaRelatedMo)\"\n [label]=\"'View' | bbbTranslate\"\n fdCompact\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n ariaLabel=\"Close\"\n glyph=\"decline\"\n title=\"close\"\n (click)=\"isOpenNotificatoin = false\"\n fdCompact\n ></button>\n </fd-notification-actions>\n </fd-notification-body>\n </fd-notification>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>{{ culture.value }} </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s .fd-shellbar__subtitle{display:block;font-size:.8rem}@media (max-width: 480px){.fd-shellbar__logo{min-height:1.5rem;height:1.5rem;width:1.5rem}}@media (min-width: 480px){.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i2$3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i9$1.NotificationComponent, selector: "fd-notification", inputs: ["width", "mobile"] }, { kind: "component", type: i9$1.NotificationHeaderComponent, selector: "fd-notification-header", inputs: ["uniqueId"] }, { kind: "component", type: i9$1.NotificationFooterComponent, selector: "fd-notification-footer" }, { kind: "component", type: i9$1.NotificationBodyComponent, selector: "fd-notification-body" }, { kind: "component", type: i9$1.NotificationActionsComponent, selector: "fd-notification-actions" }, { kind: "component", type: i9$1.NotificationContentComponent, selector: "fd-notification-content" }, { kind: "directive", type: i9$1.NotificationTitleDirective, selector: "[fdNotificationTitle], [fd-notification-title]", inputs: ["unread"] }, { kind: "directive", type: i9$1.NotificationIndicatorDirective, selector: "[fdNotificationIndicator], [fd-notification-indicator]", inputs: ["type", "class"] }, { kind: "directive", type: i9$1.NotificationParagraphDirective, selector: "[fdNotificationParagraph], [fd-notification-paragraph]" }, { kind: "directive", type: i9$1.NotificationFooterContentDirective, selector: "[fdNotificationFooterContent], [fd-notification-footer-content]" }, { kind: "directive", type: i9$1.NotificationSeparatorDirective, selector: "[fdNotificationSeparator], [fd-notification-separator]" }, { kind: "component", type: i10$1.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "ariaLabel", "disabled"] }, { kind: "component", type: i10$1.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i11.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i11.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i11.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i12.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "sideNav"] }, { kind: "component", type: i12.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i12.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i12.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "collapsedItemMenuLabel"] }, { kind: "component", type: i12.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i12.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1$2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1$2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ShellbarComponent, decorators: [{
2171
+ type: Component,
2172
+ args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [closeOnOutsideClick]=\"true\"\n [noArrow]=\"false\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body>\n <fd-notification\n *ngFor=\"let mo of notifications$ | async; let first = first; let last = last\"\n style=\"margin-bottom: 1px\"\n [style.border-bottom-left-radius]=\"!last ? 0 : null\"\n [style.border-bottom-right-radius]=\"!last ? 0 : null\"\n [style.border-top-right-radius]=\"!first ? 0 : null\"\n [style.border-top-left-radius]=\"!first ? 0 : null\"\n >\n <fd-notification-body>\n <fd-avatar\n [circle]=\"true\"\n size=\"xs\"\n [glyph]=\"mo.Icon ? mo.Icon : 'bell'\"\n [image]=\"mo.Picture ? mo.Picture : null\"\n ></fd-avatar>\n <fd-notification-content style=\"min-width: 200px; overflow: hidden\">\n <fd-notification-header>\n <div fd-notification-indicator [type]=\"mo.Type\"></div>\n <h2 fd-notification-title [unread]=\"true\">{{ mo.Title }}</h2>\n </fd-notification-header>\n <p fd-notification-paragraph>\n {{ mo.Paragraph }}\n </p>\n <fd-notification-footer>\n <span fd-notification-footer-content>{{ mo.FirstFooterContent }}</span>\n <span fd-notification-separator></span>\n <span fd-notification-footer-content>{{ mo.SecondFooterContent }}</span>\n </fd-notification-footer>\n </fd-notification-content>\n <fd-notification-actions>\n <button\n *ngIf=\"mo.RelatedMo\"\n fd-button\n (click)=\"onNotificationRelatedClick(mo.RelatedMo, mo.NamaRelatedMo)\"\n [label]=\"'View' | bbbTranslate\"\n fdCompact\n ></button>\n <button\n fd-button\n fdType=\"transparent\"\n ariaLabel=\"Close\"\n glyph=\"decline\"\n title=\"close\"\n (click)=\"isOpenNotificatoin = false\"\n fdCompact\n ></button>\n </fd-notification-actions>\n </fd-notification-body>\n </fd-notification>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>{{ culture.value }} </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s .fd-shellbar__subtitle{display:block;font-size:.8rem}@media (max-width: 480px){.fd-shellbar__logo{min-height:1.5rem;height:1.5rem;width:1.5rem}}@media (min-width: 480px){.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}}\n"] }]
2173
+ }], ctorParameters: function () {
2174
+ return [{ type: i1$2.PortalService }, { type: i1$2.BreadcrumbService }, { type: TilesService }, { type: i0.ChangeDetectorRef }, { type: i1$2.BbbTranslatePipe }, { type: undefined, decorators: [{
2175
+ type: Inject,
2176
+ args: [APP_VERSION]
2177
+ }] }];
2178
+ }, propDecorators: { comboboxComponent: [{
2179
+ type: ViewChild,
2180
+ args: [ComboboxComponent]
2181
+ }] } });
2182
+
2183
+ class TileHomeFilterPipe {
2184
+ transform(collection) {
2185
+ return collection.filter((val) => this.matchFilter(val));
2186
+ }
2187
+ matchFilter(value) {
2188
+ const match = Object.keys(value.Data).some((key) => {
2189
+ if (key.startsWith('$')) {
2190
+ return false;
2191
+ }
2192
+ if (key.startsWith('c')) {
2193
+ return BarsaApi.Common.Util.TryGetValue(value, 'Data.' + key);
2194
+ }
2195
+ });
2196
+ return match;
2197
+ }
2198
+ }
2199
+ TileHomeFilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2200
+ TileHomeFilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, name: "tileHomeFilter" });
2201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, decorators: [{
2202
+ type: Pipe,
2203
+ args: [{
2204
+ name: 'tileHomeFilter'
2205
+ }]
2206
+ }] });
2207
+
2208
+ class GroupTilesPipe {
2209
+ transform(appGroup) {
2210
+ var _a, _b;
2211
+ const predefineTiles = appGroup.AppTiles;
2212
+ if ((predefineTiles === null || predefineTiles === void 0 ? void 0 : predefineTiles.length) === 0) {
2213
+ return of([]);
2214
+ }
2215
+ const predefine$ = of(predefineTiles);
2216
+ const userDefine$ = of((_b = (_a = appGroup.UserAppTileGroupSetting) === null || _a === void 0 ? void 0 : _a.UserAppTilesSetting) === null || _b === void 0 ? void 0 : _b.MoDataList);
2217
+ return forkJoin([predefine$, userDefine$]).pipe(map(([s1, s2]) => [...s1, ...s2]), map((arrTiles) => {
2218
+ const tempTiles = arrTiles.filter((c) => c.Visible).sort((a, b) => (a.OrderItem > b.OrderItem ? 1 : 0));
2219
+ const group = Object.assign({}, appGroup);
2220
+ group.Title = BarsaApi.Common.Util.TryGetValue(group, 'UserAppTileGroupSetting.Title', group.Title);
2221
+ group.OrderItem = BarsaApi.Common.Util.TryGetValue(group, 'UserAppTileGroupSetting.OrderItem', group.OrderItem);
2222
+ return tempTiles;
2223
+ }), shareReplay(1));
2224
+ }
2225
+ }
2226
+ GroupTilesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2227
+ GroupTilesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, name: "groupTiles" });
2228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, decorators: [{
2229
+ type: Pipe,
2230
+ args: [{
2231
+ name: 'groupTiles'
2232
+ }]
2233
+ }] });
2234
+
2235
+ class HomeGroupPipe {
2236
+ constructor() { }
2237
+ transform(appGroups) {
2238
+ return appGroups.filter((c) => c.navigatorTiles && c.navigatorTiles.length > 0);
2239
+ }
2240
+ }
2241
+ HomeGroupPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2242
+ HomeGroupPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, name: "homeGroup" });
2243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, decorators: [{
2244
+ type: Pipe,
2245
+ args: [{
2246
+ name: 'homeGroup'
2247
+ }]
2248
+ }], ctorParameters: function () { return []; } });
2249
+
2250
+ class ActionLinksPipe {
2251
+ transform(tiles) {
2252
+ return tiles.filter((tile) => tile.IsActionLink);
2253
+ }
2254
+ }
2255
+ ActionLinksPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2256
+ ActionLinksPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, name: "actionLinks" });
2257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, decorators: [{
2258
+ type: Pipe,
2259
+ args: [{
2260
+ name: 'actionLinks'
2261
+ }]
2262
+ }] });
2263
+
2264
+ const components = [
2265
+ ShellbarComponent,
2266
+ SimpleTileComponent,
2267
+ TilesViewerComponent,
2268
+ ProfileTileComponent,
2269
+ FeedTileComponent,
2270
+ FooterTileComponent,
2271
+ TileComponent,
2272
+ LogoTileComponent,
2273
+ NumericTileComponent,
2274
+ FooterEditTileComponent,
2275
+ FormAppFinderComponent,
2276
+ PinTileComponent,
2277
+ ChangeAppTileComponent,
2278
+ CreateAppGroupComponent,
2279
+ MicroTileChartAreaComponent,
2280
+ MicroTileChartCircularComponent,
2281
+ MicroTileChartLineComponent,
2282
+ MicroTileChartStackbarComponent,
2283
+ MicroTileChartComparisonComponent,
2284
+ MicroTileChartBarComponent,
2285
+ MicroTileChartBulletComponent,
2286
+ TilesViewerContainerComponent,
2287
+ NewsTileComponent,
2288
+ ActionsLinkComponent,
2289
+ ActionItemComponent,
2290
+ AppFinderComponent,
2291
+ AppFinderGroupComponent,
2292
+ AppFinderAppListComponent,
2293
+ TilesViewerGroupComponent,
2294
+ FormTileComponent
2295
+ ];
2296
+ const pipes = [GroupTilesPipe, TileHomeFilterPipe, HomeGroupPipe, ActionLinksPipe];
2297
+ const directives = [EmptyListDirective, TileRendererDirective];
2298
+ class BarsaTilesModule extends BaseModule {
2299
+ constructor(dcm, componentFactoryResolver) {
2300
+ super(dcm, componentFactoryResolver, 'BarsaTilesModule');
2301
+ this.dcm = dcm;
2302
+ this.componentFactoryResolver = componentFactoryResolver;
2303
+ this.dynamicComponents = [...components];
2304
+ }
2305
+ }
2306
+ BarsaTilesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, deps: [{ token: i1$2.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule });
2307
+ BarsaTilesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, declarations: [ShellbarComponent,
2308
+ SimpleTileComponent,
2309
+ TilesViewerComponent,
2310
+ ProfileTileComponent,
2311
+ FeedTileComponent,
2312
+ FooterTileComponent,
2313
+ TileComponent,
2314
+ LogoTileComponent,
2315
+ NumericTileComponent,
2316
+ FooterEditTileComponent,
2317
+ FormAppFinderComponent,
2318
+ PinTileComponent,
2319
+ ChangeAppTileComponent,
2320
+ CreateAppGroupComponent,
2321
+ MicroTileChartAreaComponent,
2322
+ MicroTileChartCircularComponent,
2323
+ MicroTileChartLineComponent,
2324
+ MicroTileChartStackbarComponent,
2325
+ MicroTileChartComparisonComponent,
2326
+ MicroTileChartBarComponent,
2327
+ MicroTileChartBulletComponent,
2328
+ TilesViewerContainerComponent,
2329
+ NewsTileComponent,
2330
+ ActionsLinkComponent,
2331
+ ActionItemComponent,
2332
+ AppFinderComponent,
2333
+ AppFinderGroupComponent,
2334
+ AppFinderAppListComponent,
2335
+ TilesViewerGroupComponent,
2336
+ FormTileComponent, GroupTilesPipe, TileHomeFilterPipe, HomeGroupPipe, ActionLinksPipe, EmptyListDirective, TileRendererDirective], imports: [CommonModule,
2337
+ FormsModule,
2338
+ DragDropModule,
2339
+ CdkTableModule,
2340
+ FundamentalNgxCoreModule,
2341
+ GridListModule,
2342
+ FundamentalNgxPlatformModule,
2343
+ ReactiveFormsModule,
2344
+ BarsaNovinRayCoreModule,
2345
+ BarsaSapUiModule,
2346
+ BarsaEchartsModule], exports: [ShellbarComponent,
2347
+ SimpleTileComponent,
2348
+ TilesViewerComponent,
2349
+ ProfileTileComponent,
2350
+ FeedTileComponent,
2351
+ FooterTileComponent,
2352
+ TileComponent,
2353
+ LogoTileComponent,
2354
+ NumericTileComponent,
2355
+ FooterEditTileComponent,
2356
+ FormAppFinderComponent,
2357
+ PinTileComponent,
2358
+ ChangeAppTileComponent,
2359
+ CreateAppGroupComponent,
2360
+ MicroTileChartAreaComponent,
2361
+ MicroTileChartCircularComponent,
2362
+ MicroTileChartLineComponent,
2363
+ MicroTileChartStackbarComponent,
2364
+ MicroTileChartComparisonComponent,
2365
+ MicroTileChartBarComponent,
2366
+ MicroTileChartBulletComponent,
2367
+ TilesViewerContainerComponent,
2368
+ NewsTileComponent,
2369
+ ActionsLinkComponent,
2370
+ ActionItemComponent,
2371
+ AppFinderComponent,
2372
+ AppFinderGroupComponent,
2373
+ AppFinderAppListComponent,
2374
+ TilesViewerGroupComponent,
2375
+ FormTileComponent] });
2376
+ BarsaTilesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, providers: [TilesService, AppFinderService], imports: [CommonModule,
2377
+ FormsModule,
2378
+ DragDropModule,
2379
+ CdkTableModule,
2380
+ FundamentalNgxCoreModule,
2381
+ GridListModule,
2382
+ FundamentalNgxPlatformModule,
2383
+ ReactiveFormsModule,
2384
+ BarsaNovinRayCoreModule,
2385
+ BarsaSapUiModule,
2386
+ BarsaEchartsModule] });
2387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, decorators: [{
2388
+ type: NgModule,
2389
+ args: [{
2390
+ schemas: [NO_ERRORS_SCHEMA],
2391
+ imports: [
2392
+ CommonModule,
2393
+ FormsModule,
2394
+ DragDropModule,
2395
+ CdkTableModule,
2396
+ FundamentalNgxCoreModule,
2397
+ GridListModule,
2398
+ FundamentalNgxPlatformModule,
2399
+ ReactiveFormsModule,
2400
+ BarsaNovinRayCoreModule,
2401
+ BarsaSapUiModule,
2402
+ BarsaEchartsModule
2403
+ ],
2404
+ providers: [TilesService, AppFinderService],
2405
+ declarations: [...components, ...pipes, ...directives],
2406
+ exports: [...components]
2407
+ }]
2408
+ }], ctorParameters: function () { return [{ type: i1$2.DynamicComponentService }, { type: i0.ComponentFactoryResolver }]; } });
2409
+
2410
+ /**
2411
+ * Generated bundle index. Do not edit.
2412
+ */
2413
+
2414
+ export { ActionItemComponent, ActionsLinkComponent, AppFinderAppListComponent, AppFinderComponent, AppFinderGroupComponent, BarsaTilesModule, ChangeAppTileComponent, CreateAppGroupComponent, FeedTileComponent, FooterEditTileComponent, FooterTileComponent, FormAppFinderComponent, FormTileComponent, GroupTilesPipe, LogoTileComponent, MicroTileChartAreaComponent, MicroTileChartBarComponent, MicroTileChartBulletComponent, MicroTileChartCircularComponent, MicroTileChartComparisonComponent, MicroTileChartLineComponent, MicroTileChartStackbarComponent, NewsTileComponent, NumericTileComponent, PinTileComponent, ProfileTileComponent, ShellbarComponent, SimpleTileComponent, TileComponent, TileHomeFilterPipe, TilesService, TilesViewerComponent, TilesViewerContainerComponent, TilesViewerGroupComponent, TilesViewerService };
2415
+ //# sourceMappingURL=barsa-tiles.mjs.map