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,2386 @@
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 * as i4$2 from '@fundamental-ngx/core/content-density';
45
+ import * as i9$1 from '@fundamental-ngx/core/notification';
46
+ import * as i10$1 from '@fundamental-ngx/core/product-switch';
47
+ import * as i11 from '@fundamental-ngx/core/popover';
48
+ import * as i12 from '@fundamental-ngx/core/shellbar';
49
+ import { CdkTableModule } from '@angular/cdk/table';
50
+ import { FundamentalNgxPlatformModule } from '@fundamental-ngx/platform';
51
+
52
+ class BaseTileComponent extends BaseComponent {
53
+ constructor(el, _renderer2, _cdr) {
54
+ super();
55
+ this.el = el;
56
+ this._renderer2 = _renderer2;
57
+ this._cdr = _cdr;
58
+ this.hideClick = new EventEmitter();
59
+ this.renameClick = new EventEmitter();
60
+ }
61
+ get settings() {
62
+ return this.data.Component.Settings;
63
+ }
64
+ get title() {
65
+ return this.data.TileTitle;
66
+ }
67
+ get subtitle() {
68
+ return this.data.Subtitle;
69
+ }
70
+ get double() {
71
+ return this.settings.TileSetting.IsDouble;
72
+ }
73
+ get badge() {
74
+ return this.settings.TileSetting.Badge;
75
+ }
76
+ get footer() {
77
+ return this.settings.TileSetting.Footer;
78
+ }
79
+ get tileSetting() {
80
+ return this.settings.TileSetting;
81
+ }
82
+ setEditHome(val) {
83
+ this.editHome = val;
84
+ this._cdr.detectChanges();
85
+ }
86
+ }
87
+ 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 });
88
+ 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 });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseTileComponent, decorators: [{
90
+ type: Component,
91
+ args: [{
92
+ selector: 'bt-base-tile',
93
+ template: '',
94
+ changeDetection: ChangeDetectionStrategy.OnPush
95
+ }]
96
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
97
+ type: Input
98
+ }], editHome: [{
99
+ type: Input
100
+ }], hideClick: [{
101
+ type: Output
102
+ }], renameClick: [{
103
+ type: Output
104
+ }] } });
105
+
106
+ class BaseBtTileComponent extends BaseTileComponent {
107
+ ngOnInit() {
108
+ super.ngOnInit();
109
+ this._renderer2.addClass(this.el.nativeElement, 'barsa-tile');
110
+ }
111
+ }
112
+ BaseBtTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseBtTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
113
+ 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 });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseBtTileComponent, decorators: [{
115
+ type: Component,
116
+ args: [{
117
+ selector: 'bt-base-bt-tile',
118
+ template: '',
119
+ changeDetection: ChangeDetectionStrategy.OnPush
120
+ }]
121
+ }] });
122
+
123
+ class FooterTileComponent extends BaseComponent {
124
+ get twoColumn() {
125
+ return this.settings.TwoColumn;
126
+ }
127
+ get firstSection() {
128
+ return this.settings.FirstSection;
129
+ }
130
+ get secondSection() {
131
+ return this.settings.SecondSection;
132
+ }
133
+ }
134
+ FooterTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
135
+ 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 });
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterTileComponent, decorators: [{
137
+ type: Component,
138
+ 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" }]
139
+ }], propDecorators: { settings: [{
140
+ type: Input
141
+ }] } });
142
+
143
+ class TileComponent extends BaseTileComponent {
144
+ constructor() {
145
+ super(...arguments);
146
+ this.runningCommand = false;
147
+ }
148
+ onClick() {
149
+ if (this.editHome || this.disableClick || this.runningCommand) {
150
+ return false;
151
+ }
152
+ const command = this.data.DynamicCommand;
153
+ const e = { command, DynamicSetting: null };
154
+ this.runningCommand = true;
155
+ this._cdr.detectChanges();
156
+ BarsaApi.Common.CustomCodeManager.RunDynamicCommand(command.Id, e, () => {
157
+ this.runningCommand = false;
158
+ this._cdr.detectChanges();
159
+ });
160
+ return false;
161
+ }
162
+ }
163
+ TileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
164
+ 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 });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileComponent, decorators: [{
166
+ type: Component,
167
+ 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"] }]
168
+ }], propDecorators: { type: [{
169
+ type: Input
170
+ }], footerTemplate: [{
171
+ type: Input
172
+ }], disableClick: [{
173
+ type: Input
174
+ }], onClick: [{
175
+ type: HostListener,
176
+ args: ['click', ['$event']]
177
+ }] } });
178
+
179
+ class FormTileComponent extends BaseBtTileComponent {
180
+ ngOnInit() {
181
+ super.ngOnInit();
182
+ const options = {
183
+ Parameters: [],
184
+ Method: this.settings.RunBlMethod,
185
+ SuccessFn: (mo) => {
186
+ this.params = {
187
+ moId: mo.$State === 'New' ? '0' : mo.Id,
188
+ typeDefId: this.settings.TypeDef.Id,
189
+ viewId: this.settings.TypeViewEntity.Id
190
+ };
191
+ this._cdr.detectChanges();
192
+ },
193
+ FailFn: () => { }
194
+ };
195
+ BarsaApi.Bw.RunBlMethodAsync(options);
196
+ }
197
+ }
198
+ FormTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
199
+ 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 });
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormTileComponent, decorators: [{
201
+ type: Component,
202
+ 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"] }]
203
+ }] });
204
+
205
+ class ActionItemComponent extends TileComponent {
206
+ }
207
+ ActionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
208
+ 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 });
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionItemComponent, decorators: [{
210
+ type: Component,
211
+ 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"] }]
212
+ }] });
213
+
214
+ class ActionsLinkComponent extends BaseComponent {
215
+ }
216
+ ActionsLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
217
+ 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 });
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionsLinkComponent, decorators: [{
219
+ type: Component,
220
+ 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"] }]
221
+ }], propDecorators: { actionsLink: [{
222
+ type: Input
223
+ }], editHome: [{
224
+ type: Input
225
+ }] } });
226
+
227
+ class TileRendererDirective extends BaseDirective {
228
+ constructor(_cdr, _portalService, _vcr, _injector) {
229
+ super();
230
+ this._cdr = _cdr;
231
+ this._portalService = _portalService;
232
+ this._vcr = _vcr;
233
+ this._injector = _injector;
234
+ this.hideClick = new EventEmitter();
235
+ this.renameClick = new EventEmitter();
236
+ }
237
+ ngOnInit() {
238
+ super.ngOnInit();
239
+ if (!this.component) {
240
+ return;
241
+ }
242
+ const { Module, ModuleFileName, Name, Selector } = this.component;
243
+ this._portalService
244
+ .getComponent(Module, ModuleFileName, Name, Selector, this._injector)
245
+ .pipe(takeUntil(this._onDestroy$))
246
+ .subscribe((componentRef) => {
247
+ const instance = componentRef.instance;
248
+ instance.data = this.data;
249
+ instance.editHome = this.editHome;
250
+ instance.hideClick.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
251
+ this.hideClick.emit();
252
+ });
253
+ instance.renameClick.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.renameClick.emit());
254
+ this._vcr.insert(componentRef.hostView);
255
+ this._tileRef = componentRef;
256
+ this._cdr.detectChanges();
257
+ });
258
+ }
259
+ ngOnChanges(changes) {
260
+ const { editHome } = changes;
261
+ if (editHome && !editHome.firstChange) {
262
+ this._tileRef.instance.setEditHome(editHome.currentValue);
263
+ }
264
+ }
265
+ ngOnDestroy() {
266
+ super.ngOnDestroy();
267
+ if (this._tileRef) {
268
+ this._tileRef.destroy();
269
+ }
270
+ }
271
+ }
272
+ 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 });
273
+ 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 });
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileRendererDirective, decorators: [{
275
+ type: Directive,
276
+ args: [{
277
+ selector: '[tileRenderer]'
278
+ }]
279
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$2.PortalService }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { component: [{
280
+ type: Input
281
+ }], data: [{
282
+ type: Input
283
+ }], editHome: [{
284
+ type: Input
285
+ }], hideClick: [{
286
+ type: Output
287
+ }], renameClick: [{
288
+ type: Output
289
+ }] } });
290
+
291
+ class TilesViewerGroupComponent extends BaseComponent {
292
+ constructor() {
293
+ super();
294
+ this.tilesDropped = new EventEmitter();
295
+ this.hideAppTileClick = new EventEmitter();
296
+ this.renameAppTileClick = new EventEmitter();
297
+ this.toggleGroup = new EventEmitter();
298
+ this.resetGroup = new EventEmitter();
299
+ this.deleteGroup = new EventEmitter();
300
+ }
301
+ onDrop(appTileGroup, event) {
302
+ if (!this.editHome || appTileGroup.Locked) {
303
+ return;
304
+ }
305
+ this.tilesDropped.emit({ appTileGroup, event });
306
+ }
307
+ onAppTileHideClick(appTile) {
308
+ this.hideAppTileClick.emit(appTile);
309
+ }
310
+ onAppTileRenameClick(appTile) {
311
+ this.renameAppTileClick.emit(appTile);
312
+ }
313
+ onDelete(appTileGroup) {
314
+ this.deleteGroup.emit(appTileGroup);
315
+ }
316
+ onToggleShowHide(appTileGroup) {
317
+ this.toggleGroup.emit(appTileGroup);
318
+ }
319
+ onReset(appTileGroup) {
320
+ this.resetGroup.emit(appTileGroup);
321
+ }
322
+ }
323
+ TilesViewerGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
324
+ 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 });
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
326
+ type: Component,
327
+ 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"] }]
328
+ }], ctorParameters: function () { return []; }, propDecorators: { appTileGroup: [{
329
+ type: Input
330
+ }], stackContent: [{
331
+ type: Input
332
+ }], editHome: [{
333
+ type: Input
334
+ }], isAppTileSubGroup: [{
335
+ type: Input
336
+ }], tilesDropped: [{
337
+ type: Output
338
+ }], hideAppTileClick: [{
339
+ type: Output
340
+ }], renameAppTileClick: [{
341
+ type: Output
342
+ }], toggleGroup: [{
343
+ type: Output
344
+ }], resetGroup: [{
345
+ type: Output
346
+ }], deleteGroup: [{
347
+ type: Output
348
+ }] } });
349
+
350
+ class EmptyListDirective {
351
+ constructor(templateRef, viewContainer, bbbPipe) {
352
+ this.templateRef = templateRef;
353
+ this.viewContainer = viewContainer;
354
+ this.bbbPipe = bbbPipe;
355
+ this.hasView = false;
356
+ }
357
+ set emptyList(list) {
358
+ if (!list || (!list.length && !this.hasView)) {
359
+ const _view = this.viewContainer.createEmbeddedView(this.templateRef);
360
+ this.setNoData(_view);
361
+ this.hasView = true;
362
+ }
363
+ else if (list && list.length > 0 && this.hasView) {
364
+ this.viewContainer.clear();
365
+ this.hasView = false;
366
+ }
367
+ }
368
+ setNoData(view) {
369
+ view.rootNodes[0].innerHTML = this.bbbPipe.transform('NoData');
370
+ }
371
+ }
372
+ 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 });
373
+ EmptyListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: EmptyListDirective, selector: "[emptyList]", inputs: { emptyList: "emptyList" }, ngImport: i0 });
374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EmptyListDirective, decorators: [{
375
+ type: Directive,
376
+ args: [{
377
+ selector: '[emptyList]'
378
+ }]
379
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$2.BbbTranslatePipe }]; }, propDecorators: { emptyList: [{
380
+ type: Input
381
+ }] } });
382
+
383
+ class AppFinderAppListComponent extends BaseComponent {
384
+ constructor() {
385
+ super(...arguments);
386
+ this.pinClick = new EventEmitter();
387
+ this.appTileGroupsPinChange = new EventEmitter();
388
+ }
389
+ onPinTap(app) {
390
+ this.pinClick.emit(app);
391
+ }
392
+ }
393
+ AppFinderAppListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
394
+ 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 });
395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderAppListComponent, decorators: [{
396
+ type: Component,
397
+ 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"] }]
398
+ }], propDecorators: { appGroup: [{
399
+ type: Input
400
+ }], mobile: [{
401
+ type: Input
402
+ }], searchTerm: [{
403
+ type: Input
404
+ }], pinnedAppInAppTileGroups: [{
405
+ type: Input
406
+ }], pinClick: [{
407
+ type: Output
408
+ }], appTileGroupsPinChange: [{
409
+ type: Output
410
+ }] } });
411
+
412
+ class AppFinderGroupComponent extends BaseComponent {
413
+ constructor() {
414
+ super(...arguments);
415
+ this.selectedIdChange = new EventEmitter();
416
+ }
417
+ ngOnChanges(changes) {
418
+ super.ngOnChanges(changes);
419
+ if (changes.appGroups && !changes.appGroups.firstChange) {
420
+ const appGroups = changes.appGroups.currentValue;
421
+ if (appGroups && appGroups.length > 0 && !this.selectedId) {
422
+ this.selectedIdChange.emit(appGroups[0].Id);
423
+ }
424
+ }
425
+ }
426
+ OnMenuGroupClick(group) {
427
+ this.selectedIdChange.emit(group.Id);
428
+ }
429
+ OnGroupClick(group) {
430
+ this.selectedIdChange.emit(group.Id);
431
+ }
432
+ }
433
+ AppFinderGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
434
+ 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 });
435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderGroupComponent, decorators: [{
436
+ type: Component,
437
+ 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"] }]
438
+ }], propDecorators: { appGroups: [{
439
+ type: Input
440
+ }], selectedId: [{
441
+ type: Input
442
+ }], listMode: [{
443
+ type: Input
444
+ }], selectedIdChange: [{
445
+ type: Output
446
+ }] } });
447
+
448
+ class AppFinderComponent extends BaseComponent {
449
+ constructor() {
450
+ super(...arguments);
451
+ this.contentDensity = 'compact';
452
+ this.pinClick = new EventEmitter();
453
+ this.selectedAppGroupIdChange = new EventEmitter();
454
+ }
455
+ onSearchSubmit($event) {
456
+ this.searchTerm = $event.text;
457
+ }
458
+ }
459
+ AppFinderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
460
+ 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 });
461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderComponent, decorators: [{
462
+ type: Component,
463
+ 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"] }]
464
+ }], propDecorators: { appGroups: [{
465
+ type: Input
466
+ }], deviceSize: [{
467
+ type: Input
468
+ }], sideContentSize: [{
469
+ type: Input
470
+ }], selectedAppGroup: [{
471
+ type: Input
472
+ }], selectedAppGroupId: [{
473
+ type: Input
474
+ }], mobile: [{
475
+ type: Input
476
+ }], contentDensity: [{
477
+ type: Input
478
+ }], contentHeight: [{
479
+ type: Input
480
+ }], pinnedAppInAppTileGroups: [{
481
+ type: Input
482
+ }], pinClick: [{
483
+ type: Output
484
+ }], selectedAppGroupIdChange: [{
485
+ type: Output
486
+ }] } });
487
+
488
+ class ChangeAppTileComponent extends BaseComponent {
489
+ constructor(fb, dialogRef, bbbPipe) {
490
+ super();
491
+ this.fb = fb;
492
+ this.dialogRef = dialogRef;
493
+ this.bbbPipe = bbbPipe;
494
+ this.title = dialogRef.data.TileTitle;
495
+ this.subtitle = dialogRef.data.Subtitle;
496
+ }
497
+ ngOnInit() {
498
+ super.ngOnInit();
499
+ this.appGroupForm = this.fb.group({
500
+ title: new UntypedFormControl(this.title, [Validators.required]),
501
+ subtitle: new UntypedFormControl(this.subtitle)
502
+ });
503
+ this.RequiredText = this.bbbPipe
504
+ .transform(')AlertFieldIsMandatory')
505
+ .replace('{0}', this.bbbPipe.transform('Title'));
506
+ }
507
+ onSave() {
508
+ this.submitted = true;
509
+ if (this.appGroupForm.valid) {
510
+ this.dialogRef.close({ title: this.title, subtitle: this.subtitle });
511
+ }
512
+ }
513
+ }
514
+ 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 });
515
+ 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 });
516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ChangeAppTileComponent, decorators: [{
517
+ type: Component,
518
+ 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" }]
519
+ }], ctorParameters: function () { return [{ type: i1$3.UntypedFormBuilder }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; } });
520
+
521
+ class TilesService {
522
+ constructor(_portalService, _rtlService, _bbbTranslatePipe) {
523
+ this._portalService = _portalService;
524
+ this._rtlService = _rtlService;
525
+ this._bbbTranslatePipe = _bbbTranslatePipe;
526
+ this.shellbarSource = new Subject();
527
+ this._OnDestroy$ = new Subject();
528
+ this._homeAppTileGroupsSource = new BehaviorSubject([]);
529
+ this.pinTilesSource = new Subject();
530
+ this._appTileGroupsSource = new BehaviorSubject(null);
531
+ this._edithomeSource = new BehaviorSubject(false);
532
+ BarsaApi.Bw.TilesService = this;
533
+ this.homeAppTileGroups$ = this._homeAppTileGroupsSource.asObservable();
534
+ this.pinTiles$ = this.pinTilesSource.asObservable().pipe(startWith(null));
535
+ this.shellbarSource = new Subject();
536
+ this.shellbar$ = this.shellbarSource.asObservable().pipe(shareReplay(1));
537
+ this.appTileGroups$ = this._appTileGroupsSource.pipe(shareReplay(1));
538
+ this.editHome$ = this._edithomeSource.asObservable().pipe(takeUntil(this._OnDestroy$), distinctUntilChanged());
539
+ this.deviceSize$ = this._portalService.deviceSize$;
540
+ this._rtlService.rtl.next(BarsaApi.LoginFormData.IsRtl);
541
+ this.loadAllAppTileGroups();
542
+ this.appTileGroups$
543
+ .pipe(filter((moForReportModel) => moForReportModel !== null), tap((moForReportModel) => {
544
+ if (moForReportModel) {
545
+ this._allAppsLoaded(moForReportModel);
546
+ }
547
+ }))
548
+ .subscribe();
549
+ }
550
+ get appTileGroups() {
551
+ return this._appTileGroupsSource.getValue();
552
+ }
553
+ ngOnDestroy() {
554
+ this._OnDestroy$.next();
555
+ }
556
+ loadAppTileGroups(appTileGroup) {
557
+ if (!appTileGroup || appTileGroup.$TilesLoaded) {
558
+ return;
559
+ }
560
+ const allApps = this._appTileGroupsSource.getValue();
561
+ if (allApps) {
562
+ const selectedAppTilegroup = allApps?.MoDataList.find((c) => c.Id === appTileGroup.Id);
563
+ if (selectedAppTilegroup) {
564
+ this._loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps);
565
+ selectedAppTilegroup.$Children?.forEach((subGroup) => {
566
+ this._loadAppTilesOfAppTileGroup(subGroup, allApps);
567
+ });
568
+ }
569
+ }
570
+ }
571
+ saveTilesStackContent(tilesStackContent) {
572
+ const userPortalSettings = this._portalService.userPortalSettings;
573
+ if (userPortalSettings == null) {
574
+ return Promise.resolve();
575
+ }
576
+ userPortalSettings.TilesStackContent = tilesStackContent;
577
+ userPortalSettings.$State = 'Modified';
578
+ return this._saveUserPortalSettings(userPortalSettings).then(() => this._portalService.setUserPortalSettings(userPortalSettings));
579
+ }
580
+ loadUserPortalSettings() {
581
+ return this._portalService.getData('UserPortalSetting').pipe(concatMap((data) => {
582
+ if (data) {
583
+ return of(data);
584
+ }
585
+ else {
586
+ return this.loadFromServerUserPortalSetting();
587
+ }
588
+ }));
589
+ }
590
+ loadFromServerUserPortalSetting() {
591
+ return from(new Promise((resolve, reject) => {
592
+ BarsaApi.Bw.RunBlMethodAsync({
593
+ Parameters: [],
594
+ Method: 'GetUserPortalSettings',
595
+ SuccessFn: (userPortalSetting) => {
596
+ this._portalService.setData('UserPortalSetting', userPortalSetting);
597
+ resolve(userPortalSetting);
598
+ },
599
+ FailFn: () => {
600
+ reject(null);
601
+ }
602
+ });
603
+ }));
604
+ }
605
+ toggleAppGroupSettingVisible(appGroup) {
606
+ return from(new Promise((resolve, reject) => {
607
+ BarsaApi.Bw.RunBlMethodAsync({
608
+ Parameters: [appGroup.Id],
609
+ Method: 'ToggleAppTileGroupSettingVisible',
610
+ SuccessFn: (appGroupSetting) => {
611
+ this._updateAppTileGroupSettings(appGroup, appGroupSetting);
612
+ resolve(appGroupSetting);
613
+ },
614
+ FailFn: () => {
615
+ reject(null);
616
+ }
617
+ });
618
+ })).pipe(tap((appGroupSetting) => {
619
+ this._updateAppGroupSetting(appGroup, appGroupSetting);
620
+ }));
621
+ }
622
+ resetAppGroupSetting(appGroup) {
623
+ return from(new Promise((resolve, reject) => {
624
+ BarsaApi.Bw.RunBlMethodAsync({
625
+ Parameters: [appGroup.Id],
626
+ Method: 'ResetAppTileGroupSettingVisible',
627
+ SuccessFn: (appGroupSetting) => {
628
+ this._updateAppTileGroupSettings(appGroup, appGroupSetting);
629
+ resolve(appGroupSetting);
630
+ },
631
+ FailFn: () => {
632
+ reject(null);
633
+ }
634
+ });
635
+ })).pipe(tap((appGroupSetting) => {
636
+ this._updateAppGroupSetting(appGroup, appGroupSetting);
637
+ }));
638
+ }
639
+ deleteAppGroup(appGroup) {
640
+ return from(new Promise((resolve, reject) => {
641
+ BarsaApi.Bw.RunBlMethodAsync({
642
+ Parameters: [appGroup.Id],
643
+ Method: 'DeleteAppGroup',
644
+ SuccessFn: () => {
645
+ resolve(appGroup.Id);
646
+ },
647
+ FailFn: () => {
648
+ reject(null);
649
+ }
650
+ });
651
+ })).pipe(tap((appGroupId) => {
652
+ const allApps = this.appTileGroups;
653
+ if (allApps) {
654
+ allApps.MoDataList = allApps.MoDataList.filter((c) => c.Id !== appGroupId);
655
+ this._appTileGroupsSource.next(allApps);
656
+ }
657
+ }));
658
+ }
659
+ changeAppTileSetting(appTile) {
660
+ const allApps = this.appTileGroups;
661
+ const selectedGroup = this.findGroupWithAppTileId(allApps, appTile.Id);
662
+ if (selectedGroup === null) {
663
+ return of(null);
664
+ }
665
+ return from(new Promise((resolve, reject) => {
666
+ BarsaApi.Bw.RunBlMethodAsync({
667
+ Parameters: [selectedGroup.Id, appTile.Id, appTile.Title, appTile.Subtitle],
668
+ Method: 'ChangeAppTileSetting',
669
+ SuccessFn: () => {
670
+ this._nextAllAppTileGroups(allApps);
671
+ resolve(selectedGroup);
672
+ },
673
+ FailFn: () => {
674
+ reject(null);
675
+ }
676
+ });
677
+ })).pipe(tap((appGroupSetting) => this.updataAppTileSetting(selectedGroup, appGroupSetting)));
678
+ }
679
+ saveAppGroupOrders(appGroups) {
680
+ const groupOrders = appGroups.map((c) => c.Id);
681
+ return from(new Promise((resolve, reject) => {
682
+ BarsaApi.Bw.RunBlMethodAsync({
683
+ Parameters: [groupOrders],
684
+ Method: 'ChangeOrderAppTileGroups',
685
+ SuccessFn: () => {
686
+ resolve();
687
+ },
688
+ FailFn: () => {
689
+ reject(null);
690
+ }
691
+ });
692
+ })).pipe();
693
+ }
694
+ createAppGroup(title) {
695
+ return from(new Promise((resolve, reject) => {
696
+ BarsaApi.Bw.RunBlMethodAsync({
697
+ Parameters: [title],
698
+ Method: 'CreateAppTileGroup',
699
+ SuccessFn: (mo) => {
700
+ resolve(mo);
701
+ },
702
+ FailFn: () => {
703
+ reject(null);
704
+ }
705
+ });
706
+ })).pipe(tap((mo) => this.addAppGroup(mo)));
707
+ }
708
+ saveOrderAppTiles(appGroup, appTiles, isActionLink = false, appTileIdTransferedId = '0') {
709
+ BarsaApi.Bw.RunBlMethodAsync({
710
+ Parameters: [appGroup.Id, appTiles, isActionLink, appTileIdTransferedId],
711
+ Method: 'ChangeOrderAppTiles',
712
+ SuccessFn: () => { },
713
+ FailFn: () => { }
714
+ });
715
+ }
716
+ updataAppTileSetting(selectedGroup, appGroupSetting) {
717
+ const allApps = this.appTileGroups;
718
+ allApps?.MoDataList.forEach((appGroup) => {
719
+ if (appGroup.Id === selectedGroup.Id) {
720
+ appGroup.UserAppTileGroupSetting = appGroupSetting;
721
+ }
722
+ });
723
+ this._appTileGroupsSource.next(allApps);
724
+ }
725
+ addAppGroup(mo) {
726
+ const allApps = this.appTileGroups;
727
+ if (allApps) {
728
+ allApps.MoDataList.push(mo);
729
+ this._appTileGroupsSource.next(allApps);
730
+ }
731
+ }
732
+ singlePinTileChanged(appTileId) {
733
+ const allApps = this.appTileGroups;
734
+ const group = this.findGroupWithAppTileId(allApps, appTileId);
735
+ if (group === null) {
736
+ return of(false);
737
+ }
738
+ return from(new Promise((resolve, reject) => {
739
+ BarsaApi.Bw.RunBlMethodAsync({
740
+ Parameters: [group.Id, appTileId],
741
+ Method: 'RemoveAppTileFromTileGroup',
742
+ SuccessFn: (setting) => {
743
+ this._updateAppTileGroupSettings(group, setting);
744
+ this._nextAllAppTileGroups(allApps);
745
+ resolve(true);
746
+ },
747
+ FailFn: () => {
748
+ reject(false);
749
+ }
750
+ });
751
+ }));
752
+ }
753
+ pinTileChanged(appTileGroupsPin, app, callback) {
754
+ const allApps = this.appTileGroups;
755
+ const visible = appTileGroupsPin.map((c) => c.visible);
756
+ const groupChanges = appTileGroupsPin.map((c) => new BarsaApi.Common.MetaObjectWeb({
757
+ Id: c.appTileGroup.Id,
758
+ TypeDefId: allApps?.TypeDefId
759
+ }));
760
+ BarsaApi.Bw.RunBlMethodAsync({
761
+ Parameters: [groupChanges, visible, app.Id],
762
+ Method: 'TilePinChanged',
763
+ SuccessFn: (settings) => {
764
+ this._tilePinChange(appTileGroupsPin, allApps);
765
+ callback(settings);
766
+ },
767
+ FailFn: () => {
768
+ // TODO show error
769
+ }
770
+ });
771
+ }
772
+ _tilePinChange(appTileGroupsPin, allApps) {
773
+ for (const appTileGroupPin of appTileGroupsPin) {
774
+ let selectedAppGroup;
775
+ const appGroupId = appTileGroupPin.appTileGroup.Id;
776
+ allApps?.MoDataList.forEach((c) => {
777
+ if (c.Id === appGroupId) {
778
+ selectedAppGroup = c;
779
+ }
780
+ else if (!selectedAppGroup) {
781
+ selectedAppGroup = c.$Children?.find((child) => child.Id === appGroupId);
782
+ }
783
+ });
784
+ if (selectedAppGroup && selectedAppGroup.$TilesLoaded) {
785
+ // let moDataList = selectedAppGroup.AppTiles.MoDataList;
786
+ // if (appTileGroups[i].visible)
787
+ // selectedAppGroup.AppTiles.MoDataList = [...moDataList, settings[i]];
788
+ // else
789
+ // selectedAppGroup.AppTiles.MoDataList = moDataList.filter(
790
+ // (c) => c.App.Id !== app.Id
791
+ // );
792
+ this._loadAppTilesOfAppTileGroup(selectedAppGroup, allApps);
793
+ }
794
+ }
795
+ this._nextAllAppTileGroups(allApps);
796
+ }
797
+ loadShellbar() {
798
+ this._portalService
799
+ .ReportExecutePromise('Shellbar')
800
+ .then((moForReportModel) => this.shellbarSource.next(moForReportModel.MoDataList[0]));
801
+ }
802
+ loadAllAppTileGroups() {
803
+ this._portalService
804
+ .ReportExecute('AllAppTileGroups')
805
+ .subscribe((allApps) => this._nextAllAppTileGroups(allApps));
806
+ }
807
+ _setTileInfo(appTile) {
808
+ {
809
+ const title = BarsaApi.Common.Util.TryGetValue(appTile, 'Component.Settings.TileSetting.Title', null);
810
+ appTile.TileTitle = !appTile.Title ? title : appTile.Title;
811
+ const subtitle = BarsaApi.Common.Util.TryGetValue(appTile, 'Component.Settings.TileSetting.Subtitle', null);
812
+ appTile.Subtitle = !appTile.Subtitle ? subtitle : appTile.Subtitle;
813
+ }
814
+ }
815
+ getTileGroups() {
816
+ return this._appTileGroupsSource.getValue();
817
+ }
818
+ setEditHome(edit) {
819
+ this._edithomeSource.next(edit);
820
+ }
821
+ _allAppsLoaded(moForReportModel) {
822
+ moForReportModel.MoDataList.forEach((c) => {
823
+ this._prepareNavigator(c);
824
+ });
825
+ this._setHomeAppTileGroups(moForReportModel.MoDataList);
826
+ }
827
+ _loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps) {
828
+ const callback = () => {
829
+ this._nextAllAppTileGroups(allApps);
830
+ };
831
+ if (!selectedAppTilegroup.UserAppTileGroupSetting) {
832
+ this._loadAppTilesByAppTileGroup(selectedAppTilegroup, callback);
833
+ }
834
+ else {
835
+ this._loadAppTilesByAppTileGroupSetting(selectedAppTilegroup, callback);
836
+ }
837
+ }
838
+ _loadAppTilesByAppTileGroup(appGroup, callback) {
839
+ BarsaApi.Bw.RunBlMethodAsync({
840
+ Parameters: [appGroup.Id],
841
+ Method: 'LoadAllAppTilesByAppTileGroup',
842
+ SuccessFn: (appTiles) => {
843
+ this._updateAppTilesOfAppTileGroup(appGroup, appTiles);
844
+ callback();
845
+ },
846
+ FailFn: () => {
847
+ // TODO show error
848
+ }
849
+ });
850
+ }
851
+ _updateAppTilesOfAppTileGroup(selectedAppTilegroup, appTiles) {
852
+ if (this.appTileGroups) {
853
+ selectedAppTilegroup = { ...selectedAppTilegroup, $TilesLoaded: true };
854
+ appTiles.MoDataList.forEach((element) => {
855
+ element.Component = element.A_App_Component ?? element.A_AppTile_App_Component;
856
+ element.DynamicCommand = element.A_App_DynamicCommand ?? element.A_AppTile_App_DynamicCommand;
857
+ element.Predefined = element.Predefined ?? element.A_AppTile_Predefined;
858
+ });
859
+ const apptileGroupIndex = this.appTileGroups?.MoDataList.findIndex((c) => c.Id === selectedAppTilegroup.Id || c.Id === selectedAppTilegroup.$ParentId);
860
+ selectedAppTilegroup.AppTiles = appTiles;
861
+ const tileGroup = this.appTileGroups.MoDataList[apptileGroupIndex];
862
+ if (selectedAppTilegroup.$ParentId) {
863
+ if (tileGroup.$Children) {
864
+ const idOfSubGroup = tileGroup.$Children.findIndex((c) => c.Id === selectedAppTilegroup.Id);
865
+ tileGroup.$Children[idOfSubGroup] = selectedAppTilegroup;
866
+ }
867
+ this.appTileGroups.MoDataList[apptileGroupIndex] = { ...tileGroup };
868
+ }
869
+ else {
870
+ this.appTileGroups.MoDataList[apptileGroupIndex] = selectedAppTilegroup;
871
+ }
872
+ }
873
+ }
874
+ _loadAppTilesByAppTileGroupSetting(appTileGroup, callback) {
875
+ BarsaApi.Bw.RunBlMethodAsync({
876
+ Parameters: [appTileGroup.Id],
877
+ Method: 'LoadAllAppTilesByUserAppTileGroupSettings',
878
+ SuccessFn: (appTiles) => {
879
+ this._updateAppTilesOfAppTileGroup(appTileGroup, appTiles);
880
+ callback();
881
+ },
882
+ FailFn: () => {
883
+ // TODO show error
884
+ }
885
+ });
886
+ }
887
+ _nextAllAppTileGroups(newAllApps = null) {
888
+ const allApps = newAllApps ?? this._appTileGroupsSource.getValue();
889
+ this._appTileGroupsSource.next(allApps ? { ...allApps } : null);
890
+ }
891
+ _setHomeAppTileGroups(appGroups) {
892
+ let newAppGroups = [...appGroups];
893
+ newAppGroups = newAppGroups
894
+ .filter((c) => c.Visible)
895
+ .sort((a, b) => Number(a.navigatorOrderItem) - Number(b.navigatorOrderItem));
896
+ this._homeAppTileGroupsSource.next(newAppGroups);
897
+ }
898
+ _saveUserPortalSettings(userPortalSettings) {
899
+ return new Promise((resolve, reject) => {
900
+ BarsaApi.Bw.RunBlMethodAsync({
901
+ Parameters: [new BarsaApi.Common.MetaObjectWeb(userPortalSettings)],
902
+ Method: 'SaveUserPortalSettings',
903
+ SuccessFn: () => {
904
+ resolve();
905
+ },
906
+ FailFn: () => {
907
+ reject(null);
908
+ }
909
+ });
910
+ });
911
+ }
912
+ _updateAppGroupSetting(appGroup, appGroupSetting) {
913
+ const allApps = this.appTileGroups;
914
+ const selectedAppGroup = allApps?.MoDataList.find((c) => c.Id === appGroup.Id);
915
+ if (selectedAppGroup && allApps) {
916
+ selectedAppGroup.UserAppTileGroupSetting = appGroupSetting;
917
+ this._nextAllAppTileGroups(allApps);
918
+ }
919
+ }
920
+ findGroupWithAppTileId(allApps, appTileId) {
921
+ let selectedGroup;
922
+ if (!allApps) {
923
+ return null;
924
+ }
925
+ allApps.MoDataList.forEach((appGroup) => {
926
+ if (selectedGroup) {
927
+ return;
928
+ }
929
+ if (appGroup.navigatorTiles.some((appTile) => appTile.Id === appTileId)) {
930
+ selectedGroup = appGroup;
931
+ return;
932
+ }
933
+ appGroup.$Children?.forEach((subGroup) => {
934
+ if (subGroup.navigatorTiles.some((appTile) => appTile.Id === appTileId)) {
935
+ selectedGroup = subGroup;
936
+ return;
937
+ }
938
+ });
939
+ });
940
+ return selectedGroup;
941
+ }
942
+ _findGroupWithAppGroupId(allApps, appGroupId) {
943
+ let selectedGroup;
944
+ if (!allApps) {
945
+ return null;
946
+ }
947
+ allApps.MoDataList.forEach((appGroup) => {
948
+ if (selectedGroup) {
949
+ return;
950
+ }
951
+ if (appGroup.Id === appGroupId) {
952
+ selectedGroup = appGroup;
953
+ return;
954
+ }
955
+ appGroup.$Children?.forEach((subGroup) => {
956
+ if (subGroup.Id === appGroupId) {
957
+ selectedGroup = subGroup;
958
+ return;
959
+ }
960
+ });
961
+ });
962
+ return selectedGroup;
963
+ }
964
+ _updateAppTileGroupSettings(appTileGroup, setting) {
965
+ appTileGroup.UserAppTileGroupSetting = setting;
966
+ appTileGroup = JSON.parse(JSON.stringify(appTileGroup));
967
+ this._nextAllAppTileGroups();
968
+ return appTileGroup;
969
+ }
970
+ _prepareNavigator(appTileGroup) {
971
+ appTileGroup.$TileSettingChanged = false;
972
+ appTileGroup.$Disabledpin = false;
973
+ appTileGroup.navigatorTitle = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.Title', appTileGroup.Title);
974
+ appTileGroup.navigatorTitle = appTileGroup.navigatorTitle =
975
+ appTileGroup.navigatorTitle === '' ? appTileGroup.Title : appTileGroup.navigatorTitle;
976
+ appTileGroup.navigatorTitle = this._bbbTranslatePipe.transform(appTileGroup.navigatorTitle);
977
+ const orderItem = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.OrderItem', null);
978
+ if (orderItem !== null) {
979
+ appTileGroup.navigatorOrderItem = orderItem;
980
+ }
981
+ else {
982
+ appTileGroup.navigatorOrderItem = appTileGroup.OrderItem;
983
+ }
984
+ const visible = BarsaApi.Common.Util.TryGetValue(appTileGroup, 'UserAppTileGroupSetting.Visible', null);
985
+ if (visible !== null) {
986
+ appTileGroup.navigatorVisible = visible;
987
+ }
988
+ else {
989
+ appTileGroup.navigatorVisible = appTileGroup.Visible;
990
+ }
991
+ const appTiles = appTileGroup.AppTiles?.MoDataList ?? [];
992
+ appTileGroup.navigatorTiles = appTiles
993
+ .filter((c) => c.Visible && !c.IsActionLink)
994
+ .sort((a, b) => Number(a.OrderItem) - Number(b.OrderItem));
995
+ appTileGroup.navigatorActionLinks = appTiles
996
+ .filter((c) => c.Visible && c.IsActionLink)
997
+ .sort((a, b) => Number(a.OrderItemActionLink) - Number(b.OrderItemActionLink));
998
+ appTileGroup.navigatorTiles.forEach((appTile) => this._setTileInfo(appTile));
999
+ appTileGroup.navigatorActionLinks.forEach((appTile) => this._setTileInfo(appTile));
1000
+ appTileGroup.$Children?.forEach((subAppTileGroup) => {
1001
+ this._prepareNavigator(subAppTileGroup);
1002
+ });
1003
+ }
1004
+ }
1005
+ 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 });
1006
+ TilesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesService, providedIn: 'root' });
1007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesService, decorators: [{
1008
+ type: Injectable,
1009
+ args: [{
1010
+ providedIn: 'root'
1011
+ }]
1012
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: i1$4.RtlService }, { type: i1$2.BbbTranslatePipe }]; } });
1013
+
1014
+ class TilesViewerService {
1015
+ constructor(dialogService, tilesService) {
1016
+ this.dialogService = dialogService;
1017
+ this.tilesService = tilesService;
1018
+ this._onDestroy$ = new Subject();
1019
+ this._hideTileSource = new Subject();
1020
+ this._updateAppTileSettingSource = new Subject();
1021
+ this._deleteGroupSource = new Subject();
1022
+ this._loadAppGroupSource = new Subject();
1023
+ this._saveAppGroupOrdersSource = new Subject();
1024
+ this.saveAppGroupOrders$ = this._saveAppGroupOrdersSource.asObservable();
1025
+ this._resetAppGroupSource = new Subject();
1026
+ this.resetAppGroup$ = this._resetAppGroupSource.asObservable();
1027
+ this._hideAppGroupSource = new Subject();
1028
+ this.hideAppGroup$ = this._hideAppGroupSource.asObservable();
1029
+ this._viewLoadingSource = new BehaviorSubject(false);
1030
+ this.viewLoading$ = this._viewLoadingSource.asObservable().pipe(debounceTime(200));
1031
+ this.hideTile$ = this._hideTileSource.asObservable();
1032
+ this.updateAppTileSetting$ = this._updateAppTileSettingSource.asObservable();
1033
+ this.deleteAppGroup$ = this._deleteGroupSource.asObservable();
1034
+ this._loadAppGroupSource
1035
+ .asObservable()
1036
+ .pipe(takeUntil(this._onDestroy$))
1037
+ .subscribe((group) => {
1038
+ this.tilesService.loadAppTileGroups(group);
1039
+ });
1040
+ this.hideTile$
1041
+ .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appTile) => this.tilesService
1042
+ .singlePinTileChanged(appTile.AppTile ? appTile.AppTile.Id : appTile.Id)
1043
+ .pipe(finalize(() => this.setLoaded()))), finalize(() => this.setLoaded()))
1044
+ .subscribe();
1045
+ this.updateAppTileSetting$
1046
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this.tilesService.changeAppTileSetting(appTile).pipe(finalize(() => {
1047
+ this.setLoaded();
1048
+ }))), finalize(() => {
1049
+ this.setLoaded();
1050
+ }))
1051
+ .subscribe();
1052
+ this.deleteAppGroup$
1053
+ .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appGroup) => this.tilesService.deleteAppGroup(appGroup).pipe(finalize(() => {
1054
+ this.setLoaded();
1055
+ }))))
1056
+ .subscribe();
1057
+ this.resetAppGroup$
1058
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.resetAppGroupSetting(appGroup).pipe(finalize(() => {
1059
+ this.setLoaded();
1060
+ }))), finalize(() => {
1061
+ this.setLoaded();
1062
+ }))
1063
+ .subscribe();
1064
+ this.hideAppGroup$
1065
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize(() => {
1066
+ this.setLoaded();
1067
+ }))), finalize(() => {
1068
+ this.setLoaded();
1069
+ }))
1070
+ .subscribe();
1071
+ this.saveAppGroupOrders$
1072
+ .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this.tilesService.saveAppGroupOrders(appGroups).pipe(finalize(() => {
1073
+ this.setLoaded();
1074
+ }))), finalize(() => {
1075
+ this.setLoaded();
1076
+ }))
1077
+ .subscribe();
1078
+ }
1079
+ get selectedAppGroupId() {
1080
+ return localStorage.getItem('selectedTab') ?? '';
1081
+ }
1082
+ set selectedAppGroupId(groupId) {
1083
+ localStorage.setItem('selectedTab', groupId);
1084
+ }
1085
+ setSelectedTab(group) {
1086
+ this.selectedAppGroupId = group.Id;
1087
+ }
1088
+ loadAppGroup(group) {
1089
+ this._loadAppGroupSource.next(group);
1090
+ }
1091
+ ngOnDestroy() {
1092
+ this._onDestroy$.next();
1093
+ }
1094
+ openRenameForm(appTile) {
1095
+ const newGroupDialogRef = this.dialogService.open(ChangeAppTileComponent, {
1096
+ data: appTile,
1097
+ verticalPadding: true,
1098
+ responsivePadding: true
1099
+ });
1100
+ newGroupDialogRef.afterClosed.subscribe((setting) => {
1101
+ if (setting) {
1102
+ const newAppTile = { ...appTile };
1103
+ newAppTile.Title = newAppTile.TileTitle = setting.title;
1104
+ newAppTile.Subtitle = setting.subtitle;
1105
+ this._updateAppTileSettingSource.next(newAppTile);
1106
+ }
1107
+ });
1108
+ }
1109
+ resetAppGroup(appGroup) {
1110
+ this._resetAppGroupSource.next(appGroup);
1111
+ }
1112
+ toggleAppGroupSettingVisible(appGroup) {
1113
+ this._hideAppGroupSource.next(appGroup);
1114
+ }
1115
+ deleteAppGroup(appGroup) {
1116
+ this._deleteGroupSource.next(appGroup);
1117
+ }
1118
+ hideTile(appTile) {
1119
+ this._hideTileSource.next(appTile);
1120
+ }
1121
+ saveAppGroupOrders(appGroups) {
1122
+ this._saveAppGroupOrdersSource.next(appGroups);
1123
+ }
1124
+ setLoaded() {
1125
+ this._viewLoadingSource.next(false);
1126
+ }
1127
+ setLoading() {
1128
+ this._viewLoadingSource.next(true);
1129
+ }
1130
+ }
1131
+ 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 });
1132
+ TilesViewerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService });
1133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService, decorators: [{
1134
+ type: Injectable
1135
+ }], ctorParameters: function () { return [{ type: i1$4.DialogService }, { type: TilesService }]; } });
1136
+
1137
+ class TilesViewerComponent extends BaseComponent {
1138
+ constructor() {
1139
+ super(...arguments);
1140
+ this.pageContentClass = true;
1141
+ this.stackContentChange = new EventEmitter();
1142
+ this.closeEditHome = new EventEmitter();
1143
+ this.save = new EventEmitter();
1144
+ this.listDropped = new EventEmitter();
1145
+ this.tabChanged = new EventEmitter();
1146
+ this.toggleGroup = new EventEmitter();
1147
+ this.resetGroup = new EventEmitter();
1148
+ this.deleteGroup = new EventEmitter();
1149
+ this.hideAppTileClick = new EventEmitter();
1150
+ this.renameAppTileClick = new EventEmitter();
1151
+ this.tilesDropped = new EventEmitter();
1152
+ this.rtl = BarsaApi.LoginFormData.IsRtl;
1153
+ }
1154
+ onSelectedTabChange(selectedTab, appTileGroups) {
1155
+ this.selectedTabTitle = selectedTab.title;
1156
+ if (!this.tabListComponent) {
1157
+ return;
1158
+ }
1159
+ this.tabChanged.emit({
1160
+ tabPanels: this.tabListComponent.tabPanels.toArray(),
1161
+ selectedTab,
1162
+ appTileGroups
1163
+ });
1164
+ }
1165
+ onDropGroup(appTileGroups, event) {
1166
+ if (!this.editHome) {
1167
+ return;
1168
+ }
1169
+ this.listDropped.emit({ appTileGroups, event });
1170
+ }
1171
+ onDrop($event) {
1172
+ this.tilesDropped.emit($event);
1173
+ }
1174
+ onStackContentChanged(checked) {
1175
+ this.stackContentChange.emit(checked);
1176
+ }
1177
+ onExitEditHome(appGroups) {
1178
+ this.save.emit(appGroups);
1179
+ }
1180
+ onCloseEditHome() {
1181
+ this.closeEditHome.emit();
1182
+ }
1183
+ _trackById(item, index) {
1184
+ return item ? item.Id : index;
1185
+ }
1186
+ }
1187
+ TilesViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1188
+ 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 });
1189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, decorators: [{
1190
+ type: Component,
1191
+ 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"] }]
1192
+ }], propDecorators: { tabListComponent: [{
1193
+ type: ViewChild,
1194
+ args: [TabListComponent]
1195
+ }], pageContentClass: [{
1196
+ type: HostBinding,
1197
+ args: ['class.page-content']
1198
+ }], appTileGroups: [{
1199
+ type: Input
1200
+ }], loading: [{
1201
+ type: Input
1202
+ }], editHome: [{
1203
+ type: Input
1204
+ }], stackContent: [{
1205
+ type: Input
1206
+ }], deviceSize: [{
1207
+ type: Input
1208
+ }], selectedAppGroupId: [{
1209
+ type: Input
1210
+ }], DynamicComponents: [{
1211
+ type: Input
1212
+ }], stackContentChange: [{
1213
+ type: Output
1214
+ }], closeEditHome: [{
1215
+ type: Output
1216
+ }], save: [{
1217
+ type: Output
1218
+ }], listDropped: [{
1219
+ type: Output
1220
+ }], tabChanged: [{
1221
+ type: Output
1222
+ }], toggleGroup: [{
1223
+ type: Output
1224
+ }], resetGroup: [{
1225
+ type: Output
1226
+ }], deleteGroup: [{
1227
+ type: Output
1228
+ }], hideAppTileClick: [{
1229
+ type: Output
1230
+ }], renameAppTileClick: [{
1231
+ type: Output
1232
+ }], tilesDropped: [{
1233
+ type: Output
1234
+ }], rtl: [{
1235
+ type: HostBinding,
1236
+ args: ['attr.rtl']
1237
+ }] } });
1238
+
1239
+ class TilesViewerContainerComponent extends BaseComponent {
1240
+ constructor(_portalService, _tilesService, _tilesViewerService) {
1241
+ super();
1242
+ this._portalService = _portalService;
1243
+ this._tilesService = _tilesService;
1244
+ this._tilesViewerService = _tilesViewerService;
1245
+ this.changedOrder = false;
1246
+ this.userStackContent = false;
1247
+ this.initialStackContentValue = false;
1248
+ this.firstSelected = false;
1249
+ this.stackContent$ = this._portalService.userPortalSettings$.pipe(takeUntil(this._onDestroy$), map((settings) => settings?.TilesStackContent), distinctUntilChanged());
1250
+ this.stackContent$.subscribe((stackContent) => {
1251
+ this.initialStackContentValue = this.userStackContent = stackContent;
1252
+ if (stackContent) {
1253
+ }
1254
+ });
1255
+ }
1256
+ ngOnInit() {
1257
+ super.ngOnInit();
1258
+ this.viewLoading$ = this._tilesViewerService.viewLoading$;
1259
+ this.deviceSize$ = this._portalService.deviceSize$;
1260
+ this.editHome$ = this._tilesService.editHome$;
1261
+ this.appTileGroups$ = this._tilesService.homeAppTileGroups$;
1262
+ this.appTileGroups$.pipe(withLatestFrom(this.stackContent$)).subscribe(([tiles, stackContent]) => {
1263
+ if (tiles && stackContent) {
1264
+ tiles.forEach((c) => {
1265
+ this._tilesService.loadAppTileGroups(c);
1266
+ });
1267
+ }
1268
+ });
1269
+ }
1270
+ ngOnDestroy() {
1271
+ super.ngOnDestroy();
1272
+ this._tilesService.setEditHome(false);
1273
+ }
1274
+ onSelectedTabChange(e) {
1275
+ const { selectedTab, appTileGroups: appGroups, tabPanels } = e;
1276
+ const appTileGroupTitle = selectedTab.title;
1277
+ let appTileGroup;
1278
+ if (!this.firstSelected) {
1279
+ this.firstSelected = true;
1280
+ const lastSelectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
1281
+ if (lastSelectedAppGroupId) {
1282
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
1283
+ if (appTileGroup) {
1284
+ const lastTab = tabPanels.find((c) => c.title === appTileGroup?.navigatorTitle);
1285
+ if (lastTab) {
1286
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
1287
+ lastTab.open(true);
1288
+ }
1289
+ }
1290
+ }
1291
+ }
1292
+ if (!appTileGroup) {
1293
+ appTileGroup = appGroups.find((c) => c.navigatorTitle === appTileGroupTitle);
1294
+ }
1295
+ if (appTileGroup) {
1296
+ this._tilesViewerService.setSelectedTab(appTileGroup);
1297
+ this._tilesViewerService.loadAppGroup(appTileGroup);
1298
+ }
1299
+ }
1300
+ onDropGroup(e) {
1301
+ const { event, appTileGroups: appGroups } = e;
1302
+ moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
1303
+ this.changedOrder = true;
1304
+ // this.saveOrderAppTiles(allApps, group);
1305
+ }
1306
+ onDrop(e) {
1307
+ const { appTileGroup: group, event } = e;
1308
+ const previousContainer = event.previousContainer;
1309
+ const container = event.container;
1310
+ const containerIsTile = container.data.isTile;
1311
+ const previousItems = previousContainer.data.items;
1312
+ const containerItems = container.data.items;
1313
+ const { previousIndex, currentIndex } = event;
1314
+ if (previousContainer === container) {
1315
+ moveItemInArray(previousItems, previousIndex, currentIndex);
1316
+ if (containerIsTile) {
1317
+ this._saveOrderAppTiles(group);
1318
+ }
1319
+ else {
1320
+ this._saveOrderActionLinks(group);
1321
+ }
1322
+ }
1323
+ else {
1324
+ transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
1325
+ const appTileIdTransferedId = containerItems[currentIndex]?.AppTile?.Id ?? containerItems[currentIndex].Id;
1326
+ if (containerIsTile) {
1327
+ this._saveOrderActionLinks(group);
1328
+ this._saveOrderAppTiles(group, appTileIdTransferedId);
1329
+ }
1330
+ else {
1331
+ this._saveOrderAppTiles(group);
1332
+ this._saveOrderActionLinks(group, appTileIdTransferedId);
1333
+ }
1334
+ }
1335
+ }
1336
+ onStackContentChanged(checked) {
1337
+ this.userStackContent = checked;
1338
+ }
1339
+ onExitEditHome(appTileGroups) {
1340
+ if (this.changedOrder) {
1341
+ this._tilesViewerService.saveAppGroupOrders(appTileGroups);
1342
+ this.changedOrder = false;
1343
+ }
1344
+ if (this.userStackContent !== this.initialStackContentValue) {
1345
+ this._tilesService.saveTilesStackContent(this.userStackContent);
1346
+ }
1347
+ this._setEditHome(false);
1348
+ }
1349
+ onCloseEditHome() {
1350
+ this._setEditHome(false);
1351
+ }
1352
+ onDelete(appTileGroup) {
1353
+ this._tilesViewerService.deleteAppGroup(appTileGroup);
1354
+ }
1355
+ onToggleShowHide(appTileGroup) {
1356
+ this._tilesViewerService.toggleAppGroupSettingVisible(appTileGroup);
1357
+ }
1358
+ onReset(appTileGroup) {
1359
+ this._tilesViewerService.resetAppGroup(appTileGroup);
1360
+ }
1361
+ onHideAppTile(appTile) {
1362
+ this._tilesViewerService.hideTile(appTile);
1363
+ }
1364
+ onRenameAppTile(appTile) {
1365
+ this._tilesViewerService.openRenameForm(appTile);
1366
+ }
1367
+ _setEditHome(val) {
1368
+ this._tilesService.setEditHome(val);
1369
+ }
1370
+ _saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
1371
+ const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
1372
+ this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
1373
+ }
1374
+ _saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
1375
+ const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
1376
+ this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
1377
+ }
1378
+ }
1379
+ 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 });
1380
+ 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 });
1381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
1382
+ type: Component,
1383
+ 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"] }]
1384
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: TilesService }, { type: TilesViewerService }]; } });
1385
+
1386
+ class MicroTileChartBulletComponent extends BaseBtTileComponent {
1387
+ ngOnInit() {
1388
+ super.ngOnInit();
1389
+ this.target = this.settings.Target;
1390
+ this.value = this.settings.Value;
1391
+ this.range = this.settings.Range;
1392
+ this.forecast = this.settings.Forecast;
1393
+ this.suffix = this.settings.Suffix;
1394
+ this.separatorLines = this.settings.SeparatorLines;
1395
+ this.isDelta = this.settings.IsDelta;
1396
+ }
1397
+ }
1398
+ MicroTileChartBulletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBulletComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1399
+ 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 });
1400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBulletComponent, decorators: [{
1401
+ type: Component,
1402
+ 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"] }]
1403
+ }] });
1404
+
1405
+ class NewsTileComponent extends BaseBtTileComponent {
1406
+ constructor(el, _renderer2, _cdr) {
1407
+ super(el, _renderer2, _cdr);
1408
+ this.el = el;
1409
+ this._renderer2 = _renderer2;
1410
+ this._cdr = _cdr;
1411
+ this.isStop = false;
1412
+ }
1413
+ get twoColumn() {
1414
+ return this.footer.TwoColumn;
1415
+ }
1416
+ ngOnInit() {
1417
+ super.ngOnInit();
1418
+ const slides = this.settings.Report.MoDataList;
1419
+ if (slides.length) {
1420
+ this._updateTile(slides[0]);
1421
+ interval(5000)
1422
+ .pipe(takeUntil(this._onDestroy$), tap(() => {
1423
+ if (!this.isStop) {
1424
+ this.carouselComponent.next();
1425
+ }
1426
+ }))
1427
+ .subscribe();
1428
+ }
1429
+ this.slides = slides;
1430
+ }
1431
+ trigger() {
1432
+ this.isStop = !this.isStop;
1433
+ }
1434
+ slideChange(activeSlide) {
1435
+ const currentSlide = activeSlide.activeItems[0].value;
1436
+ this._updateTile(currentSlide);
1437
+ }
1438
+ _updateTile(newsMo) {
1439
+ this.activeNews = newsMo;
1440
+ }
1441
+ }
1442
+ 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 });
1443
+ 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 });
1444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NewsTileComponent, decorators: [{
1445
+ type: Component,
1446
+ 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"] }]
1447
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselComponent: [{
1448
+ type: ViewChild,
1449
+ args: [CarouselComponent]
1450
+ }] } });
1451
+
1452
+ class MicroTileChartComparisonComponent extends BaseBtTileComponent {
1453
+ constructor() {
1454
+ super(...arguments);
1455
+ this.chartData = {
1456
+ data: [
1457
+ { value: 5, color: '#de890d', label: 'تاخیر' },
1458
+ {
1459
+ value: 45,
1460
+ color: '#dc0d0e',
1461
+ label: 'هم اکنون'
1462
+ },
1463
+ { value: 100, color: '#3fa45b', label: 'به موقع' }
1464
+ ],
1465
+ suffix: '%'
1466
+ };
1467
+ }
1468
+ }
1469
+ MicroTileChartComparisonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartComparisonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1470
+ 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 });
1471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartComparisonComponent, decorators: [{
1472
+ type: Component,
1473
+ 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" }]
1474
+ }] });
1475
+
1476
+ class MicroTileChartStackbarComponent extends BaseBtTileComponent {
1477
+ constructor() {
1478
+ super(...arguments);
1479
+ this.charData = {
1480
+ data: [
1481
+ { value: 20, color: '#3fa45b' },
1482
+ { value: 30, color: '#e9730c' },
1483
+ { value: 50, color: '#dc0d0e' }
1484
+ ],
1485
+ suffix: '%'
1486
+ };
1487
+ }
1488
+ }
1489
+ MicroTileChartStackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartStackbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1490
+ 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 });
1491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartStackbarComponent, decorators: [{
1492
+ type: Component,
1493
+ 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"] }]
1494
+ }] });
1495
+
1496
+ class MicroTileChartLineComponent extends BaseBtTileComponent {
1497
+ constructor() {
1498
+ super(...arguments);
1499
+ this.chartData = {
1500
+ data: [
1501
+ { value: 2, label: '1 آبان' },
1502
+ { value: 4, label: 'آبان 20' },
1503
+ {
1504
+ value: 3,
1505
+ label: 'آبان 27'
1506
+ },
1507
+ { value: 5, label: 'آبان 30' }
1508
+ ],
1509
+ color: '',
1510
+ suffix: 'M'
1511
+ };
1512
+ }
1513
+ }
1514
+ MicroTileChartLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartLineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1515
+ 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 });
1516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartLineComponent, decorators: [{
1517
+ type: Component,
1518
+ 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"] }]
1519
+ }] });
1520
+
1521
+ class MicroTileChartCircularComponent extends BaseBtTileComponent {
1522
+ constructor() {
1523
+ super(...arguments);
1524
+ this.chartData = 70;
1525
+ }
1526
+ }
1527
+ MicroTileChartCircularComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartCircularComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1528
+ 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 });
1529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartCircularComponent, decorators: [{
1530
+ type: Component,
1531
+ 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"] }]
1532
+ }] });
1533
+
1534
+ class MicroTileChartAreaComponent extends BaseBtTileComponent {
1535
+ constructor() {
1536
+ super(...arguments);
1537
+ this.chartData = {
1538
+ areas: [
1539
+ { data: [2.5, 2.5, 2.5, 2.5], color: '#3fa45b' },
1540
+ {
1541
+ data: [2, 2, 2, 2],
1542
+ color: '#e9730c'
1543
+ },
1544
+ { data: [1.5, 1.5, 1.5, 1.5], color: '#dc0d0e' }
1545
+ ],
1546
+ line: {
1547
+ data: [
1548
+ { value: 2, label: 'june 1' },
1549
+ { value: 4, label: 'june 20' },
1550
+ { value: 3, label: 'june 27' },
1551
+ { value: 5, label: 'june 30' }
1552
+ ],
1553
+ suffix: 'M'
1554
+ },
1555
+ firstValueColor: '#3fa45b',
1556
+ lastValueColor: '#dc0d0e'
1557
+ };
1558
+ }
1559
+ }
1560
+ MicroTileChartAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1561
+ 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 });
1562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartAreaComponent, decorators: [{
1563
+ type: Component,
1564
+ 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"] }]
1565
+ }] });
1566
+
1567
+ class MicroTileChartBarComponent extends BaseBtTileComponent {
1568
+ constructor() {
1569
+ super(...arguments);
1570
+ this.chartData = [
1571
+ { value: 5, color: '#dc0d0e', label: 'q1' },
1572
+ { value: 10, color: '#dc0d0e', label: 'q4' },
1573
+ { value: 20, color: '#e9730c', label: 'q2' },
1574
+ { value: 36, color: '#3fa45b', label: 'q3' }
1575
+ ];
1576
+ this.extraData = {
1577
+ value: 1.8,
1578
+ suffix: 'M'
1579
+ };
1580
+ }
1581
+ }
1582
+ MicroTileChartBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1583
+ 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 });
1584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: MicroTileChartBarComponent, decorators: [{
1585
+ type: Component,
1586
+ 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"] }]
1587
+ }] });
1588
+
1589
+ class CreateAppGroupComponent extends BaseComponent {
1590
+ constructor(fb, dialogRef, bbbPipe) {
1591
+ super();
1592
+ this.fb = fb;
1593
+ this.dialogRef = dialogRef;
1594
+ this.bbbPipe = bbbPipe;
1595
+ }
1596
+ ngOnInit() {
1597
+ super.ngOnInit();
1598
+ this.appGroupForm = this.fb.group({
1599
+ title: new UntypedFormControl(this.title, [Validators.required])
1600
+ });
1601
+ const mandatoryFieldText = this.bbbPipe.transform('AlertFieldIsMandatory');
1602
+ const titleText = this.bbbPipe.transform('Title');
1603
+ this.RequiredText = mandatoryFieldText.replace('{0}', titleText);
1604
+ }
1605
+ onSave() {
1606
+ this.submitted = true;
1607
+ if (this.appGroupForm.valid) {
1608
+ this.dialogRef.close(this.title);
1609
+ }
1610
+ }
1611
+ }
1612
+ 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 });
1613
+ 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 });
1614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: CreateAppGroupComponent, decorators: [{
1615
+ type: Component,
1616
+ 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" }]
1617
+ }], ctorParameters: function () { return [{ type: i1$3.UntypedFormBuilder }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; } });
1618
+
1619
+ class PinTileComponent extends BaseComponent {
1620
+ constructor(_dialogService, _dialogRef, bbbPipe) {
1621
+ super();
1622
+ this._dialogService = _dialogService;
1623
+ this._dialogRef = _dialogRef;
1624
+ this.bbbPipe = bbbPipe;
1625
+ this.newGroupText = BarsaApi.LoginFormData.IsRtl
1626
+ ? this.bbbPipe.transform('Groups') + ' ' + this.bbbPipe.transform('New')
1627
+ : this.bbbPipe.transform('New') + ' ' + this.bbbPipe.transform('Groups');
1628
+ this.app = _dialogRef.data.app;
1629
+ this.appTileGroups = _dialogRef.data.appTileGroups;
1630
+ this.pinnedAppInTileGroups = _dialogRef.data.pinnedAppInTileGroups;
1631
+ }
1632
+ ngOnInit() {
1633
+ this._setLoading(true);
1634
+ const tileGroupsId = this.pinnedAppInTileGroups[this.app.Id];
1635
+ this.appTileGroups.forEach((appGroup) => {
1636
+ this._setDefaultPinTile(appGroup, tileGroupsId);
1637
+ });
1638
+ this._setLoading(false);
1639
+ }
1640
+ onAccept() {
1641
+ const appTileGroupsPin = [];
1642
+ this.appTileGroups.forEach((group) => {
1643
+ this._getChangedPinTileGroups(group, appTileGroupsPin);
1644
+ });
1645
+ this._close({ appTileGroupsPin, app: this.app });
1646
+ }
1647
+ onClose() {
1648
+ this._close();
1649
+ }
1650
+ onNewGroup() {
1651
+ this.newGroupDialogRef = this._dialogService.open(CreateAppGroupComponent, {
1652
+ data: { title: this.newGroupText },
1653
+ verticalPadding: true,
1654
+ mobile: this.mobile,
1655
+ responsivePadding: true
1656
+ });
1657
+ this.newGroupDialogRef.afterClosed.subscribe(() => {
1658
+ // if (result) {
1659
+ // this.dialogRef.loading(true);
1660
+ // this.tilesService
1661
+ // .createAppGroup(result)
1662
+ // .pipe(
1663
+ // takeUntil(this._onDestroy$),
1664
+ // finalize(() => {
1665
+ // this.dialogRef.loading(false);
1666
+ // })
1667
+ // )
1668
+ // .subscribe();
1669
+ // }
1670
+ });
1671
+ }
1672
+ _setLoading(loading) {
1673
+ this._dialogRef.loading(loading);
1674
+ }
1675
+ _setDefaultPinTile(appTileGroup, tileGroupsId) {
1676
+ appTileGroup.$PinTile = appTileGroup.$DefaultPinTile =
1677
+ tileGroupsId.includes(appTileGroup.Id) || tileGroupsId.includes(appTileGroup.UserAppTileGroupSetting?.Id);
1678
+ appTileGroup.$Children?.forEach((subGroup) => {
1679
+ this._setDefaultPinTile(subGroup, tileGroupsId);
1680
+ });
1681
+ appTileGroup.$Disabledpin = false;
1682
+ }
1683
+ _getChangedPinTileGroups(appTileGroup, appTileGroupsPin) {
1684
+ if (appTileGroup.$PinTile && !appTileGroup.$DefaultPinTile) {
1685
+ // Add
1686
+ appTileGroupsPin.push({ appTileGroup, visible: true });
1687
+ }
1688
+ else if (appTileGroup.$PinTile === false && appTileGroup.$DefaultPinTile) {
1689
+ // Remove
1690
+ appTileGroupsPin.push({ appTileGroup, visible: false });
1691
+ }
1692
+ appTileGroup.$Children?.forEach((subGroup) => {
1693
+ this._getChangedPinTileGroups(subGroup, appTileGroupsPin);
1694
+ });
1695
+ }
1696
+ _close(result) {
1697
+ this._dialogRef.close(result);
1698
+ }
1699
+ }
1700
+ 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 });
1701
+ 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 });
1702
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PinTileComponent, decorators: [{
1703
+ type: Component,
1704
+ 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"] }]
1705
+ }], ctorParameters: function () { return [{ type: i1$4.DialogService }, { type: i1$4.DialogRef }, { type: i1$2.BbbTranslatePipe }]; }, propDecorators: { app: [{
1706
+ type: Input
1707
+ }], appTileGroups: [{
1708
+ type: Input
1709
+ }], mobile: [{
1710
+ type: Input
1711
+ }], pin: [{
1712
+ type: Input
1713
+ }] } });
1714
+
1715
+ class AppFinderService {
1716
+ constructor(_portalService, _tileService) {
1717
+ this._portalService = _portalService;
1718
+ this._tileService = _tileService;
1719
+ this._appGroupsSource = new BehaviorSubject([]);
1720
+ this._OnDestroy$ = new Subject();
1721
+ this._selectedAppGroupIdSource = new Subject();
1722
+ this._pinnedAppInAppTileGroupsSource = new BehaviorSubject({});
1723
+ this.loadAppGroups();
1724
+ this.deviceSize$ = this._tileService.deviceSize$;
1725
+ this.pinnedAppInAppTileGroups$ = this._pinnedAppInAppTileGroupsSource.asObservable();
1726
+ this.appGroups$ = this._appGroupsSource.asObservable();
1727
+ this.selectedAppGroupId$ = this._selectedAppGroupIdSource.asObservable().pipe(distinctUntilChanged());
1728
+ this.selectedAppGroup$ = combineLatest([this.appGroups$, this.selectedAppGroupId$]).pipe(map(([moDataList, selectedId]) => moDataList?.find((c) => c.Id === selectedId)));
1729
+ }
1730
+ get deviceSize() {
1731
+ return this._portalService.deviceSize;
1732
+ }
1733
+ get appTileGroups() {
1734
+ return this._tileService.appTileGroups?.MoDataList;
1735
+ }
1736
+ ngOnDestroy() {
1737
+ this._OnDestroy$.next();
1738
+ }
1739
+ loadAppGroups() {
1740
+ this._portalService
1741
+ .ReportExecute('UserAppGroups')
1742
+ .subscribe((allApps) => this._nextAllApps(allApps.MoDataList));
1743
+ }
1744
+ selectAppGroup(appGroupId) {
1745
+ const appGroups = this._appGroupsSource.getValue();
1746
+ const group = appGroups.find((c) => c.Id === appGroupId);
1747
+ if (group) {
1748
+ this._selectedAppGroupIdSource.next(appGroupId);
1749
+ this.loadAppsByAppGroup(appGroups, group);
1750
+ }
1751
+ }
1752
+ loadAppsByAppGroup(appGroups, appGroup) {
1753
+ if (appGroup.Apps) {
1754
+ return;
1755
+ }
1756
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('LoadAppsByAppGroup', appGroup.Id);
1757
+ const moForReport = reportWrapper.Unwrap();
1758
+ appGroup.Apps = appGroup.Apps ?? [];
1759
+ const apps = moForReport.MoDataList;
1760
+ if (apps.length > 0) {
1761
+ const customColumns = Object.keys(apps[0]).filter((c) => c.indexOf('$Caption') > -1 && !c.startsWith('$'));
1762
+ apps.forEach((app) => {
1763
+ customColumns.forEach((column) => {
1764
+ app.$HasPinned = app.$HasPinned || Number(app[column.split('$Caption')[0]]);
1765
+ });
1766
+ });
1767
+ }
1768
+ appGroup.Apps = [...appGroup.Apps, ...apps];
1769
+ this._nextAllApps(appGroups);
1770
+ }
1771
+ loadPinnedAppInTileGroups(app) {
1772
+ const appId = app.Id;
1773
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
1774
+ if (val[appId]) {
1775
+ return val;
1776
+ }
1777
+ const reportWrapper = BarsaApi.Bw.RunBlMethod('PinnedAppInTileGroups', appId);
1778
+ const moForReport = reportWrapper.Unwrap();
1779
+ val[appId] = val[appId] ?? [];
1780
+ const apps = moForReport.MoDataList;
1781
+ if (apps.length > 0) {
1782
+ apps.forEach((itemApp) => {
1783
+ const predefined = itemApp.Id.Id;
1784
+ const userSetting = itemApp.UserAppTileGroupSetting?.Id;
1785
+ if (predefined) {
1786
+ val[appId] = [...val[appId], predefined];
1787
+ }
1788
+ if (userSetting) {
1789
+ val[appId] = [...val[appId], userSetting];
1790
+ }
1791
+ });
1792
+ }
1793
+ this._pinnedAppInAppTileGroupsSource.next(val);
1794
+ return val;
1795
+ }
1796
+ pinTileChanged(appTileGroups, app, callback) {
1797
+ this._tileService.pinTileChanged(appTileGroups, app, (settings) => {
1798
+ const val = this._pinnedAppInAppTileGroupsSource.getValue();
1799
+ const appId = app.Id;
1800
+ for (let i = 0; i < appTileGroups.length; i++) {
1801
+ const appTileSetting = settings[i];
1802
+ const appTileGroupSettingId = appTileSetting.UserAppTileGroupSettingId;
1803
+ const appTileGroupId = appTileSetting.AppTileGroupId;
1804
+ if (appTileGroups[i].visible) {
1805
+ val[appId] = [...val[appId], appTileGroupSettingId, appTileGroupId];
1806
+ }
1807
+ else {
1808
+ val[appId] = val[appId].filter((c) => c !== appTileGroupSettingId && c !== appTileGroupId);
1809
+ }
1810
+ }
1811
+ this._pinnedAppInAppTileGroupsSource.next({ ...val });
1812
+ callback();
1813
+ });
1814
+ }
1815
+ _nextAllApps(appGroups) {
1816
+ const newAppGroups = appGroups ?? this._appGroupsSource.getValue();
1817
+ this._appGroupsSource.next([...newAppGroups]);
1818
+ }
1819
+ }
1820
+ 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 });
1821
+ AppFinderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, providedIn: 'root' });
1822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppFinderService, decorators: [{
1823
+ type: Injectable,
1824
+ args: [{
1825
+ providedIn: 'root'
1826
+ }]
1827
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: TilesService }]; } });
1828
+
1829
+ class FormAppFinderComponent extends BaseComponent {
1830
+ constructor(_cdr, _dialogService, _appFinderService, _el, _contentDensityService) {
1831
+ super();
1832
+ this._cdr = _cdr;
1833
+ this._dialogService = _dialogService;
1834
+ this._appFinderService = _appFinderService;
1835
+ this._el = _el;
1836
+ this.isAllSelected = true;
1837
+ this.contentDensity$ = _contentDensityService.contentDensity.asObservable();
1838
+ this.appGroups$ = this._appFinderService.appGroups$;
1839
+ this.selectedAppGroup$ = this._appFinderService.selectedAppGroup$;
1840
+ this.selectedAppGroupId$ = this._appFinderService.selectedAppGroupId$;
1841
+ this.deviceSize$ = this._appFinderService.deviceSize$;
1842
+ this.pinnedAppInAppTileGroups$ = this._appFinderService.pinnedAppInAppTileGroups$;
1843
+ this.mobile$ = this.deviceSize$.pipe(map((c) => c === 's'));
1844
+ }
1845
+ ngOnInit() {
1846
+ super.ngOnInit();
1847
+ this.contentHeight = 'calc(' + this._el.nativeElement.offsetHeight + 'px - 2.75rem)';
1848
+ this.sideContentSize$ = this.deviceSize$.pipe(takeUntil(this._onDestroy$), map((deviceSize) => {
1849
+ switch (deviceSize) {
1850
+ case 's':
1851
+ return 'sm';
1852
+ case 'm':
1853
+ return 'md';
1854
+ case 'l':
1855
+ return 'lg';
1856
+ case 'xl':
1857
+ return 'xl';
1858
+ default:
1859
+ return 'l';
1860
+ }
1861
+ }));
1862
+ }
1863
+ onSelectedAppGroupChange(appGroupId) {
1864
+ this._changeGroup(appGroupId);
1865
+ }
1866
+ onPinClick(app) {
1867
+ const pinnedAppInTileGroups = this._appFinderService.loadPinnedAppInTileGroups(app);
1868
+ const appTileGroups = this._appFinderService.appTileGroups;
1869
+ const deviceSize = this._appFinderService.deviceSize;
1870
+ const mobile = deviceSize === 's';
1871
+ this._dialogService
1872
+ .open(PinTileComponent, {
1873
+ data: { app, pinnedAppInTileGroups, appTileGroups },
1874
+ minWidth: '350px',
1875
+ minHeight: '420px',
1876
+ draggable: false,
1877
+ mobile,
1878
+ resizable: false,
1879
+ verticalPadding: false,
1880
+ backdropClickCloseable: false
1881
+ })
1882
+ .afterClosed.subscribe((result) => {
1883
+ this._appTileGroupsPinChange(result);
1884
+ });
1885
+ }
1886
+ onRefresh() { }
1887
+ async _appTileGroupsPinChange(result) {
1888
+ try {
1889
+ // Will try to ask for permission
1890
+ this._appFinderService.pinTileChanged(result.appTileGroupsPin, result.app, () => {
1891
+ this._cdr.detectChanges();
1892
+ });
1893
+ }
1894
+ catch (err) {
1895
+ // show msg error
1896
+ }
1897
+ finally {
1898
+ // show toast successful
1899
+ }
1900
+ }
1901
+ _changeGroup(appGroupId) {
1902
+ this.isAllSelected = false;
1903
+ this._appFinderService.selectAppGroup(appGroupId);
1904
+ this._cdr.detectChanges();
1905
+ }
1906
+ }
1907
+ 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 });
1908
+ 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 });
1909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormAppFinderComponent, decorators: [{
1910
+ type: Component,
1911
+ 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"] }]
1912
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$4.DialogService }, { type: AppFinderService }, { type: i0.ElementRef }, { type: i1$4.ContentDensityService }]; } });
1913
+
1914
+ class FooterEditTileComponent extends BaseComponent {
1915
+ }
1916
+ FooterEditTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterEditTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1917
+ 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 });
1918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FooterEditTileComponent, decorators: [{
1919
+ type: Component,
1920
+ 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"] }]
1921
+ }] });
1922
+
1923
+ class NumericTileComponent extends BaseBtTileComponent {
1924
+ get launchIcon() {
1925
+ return this.settings.LaunchIcon;
1926
+ }
1927
+ get kpiState() {
1928
+ return this.settings.ContentKpiState;
1929
+ }
1930
+ get kpi() {
1931
+ return this.settings.ContentKpi;
1932
+ }
1933
+ get scaleState() {
1934
+ return this.settings.ScaleState;
1935
+ }
1936
+ get scaleText() {
1937
+ return this.settings.ScaleText;
1938
+ }
1939
+ get scaleArrowIcon() {
1940
+ return this.settings.ScaleArrowIcon;
1941
+ }
1942
+ }
1943
+ NumericTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NumericTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1944
+ 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 });
1945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NumericTileComponent, decorators: [{
1946
+ type: Component,
1947
+ 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" }]
1948
+ }] });
1949
+
1950
+ class LogoTileComponent extends BaseBtTileComponent {
1951
+ get fileId() {
1952
+ let fileId = this.settings.Logo?.FileId;
1953
+ if (!fileId) {
1954
+ fileId = this.settings.CalcLogo?.FileId;
1955
+ }
1956
+ return fileId;
1957
+ }
1958
+ }
1959
+ LogoTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LogoTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1960
+ 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 });
1961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: LogoTileComponent, decorators: [{
1962
+ type: Component,
1963
+ 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" }]
1964
+ }] });
1965
+
1966
+ class FeedTileComponent extends BaseBtTileComponent {
1967
+ get twoColumn() {
1968
+ return this.settings.TwoColumn;
1969
+ }
1970
+ get text() {
1971
+ return this.settings.ContentText;
1972
+ }
1973
+ get byline() {
1974
+ return this.settings.ContentByLine;
1975
+ }
1976
+ get kpi() {
1977
+ return this.settings.ContentKpi;
1978
+ }
1979
+ get state() {
1980
+ return this.settings.State;
1981
+ }
1982
+ }
1983
+ FeedTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FeedTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1984
+ 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 });
1985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FeedTileComponent, decorators: [{
1986
+ type: Component,
1987
+ 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" }]
1988
+ }] });
1989
+
1990
+ class SimpleTileComponent extends BaseBtTileComponent {
1991
+ }
1992
+ SimpleTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SimpleTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1993
+ 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 });
1994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: SimpleTileComponent, decorators: [{
1995
+ type: Component,
1996
+ 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"] }]
1997
+ }] });
1998
+
1999
+ class ProfileTileComponent extends BaseBtTileComponent {
2000
+ get fileId() {
2001
+ let fileId = this.settings.Image?.FileId;
2002
+ if (!fileId) {
2003
+ fileId = this.settings.CalcImage;
2004
+ }
2005
+ return fileId;
2006
+ }
2007
+ }
2008
+ ProfileTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2009
+ 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 });
2010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ProfileTileComponent, decorators: [{
2011
+ type: Component,
2012
+ 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"] }]
2013
+ }] });
2014
+
2015
+ class ShellbarComponent extends BaseComponent {
2016
+ constructor(_portalService, _breadCrumbService, _tilesService, _cdr, _bbbTranslatePipe, appVersion) {
2017
+ super();
2018
+ this._portalService = _portalService;
2019
+ this._breadCrumbService = _breadCrumbService;
2020
+ this._tilesService = _tilesService;
2021
+ this._cdr = _cdr;
2022
+ this._bbbTranslatePipe = _bbbTranslatePipe;
2023
+ this.appVersion = appVersion;
2024
+ this.isOpenNotificatoin = false;
2025
+ this.deviceSize = 'xl';
2026
+ this.user = {
2027
+ initials: 'WW',
2028
+ colorAccent: 1
2029
+ };
2030
+ this.searchTerms = ['مرخصی', 'ماموریت', 'تیکت', 'پروژه'];
2031
+ this.allowAnonymous = true;
2032
+ this.showVersion = false;
2033
+ this.onOpenNotification = () => {
2034
+ this.isOpenNotificatoin = true;
2035
+ };
2036
+ this.onLanguage = (e) => {
2037
+ const culture = e.currentTarget.textContent.trim();
2038
+ this._changeCulture(culture);
2039
+ };
2040
+ this.userLoggedIn$ = this._portalService.userLoggedIn$;
2041
+ this.showVersion = !BarsaApi.LoginFormData.IsServiceDesk;
2042
+ }
2043
+ get subtitle() {
2044
+ return this.shellbarData?.Subtitle
2045
+ ? `${this.shellbarData?.Subtitle} ${typeof this.shellbarData?.CalcSubtitle === 'string' ? this.shellbarData.CalcSubtitle : ''}`
2046
+ : '';
2047
+ }
2048
+ get logo() {
2049
+ return this.shellbarData?.Logo;
2050
+ }
2051
+ get actions() {
2052
+ return this.settings?.HideUserMenu ? [] : this.shellbarData?.ActionItems?.MoDataList ?? [];
2053
+ }
2054
+ get userMenu() {
2055
+ const moDataList = BarsaApi.Common.Util.TryGetValue(this.shellbarData, 'UserMenuItems.MoDataList');
2056
+ const items = moDataList ? [...moDataList] : [];
2057
+ if (!items.length) {
2058
+ return [];
2059
+ }
2060
+ items.forEach((c) => {
2061
+ c.text = this._bbbTranslatePipe.transform(c.text);
2062
+ c.callback = new Function(c.Code + this.bodyClick);
2063
+ });
2064
+ if (!BarsaApi.LoginFormData.IsAnonymous && BarsaApi.LoginFormData.IsUserLoggedIn) {
2065
+ items.splice(0, 0, { Id: '-1', $Caption: '', text: BarsaApi.LoginFormData.UserDisplayName });
2066
+ }
2067
+ return this.settings?.HideUserMenu ? [] : items;
2068
+ }
2069
+ get productSwitcher() {
2070
+ return this.shellbarData?.ProductSwitchItem?.MoDataList ?? [];
2071
+ }
2072
+ get productMenuItems() {
2073
+ const items = this.shellbarData?.ProductMenuItems?.MoDataList ?? [];
2074
+ items.forEach((c) => (c.callback = new Function(c.Code + this.bodyClick)));
2075
+ return items;
2076
+ }
2077
+ get bodyClick() {
2078
+ return ';$("body").click()';
2079
+ }
2080
+ ngOnInit() {
2081
+ super.ngOnInit();
2082
+ this.cultures = BarsaApi.LoginFormData.Cultures;
2083
+ this.cssUrl$ = this._portalService.cssUrl$;
2084
+ this.cssCustomUrl$ = this._portalService.cssCustomUrl$;
2085
+ this.notificationsCount$ = this._portalService.notificationsCount$.pipe();
2086
+ this.notifications$ = this._portalService.notifications$;
2087
+ BarsaApi.Bw.SetUserPortalSettings = (userPortalSettings) => {
2088
+ this._portalService.setUserPortalSettings(userPortalSettings);
2089
+ };
2090
+ BarsaApi.Bw.SetShellbarSubtitle = (calcSubtitle) => {
2091
+ this.shellbarData.calcSubtitle = calcSubtitle;
2092
+ this._cdr.detectChanges();
2093
+ };
2094
+ this._portalService.deviceSize$.pipe(takeUntil(this._onDestroy$)).subscribe((c) => {
2095
+ this.deviceSize = c;
2096
+ this._cdr.detectChanges();
2097
+ });
2098
+ this._breadCrumbService.breadcrumbs$.pipe(takeUntil(this._onDestroy$)).subscribe((breadCrumbs) => {
2099
+ if (breadCrumbs.length > 0) {
2100
+ this.productMenuControl = breadCrumbs[breadCrumbs.length - 1].label;
2101
+ }
2102
+ this._cdr.detectChanges();
2103
+ });
2104
+ this._tilesService.shellbar$.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
2105
+ this.shellbarData = mo;
2106
+ // this._cdr.detectChanges();
2107
+ forkJoin([of(this.productMenuItems), of([])]) // to append user defined
2108
+ .pipe(takeUntil(this._onDestroy$), map(([s1, s2]) => [...s1, ...s2]))
2109
+ .subscribe((c) => {
2110
+ this.productMenuItems1 = c;
2111
+ this._cdr.detectChanges();
2112
+ });
2113
+ });
2114
+ if (this.allowAnonymous) {
2115
+ this._tilesService.loadShellbar();
2116
+ }
2117
+ this._portalService.userLoggedIn$.pipe(takeUntil(this._onDestroy$)).subscribe((loggedIn) => {
2118
+ if (!loggedIn) {
2119
+ return;
2120
+ }
2121
+ this._tilesService.loadShellbar();
2122
+ this._portalService.loadNotifications();
2123
+ });
2124
+ }
2125
+ onCultureChange(culture) {
2126
+ this._changeCulture(culture);
2127
+ }
2128
+ onNotificationRelatedClick(mo, nama) {
2129
+ this.isOpenNotificatoin = false;
2130
+ BarsaApi.Bw.Form.Show({
2131
+ Mo: mo,
2132
+ MoContext: {
2133
+ ViewName: nama
2134
+ }
2135
+ });
2136
+ }
2137
+ _changeCulture(culture /* culture sample :English */) {
2138
+ BarsaApi.Bw.SetCultureByDisplayName(culture);
2139
+ BarsaApi.Bw.NavigateTo('/');
2140
+ }
2141
+ }
2142
+ 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 });
2143
+ 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 });
2144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ShellbarComponent, decorators: [{
2145
+ type: Component,
2146
+ 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"] }]
2147
+ }], ctorParameters: function () { return [{ type: i1$2.PortalService }, { type: i1$2.BreadcrumbService }, { type: TilesService }, { type: i0.ChangeDetectorRef }, { type: i1$2.BbbTranslatePipe }, { type: undefined, decorators: [{
2148
+ type: Inject,
2149
+ args: [APP_VERSION]
2150
+ }] }]; }, propDecorators: { comboboxComponent: [{
2151
+ type: ViewChild,
2152
+ args: [ComboboxComponent]
2153
+ }] } });
2154
+
2155
+ class TileHomeFilterPipe {
2156
+ transform(collection) {
2157
+ return collection.filter((val) => this.matchFilter(val));
2158
+ }
2159
+ matchFilter(value) {
2160
+ const match = Object.keys(value.Data).some((key) => {
2161
+ if (key.startsWith('$')) {
2162
+ return false;
2163
+ }
2164
+ if (key.startsWith('c')) {
2165
+ return BarsaApi.Common.Util.TryGetValue(value, 'Data.' + key);
2166
+ }
2167
+ });
2168
+ return match;
2169
+ }
2170
+ }
2171
+ TileHomeFilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2172
+ TileHomeFilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, name: "tileHomeFilter" });
2173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TileHomeFilterPipe, decorators: [{
2174
+ type: Pipe,
2175
+ args: [{
2176
+ name: 'tileHomeFilter'
2177
+ }]
2178
+ }] });
2179
+
2180
+ class GroupTilesPipe {
2181
+ transform(appGroup) {
2182
+ const predefineTiles = appGroup.AppTiles;
2183
+ if (predefineTiles?.length === 0) {
2184
+ return of([]);
2185
+ }
2186
+ const predefine$ = of(predefineTiles);
2187
+ const userDefine$ = of(appGroup.UserAppTileGroupSetting?.UserAppTilesSetting?.MoDataList);
2188
+ return forkJoin([predefine$, userDefine$]).pipe(map(([s1, s2]) => [...s1, ...s2]), map((arrTiles) => {
2189
+ const tempTiles = arrTiles.filter((c) => c.Visible).sort((a, b) => (a.OrderItem > b.OrderItem ? 1 : 0));
2190
+ const group = { ...appGroup };
2191
+ group.Title = BarsaApi.Common.Util.TryGetValue(group, 'UserAppTileGroupSetting.Title', group.Title);
2192
+ group.OrderItem = BarsaApi.Common.Util.TryGetValue(group, 'UserAppTileGroupSetting.OrderItem', group.OrderItem);
2193
+ return tempTiles;
2194
+ }), shareReplay(1));
2195
+ }
2196
+ }
2197
+ GroupTilesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2198
+ GroupTilesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, name: "groupTiles" });
2199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: GroupTilesPipe, decorators: [{
2200
+ type: Pipe,
2201
+ args: [{
2202
+ name: 'groupTiles'
2203
+ }]
2204
+ }] });
2205
+
2206
+ class HomeGroupPipe {
2207
+ constructor() { }
2208
+ transform(appGroups) {
2209
+ return appGroups.filter((c) => c.navigatorTiles && c.navigatorTiles.length > 0);
2210
+ }
2211
+ }
2212
+ HomeGroupPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2213
+ HomeGroupPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, name: "homeGroup" });
2214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: HomeGroupPipe, decorators: [{
2215
+ type: Pipe,
2216
+ args: [{
2217
+ name: 'homeGroup'
2218
+ }]
2219
+ }], ctorParameters: function () { return []; } });
2220
+
2221
+ class ActionLinksPipe {
2222
+ transform(tiles) {
2223
+ return tiles.filter((tile) => tile.IsActionLink);
2224
+ }
2225
+ }
2226
+ ActionLinksPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2227
+ ActionLinksPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, name: "actionLinks" });
2228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ActionLinksPipe, decorators: [{
2229
+ type: Pipe,
2230
+ args: [{
2231
+ name: 'actionLinks'
2232
+ }]
2233
+ }] });
2234
+
2235
+ const components = [
2236
+ ShellbarComponent,
2237
+ SimpleTileComponent,
2238
+ TilesViewerComponent,
2239
+ ProfileTileComponent,
2240
+ FeedTileComponent,
2241
+ FooterTileComponent,
2242
+ TileComponent,
2243
+ LogoTileComponent,
2244
+ NumericTileComponent,
2245
+ FooterEditTileComponent,
2246
+ FormAppFinderComponent,
2247
+ PinTileComponent,
2248
+ ChangeAppTileComponent,
2249
+ CreateAppGroupComponent,
2250
+ MicroTileChartAreaComponent,
2251
+ MicroTileChartCircularComponent,
2252
+ MicroTileChartLineComponent,
2253
+ MicroTileChartStackbarComponent,
2254
+ MicroTileChartComparisonComponent,
2255
+ MicroTileChartBarComponent,
2256
+ MicroTileChartBulletComponent,
2257
+ TilesViewerContainerComponent,
2258
+ NewsTileComponent,
2259
+ ActionsLinkComponent,
2260
+ ActionItemComponent,
2261
+ AppFinderComponent,
2262
+ AppFinderGroupComponent,
2263
+ AppFinderAppListComponent,
2264
+ TilesViewerGroupComponent,
2265
+ FormTileComponent
2266
+ ];
2267
+ const pipes = [GroupTilesPipe, TileHomeFilterPipe, HomeGroupPipe, ActionLinksPipe];
2268
+ const directives = [EmptyListDirective, TileRendererDirective];
2269
+ class BarsaTilesModule extends BaseModule {
2270
+ constructor(dcm, componentFactoryResolver) {
2271
+ super(dcm, componentFactoryResolver, 'BarsaTilesModule');
2272
+ this.dcm = dcm;
2273
+ this.componentFactoryResolver = componentFactoryResolver;
2274
+ this.dynamicComponents = [...components];
2275
+ }
2276
+ }
2277
+ 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 });
2278
+ BarsaTilesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, declarations: [ShellbarComponent,
2279
+ SimpleTileComponent,
2280
+ TilesViewerComponent,
2281
+ ProfileTileComponent,
2282
+ FeedTileComponent,
2283
+ FooterTileComponent,
2284
+ TileComponent,
2285
+ LogoTileComponent,
2286
+ NumericTileComponent,
2287
+ FooterEditTileComponent,
2288
+ FormAppFinderComponent,
2289
+ PinTileComponent,
2290
+ ChangeAppTileComponent,
2291
+ CreateAppGroupComponent,
2292
+ MicroTileChartAreaComponent,
2293
+ MicroTileChartCircularComponent,
2294
+ MicroTileChartLineComponent,
2295
+ MicroTileChartStackbarComponent,
2296
+ MicroTileChartComparisonComponent,
2297
+ MicroTileChartBarComponent,
2298
+ MicroTileChartBulletComponent,
2299
+ TilesViewerContainerComponent,
2300
+ NewsTileComponent,
2301
+ ActionsLinkComponent,
2302
+ ActionItemComponent,
2303
+ AppFinderComponent,
2304
+ AppFinderGroupComponent,
2305
+ AppFinderAppListComponent,
2306
+ TilesViewerGroupComponent,
2307
+ FormTileComponent, GroupTilesPipe, TileHomeFilterPipe, HomeGroupPipe, ActionLinksPipe, EmptyListDirective, TileRendererDirective], imports: [CommonModule,
2308
+ FormsModule,
2309
+ DragDropModule,
2310
+ CdkTableModule,
2311
+ FundamentalNgxCoreModule,
2312
+ GridListModule,
2313
+ FundamentalNgxPlatformModule,
2314
+ ReactiveFormsModule,
2315
+ BarsaNovinRayCoreModule,
2316
+ BarsaSapUiModule,
2317
+ BarsaEchartsModule], exports: [ShellbarComponent,
2318
+ SimpleTileComponent,
2319
+ TilesViewerComponent,
2320
+ ProfileTileComponent,
2321
+ FeedTileComponent,
2322
+ FooterTileComponent,
2323
+ TileComponent,
2324
+ LogoTileComponent,
2325
+ NumericTileComponent,
2326
+ FooterEditTileComponent,
2327
+ FormAppFinderComponent,
2328
+ PinTileComponent,
2329
+ ChangeAppTileComponent,
2330
+ CreateAppGroupComponent,
2331
+ MicroTileChartAreaComponent,
2332
+ MicroTileChartCircularComponent,
2333
+ MicroTileChartLineComponent,
2334
+ MicroTileChartStackbarComponent,
2335
+ MicroTileChartComparisonComponent,
2336
+ MicroTileChartBarComponent,
2337
+ MicroTileChartBulletComponent,
2338
+ TilesViewerContainerComponent,
2339
+ NewsTileComponent,
2340
+ ActionsLinkComponent,
2341
+ ActionItemComponent,
2342
+ AppFinderComponent,
2343
+ AppFinderGroupComponent,
2344
+ AppFinderAppListComponent,
2345
+ TilesViewerGroupComponent,
2346
+ FormTileComponent] });
2347
+ BarsaTilesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, providers: [TilesService, AppFinderService], imports: [CommonModule,
2348
+ FormsModule,
2349
+ DragDropModule,
2350
+ CdkTableModule,
2351
+ FundamentalNgxCoreModule,
2352
+ GridListModule,
2353
+ FundamentalNgxPlatformModule,
2354
+ ReactiveFormsModule,
2355
+ BarsaNovinRayCoreModule,
2356
+ BarsaSapUiModule,
2357
+ BarsaEchartsModule] });
2358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTilesModule, decorators: [{
2359
+ type: NgModule,
2360
+ args: [{
2361
+ schemas: [NO_ERRORS_SCHEMA],
2362
+ imports: [
2363
+ CommonModule,
2364
+ FormsModule,
2365
+ DragDropModule,
2366
+ CdkTableModule,
2367
+ FundamentalNgxCoreModule,
2368
+ GridListModule,
2369
+ FundamentalNgxPlatformModule,
2370
+ ReactiveFormsModule,
2371
+ BarsaNovinRayCoreModule,
2372
+ BarsaSapUiModule,
2373
+ BarsaEchartsModule
2374
+ ],
2375
+ providers: [TilesService, AppFinderService],
2376
+ declarations: [...components, ...pipes, ...directives],
2377
+ exports: [...components]
2378
+ }]
2379
+ }], ctorParameters: function () { return [{ type: i1$2.DynamicComponentService }, { type: i0.ComponentFactoryResolver }]; } });
2380
+
2381
+ /**
2382
+ * Generated bundle index. Do not edit.
2383
+ */
2384
+
2385
+ 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 };
2386
+ //# sourceMappingURL=barsa-tiles.mjs.map