barsa-tiles 2.3.143 → 2.3.144

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.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, computed, inject, Injectable, DestroyRef, ChangeDetectionStrategy, Component, Input, Directive, ChangeDetectorRef, ViewContainerRef, HostListener, EventEmitter, Output, ElementRef, ViewChild, Pipe, HostBinding, Injector, input, Renderer2, TemplateRef, DOCUMENT, NgModule, ComponentFactoryResolver, provideAppInitializer, NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from 'barsa-novin-ray-core';
4
- import { BarsaApi, PortalService, BbbTranslatePipe, TilePropsComponent, BaseComponent, BaseDirective, IsDarkMode, LocalStorageService, PreventDefaulEvent, getDeviceIsMobile, SaveScrollPositionService, ExecuteDynamicCommand, ShellbarHeightService, GroupByService, APP_VERSION, getDeviceIsDesktop, getDeviceIsTablet, ApplicationCtrlrService, BreadcrumbService, NotificationService, SortDirection, LogService, RoutingService, EmptyPageComponent, ReportNavigatorComponent, TileGroupBreadcrumResolver, PortalPageResolver, AuthGuard, BaseModule, DynamicComponentService, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
4
+ import { BarsaApi, BbbTranslatePipe, PortalService, TilePropsComponent, BaseComponent, BaseDirective, IsDarkMode, LocalStorageService, PreventDefaulEvent, getDeviceIsMobile, BaseController, BaseDynamicComponent, SaveScrollPositionService, ExecuteDynamicCommand, ShellbarHeightService, ViewBase, GroupByService, APP_VERSION, getDeviceIsDesktop, getDeviceIsTablet, ApplicationCtrlrService, BreadcrumbService, NotificationService, SortDirection, LogService, RoutingService, EmptyPageComponent, ReportNavigatorComponent, TileGroupBreadcrumResolver, PortalPageResolver, AuthGuard, BaseModule, DynamicComponentService, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
5
5
  import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { Subject, of, from, takeUntil, filter as filter$1, finalize, BehaviorSubject, interval, combineLatest, fromEvent, map as map$1, forkJoin } from 'rxjs';
7
- import { startWith, shareReplay, distinctUntilChanged, filter, tap, map, concatMap, takeUntil as takeUntil$1, debounceTime, exhaustMap, finalize as finalize$1, withLatestFrom } from 'rxjs/operators';
6
+ import { map, from, Subject, of, firstValueFrom, takeUntil, filter as filter$1, finalize, BehaviorSubject, interval, combineLatest, fromEvent, forkJoin } from 'rxjs';
7
+ import { startWith, shareReplay, distinctUntilChanged, filter, tap, map as map$1, concatMap, takeUntil as takeUntil$1, debounceTime, withLatestFrom, exhaustMap, finalize as finalize$1 } from 'rxjs/operators';
8
8
  import { ThemingService, RtlService, DialogRef, DialogService, CarouselComponent, ContentDensityService, ShellbarComponent as ShellbarComponent$1, ComboboxComponent, FundamentalNgxCoreModule, GridListModule, ShellbarUserMenuComponent } from '@fundamental-ngx/core';
9
9
  import * as i1$2 from '@angular/common';
10
10
  import { CommonModule, LowerCasePipe } from '@angular/common';
@@ -15,32 +15,32 @@ import * as i1$1 from '@fundamental-ngx/core/tile';
15
15
  import * as i1 from '@fundamental-ngx/core/icon';
16
16
  import * as i3 from 'barsa-sap-ui';
17
17
  import { MaskComponent, BarsaTreeItemComponent, BarsaSapUiModule } from 'barsa-sap-ui';
18
- import * as i1$3 from '@angular/router';
19
- import { Router, ActivatedRoute, NavigationEnd, RouterEvent, RouterModule } from '@angular/router';
20
- import * as i3$1 from '@angular/cdk/drag-drop';
18
+ import * as i1$5 from '@angular/router';
19
+ import { Router, NavigationEnd, RouterEvent, ActivatedRoute, RouterModule } from '@angular/router';
20
+ import * as i2$1 from '@angular/cdk/drag-drop';
21
21
  import { moveItemInArray, transferArrayItem, DragDropModule } from '@angular/cdk/drag-drop';
22
- import * as i4$1 from '@fundamental-ngx/core/busy-indicator';
23
- import * as i7 from '@fundamental-ngx/core/layout-panel';
22
+ import * as i3$1 from '@fundamental-ngx/core/busy-indicator';
23
+ import * as i5$1 from '@fundamental-ngx/core/layout-panel';
24
24
  import * as i6$1 from '@fundamental-ngx/core/title';
25
- import * as i5$1 from '@fundamental-ngx/core/toolbar';
26
- import * as i1$4 from '@fundamental-ngx/core/avatar';
27
- import * as i2$1 from '@fundamental-ngx/core/card';
28
- import * as i1$5 from '@angular/forms';
25
+ import * as i7 from '@fundamental-ngx/core/toolbar';
26
+ import * as i1$3 from '@fundamental-ngx/core/avatar';
27
+ import * as i2$2 from '@fundamental-ngx/core/card';
28
+ import * as i1$4 from '@angular/forms';
29
29
  import { UntypedFormBuilder, UntypedFormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
30
- import * as i4$2 from '@fundamental-ngx/core/input-group';
31
- import * as i2$2 from '@fundamental-ngx/core/bar';
30
+ import * as i4$1 from '@fundamental-ngx/core/input-group';
31
+ import * as i2$3 from '@fundamental-ngx/core/bar';
32
32
  import * as i3$2 from '@fundamental-ngx/core/form';
33
33
  import * as i5$2 from '@fundamental-ngx/core/dialog';
34
34
  import * as i7$1 from '@fundamental-ngx/cdk/utils';
35
35
  import * as i8 from '@fundamental-ngx/core/select';
36
- import * as i4$3 from '@fundamental-ngx/core/checkbox';
36
+ import * as i5$3 from '@fundamental-ngx/core/checkbox';
37
37
  import * as i8$1 from '@fundamental-ngx/platform';
38
38
  import { IconTabBarComponent, IconTabBarTabComponent, IconTabBarTabContentDirective, SearchFieldComponent } from '@fundamental-ngx/platform';
39
- import * as i4$4 from '@fundamental-ngx/core/dynamic-page';
39
+ import * as i4$2 from '@fundamental-ngx/core/dynamic-page';
40
40
  import * as i6$2 from '@fundamental-ngx/core/switch';
41
- import * as i2$3 from 'barsa-echarts';
41
+ import * as i2$4 from 'barsa-echarts';
42
42
  import { BarsaEchartsModule } from 'barsa-echarts';
43
- import * as i2$4 from '@fundamental-ngx/core/carousel';
43
+ import * as i2$5 from '@fundamental-ngx/core/carousel';
44
44
  import { DomSanitizer } from '@angular/platform-browser';
45
45
  import * as i11 from '@fundamental-ngx/core/object-status';
46
46
  import * as i6$3 from '@fundamental-ngx/core/panel';
@@ -51,8 +51,8 @@ import * as i16 from '@fundamental-ngx/core/generic-tag';
51
51
  import * as i18 from '@fundamental-ngx/core/user-menu';
52
52
  import { UserMenuComponent, UserMenuControlComponent, UserMenuBodyComponent, UserMenuListComponent, UserMenuFooterComponent, UserMenuHeaderDirective, UserMenuSublineDirective, UserMenuUserNameDirective, UserMenuHeaderContainerDirective, UserMenuListItemComponent } from '@fundamental-ngx/core/user-menu';
53
53
  import * as i3$3 from '@fundamental-ngx/core/breadcrumb';
54
- import * as i4$5 from '@fundamental-ngx/core/dynamic-side-content';
55
- import * as i5$3 from '@fundamental-ngx/core/message-page';
54
+ import * as i4$3 from '@fundamental-ngx/core/dynamic-side-content';
55
+ import * as i5$4 from '@fundamental-ngx/core/message-page';
56
56
  import { CdkTableModule } from '@angular/cdk/table';
57
57
  import { SplitterModule } from '@fundamental-ngx/btp/splitter';
58
58
  import * as i1$6 from '@fundamental-ngx/core/notification';
@@ -86,6 +86,49 @@ function prepareNavigator(appTileGroup, translate) {
86
86
  appTileGroup.$Children?.forEach((subAppTileGroup) => prepareNavigator(subAppTileGroup, translate));
87
87
  }
88
88
 
89
+ function emptyEntities() {
90
+ return {
91
+ groupsById: {},
92
+ rootGroupIds: [],
93
+ childGroupIdsByParentId: {},
94
+ tilesById: {},
95
+ tileIdsByGroupId: {}
96
+ };
97
+ }
98
+ function normalizeGroups(allApps) {
99
+ const groupsById = {};
100
+ const rootGroupIds = [];
101
+ const childGroupIdsByParentId = {};
102
+ const tilesById = {};
103
+ const tileIdsByGroupId = {};
104
+ const visitGroup = (g, parentId) => {
105
+ groupsById[g.Id] = g;
106
+ if (!parentId) {
107
+ rootGroupIds.push(g.Id);
108
+ }
109
+ else {
110
+ childGroupIdsByParentId[parentId] = childGroupIdsByParentId[parentId] ?? [];
111
+ childGroupIdsByParentId[parentId].push(g.Id);
112
+ }
113
+ const tiles = g.navigatorTiles ?? g.AppTiles?.MoDataList ?? [];
114
+ tileIdsByGroupId[g.Id] = [];
115
+ tiles.forEach((t) => {
116
+ const id = (t.AppTile?.Id ?? t.Id);
117
+ tilesById[id] = t;
118
+ tileIdsByGroupId[g.Id].push(id);
119
+ });
120
+ (g.$Children ?? []).forEach((c) => visitGroup(c, g.Id));
121
+ };
122
+ (allApps.MoDataList ?? []).forEach((g) => visitGroup(g, null));
123
+ return { groupsById, rootGroupIds, childGroupIdsByParentId, tilesById, tileIdsByGroupId };
124
+ }
125
+ /** Shallow copy each node and keep only `navigatorVisible` subtrees (non-mutating). */
126
+ function filterNavigatorVisibleSubtree(g) {
127
+ const children = (g.$Children ?? [])
128
+ .filter((c) => !!c.navigatorVisible)
129
+ .map((c) => filterNavigatorVisibleSubtree(c));
130
+ return { ...g, $Children: children };
131
+ }
89
132
  class TilesStore {
90
133
  constructor() {
91
134
  this.appTileGroups = signal(null);
@@ -93,6 +136,12 @@ class TilesStore {
93
136
  this.shellbar = signal(null);
94
137
  this.userInfo = signal(null);
95
138
  this.componentSettings = signal(null);
139
+ /** Viewer / megamenu load state (shared). */
140
+ this.loading = signal(false);
141
+ this.allAppsLoading = signal(false);
142
+ this.stackContent = signal(false);
143
+ this.selectedGroupId = signal('');
144
+ this.entities = signal(emptyEntities());
96
145
  this.homeAppTileGroups = computed(() => {
97
146
  const allApps = this.appTileGroups();
98
147
  if (!allApps) {
@@ -102,16 +151,60 @@ class TilesStore {
102
151
  .filter((c) => c.Visible)
103
152
  .sort((a, b) => Number(a.navigatorOrderItem) - Number(b.navigatorOrderItem));
104
153
  });
105
- this._portalService = inject(PortalService);
154
+ /**
155
+ * Edit home: full tree. Otherwise roots and `$Children` only where
156
+ * `navigatorVisible` is truthy (after {@link prepareNavigator}).
157
+ */
158
+ this.rootGroups = computed(() => {
159
+ const { groupsById, rootGroupIds } = this.entities();
160
+ const groups = rootGroupIds.map((id) => groupsById[id]).filter(Boolean);
161
+ if (this.editHome()) {
162
+ return groups;
163
+ }
164
+ return groups
165
+ .filter((g) => !!g.navigatorVisible)
166
+ .map((g) => filterNavigatorVisibleSubtree(g));
167
+ });
168
+ this.selectedGroup = computed(() => {
169
+ const id = this.selectedGroupId();
170
+ const { groupsById } = this.entities();
171
+ return (id && groupsById[id]) || null;
172
+ });
106
173
  this._translate = inject(BbbTranslatePipe);
174
+ this.selectGroupChildren = (parentId) => computed(() => {
175
+ const { groupsById, childGroupIdsByParentId } = this.entities();
176
+ let list = (childGroupIdsByParentId[parentId] ?? []).map((id) => groupsById[id]).filter(Boolean);
177
+ if (!this.editHome()) {
178
+ list = list.filter((g) => !!g.navigatorVisible);
179
+ }
180
+ return list;
181
+ });
182
+ this.selectGroupTiles = (groupId) => computed(() => {
183
+ const { tilesById, tileIdsByGroupId } = this.entities();
184
+ return (tileIdsByGroupId[groupId] ?? []).map((id) => tilesById[id]).filter(Boolean);
185
+ });
107
186
  }
108
- setAllApps(allApps) {
187
+ /**
188
+ * Full replace from API / report: run {@link prepareNavigator} on every root (and nested),
189
+ * then refresh canonical snapshot + entity index.
190
+ */
191
+ replaceAllAppTileGroups(allApps) {
109
192
  if (!allApps) {
110
193
  this.appTileGroups.set(null);
194
+ this.entities.set(emptyEntities());
111
195
  return;
112
196
  }
113
197
  allApps.MoDataList?.forEach((g) => prepareNavigator(g, this._translate));
114
198
  this.appTileGroups.set({ ...allApps });
199
+ this.entities.set(normalizeGroups(allApps));
200
+ }
201
+ /**
202
+ * After in-tree mutations: caller already ran {@link prepareNavigator} on touched groups.
203
+ * Only refreshes the canonical snapshot and re-builds the entity index from the current tree.
204
+ */
205
+ applyLocalTreeSnapshot(allApps) {
206
+ this.appTileGroups.set({ ...allApps });
207
+ this.entities.set(normalizeGroups(allApps));
115
208
  }
116
209
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
117
210
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesStore, providedIn: 'root' }); }
@@ -121,11 +214,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
121
214
  args: [{ providedIn: 'root' }]
122
215
  }] });
123
216
 
217
+ /**
218
+ * Single place for tiles feature BL / report calls (`RunBlMethodAsync` and portal reports).
219
+ */
220
+ class TilesApiService {
221
+ constructor() {
222
+ this._portal = inject(PortalService);
223
+ }
224
+ loadAllAppTileGroups() {
225
+ return this._portal.ReportExecute('AllAppTileGroups');
226
+ }
227
+ loadAllAppTileGroupsByReportId(id) {
228
+ return this._portal.ReportExecuteById(id);
229
+ }
230
+ getProfileImage(repIdProfileImage) {
231
+ return this._runBl('BarsaPortalGetProfileImage', [repIdProfileImage]);
232
+ }
233
+ refreshTile(appTileId) {
234
+ return this._runBl('RefreshTile', [appTileId]);
235
+ }
236
+ getUserPortalSettings() {
237
+ return this._runBl('GetUserPortalSettings', []);
238
+ }
239
+ toggleGroupVisible(groupId) {
240
+ return this._runBl('ToggleAppTileGroupSettingVisible', [groupId]);
241
+ }
242
+ resetGroupSetting(groupId) {
243
+ return this._runBl('ResetAppTileGroupSettingVisible', [groupId]);
244
+ }
245
+ deleteGroup(groupId) {
246
+ return this._runBl('DeleteAppGroup', [groupId]);
247
+ }
248
+ changeAppTileSetting(groupId, tileId, title, subtitle) {
249
+ return this._runBl('ChangeAppTileSetting', [groupId, tileId, title, subtitle]);
250
+ }
251
+ saveGroupOrders(groupIds) {
252
+ return this._runBl('ChangeOrderAppTileGroups', [groupIds]);
253
+ }
254
+ createAppTileGroup(parameters) {
255
+ return this._runBl('CreateAppTileGroup', parameters).pipe(map((mo) => mo));
256
+ }
257
+ saveTileOrders(groupId, tileIds, isActionLink, transferredId) {
258
+ return this._runBl('ChangeOrderAppTiles', [groupId, tileIds, isActionLink, transferredId]);
259
+ }
260
+ tilePinChanged(groupChanges, visible, appId) {
261
+ return this._runBl('TilePinChanged', [groupChanges, visible, appId]);
262
+ }
263
+ loadShellbarByPortalId(portalId) {
264
+ return this._runBl('LoadShellbarByPortalId', [portalId]);
265
+ }
266
+ refreshAppTiles(tileIds) {
267
+ return this._runBl('RefreshAppTiles', [tileIds]);
268
+ }
269
+ loadAppTilesByGroup(groupId) {
270
+ return this._runBl('LoadAllAppTilesByAppTileGroup', [groupId]);
271
+ }
272
+ loadAppTilesByUserGroupSettings(groupId) {
273
+ return this._runBl('LoadAllAppTilesByUserAppTileGroupSettings', [groupId]);
274
+ }
275
+ saveUserPortalSettings(payload) {
276
+ return this._runBl('SaveUserPortalSettings', [payload]);
277
+ }
278
+ _runBl(method, parameters) {
279
+ return from(new Promise((resolve, reject) => {
280
+ BarsaApi.Bw.RunBlMethodAsync({
281
+ Parameters: parameters,
282
+ Method: method,
283
+ SuccessFn: (res) => resolve(res),
284
+ FailFn: () => reject(new Error(`BL method failed: ${method}`))
285
+ });
286
+ }));
287
+ }
288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
289
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesApiService, providedIn: 'root' }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesApiService, decorators: [{
292
+ type: Injectable,
293
+ args: [{ providedIn: 'root' }]
294
+ }] });
295
+
124
296
  class TilesService {
297
+ /** Same signal reference as {@link TilesStore#appTileGroups} (read-only for consumers). */
298
+ get appTileGroupsSig() {
299
+ return this._store.appTileGroups;
300
+ }
125
301
  /** Inserted by Angular inject() migration for backwards compatibility */
126
302
  constructor() {
127
- /** New Angular model: signal-based state. */
128
- this.appTileGroupsSig = signal(null);
129
303
  this.homeAppTileGroupsSig = signal([]);
130
304
  this.userInfoSig = signal(null);
131
305
  this.editHomeSig = signal(false);
@@ -134,6 +308,7 @@ class TilesService {
134
308
  this._destroyRef = inject(DestroyRef);
135
309
  this._pinTilesSource = new Subject();
136
310
  this._store = inject(TilesStore);
311
+ this._tilesApi = inject(TilesApiService);
137
312
  this._themingService = inject(ThemingService);
138
313
  this._portalService = inject(PortalService);
139
314
  this._rtlService = inject(RtlService);
@@ -144,7 +319,7 @@ class TilesService {
144
319
  this.homeAppTileGroups$ = toObservable(this.homeAppTileGroupsSig);
145
320
  this.pinTiles$ = this._pinTilesSource.asObservable().pipe(startWith(null));
146
321
  this.shellbar$ = toObservable(this.shellbarSig).pipe(shareReplay({ bufferSize: 1, refCount: true }));
147
- this.appTileGroups$ = toObservable(this.appTileGroupsSig).pipe(shareReplay({ bufferSize: 1, refCount: true }));
322
+ this.appTileGroups$ = toObservable(this._store.appTileGroups).pipe(shareReplay({ bufferSize: 1, refCount: true }));
148
323
  this.edit$ = toObservable(this.editHomeSig).pipe(distinctUntilChanged());
149
324
  this.componentSettings$ = toObservable(this.componentSettingsSig).pipe(filter((c) => c != null), shareReplay({ bufferSize: 1, refCount: true }));
150
325
  this.deviceSize$ = this._portalService.deviceSize$;
@@ -160,10 +335,10 @@ class TilesService {
160
335
  BarsaApi.Ul.ApplicationCtrlr.on('GlobalRefreshTile', this._onApplication_GlobalRefreshTile.bind(this));
161
336
  }
162
337
  get isDark$() {
163
- return this._themingService.currentTheme.pipe(map((c) => c && c.name.toLocaleLowerCase().includes('dark')));
338
+ return this._themingService.currentTheme.pipe(map$1((c) => c && c.name.toLocaleLowerCase().includes('dark')));
164
339
  }
165
340
  get appTileGroups() {
166
- return this.appTileGroupsSig();
341
+ return this._store.appTileGroups();
167
342
  }
168
343
  loadAllAppTileGroupsByReportId(id) {
169
344
  this._loadAllAppTileGroupsByReportId(id);
@@ -175,42 +350,58 @@ class TilesService {
175
350
  if (!repIdProfileImage) {
176
351
  return;
177
352
  }
178
- BarsaApi.Bw.RunBlMethodAsync({
179
- Parameters: [repIdProfileImage],
180
- Method: 'BarsaPortalGetProfileImage',
181
- SuccessFn: (res) => {
353
+ this._tilesApi.getProfileImage(repIdProfileImage).subscribe({
354
+ next: (res) => {
182
355
  const userInfo = BarsaApi.Ext.decode(res);
183
356
  this.userInfoSig.set(userInfo);
184
357
  },
185
- FailFn: () => { }
358
+ error: () => { }
186
359
  });
187
360
  }
188
361
  loadAppTileGroups(appTileGroup) {
189
- if (!appTileGroup || this._appTileGroupLoaded[appTileGroup.Id]) {
362
+ if (!appTileGroup?.Id) {
190
363
  return;
191
364
  }
192
- const allApps = this.appTileGroupsSig();
193
- if (allApps) {
194
- const selectedAppTilegroup = allApps?.MoDataList.find((c) => c.Id === appTileGroup.Id);
195
- if (selectedAppTilegroup) {
196
- this._loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps);
197
- selectedAppTilegroup.$Children?.forEach((subGroup) => {
198
- this._loadAppTilesOfAppTileGroup(subGroup, allApps);
199
- });
365
+ const allApps = this._store.appTileGroups();
366
+ if (!allApps) {
367
+ return;
368
+ }
369
+ const canonical = this._findCanonicalAppTileGroup(allApps, appTileGroup.Id);
370
+ if (!canonical) {
371
+ return;
372
+ }
373
+ if (this._isAppTileGroupTilesLoaded(canonical)) {
374
+ return;
375
+ }
376
+ this._loadAppTilesOfAppTileGroup(canonical, allApps);
377
+ canonical.$Children?.forEach((subGroup) => {
378
+ if (!this._isAppTileGroupTilesLoaded(subGroup)) {
379
+ this._loadAppTilesOfAppTileGroup(subGroup, allApps);
200
380
  }
381
+ });
382
+ }
383
+ /** True if tiles for this group were already loaded (canonical tree or in-flight flag). */
384
+ isAppTileGroupTilesLoaded(groupId) {
385
+ const allApps = this._store.appTileGroups();
386
+ if (!allApps) {
387
+ return false;
201
388
  }
389
+ const g = this._findCanonicalAppTileGroup(allApps, groupId);
390
+ return g ? this._isAppTileGroupTilesLoaded(g) : !!this._appTileGroupLoaded[groupId];
202
391
  }
203
392
  loadAppTileGroupsById(appTileGroupId) {
204
- const allApps = this.appTileGroupsSig();
205
- if (allApps) {
206
- const selectedAppTilegroup = allApps?.MoDataList.find((c) => c.Id === appTileGroupId);
207
- if (selectedAppTilegroup) {
208
- const callback = () => {
209
- this._nextAllAppTileGroups(allApps);
210
- };
211
- this._loadAppTilesByAppTileGroupSetting(selectedAppTilegroup, callback);
212
- }
393
+ const allApps = this._store.appTileGroups();
394
+ if (!allApps) {
395
+ return;
213
396
  }
397
+ const selectedAppTilegroup = this._findCanonicalAppTileGroup(allApps, appTileGroupId);
398
+ if (!selectedAppTilegroup || this._isAppTileGroupTilesLoaded(selectedAppTilegroup)) {
399
+ return;
400
+ }
401
+ const callback = () => {
402
+ this._nextAllAppTileGroups(allApps);
403
+ };
404
+ this._loadAppTilesByAppTileGroupSetting(selectedAppTilegroup, callback);
214
405
  }
215
406
  saveTilesStackContent(tilesStackContent) {
216
407
  const userPortalSettings = this._portalService.userPortalSettings['UserPortalSettings'];
@@ -232,88 +423,35 @@ class TilesService {
232
423
  }));
233
424
  }
234
425
  refreshTile(appTile) {
235
- return new Promise((resolve, reject) => {
236
- BarsaApi.Bw.RunBlMethodAsync({
237
- Parameters: [appTile.Id],
238
- Method: 'RefreshTile',
239
- SuccessFn: (newAppTile) => {
240
- if (newAppTile.MoDataList?.length) {
241
- resolve(newAppTile.MoDataList[0]);
242
- }
243
- reject(`refresh tile not found apptile width title: ${appTile.Title}`);
244
- },
245
- FailFn: () => {
246
- reject(null);
247
- }
248
- });
249
- });
426
+ return firstValueFrom(this._tilesApi.refreshTile(appTile.Id).pipe(map$1((newAppTile) => {
427
+ if (newAppTile.MoDataList?.length) {
428
+ return newAppTile.MoDataList[0];
429
+ }
430
+ throw new Error(`refresh tile not found apptile width title: ${appTile.Title}`);
431
+ }))).catch(() => Promise.reject(null));
250
432
  }
251
433
  loadFromServerUserPortalSetting() {
252
- return from(new Promise((resolve, reject) => {
253
- BarsaApi.Bw.RunBlMethodAsync({
254
- Parameters: [],
255
- Method: 'GetUserPortalSettings',
256
- SuccessFn: (userPortalSetting) => {
257
- this._portalService.setData('UserPortalSetting', userPortalSetting);
258
- resolve(userPortalSetting);
259
- },
260
- FailFn: () => {
261
- reject(null);
262
- }
263
- });
434
+ return this._tilesApi.getUserPortalSettings().pipe(tap((userPortalSetting) => {
435
+ this._portalService.setData('UserPortalSetting', userPortalSetting);
264
436
  }));
265
437
  }
266
438
  toggleAppGroupSettingVisible(appGroup) {
267
- return from(new Promise((resolve, reject) => {
268
- BarsaApi.Bw.RunBlMethodAsync({
269
- Parameters: [appGroup.Id],
270
- Method: 'ToggleAppTileGroupSettingVisible',
271
- SuccessFn: (appGroupSetting) => {
272
- const x = this._updateAppTileGroupSettings(appGroup, appGroupSetting);
273
- resolve(x);
274
- },
275
- FailFn: () => {
276
- reject(null);
277
- }
278
- });
279
- })).pipe(tap((appGroupSetting) => {
439
+ return this._tilesApi.toggleGroupVisible(appGroup.Id).pipe(map$1((appGroupSetting) => this._updateAppTileGroupSettings(appGroup, appGroupSetting)), tap((appGroupSetting) => {
280
440
  this._updateAppGroupSetting(appGroup, appGroupSetting);
281
441
  }));
282
442
  }
283
443
  resetAppGroupSetting(appGroup) {
284
- return from(new Promise((resolve, reject) => {
285
- BarsaApi.Bw.RunBlMethodAsync({
286
- Parameters: [appGroup.Id],
287
- Method: 'ResetAppTileGroupSettingVisible',
288
- SuccessFn: (appGroupSetting) => {
289
- this._updateAppTileGroupSettings(appGroup, appGroupSetting);
290
- resolve(appGroupSetting);
291
- },
292
- FailFn: () => {
293
- reject(null);
294
- }
295
- });
296
- })).pipe(tap((appGroupSetting) => {
444
+ return this._tilesApi.resetGroupSetting(appGroup.Id).pipe(tap((appGroupSetting) => {
445
+ this._updateAppTileGroupSettings(appGroup, appGroupSetting);
297
446
  this._updateAppGroupSetting(appGroup, appGroupSetting);
298
447
  }));
299
448
  }
300
449
  deleteAppGroup(appGroup) {
301
- return from(new Promise((resolve, reject) => {
302
- BarsaApi.Bw.RunBlMethodAsync({
303
- Parameters: [appGroup.Id],
304
- Method: 'DeleteAppGroup',
305
- SuccessFn: () => {
306
- resolve(appGroup.Id);
307
- },
308
- FailFn: () => {
309
- reject(null);
310
- }
311
- });
312
- })).pipe(tap((appGroupId) => {
450
+ return this._tilesApi.deleteGroup(appGroup.Id).pipe(map$1(() => appGroup.Id), tap((appGroupId) => {
313
451
  const allApps = this.appTileGroups;
314
452
  if (allApps) {
315
- allApps.MoDataList = allApps.MoDataList.filter((c) => c.Id !== appGroupId);
316
- this.appTileGroupsSig.set({ ...allApps });
453
+ this._removeAppTileGroupFromTree(allApps, appGroupId);
454
+ this._nextAllAppTileGroups(allApps);
317
455
  }
318
456
  }));
319
457
  }
@@ -323,58 +461,24 @@ class TilesService {
323
461
  if (selectedGroup === null) {
324
462
  return of(null);
325
463
  }
326
- return from(new Promise((resolve, reject) => {
327
- BarsaApi.Bw.RunBlMethodAsync({
328
- Parameters: [selectedGroup.Id, appTile.Id, appTile.Title, appTile.Subtitle],
329
- Method: 'ChangeAppTileSetting',
330
- SuccessFn: (settings) => {
331
- const updatedGroup = this._updateAppTileGroupSettings(selectedGroup, settings);
332
- this._nextAllAppTileGroups(allApps, updatedGroup);
333
- resolve(selectedGroup);
334
- },
335
- FailFn: () => {
336
- reject(null);
337
- }
338
- });
464
+ return this._tilesApi.changeAppTileSetting(selectedGroup.Id, appTile.Id, appTile.Title, appTile.Subtitle).pipe(map$1((settings) => {
465
+ const updatedGroup = this._updateAppTileGroupSettings(selectedGroup, settings);
466
+ this._nextAllAppTileGroups(allApps, updatedGroup);
467
+ return selectedGroup;
339
468
  }));
340
469
  }
341
470
  saveAppGroupOrders(appGroups) {
342
471
  const groupOrders = appGroups.map((c) => c.Id);
343
- return from(new Promise((resolve, reject) => {
344
- BarsaApi.Bw.RunBlMethodAsync({
345
- Parameters: [groupOrders],
346
- Method: 'ChangeOrderAppTileGroups',
347
- SuccessFn: () => {
348
- resolve();
349
- },
350
- FailFn: () => {
351
- reject(null);
352
- }
353
- });
354
- })).pipe();
472
+ return this._tilesApi.saveGroupOrders(groupOrders);
355
473
  }
356
474
  createAppGroup(title, parentId = null) {
357
475
  const primaryParams = parentId ? [title, parentId] : [title];
358
- return from(new Promise((resolve, reject) => {
359
- BarsaApi.Bw.RunBlMethodAsync({
360
- Parameters: primaryParams,
361
- Method: 'CreateAppTileGroup',
362
- SuccessFn: (mo) => {
363
- resolve(mo);
364
- },
365
- FailFn: () => {
366
- reject(null);
367
- }
368
- });
369
- })).pipe(tap((mo) => this.addAppGroup(mo)));
476
+ return this._tilesApi.createAppTileGroup(primaryParams).pipe(tap((mo) => this.addAppGroup(mo)));
370
477
  }
371
478
  saveOrderAppTiles(appGroup, appTiles, isActionLink = false, appTileIdTransferedId = '0') {
372
- BarsaApi.Bw.RunBlMethodAsync({
373
- Parameters: [appGroup.Id, appTiles, isActionLink, appTileIdTransferedId],
374
- Method: 'ChangeOrderAppTiles',
375
- SuccessFn: () => { },
376
- FailFn: () => { }
377
- });
479
+ this._tilesApi
480
+ .saveTileOrders(appGroup.Id, appTiles, isActionLink, appTileIdTransferedId)
481
+ .subscribe({ error: () => { } });
378
482
  }
379
483
  updateAppTile(allApps, appTile) {
380
484
  if (!allApps || !appTile.A_App_Component) {
@@ -388,23 +492,25 @@ class TilesService {
388
492
  }
389
493
  updataAppTileSetting(selectedGroup, appGroupSetting) {
390
494
  const allApps = this.appTileGroups;
391
- allApps?.MoDataList.forEach((appGroup) => {
495
+ if (!allApps) {
496
+ return;
497
+ }
498
+ allApps.MoDataList.forEach((appGroup) => {
392
499
  if (appGroup.Id === selectedGroup.Id) {
393
500
  appGroup.UserAppTileGroupSetting = appGroupSetting;
394
501
  }
395
502
  });
396
- this.appTileGroupsSig.set(allApps ? { ...allApps } : null);
503
+ this._nextAllAppTileGroups(allApps);
397
504
  }
398
505
  addAppGroup(mo) {
399
506
  const allApps = this.appTileGroups;
400
507
  if (allApps) {
401
- const parentId = mo.$ParentId ?? mo.ParentId ?? mo.AppTileGroupParentId;
508
+ const parentId = mo.Parent ? mo.Parent.Id : mo.AppTileGroupParentId;
402
509
  if (parentId) {
403
510
  const parent = allApps.MoDataList.find((g) => g.Id === parentId);
404
511
  if (parent) {
405
512
  parent.$Children = parent.$Children ?? [];
406
513
  parent.$Children.push(mo);
407
- this._prepareNavigator(parent);
408
514
  }
409
515
  else {
410
516
  allApps.MoDataList.push(mo);
@@ -413,7 +519,7 @@ class TilesService {
413
519
  else {
414
520
  allApps.MoDataList.push(mo);
415
521
  }
416
- this._nextAllAppTileGroups(allApps);
522
+ this._nextAllAppTileGroups(allApps, mo);
417
523
  }
418
524
  }
419
525
  singlePinTileChanged(appTile, callback) {
@@ -422,7 +528,7 @@ class TilesService {
422
528
  if (group === null) {
423
529
  return;
424
530
  }
425
- this.pinTileChanged([{ appTileGroup: group, visible: false }], appTile, callback);
531
+ this.pinTileChanged([{ appTileGroup: group, visible: false }], appTile.App, callback);
426
532
  }
427
533
  pinTileChanged(appTileGroupsPin, app, callback) {
428
534
  const allApps = this.appTileGroups;
@@ -431,14 +537,12 @@ class TilesService {
431
537
  Id: c.appTileGroup.Id,
432
538
  TypeDefId: allApps?.TypeDefId
433
539
  }));
434
- BarsaApi.Bw.RunBlMethodAsync({
435
- Parameters: [groupChanges, visible, app.Id],
436
- Method: 'TilePinChanged',
437
- SuccessFn: (settings) => {
540
+ this._tilesApi.tilePinChanged(groupChanges, visible, app.Id).subscribe({
541
+ next: (settings) => {
438
542
  this._tilePinChange(appTileGroupsPin, allApps);
439
543
  callback(settings);
440
544
  },
441
- FailFn: () => {
545
+ error: () => {
442
546
  // TODO show error
443
547
  }
444
548
  });
@@ -470,13 +574,11 @@ class TilesService {
470
574
  this._nextAllAppTileGroups(allApps);
471
575
  }
472
576
  loadShellbar() {
473
- BarsaApi.Bw.RunBlMethodAsync({
474
- Parameters: [BarsaApi.LoginFormData.PortalId],
475
- Method: 'LoadShellbarByPortalId',
476
- SuccessFn: (shellbar) => {
577
+ this._tilesApi.loadShellbarByPortalId(BarsaApi.LoginFormData.PortalId).subscribe({
578
+ next: (shellbar) => {
477
579
  this.shellbarSig.set(shellbar);
478
580
  },
479
- FailFn: () => {
581
+ error: () => {
480
582
  // TODO show error
481
583
  }
482
584
  });
@@ -488,25 +590,43 @@ class TilesService {
488
590
  setTileInfo(appTile);
489
591
  }
490
592
  getTileGroups() {
491
- return this.appTileGroupsSig();
593
+ return this._store.appTileGroups();
492
594
  }
493
595
  setEditHome(edit) {
494
596
  this.editHomeSig.set(edit);
597
+ this._store.editHome.set(edit);
598
+ }
599
+ /**
600
+ * After {@link TilesStore#replaceAllAppTileGroups} from another entry point (e.g. {@link TilesViewerService}),
601
+ * refresh derived home list (store already holds app groups).
602
+ */
603
+ syncExternalAppTileGroups() {
604
+ const allApps = this._store.appTileGroups();
605
+ if (allApps?.MoDataList) {
606
+ this._setHomeAppTileGroups(allApps.MoDataList);
607
+ }
608
+ else {
609
+ this.homeAppTileGroupsSig.set([]);
610
+ }
611
+ }
612
+ /** Call when the canonical tree is replaced from outside {@link TilesService} (e.g. viewer API). */
613
+ resetAppTileGroupLoadCache() {
614
+ this._appTileGroupLoaded = {};
495
615
  }
496
616
  _loadAllAppTileGroupsByReportId(id) {
497
617
  this._portalService
498
618
  .ReportExecuteById(id)
499
619
  .pipe(takeUntilDestroyed(this._destroyRef))
500
- .subscribe((allApps) => this._nextAllAppTileGroups(allApps));
620
+ .subscribe((allApps) => this._applyLoadedAppTileGroups(allApps));
501
621
  }
502
622
  _loadAllAppTileGroups() {
503
623
  this._portalService
504
624
  .ReportExecute('AllAppTileGroups')
505
625
  .pipe(takeUntilDestroyed(this._destroyRef))
506
- .subscribe((allApps) => this._nextAllAppTileGroups(allApps));
626
+ .subscribe((allApps) => this._applyLoadedAppTileGroups(allApps));
507
627
  }
508
628
  _onApplication_GlobalRefreshTile(_sender, appTilesTitle) {
509
- const allApps = this.appTileGroupsSig();
629
+ const allApps = this._store.appTileGroups();
510
630
  const appTiles = [];
511
631
  if (allApps) {
512
632
  appTilesTitle.forEach((c) => {
@@ -516,32 +636,27 @@ class TilesService {
516
636
  }
517
637
  });
518
638
  this._updateAppTileFromNotification(allApps, appTiles);
519
- this.appTileGroupsSig.set({ ...allApps });
639
+ this._nextAllAppTileGroups(allApps);
520
640
  }
521
641
  }
522
642
  _updateAppTileFromNotification(allApps, appTiles) {
523
643
  if (!appTiles?.length) {
524
644
  return;
525
645
  }
526
- BarsaApi.Bw.RunBlMethodAsync({
527
- Parameters: [appTiles.map((c) => (c.AppTile?.Id ? c.AppTile?.Id : c.Id))],
528
- Method: 'RefreshAppTiles',
529
- SuccessFn: (result) => {
646
+ this._tilesApi.refreshAppTiles(appTiles.map((c) => (c.AppTile?.Id ? c.AppTile?.Id : c.Id))).subscribe({
647
+ next: (result) => {
530
648
  result.MoDataList.forEach((c) => this.updateAppTile(allApps, c));
531
- this.appTileGroupsSig.set({ ...allApps });
649
+ this._nextAllAppTileGroups(allApps);
532
650
  },
533
- FailFn: () => { }
651
+ error: () => { }
534
652
  });
535
653
  }
536
654
  _allAppsLoaded(moForReportModel) {
537
- moForReportModel.MoDataList.forEach((c) => {
538
- this._prepareNavigator(c);
539
- });
540
655
  this._setHomeAppTileGroups(moForReportModel.MoDataList);
541
656
  }
542
657
  _loadAppTilesOfAppTileGroup(selectedAppTilegroup, allApps) {
543
- const callback = () => {
544
- this._nextAllAppTileGroups(allApps);
658
+ const callback = (appTileGroup) => {
659
+ this._nextAllAppTileGroups(allApps, appTileGroup);
545
660
  };
546
661
  if (!selectedAppTilegroup.UserAppTileGroupSetting || BarsaApi.LoginFormData.IsAnonymous) {
547
662
  this._loadAppTilesByAppTileGroup(selectedAppTilegroup, callback);
@@ -552,14 +667,12 @@ class TilesService {
552
667
  }
553
668
  _loadAppTilesByAppTileGroup(appGroup, callback) {
554
669
  this._appTileGroupLoaded[appGroup.Id] = true;
555
- BarsaApi.Bw.RunBlMethodAsync({
556
- Parameters: [appGroup.Id],
557
- Method: 'LoadAllAppTilesByAppTileGroup',
558
- SuccessFn: (appTiles) => {
559
- this._updateAppTilesOfAppTileGroup(appGroup, appTiles);
560
- callback();
670
+ this._tilesApi.loadAppTilesByGroup(appGroup.Id).subscribe({
671
+ next: (appTiles) => {
672
+ const x = this._updateAppTilesOfAppTileGroup(appGroup, appTiles);
673
+ callback(x);
561
674
  },
562
- FailFn: () => {
675
+ error: () => {
563
676
  // TODO show error
564
677
  }
565
678
  });
@@ -587,30 +700,114 @@ class TilesService {
587
700
  this.appTileGroups.MoDataList[apptileGroupIndex] = selectedAppTilegroup;
588
701
  }
589
702
  }
703
+ return selectedAppTilegroup;
590
704
  }
591
705
  _loadAppTilesByAppTileGroupSetting(appTileGroup, callback) {
592
706
  this._appTileGroupLoaded[appTileGroup.Id] = true;
593
- BarsaApi.Bw.RunBlMethodAsync({
594
- Parameters: [appTileGroup.Id],
595
- Method: 'LoadAllAppTilesByUserAppTileGroupSettings',
596
- SuccessFn: (appTiles) => {
597
- this._updateAppTilesOfAppTileGroup(appTileGroup, appTiles);
598
- callback();
707
+ this._tilesApi.loadAppTilesByUserGroupSettings(appTileGroup.Id).subscribe({
708
+ next: (appTiles) => {
709
+ const x = this._updateAppTilesOfAppTileGroup(appTileGroup, appTiles);
710
+ callback(x);
599
711
  },
600
- FailFn: () => {
712
+ error: () => {
601
713
  // TODO show error
602
714
  }
603
715
  });
604
716
  }
717
+ /** Report/API load: full tree + {@link prepareNavigator} on all roots (via store). */
718
+ _applyLoadedAppTileGroups(allApps) {
719
+ this._appTileGroupLoaded = {};
720
+ this._store.replaceAllAppTileGroups(allApps);
721
+ }
722
+ _findCanonicalAppTileGroup(allApps, id) {
723
+ for (const root of allApps.MoDataList ?? []) {
724
+ const found = this._findAppTileGroupInTree(root, id);
725
+ if (found) {
726
+ return found;
727
+ }
728
+ }
729
+ return null;
730
+ }
731
+ _findAppTileGroupInTree(node, id) {
732
+ if (node.Id === id) {
733
+ return node;
734
+ }
735
+ for (const ch of node.$Children ?? []) {
736
+ const found = this._findAppTileGroupInTree(ch, id);
737
+ if (found) {
738
+ return found;
739
+ }
740
+ }
741
+ return null;
742
+ }
743
+ /** Removes a group by id from root {@link MoForReportModelBase#MoDataList} or any nested {@link AppTileGroup#$Children}. */
744
+ _removeAppTileGroupFromTree(allApps, appGroupId) {
745
+ const roots = allApps.MoDataList ?? [];
746
+ const atRoot = roots.some((c) => c.Id === appGroupId);
747
+ if (atRoot) {
748
+ allApps.MoDataList = roots.filter((c) => c.Id !== appGroupId);
749
+ return;
750
+ }
751
+ for (const root of roots) {
752
+ if (this._removeAppTileGroupFromChildren(root, appGroupId)) {
753
+ return;
754
+ }
755
+ }
756
+ }
757
+ _removeAppTileGroupFromChildren(parent, appGroupId) {
758
+ const children = parent.$Children;
759
+ if (!children?.length) {
760
+ return false;
761
+ }
762
+ if (children.some((c) => c.Id === appGroupId)) {
763
+ parent.$Children = children.filter((c) => c.Id !== appGroupId);
764
+ return true;
765
+ }
766
+ for (const ch of children) {
767
+ if (this._removeAppTileGroupFromChildren(ch, appGroupId)) {
768
+ return true;
769
+ }
770
+ }
771
+ return false;
772
+ }
773
+ _isAppTileGroupTilesLoaded(g) {
774
+ return (!!g.$TilesLoaded || !!this._appTileGroupLoaded[g.Id]);
775
+ }
776
+ /** Replaces the node with the same {@link AppTileGroup#Id} anywhere under {@link $Children}. */
777
+ _replaceAppTileGroupInTreeList(list, appTileGroup) {
778
+ if (!list?.length) {
779
+ return false;
780
+ }
781
+ const idx = list.findIndex((c) => c.Id === appTileGroup.Id);
782
+ if (idx !== -1) {
783
+ list[idx] = appTileGroup;
784
+ return true;
785
+ }
786
+ for (const node of list) {
787
+ const children = node.$Children;
788
+ if (children?.length && this._replaceAppTileGroupInTreeList(children, appTileGroup)) {
789
+ node.$Children = [...node.$Children];
790
+ return true;
791
+ }
792
+ }
793
+ return false;
794
+ }
795
+ /**
796
+ * Local tree changed: merge optional root replacement, then snapshot store without re-running
797
+ * {@link prepareNavigator} on every root (caller must have prepared touched groups).
798
+ */
605
799
  _nextAllAppTileGroups(newAllApps = null, appTileGroup = null) {
606
- const allApps = newAllApps ?? this.appTileGroupsSig();
607
- const x = allApps?.MoDataList.findIndex((c) => c.Id === appTileGroup?.Id);
608
- if (appTileGroup && allApps && x !== undefined && x !== -1) {
609
- allApps.MoDataList[x] = appTileGroup;
800
+ const allApps = newAllApps ?? this._store.appTileGroups();
801
+ if (!allApps) {
802
+ this._store.replaceAllAppTileGroups(null);
803
+ return;
610
804
  }
611
- // Keep signal + store in sync during migration.
612
- this.appTileGroupsSig.set(allApps ? { ...allApps } : null);
613
- this._store.setAllApps(allApps ? { ...allApps } : null);
805
+ if (appTileGroup?.Id) {
806
+ appTileGroup = { ...appTileGroup };
807
+ this._prepareNavigator(appTileGroup);
808
+ this._replaceAppTileGroupInTreeList(allApps.MoDataList, appTileGroup);
809
+ }
810
+ this._store.applyLocalTreeSnapshot({ ...allApps });
614
811
  }
615
812
  _setHomeAppTileGroups(appGroups) {
616
813
  let newAppGroups = [...appGroups];
@@ -620,25 +817,14 @@ class TilesService {
620
817
  this.homeAppTileGroupsSig.set(newAppGroups);
621
818
  }
622
819
  _saveUserPortalSettings(userPortalSettings) {
623
- return new Promise((resolve, reject) => {
624
- BarsaApi.Bw.RunBlMethodAsync({
625
- Parameters: [new BarsaApi.Common.MetaObjectWeb(userPortalSettings)],
626
- Method: 'SaveUserPortalSettings',
627
- SuccessFn: () => {
628
- resolve();
629
- },
630
- FailFn: () => {
631
- reject(null);
632
- }
633
- });
634
- });
820
+ return firstValueFrom(this._tilesApi.saveUserPortalSettings(new BarsaApi.Common.MetaObjectWeb(userPortalSettings)));
635
821
  }
636
822
  _updateAppGroupSetting(appGroup, appGroupSetting) {
637
823
  const allApps = this.appTileGroups;
638
- const selectedAppGroup = allApps?.MoDataList.find((c) => c.Id === appGroup.Id);
824
+ const selectedAppGroup = this._findGroupWithAppGroupId(allApps, appGroup.Id);
639
825
  if (selectedAppGroup && allApps) {
640
- selectedAppGroup.UserAppTileGroupSetting = appGroupSetting;
641
- this._nextAllAppTileGroups(allApps);
826
+ selectedAppGroup.UserAppTileGroupSetting = appGroupSetting.UserAppTileGroupSetting;
827
+ this._nextAllAppTileGroups(allApps, selectedAppGroup);
642
828
  }
643
829
  }
644
830
  findAppTileWithKey(allApps, key, value) {
@@ -708,7 +894,6 @@ class TilesService {
708
894
  return selectedGroup;
709
895
  }
710
896
  _updateAppTileGroupSettings(appTileGroup, setting) {
711
- appTileGroup = { ...appTileGroup };
712
897
  appTileGroup.UserAppTileGroupSetting = setting;
713
898
  appTileGroup.AppTiles.MoDataList.forEach((e, i) => {
714
899
  const ex = setting.UserAppTilesSetting.MoDataList.find((c) => c.Id === e.Id);
@@ -716,7 +901,6 @@ class TilesService {
716
901
  appTileGroup.AppTiles.MoDataList[i] = { ...appTileGroup.AppTiles.MoDataList[i], ...ex };
717
902
  }
718
903
  });
719
- this._prepareNavigator(appTileGroup);
720
904
  // this._nextAllAppTileGroups();
721
905
  return appTileGroup;
722
906
  }
@@ -997,6 +1181,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
997
1181
  args: [TileComponent, { read: ElementRef, static: true }]
998
1182
  }] } });
999
1183
 
1184
+ ;
1185
+ ;
1186
+ ;
1187
+ ;
1188
+
1000
1189
  class TilePropPipe {
1001
1190
  transform(data, prop, parameters) {
1002
1191
  if (data) {
@@ -1081,6 +1270,7 @@ class TileGroupBaseComponent extends BaseComponent {
1081
1270
  this.toggleGroup = new EventEmitter();
1082
1271
  this.resetGroup = new EventEmitter();
1083
1272
  this.deleteGroup = new EventEmitter();
1273
+ this.isJustifyStart = signal(false);
1084
1274
  this._cdr = inject(ChangeDetectorRef);
1085
1275
  }
1086
1276
  ngOnChanges(changes) {
@@ -1095,6 +1285,7 @@ class TileGroupBaseComponent extends BaseComponent {
1095
1285
  if (detectChanges) {
1096
1286
  this.detectChanges();
1097
1287
  }
1288
+ this._setIsJustifyStart();
1098
1289
  }
1099
1290
  onDrop(appTileGroup, event) {
1100
1291
  if (!this.edit || appTileGroup.Locked) {
@@ -1123,8 +1314,12 @@ class TileGroupBaseComponent extends BaseComponent {
1123
1314
  detectChanges() {
1124
1315
  this._cdr.detectChanges();
1125
1316
  }
1317
+ _setIsJustifyStart() {
1318
+ const x = this.appTileGroup && this.appTileGroup.navigatorTiles;
1319
+ this.isJustifyStart.set(x && x.length ? x.length % 3 !== 0 : false);
1320
+ }
1126
1321
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TileGroupBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: TileGroupBaseComponent, isStandalone: false, selector: "bt-tile-group-base", inputs: { parameters: "parameters", appTileGroup: "appTileGroup", stackContent: "stackContent", cssStyles: "cssStyles", edit: "edit", rtl: "rtl", isAppTileSubGroup: "isAppTileSubGroup", deviceSize: "deviceSize", isLast: "isLast" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", changeGroupAppTileClick: "changeGroupAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1322
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: TileGroupBaseComponent, isStandalone: false, selector: "bt-tile-group-base", inputs: { parameters: "parameters", appTileGroup: "appTileGroup", childrenAppTileGroup: "childrenAppTileGroup", stackContent: "stackContent", cssStyles: "cssStyles", edit: "edit", visible: "visible", rtl: "rtl", isAppTileSubGroup: "isAppTileSubGroup", deviceSize: "deviceSize", isLast: "isLast" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", changeGroupAppTileClick: "changeGroupAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1128
1323
  }
1129
1324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TileGroupBaseComponent, decorators: [{
1130
1325
  type: Component,
@@ -1138,12 +1333,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
1138
1333
  type: Input
1139
1334
  }], appTileGroup: [{
1140
1335
  type: Input
1336
+ }], childrenAppTileGroup: [{
1337
+ type: Input
1141
1338
  }], stackContent: [{
1142
1339
  type: Input
1143
1340
  }], cssStyles: [{
1144
1341
  type: Input
1145
1342
  }], edit: [{
1146
1343
  type: Input
1344
+ }], visible: [{
1345
+ type: Input
1147
1346
  }], rtl: [{
1148
1347
  type: Input
1149
1348
  }], isAppTileSubGroup: [{
@@ -1198,7 +1397,7 @@ class ActionsLinkComponent extends BaseComponent {
1198
1397
  }
1199
1398
  }
1200
1399
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ActionsLinkComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ActionsLinkComponent, isStandalone: false, selector: "bt-actions-link", inputs: { actionsLink: "actionsLink", edit: "edit", deviceSize: "deviceSize" }, host: { properties: { "class.hide": "this.hide", "class": "this._class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@for (actionItem of actionsLink; track actionItem.Id) {\r\n<bt-action-item\r\n cdkDrag\r\n [data]=\"actionItem\" \r\n [title]=\"actionItem | tileProp: 'Title'\"\r\n [subtitle]=\"actionItem | tileProp: 'Subtitle'\"\r\n [dynamicCommand]=\"actionItem | tileProp: 'DynamicCommand'\"\r\n [isDouble]=\"actionItem | tileProp: 'IsDouble'\"\r\n [footer]=\"actionItem | tileProp: 'Footer'\"\r\n [icon]=\"actionItem | tileProp: 'Icon'\"\r\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\r\n [mo]=\"actionItem\"\r\n [class.isMobile]=\"isMobile\"\r\n tileDynCommand\r\n [edit]=\"edit\" \r\n [title]=\"actionItem | tileProp: 'Title'\" \r\n [dynamicCommand]=\"actionItem | tileProp: 'DynamicCommand'\"\r\n>\r\n</bt-action-item>\r\n}\r\n", styles: [":host{display:flex;width:100%;row-gap:3px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:3px;padding:1rem 0}:host.isMobile{padding:0 1.3rem}bt-action-item{margin-top:auto;margin-bottom:auto}\n"], dependencies: [{ kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ActionItemComponent, selector: "bt-action-item" }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1400
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ActionsLinkComponent, isStandalone: false, selector: "bt-actions-link", inputs: { actionsLink: "actionsLink", edit: "edit", deviceSize: "deviceSize" }, host: { properties: { "class.hide": "this.hide", "class": "this._class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@for (actionItem of actionsLink; track actionItem.Id) {\r\n<bt-action-item\r\n cdkDrag\r\n [data]=\"actionItem\" \r\n [title]=\"actionItem | tileProp: 'Title'\"\r\n [subtitle]=\"actionItem | tileProp: 'Subtitle'\"\r\n [dynamicCommand]=\"actionItem | tileProp: 'DynamicCommand'\"\r\n [isDouble]=\"actionItem | tileProp: 'IsDouble'\"\r\n [footer]=\"actionItem | tileProp: 'Footer'\"\r\n [icon]=\"actionItem | tileProp: 'Icon'\"\r\n [cdkDragDisabled]=\"!actionItem || actionItem.Locked\"\r\n [mo]=\"actionItem\"\r\n [class.isMobile]=\"isMobile\"\r\n tileDynCommand\r\n [edit]=\"edit\" \r\n [title]=\"actionItem | tileProp: 'Title'\" \r\n [dynamicCommand]=\"actionItem | tileProp: 'DynamicCommand'\"\r\n>\r\n</bt-action-item>\r\n}\r\n", styles: [":host{display:flex;width:100%;row-gap:3px;flex-wrap:wrap;border-radius:var(--sapElement_BorderCornerRadius, .25rem);column-gap:3px;padding:1rem 0}:host.isMobile{padding:0 1.3rem}bt-action-item{margin-top:auto;margin-bottom:auto}\n"], dependencies: [{ kind: "directive", type: i2$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ActionItemComponent, selector: "bt-action-item" }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1202
1401
  }
1203
1402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ActionsLinkComponent, decorators: [{
1204
1403
  type: Component,
@@ -1365,11 +1564,11 @@ class TilesViewerGroupComponent extends TileGroupBaseComponent {
1365
1564
  }
1366
1565
  }
1367
1566
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1368
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerGroupComponent, isStandalone: false, selector: "bt-tiles-viewer-group", usesInheritance: true, ngImport: i0, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n [class.tw-pb-2]=\"isLast\"\r\n [class.hide]=\"!appTileGroup?.navigatorTiles.length && !appTileGroup.navigatorActionLinks.length\"\r\n [class.!tw-mb-2]=\"edit\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle | bbbTranslate }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions 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 @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (!appTileGroup.Predefined) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body [class.small-size]=\"deviceSize === 's'\">\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [class.!tw-hidden]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.!tw-justify-start]=\"appTileGroup.navigatorTiles?.length % 3 !== 0\"\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\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 @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n (changeGroupClick)=\"onAppTileChangeGroupClick(appTile)\"\r\n ></span>\r\n </div>\r\n } @if (edit) {\r\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\r\n <div style=\"margin: 0\">\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n }\r\n </div>\r\n <bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [class.!tw-p-0]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '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 </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\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 (changeGroupAppTileClick)=\"onAppTileChangeGroupClick($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:var(--footer-height)}:host.s{padding:0 1rem}:host ::ng-deep>fd-layout-panel>fd-layout-panel-header .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}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color:transparent}.tile-wrapper.TilesGroup{column-gap:.5rem;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center;flex-direction:column}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:start;width:calc(99.9999999999svw - 4rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s{max-height:7.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column-reverse;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header{height:1.2rem;max-height:1.2rem;min-height:1.2rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header.child-has-overflow-text{position:relative}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content{justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content .fd-numeric-content__launch-icon-container{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s{--sapFontHeader6Size: .75rem;min-width:calc(33.3333333333svw - 2rem);max-width:calc(33.3333333333svw - 2rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-numeric-content__kpi{font-size:1.2rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s span.fd-numeric-content__scale-text{font-size:.8rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__title{white-space:nowrap}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__content{height:3rem;max-height:3rem;min-height:3rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile.disable-tile-resize .fd-tile--double{min-width:calc(99.9999999999svw - 6rem + 1rem);max-width:calc(99.9999999999svw - 6rem + 1rem)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4$1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "ariaValueText", "title", "label", "ariaLive"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { kind: "component", type: i7.LayoutPanelHeaderComponent, selector: "fd-layout-panel-header" }, { kind: "component", type: i7.LayoutPanelHeadComponent, selector: "fd-layout-panel-head" }, { kind: "directive", type: i7.LayoutPanelTitleDirective, selector: "[fd-layout-panel-title]" }, { kind: "component", type: i7.LayoutPanelActionsComponent, selector: "fd-layout-panel-actions" }, { kind: "component", type: i7.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i1$1.TileComponent, selector: "fd-tile", inputs: ["class", "size", "double", "type", "action", "clickable"], outputs: ["tileClick"] }, { kind: "component", type: i5$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i5$1.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i5.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "component", type: ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "edit", "deviceSize"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group" }, { kind: "directive", type: TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "groupType", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick", "changeGroupClick"] }, { kind: "directive", type: TileClassDirective, selector: "[tilesCls]", inputs: ["rtl", "deviceSize", "appTileGroup"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1567
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerGroupComponent, isStandalone: false, selector: "bt-tiles-viewer-group", usesInheritance: true, ngImport: i0, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n [class.tw-pb-2]=\"isLast\"\r\n [class.hide]=\"!appTileGroup?.navigatorTiles?.length && !appTileGroup.navigatorActionLinks.length\"\r\n [class.!tw-mb-2]=\"edit\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle | bbbTranslate }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions 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]=\"!visible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (appTileGroup.CanDelete) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body [class.small-size]=\"deviceSize === 's'\">\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [class.!tw-hidden]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.!tw-justify-start]=\"isJustifyStart()\"\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\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 @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n (changeGroupClick)=\"onAppTileChangeGroupClick(appTile)\"\r\n ></span>\r\n </div>\r\n }\r\n </div>\r\n <bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [class.!tw-p-0]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '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 </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n@for (appTileSubGroup of childrenAppTileGroup; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [childrenAppTileGroup]=\"appTileSubGroup.$Children || []\"\r\n [visible]=\"appTileSubGroup.navigatorVisible\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\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 (changeGroupAppTileClick)=\"onAppTileChangeGroupClick($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:var(--footer-height)}:host.s{padding:0 1rem}:host ::ng-deep>fd-layout-panel>fd-layout-panel-header .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}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color:transparent}.tile-wrapper.TilesGroup{column-gap:.5rem;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center;flex-direction:column}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:start;width:calc(99.9999999999svw - 4rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s{max-height:7.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column-reverse;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header{height:1.2rem;max-height:1.2rem;min-height:1.2rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header.child-has-overflow-text{position:relative}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content{justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content .fd-numeric-content__launch-icon-container{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s{--sapFontHeader6Size: .75rem;min-width:calc(33.3333333333svw - 2rem);max-width:calc(33.3333333333svw - 2rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-numeric-content__kpi{font-size:1.2rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s span.fd-numeric-content__scale-text{font-size:.8rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__title{white-space:nowrap}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__content{height:3rem;max-height:3rem;min-height:3rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile.disable-tile-resize .fd-tile--double{min-width:calc(99.9999999999svw - 6rem + 1rem);max-width:calc(99.9999999999svw - 6rem + 1rem)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], 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", "ariaValueText", "title", "label", "ariaLive"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i5$1.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { kind: "component", type: i5$1.LayoutPanelHeaderComponent, selector: "fd-layout-panel-header" }, { kind: "component", type: i5$1.LayoutPanelHeadComponent, selector: "fd-layout-panel-head" }, { kind: "directive", type: i5$1.LayoutPanelTitleDirective, selector: "[fd-layout-panel-title]" }, { kind: "component", type: i5$1.LayoutPanelActionsComponent, selector: "fd-layout-panel-actions" }, { kind: "component", type: i5$1.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i5.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "component", type: ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "edit", "deviceSize"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group" }, { kind: "directive", type: TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "groupType", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick", "changeGroupClick"] }, { kind: "directive", type: TileClassDirective, selector: "[tilesCls]", inputs: ["rtl", "deviceSize", "appTileGroup"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1369
1568
  }
1370
1569
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
1371
1570
  type: Component,
1372
- args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n [class.tw-pb-2]=\"isLast\"\r\n [class.hide]=\"!appTileGroup?.navigatorTiles.length && !appTileGroup.navigatorActionLinks.length\"\r\n [class.!tw-mb-2]=\"edit\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle | bbbTranslate }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions 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 @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (!appTileGroup.Predefined) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body [class.small-size]=\"deviceSize === 's'\">\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [class.!tw-hidden]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.!tw-justify-start]=\"appTileGroup.navigatorTiles?.length % 3 !== 0\"\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\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 @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n (changeGroupClick)=\"onAppTileChangeGroupClick(appTile)\"\r\n ></span>\r\n </div>\r\n } @if (edit) {\r\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\r\n <div style=\"margin: 0\">\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n }\r\n </div>\r\n <bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [class.!tw-p-0]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '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 </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\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 (changeGroupAppTileClick)=\"onAppTileChangeGroupClick($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:var(--footer-height)}:host.s{padding:0 1rem}:host ::ng-deep>fd-layout-panel>fd-layout-panel-header .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}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color:transparent}.tile-wrapper.TilesGroup{column-gap:.5rem;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center;flex-direction:column}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:start;width:calc(99.9999999999svw - 4rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s{max-height:7.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column-reverse;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header{height:1.2rem;max-height:1.2rem;min-height:1.2rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header.child-has-overflow-text{position:relative}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content{justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content .fd-numeric-content__launch-icon-container{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s{--sapFontHeader6Size: .75rem;min-width:calc(33.3333333333svw - 2rem);max-width:calc(33.3333333333svw - 2rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-numeric-content__kpi{font-size:1.2rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s span.fd-numeric-content__scale-text{font-size:.8rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__title{white-space:nowrap}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__content{height:3rem;max-height:3rem;min-height:3rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile.disable-tile-resize .fd-tile--double{min-width:calc(99.9999999999svw - 6rem + 1rem);max-width:calc(99.9999999999svw - 6rem + 1rem)}\n"] }]
1571
+ args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n [class.tw-pb-2]=\"isLast\"\r\n [class.hide]=\"!appTileGroup?.navigatorTiles?.length && !appTileGroup.navigatorActionLinks.length\"\r\n [class.!tw-mb-2]=\"edit\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle | bbbTranslate }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions 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]=\"!visible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (appTileGroup.CanDelete) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body [class.small-size]=\"deviceSize === 's'\">\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [class.!tw-hidden]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.!tw-justify-start]=\"isJustifyStart()\"\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\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 @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n (changeGroupClick)=\"onAppTileChangeGroupClick(appTile)\"\r\n ></span>\r\n </div>\r\n }\r\n </div>\r\n <bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [class.!tw-p-0]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '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 </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n@for (appTileSubGroup of childrenAppTileGroup; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [childrenAppTileGroup]=\"appTileSubGroup.$Children || []\"\r\n [visible]=\"appTileSubGroup.navigatorVisible\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\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 (changeGroupAppTileClick)=\"onAppTileChangeGroupClick($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:var(--footer-height)}:host.s{padding:0 1rem}:host ::ng-deep>fd-layout-panel>fd-layout-panel-header .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}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color:transparent}.tile-wrapper.TilesGroup{column-gap:.5rem;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center;flex-direction:column}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:start;width:calc(99.9999999999svw - 4rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s{max-height:7.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column-reverse;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header{height:1.2rem;max-height:1.2rem;min-height:1.2rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__header.child-has-overflow-text{position:relative}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep bt-tile:not(.disable-tile-resize) .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content{justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-numeric-content .fd-numeric-content__launch-icon-container{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s{--sapFontHeader6Size: .75rem;min-width:calc(33.3333333333svw - 2rem);max-width:calc(33.3333333333svw - 2rem)}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-numeric-content__kpi{font-size:1.2rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s span.fd-numeric-content__scale-text{font-size:.8rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__title{white-space:nowrap}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile .fd-tile--s .fd-tile__content{height:3rem;max-height:3rem;min-height:3rem}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.s ::ng-deep bt-tile.disable-tile-resize .fd-tile--double{min-width:calc(99.9999999999svw - 6rem + 1rem);max-width:calc(99.9999999999svw - 6rem + 1rem)}\n"] }]
1373
1572
  }] });
1374
1573
 
1375
1574
  class EmptyListDirective {
@@ -1417,7 +1616,7 @@ class AppFinderAppListComponent extends BaseComponent {
1417
1616
  this.pinClick.emit(app);
1418
1617
  }
1419
1618
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppFinderAppListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AppFinderAppListComponent, isStandalone: false, 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: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<div class=\"tw-flex tw-gap-3 tw-flex-wrap tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 xl:tw-grid-cols-4 2xl:tw-grid-cols-5\">\r\n @for (app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; track app; let i = $index) {\r\n <fd-card >\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-card-main-header>\r\n @if (app.Icon) {\r\n <fd-avatar [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n }\r\n <h2 fd-card-title class=\"header-title ellapsis\" [attr.title]=\"app.Title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-main-header>\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 }\r\n</div>\r\n} }\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: "component", type: i1$4.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "interactive", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i2$1.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$1.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$1.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i2$1.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i2$1.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i2$1.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i5.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: EmptyListDirective, selector: "[emptyList]", inputs: ["emptyList"] }, { kind: "pipe", type: i5.FilterStringPipe, name: "filterStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1619
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AppFinderAppListComponent, isStandalone: false, 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: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<div class=\"tw-flex tw-gap-3 tw-flex-wrap tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 xl:tw-grid-cols-4 2xl:tw-grid-cols-5\">\r\n @for (app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; track app; let i = $index) {\r\n <fd-card >\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-card-main-header>\r\n @if (app.Icon) {\r\n <fd-avatar [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n }\r\n <h2 fd-card-title class=\"header-title ellapsis\" [attr.title]=\"app.Title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-main-header>\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 }\r\n</div>\r\n} }\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: "component", type: i1$3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "interactive", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i2$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$2.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i2$2.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i2$2.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i2$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i5.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: EmptyListDirective, selector: "[emptyList]", inputs: ["emptyList"] }, { kind: "pipe", type: i5.FilterStringPipe, name: "filterStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1421
1620
  }
1422
1621
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppFinderAppListComponent, decorators: [{
1423
1622
  type: Component,
@@ -1483,7 +1682,7 @@ class AppFinderComponent extends BaseComponent {
1483
1682
  this.searchTerm = this.searchTerm2;
1484
1683
  }
1485
1684
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppFinderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AppFinderComponent, isStandalone: false, 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\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto;height:calc(100svh - var(--shellbar-height) - 2.5rem)\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\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}.app-groups{background-color:var(--sapBaseColor);height:100%}\n"], dependencies: [{ kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i5$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i5$1.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i5$1.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i5.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { 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: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1685
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AppFinderComponent, isStandalone: false, 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\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto;height:calc(100svh - var(--shellbar-height) - 2.5rem)\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\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}.app-groups{background-color:var(--sapBaseColor);height:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i7.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i5.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { 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: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1487
1686
  }
1488
1687
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppFinderComponent, decorators: [{
1489
1688
  type: Component,
@@ -1539,7 +1738,7 @@ class ChangeAppTileComponent extends BaseComponent {
1539
1738
  }
1540
1739
  }
1541
1740
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ChangeAppTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1542
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ChangeAppTileComponent, isStandalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\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 fdkInitialFocus\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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i3$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i4$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1741
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ChangeAppTileComponent, isStandalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\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 fdkInitialFocus\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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i3$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i4$1.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1543
1742
  }
1544
1743
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ChangeAppTileComponent, decorators: [{
1545
1744
  type: Component,
@@ -1575,24 +1774,25 @@ class CreateAppGroupComponent extends BaseComponent {
1575
1774
  }
1576
1775
  }
1577
1776
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CreateAppGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1578
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CreateAppGroupComponent, isStandalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\r\n </fd-form-input-message-group>\r\n </div>\r\n\r\n <div fd-form-item [formGroup]=\"appGroupForm\" class=\"tw-mt-3\">\r\n <label fd-form-label> {{ 'ParentGroup' | bbbTranslate }}</label>\r\n <fd-select formControlName=\"parentId\">\r\n <fd-option [value]=\"null\">{{ 'NoParent' | bbbTranslate }}</fd-option>\r\n @for (p of parents; track p.Id) {\r\n <fd-option [value]=\"p.Id\">{{ p.navigatorTitle || p.Title }}</fd-option>\r\n }\r\n </fd-select>\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 fdkInitialFocus\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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i3$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i4$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i8.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "textOverflow", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i8.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1777
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: CreateAppGroupComponent, isStandalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\r\n </fd-form-input-message-group>\r\n </div>\r\n\r\n <div fd-form-item [formGroup]=\"appGroupForm\" class=\"tw-mt-3\">\r\n <label fd-form-label> {{ 'Parent Group' | bbbTranslate }}</label>\r\n <fd-select formControlName=\"parentId\">\r\n <fd-option [value]=\"null\">{{ 'NoParent' | bbbTranslate }}</fd-option>\r\n @for (p of parents; track p.Id) {\r\n <fd-option [value]=\"p.Id\">{{ p.navigatorTitle || p.Title }}</fd-option>\r\n }\r\n </fd-select>\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 fdkInitialFocus\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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$2.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i3$2.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "component", type: i3$2.FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: i4$1.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i8.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "textOverflow", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i8.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1579
1778
  }
1580
1779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CreateAppGroupComponent, decorators: [{
1581
1780
  type: Component,
1582
- args: [{ selector: 'bt-create-app-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\r\n </fd-form-input-message-group>\r\n </div>\r\n\r\n <div fd-form-item [formGroup]=\"appGroupForm\" class=\"tw-mt-3\">\r\n <label fd-form-label> {{ 'ParentGroup' | bbbTranslate }}</label>\r\n <fd-select formControlName=\"parentId\">\r\n <fd-option [value]=\"null\">{{ 'NoParent' | bbbTranslate }}</fd-option>\r\n @for (p of parents; track p.Id) {\r\n <fd-option [value]=\"p.Id\">{{ p.navigatorTitle || p.Title }}</fd-option>\r\n }\r\n </fd-select>\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 fdkInitialFocus\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" }]
1781
+ args: [{ selector: 'bt-create-app-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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 @if (submitted && appGroupForm.controls.title.errors) {\r\n <fd-form-message type=\"error\">\r\n {{ RequiredText }}\r\n </fd-form-message>\r\n }\r\n </fd-form-input-message-group>\r\n </div>\r\n\r\n <div fd-form-item [formGroup]=\"appGroupForm\" class=\"tw-mt-3\">\r\n <label fd-form-label> {{ 'Parent Group' | bbbTranslate }}</label>\r\n <fd-select formControlName=\"parentId\">\r\n <fd-option [value]=\"null\">{{ 'NoParent' | bbbTranslate }}</fd-option>\r\n @for (p of parents; track p.Id) {\r\n <fd-option [value]=\"p.Id\">{{ p.navigatorTitle || p.Title }}</fd-option>\r\n }\r\n </fd-select>\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 fdkInitialFocus\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" }]
1583
1782
  }] });
1584
1783
 
1585
1784
  class PinTileComponent extends BaseComponent {
1586
1785
  constructor() {
1587
1786
  super();
1588
1787
  this.newGroupText = '';
1788
+ this.loading = signal(false);
1589
1789
  this._dialogService = inject(DialogService);
1590
1790
  this._dialogRef = inject(DialogRef);
1591
1791
  this._bbbTranslate = inject(BbbTranslatePipe);
1592
1792
  this._tilesService = inject(TilesService);
1593
1793
  this.newGroupText = BarsaApi.LoginFormData.IsRtl
1594
- ? this._bbbTranslate.transform('Groups') + ' ' + this._bbbTranslate.transform('New')
1595
- : this._bbbTranslate.transform('New') + ' ' + this._bbbTranslate.transform('Groups');
1794
+ ? this._bbbTranslate.transform('Create') + ' ' + this._bbbTranslate.transform('Groups')
1795
+ : this._bbbTranslate.transform('Groups') + ' ' + this._bbbTranslate.transform('Create');
1596
1796
  const _dialogRef = this._dialogRef;
1597
1797
  this.app = _dialogRef.data.app;
1598
1798
  this.appTileGroups = _dialogRef.data.appTileGroups;
@@ -1648,12 +1848,13 @@ class PinTileComponent extends BaseComponent {
1648
1848
  .pipe(takeUntil(this._onDestroy$), finalize(() => {
1649
1849
  this._setLoading(false);
1650
1850
  }))
1651
- .subscribe(() => this._close());
1851
+ .subscribe(() => (this.appTileGroups = this.appTileGroups.filter((c) => c.Id !== appTileGroup.Id)));
1652
1852
  }
1653
1853
  });
1654
1854
  }
1655
1855
  _setLoading(loading) {
1656
1856
  this._dialogRef.loading(loading);
1857
+ this.loading.set(loading);
1657
1858
  }
1658
1859
  _setDefaultPinTile(appTileGroup, tileGroupsId) {
1659
1860
  appTileGroup.$PinTile = appTileGroup.$DefaultPinTile =
@@ -1680,11 +1881,11 @@ class PinTileComponent extends BaseComponent {
1680
1881
  this._dialogRef.close(result);
1681
1882
  }
1682
1883
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PinTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1683
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: PinTileComponent, isStandalone: false, 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 @for (appTileGroup of appTileGroups; track appTileGroup) { @if (!appTileGroup.$Disabledpin) {\r\n <li 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 @if( !appTileGroup.Predefined){\r\n <button\r\n fd-button\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(appTileGroup)\"\r\n ></button>\r\n }\r\n </li>\r\n } @for (subGroup of appTileGroup.$Children; track subGroup) { @if (!subGroup.$Disabledpin) {\r\n <li 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 @if( !subGroup.Predefined){\r\n <button\r\n fd-button\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(subGroup)\"\r\n ></button>\r\n }\r\n </li>\r\n } } }\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar\r\n fdkInitialFocus\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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i2$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$3.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i7$1.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: PinTileComponent, isStandalone: false, 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 [action]=\"true\" [growing]=\"true\" (click)=\"onNewGroup()\" (keyup.enter)=\"onNewGroup()\"\r\n (keydown.space)=\"$event.preventDefault()\">\r\n <span fd-list-title>\r\n <fd-busy-indicator [block]=\"false\" [loading]=\"loading()\"></fd-busy-indicator> \r\n <span fd-list-title-text> {{ newGroupText }} </span> \r\n </span>\r\n </li> \r\n @for (appTileGroup of appTileGroups; track appTileGroup) { @if (!appTileGroup.$Disabledpin) {\r\n <li 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 @if( appTileGroup.CanDelete){\r\n <button fd-button glyph=\"delete\" fdType=\"transparent\" [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(appTileGroup)\"></button>\r\n }\r\n </li>\r\n } @for (subGroup of appTileGroup.$Children; track subGroup) { @if (!subGroup.$Disabledpin) {\r\n <li 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 @if( subGroup.CanDelete){\r\n <button fd-button glyph=\"delete\" fdType=\"transparent\" [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(subGroup)\"></button>\r\n }\r\n </li>\r\n } } }\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus fdType=\"transparent\" [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onClose()\">\r\n </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>", 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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i2$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3$1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "ariaValueText", "title", "label", "ariaLive"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i5$3.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate"] }, { kind: "directive", type: i6.ListTitleTextDirective, selector: "[fd-list-title-text], [fdListTitleText]" }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i7$1.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1684
1885
  }
1685
1886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PinTileComponent, decorators: [{
1686
1887
  type: Component,
1687
- args: [{ selector: 'bt-pin-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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 @for (appTileGroup of appTileGroups; track appTileGroup) { @if (!appTileGroup.$Disabledpin) {\r\n <li 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 @if( !appTileGroup.Predefined){\r\n <button\r\n fd-button\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(appTileGroup)\"\r\n ></button>\r\n }\r\n </li>\r\n } @for (subGroup of appTileGroup.$Children; track subGroup) { @if (!subGroup.$Disabledpin) {\r\n <li 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 @if( !subGroup.Predefined){\r\n <button\r\n fd-button\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(subGroup)\"\r\n ></button>\r\n }\r\n </li>\r\n } } }\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar\r\n fdkInitialFocus\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"] }]
1888
+ args: [{ selector: 'bt-pin-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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 [action]=\"true\" [growing]=\"true\" (click)=\"onNewGroup()\" (keyup.enter)=\"onNewGroup()\"\r\n (keydown.space)=\"$event.preventDefault()\">\r\n <span fd-list-title>\r\n <fd-busy-indicator [block]=\"false\" [loading]=\"loading()\"></fd-busy-indicator> \r\n <span fd-list-title-text> {{ newGroupText }} </span> \r\n </span>\r\n </li> \r\n @for (appTileGroup of appTileGroups; track appTileGroup) { @if (!appTileGroup.$Disabledpin) {\r\n <li 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 @if( appTileGroup.CanDelete){\r\n <button fd-button glyph=\"delete\" fdType=\"transparent\" [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(appTileGroup)\"></button>\r\n }\r\n </li>\r\n } @for (subGroup of appTileGroup.$Children; track subGroup) { @if (!subGroup.$Disabledpin) {\r\n <li 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 @if( subGroup.CanDelete){\r\n <button fd-button glyph=\"delete\" fdType=\"transparent\" [title]=\"'Delete' | bbbTranslate\"\r\n (click)=\"onDeleteGroup(subGroup)\"></button>\r\n }\r\n </li>\r\n } } }\r\n </ul>\r\n </fd-dialog-body>\r\n\r\n <fd-dialog-footer>\r\n <ng-template fdkTemplate=\"footer\">\r\n <div fd-bar-left></div>\r\n <div fd-bar-right>\r\n <fd-button-bar fdkInitialFocus fdType=\"emphasized\" [label]=\"'OK' | bbbTranslate\" (click)=\"onAccept()\">\r\n </fd-button-bar>\r\n <fd-button-bar fdkInitialFocus fdType=\"transparent\" [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onClose()\">\r\n </fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-footer>\r\n</fd-dialog>", 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"] }]
1688
1889
  }], ctorParameters: () => [], propDecorators: { app: [{
1689
1890
  type: Input
1690
1891
  }], appTileGroups: [{
@@ -1697,9 +1898,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
1697
1898
 
1698
1899
  class TilesViewerService {
1699
1900
  constructor() {
1700
- this._onDestroy$ = new Subject();
1701
- this.dialogService = inject(DialogService);
1702
- this.tilesService = inject(TilesService, { self: true });
1901
+ this._destroyRef = inject(DestroyRef);
1902
+ this.tilesApi = inject(TilesApiService);
1903
+ this.tilesStore = inject(TilesStore);
1904
+ this.tilesService = inject(TilesService);
1905
+ }
1906
+ loadAllAppTileGroupsByReportId(id) {
1907
+ this.tilesStore.loading.set(true);
1908
+ this.tilesApi
1909
+ .loadAllAppTileGroupsByReportId(id)
1910
+ .pipe(takeUntilDestroyed(this._destroyRef))
1911
+ .subscribe({
1912
+ next: (allApps) => {
1913
+ this.tilesService.resetAppTileGroupLoadCache();
1914
+ this.tilesStore.replaceAllAppTileGroups(allApps);
1915
+ this.tilesService.syncExternalAppTileGroups();
1916
+ this.tilesStore.loading.set(false);
1917
+ },
1918
+ error: () => this.tilesStore.loading.set(false)
1919
+ });
1920
+ }
1921
+ loadAllAppTileGroups() {
1922
+ this.tilesStore.loading.set(true);
1923
+ if (this.tilesStore.allAppsLoading()) {
1924
+ return;
1925
+ }
1926
+ this.tilesApi
1927
+ .loadAllAppTileGroups()
1928
+ .pipe(takeUntilDestroyed(this._destroyRef))
1929
+ .subscribe({
1930
+ next: (allApps) => {
1931
+ this.tilesService.resetAppTileGroupLoadCache();
1932
+ this.tilesStore.replaceAllAppTileGroups(allApps);
1933
+ this.tilesService.syncExternalAppTileGroups();
1934
+ this.tilesStore.loading.set(false);
1935
+ this.tilesStore.allAppsLoading.set(true);
1936
+ },
1937
+ error: () => this.tilesStore.loading.set(false)
1938
+ });
1939
+ }
1940
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1941
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService }); }
1942
+ }
1943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService, decorators: [{
1944
+ type: Injectable
1945
+ }] });
1946
+
1947
+ class TilesViewerContainerController extends BaseController {
1948
+ constructor() {
1949
+ super(...arguments);
1950
+ // Public observables
1951
+ this.edit$ = toObservable(this._tilesStore.editHome);
1952
+ this.appTileGroups$ = toObservable(this._tilesStore.rootGroups);
1953
+ this.rtl$ = this._portalService.rtl$;
1954
+ this.deviceSize$ = this._portalService.deviceSize$;
1955
+ this.stackContent$ = this._portalService.userPortalSettings$.pipe(map$1((settings) => settings['UserPortalSettings']), map$1((settings) => settings?.TilesStackContent), distinctUntilChanged());
1956
+ this.changedOrder = false;
1957
+ this.userStackContent = false;
1958
+ this.initialStackContentValue = false;
1959
+ this.stackContent = false;
1960
+ // Moved from service
1703
1961
  this._hideTileSource = new Subject();
1704
1962
  this._updateAppTileSettingSource = new Subject();
1705
1963
  this._deleteGroupSource = new Subject();
@@ -1711,76 +1969,216 @@ class TilesViewerService {
1711
1969
  this._hideAppGroupSource = new Subject();
1712
1970
  this.hideAppGroup$ = this._hideAppGroupSource.asObservable();
1713
1971
  this._viewLoadingSource = new BehaviorSubject(false);
1714
- this.viewLoading$ = this._viewLoadingSource.asObservable().pipe(debounceTime(200));
1715
- this.hideTile$ = this._hideTileSource.asObservable();
1716
- this.updateAppTileSetting$ = this._updateAppTileSettingSource.asObservable();
1717
- this.deleteAppGroup$ = this._deleteGroupSource.asObservable();
1972
+ /**
1973
+ *
1974
+ */
1975
+ this._hideTile$ = this._hideTileSource.asObservable();
1976
+ }
1977
+ get updateAppTileSetting$() {
1978
+ return this._updateAppTileSettingSource.asObservable();
1979
+ }
1980
+ get deleteAppGroup$() {
1981
+ return this._deleteGroupSource.asObservable();
1982
+ }
1983
+ /** UI/state exposed to view */
1984
+ get viewLoading$() {
1985
+ return this._viewLoadingSource.asObservable().pipe(debounceTime(200));
1986
+ }
1987
+ get selectedAppGroupId() {
1988
+ return localStorage.getItem('selectedTab') ?? '';
1989
+ }
1990
+ set selectedAppGroupId(groupId) {
1991
+ localStorage.setItem('selectedTab', groupId);
1992
+ }
1993
+ get _portalService() {
1994
+ return this.view.injector.get(PortalService);
1995
+ }
1996
+ get _tilesService() {
1997
+ return this.view.injector.get(TilesService);
1998
+ }
1999
+ get _tilesViewerService() {
2000
+ return this.view.injector.get(TilesViewerService);
2001
+ }
2002
+ get _tilesStore() {
2003
+ return this.view.injector.get(TilesStore);
2004
+ }
2005
+ get _dialogService() {
2006
+ return this.view.injector.get(DialogService);
2007
+ }
2008
+ /** Call from component constructor */
2009
+ connectLifecycle() {
2010
+ const onDestroy$ = this.view.onDestroy$;
2011
+ this.stackContent$.pipe(takeUntil$1(onDestroy$)).subscribe((stackContent) => {
2012
+ this.initialStackContentValue = this.userStackContent = stackContent;
2013
+ if (stackContent) {
2014
+ this.stackContent = stackContent;
2015
+ }
2016
+ });
2017
+ this.appTileGroups$
2018
+ .pipe(map$1((appTileGroups) => appTileGroups ?? []), distinctUntilChanged((a, b) => a.length === b.length &&
2019
+ [...a.map((t) => t.Id)].sort().join(',') === [...b.map((t) => t.Id)].sort().join(',')), withLatestFrom(this.stackContent$), takeUntil$1(onDestroy$), filter(([appTileGroups, stackContent]) => appTileGroups.length > 0 && !!stackContent))
2020
+ .subscribe((pair) => {
2021
+ const [tiles] = pair;
2022
+ tiles.forEach((c) => this.loadAppTileGroup(c));
2023
+ });
2024
+ // Moved from service
1718
2025
  this._loadAppGroupSource
1719
2026
  .asObservable()
1720
- .pipe(takeUntil$1(this._onDestroy$))
2027
+ .pipe(takeUntil$1(onDestroy$))
1721
2028
  .subscribe((group) => {
1722
- this.tilesService.loadAppTileGroups(group);
2029
+ this._tilesService.loadAppTileGroups(group);
1723
2030
  });
1724
- this.hideTile$
1725
- .pipe(tap(() => this.setLoading()), takeUntil$1(this._onDestroy$), tap((appTile) => this.tilesService.singlePinTileChanged(appTile.AppTile ? appTile.AppTile : appTile, () => this.setLoaded())))
2031
+ this._hideTile$
2032
+ .pipe(tap(() => this.setLoading()), takeUntil$1(onDestroy$), tap((appTile) => this._tilesService.singlePinTileChanged(appTile.AppTile ? appTile.AppTile : appTile, () => this.setLoaded())))
1726
2033
  .subscribe();
1727
2034
  this.updateAppTileSetting$
1728
- .pipe(takeUntil$1(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this.tilesService.changeAppTileSetting(appTile).pipe(finalize$1(() => {
2035
+ .pipe(takeUntil$1(onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this._tilesService.changeAppTileSetting(appTile).pipe(finalize$1(() => {
1729
2036
  this.setLoaded();
1730
2037
  }))), finalize$1(() => {
1731
2038
  this.setLoaded();
1732
2039
  }))
1733
2040
  .subscribe();
1734
2041
  this.deleteAppGroup$
1735
- .pipe(tap(() => this.setLoading()), takeUntil$1(this._onDestroy$), exhaustMap((appGroup) => this.tilesService.deleteAppGroup(appGroup).pipe(finalize$1(() => {
2042
+ .pipe(tap(() => this.setLoading()), takeUntil$1(onDestroy$), exhaustMap((appGroup) => this._tilesService.deleteAppGroup(appGroup).pipe(finalize$1(() => {
1736
2043
  this.setLoaded();
1737
2044
  }))))
1738
2045
  .subscribe();
1739
2046
  this.resetAppGroup$
1740
- .pipe(takeUntil$1(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.resetAppGroupSetting(appGroup).pipe(finalize$1(() => {
2047
+ .pipe(takeUntil$1(onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this._tilesService.resetAppGroupSetting(appGroup).pipe(finalize$1(() => {
1741
2048
  this.setLoaded();
1742
2049
  }))), finalize$1(() => {
1743
2050
  this.setLoaded();
1744
2051
  }))
1745
2052
  .subscribe();
1746
2053
  this.hideAppGroup$
1747
- .pipe(takeUntil$1(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize$1(() => {
2054
+ .pipe(takeUntil$1(onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this._tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize$1(() => {
1748
2055
  this.setLoaded();
1749
2056
  }))), finalize$1(() => {
1750
2057
  this.setLoaded();
1751
2058
  }))
1752
2059
  .subscribe();
1753
2060
  this.saveAppGroupOrders$
1754
- .pipe(takeUntil$1(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this.tilesService.saveAppGroupOrders(appGroups).pipe(finalize$1(() => {
2061
+ .pipe(takeUntil$1(onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this._tilesService.saveAppGroupOrders(appGroups).pipe(finalize$1(() => {
1755
2062
  this.setLoaded();
1756
2063
  }))), finalize$1(() => {
1757
2064
  this.setLoaded();
1758
2065
  }))
1759
2066
  .subscribe();
1760
2067
  }
1761
- loadAllAppTileGroupsByReportId(id) {
1762
- this.tilesService.loadAllAppTileGroupsByReportId(id);
2068
+ init(settings) {
2069
+ this.connectLifecycle();
2070
+ const s = settings ?? this.view.settings;
2071
+ const reportId = s?.MetaReportTiles?.Id;
2072
+ if (reportId && reportId !== '0') {
2073
+ this._tilesViewerService.loadAllAppTileGroupsByReportId(reportId);
2074
+ }
2075
+ else {
2076
+ this._tilesViewerService.loadAllAppTileGroups();
2077
+ }
2078
+ }
2079
+ destroy() {
2080
+ this._tilesService.setEditHome(false);
2081
+ }
2082
+ onSelectedTabChange(e) {
2083
+ const { firstSelected, selectedTabTitle, appTileGroups: appGroups, tabPanels, tabbarComponent } = e;
2084
+ let appTileGroup;
2085
+ if (this.stackContent) {
2086
+ return;
2087
+ }
2088
+ if (firstSelected) {
2089
+ const lastSelectedAppGroupId = this.selectedAppGroupId;
2090
+ if (lastSelectedAppGroupId) {
2091
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
2092
+ if (appTileGroup) {
2093
+ const lastTab = tabPanels.find((c) => c.label() === appTileGroup?.navigatorTitle);
2094
+ if (lastTab && selectedTabTitle !== lastTab.label()) {
2095
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
2096
+ tabbarComponent.selectTab(lastTab.id());
2097
+ }
2098
+ return;
2099
+ }
2100
+ }
2101
+ }
2102
+ if (!appTileGroup) {
2103
+ appTileGroup = appGroups.find((c) => c.navigatorTitle === selectedTabTitle);
2104
+ }
2105
+ if (appTileGroup) {
2106
+ this.setSelectedTab(appTileGroup);
2107
+ if (!this._tilesService.isAppTileGroupTilesLoaded(appTileGroup.Id)) {
2108
+ this.loadAppTileGroup(appTileGroup);
2109
+ }
2110
+ }
2111
+ }
2112
+ onLoadAppTileGroup(appTileGroup) {
2113
+ if (!this._tilesService.isAppTileGroupTilesLoaded(appTileGroup.Id)) {
2114
+ this.loadAppTileGroup(appTileGroup);
2115
+ }
2116
+ }
2117
+ onDropGroup(e) {
2118
+ const { event, appTileGroups: appGroups } = e;
2119
+ moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
2120
+ this.changedOrder = true;
2121
+ }
2122
+ onDrop(e) {
2123
+ const { appTileGroup: group, event } = e;
2124
+ const previousContainer = event.previousContainer;
2125
+ const container = event.container;
2126
+ const containerIsTile = container.data.isTile;
2127
+ const previousItems = previousContainer.data.items;
2128
+ const containerItems = container.data.items;
2129
+ const { previousIndex, currentIndex } = event;
2130
+ if (previousContainer === container) {
2131
+ moveItemInArray(previousItems, previousIndex, currentIndex);
2132
+ if (containerIsTile) {
2133
+ this._saveOrderAppTiles(group);
2134
+ }
2135
+ else {
2136
+ this._saveOrderActionLinks(group);
2137
+ }
2138
+ }
2139
+ else {
2140
+ transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
2141
+ const appTileIdTransferedId = containerItems[currentIndex]?.AppTile?.Id ?? containerItems[currentIndex].Id;
2142
+ if (containerIsTile) {
2143
+ this._saveOrderActionLinks(group);
2144
+ this._saveOrderAppTiles(group, appTileIdTransferedId);
2145
+ }
2146
+ else {
2147
+ this._saveOrderAppTiles(group);
2148
+ this._saveOrderActionLinks(group, appTileIdTransferedId);
2149
+ }
2150
+ }
2151
+ }
2152
+ onStackContentChanged(checked) {
2153
+ this.userStackContent = checked;
1763
2154
  }
1764
- loadAllAppTileGroups() {
1765
- this.tilesService.loadAllAppTileGroups();
2155
+ onExitEditHome(appTileGroups) {
2156
+ if (this.changedOrder) {
2157
+ this.saveAppGroupOrders(appTileGroups);
2158
+ this.changedOrder = false;
2159
+ }
2160
+ if (this.userStackContent !== this.initialStackContentValue) {
2161
+ this._tilesService.saveTilesStackContent(this.userStackContent);
2162
+ }
2163
+ this._tilesService.setEditHome(false);
1766
2164
  }
1767
- get selectedAppGroupId() {
1768
- return localStorage.getItem('selectedTab') ?? '';
2165
+ onCloseEditHome() {
2166
+ this._tilesService.setEditHome(false);
1769
2167
  }
1770
- set selectedAppGroupId(groupId) {
1771
- localStorage.setItem('selectedTab', groupId);
2168
+ onDelete(appTileGroup) {
2169
+ this.deleteAppGroup(appTileGroup);
1772
2170
  }
1773
- setSelectedTab(group) {
1774
- this.selectedAppGroupId = group.Id;
2171
+ onToggleShowHide(appTileGroup) {
2172
+ this.toggleAppGroupSettingVisible(appTileGroup);
1775
2173
  }
1776
- loadAppTileGroup(group) {
1777
- this._loadAppGroupSource.next(group);
2174
+ onReset(appTileGroup) {
2175
+ this.resetAppGroup(appTileGroup);
1778
2176
  }
1779
- ngOnDestroy() {
1780
- this._onDestroy$.next();
2177
+ onHideAppTile(appTile) {
2178
+ this.hideTile(appTile);
1781
2179
  }
1782
- openRenameForm(appTile) {
1783
- const newGroupDialogRef = this.dialogService.open(ChangeAppTileComponent, {
2180
+ onRenameAppTile(appTile) {
2181
+ const newGroupDialogRef = this._dialogService.open(ChangeAppTileComponent, {
1784
2182
  data: appTile,
1785
2183
  verticalPadding: true,
1786
2184
  responsivePadding: true
@@ -1794,12 +2192,12 @@ class TilesViewerService {
1794
2192
  }
1795
2193
  });
1796
2194
  }
1797
- openChangeGroupForm(appTile) {
2195
+ onChangeGroupAppTile(appTile) {
1798
2196
  const app = appTile.App;
1799
2197
  const pinnedAppInTileGroups = this._loadPinnedAppInTileGroups(app);
1800
- const appTileGroups = this.tilesService.appTileGroups?.MoDataList ?? [];
2198
+ const appTileGroups = this._tilesService.appTileGroups?.MoDataList ?? [];
1801
2199
  const mobile = getDeviceIsMobile();
1802
- const ref = this.dialogService.open(PinTileComponent, {
2200
+ const ref = this._dialogService.open(PinTileComponent, {
1803
2201
  data: { app, pinnedAppInTileGroups, appTileGroups },
1804
2202
  minWidth: '360px',
1805
2203
  minHeight: mobile ? '420px' : 'auto',
@@ -1816,13 +2214,17 @@ class TilesViewerService {
1816
2214
  }
1817
2215
  this.setLoading();
1818
2216
  try {
1819
- this.tilesService.pinTileChanged(result.appTileGroupsPin, result.app, () => this.setLoaded());
2217
+ this._tilesService.pinTileChanged(result.appTileGroupsPin, result.app, () => this.setLoaded());
1820
2218
  }
1821
2219
  catch {
1822
2220
  this.setLoaded();
1823
2221
  }
1824
2222
  });
1825
2223
  }
2224
+ // Moved methods
2225
+ updateAppTileSetting(appTile) {
2226
+ this._updateAppTileSettingSource.next(appTile);
2227
+ }
1826
2228
  resetAppGroup(appGroup) {
1827
2229
  this._resetAppGroupSource.next(appGroup);
1828
2230
  }
@@ -1844,6 +2246,12 @@ class TilesViewerService {
1844
2246
  setLoading() {
1845
2247
  this._viewLoadingSource.next(true);
1846
2248
  }
2249
+ setSelectedTab(group) {
2250
+ this.selectedAppGroupId = group.Id;
2251
+ }
2252
+ loadAppTileGroup(appTileGroup) {
2253
+ this._loadAppGroupSource.next(appTileGroup);
2254
+ }
1847
2255
  _loadPinnedAppInTileGroups(app) {
1848
2256
  const appId = app.Id;
1849
2257
  const val = {};
@@ -1865,12 +2273,85 @@ class TilesViewerService {
1865
2273
  }
1866
2274
  return val;
1867
2275
  }
1868
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1869
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService }); }
2276
+ _saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
2277
+ const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
2278
+ this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
2279
+ }
2280
+ _saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
2281
+ const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
2282
+ this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
2283
+ }
1870
2284
  }
1871
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerService, decorators: [{
1872
- type: Injectable
1873
- }], ctorParameters: () => [] });
2285
+
2286
+ class DynamicTileGroupComponent extends BaseDynamicComponent {
2287
+ constructor() {
2288
+ super(...arguments);
2289
+ this.tilesDropped = new EventEmitter();
2290
+ this.hideAppTileClick = new EventEmitter();
2291
+ this.renameAppTileClick = new EventEmitter();
2292
+ this.changeGroupAppTileClick = new EventEmitter();
2293
+ this.toggleGroup = new EventEmitter();
2294
+ this.resetGroup = new EventEmitter();
2295
+ this.deleteGroup = new EventEmitter();
2296
+ }
2297
+ ngOnChanges(changes) {
2298
+ super.ngOnChanges(changes);
2299
+ const { appTileGroup } = changes;
2300
+ if (appTileGroup && !appTileGroup.firstChange) {
2301
+ this._renderComponentInstance();
2302
+ }
2303
+ else if (this._component) {
2304
+ this._component.instance.ngOnChanges(changes);
2305
+ }
2306
+ }
2307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicTileGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: DynamicTileGroupComponent, isStandalone: false, selector: "bt-dynamic-tile-group,[dynamictilegroup]", inputs: { appTileGroup: "appTileGroup", tabRef: "tabRef", stackContent: "stackContent", cssStyles: "cssStyles", edit: "edit", visible: "visible", rtl: "rtl", childrenAppTileGroup: "childrenAppTileGroup", isAppTileSubGroup: "isAppTileSubGroup", deviceSize: "deviceSize", isLast: "isLast" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", changeGroupAppTileClick: "changeGroupAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2309
+ }
2310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicTileGroupComponent, decorators: [{
2311
+ type: Component,
2312
+ args: [{
2313
+ selector: 'bt-dynamic-tile-group,[dynamictilegroup]',
2314
+ template: `<ng-container #componentContainer></ng-container>`,
2315
+ changeDetection: ChangeDetectionStrategy.OnPush,
2316
+ standalone: false
2317
+ }]
2318
+ }], propDecorators: { appTileGroup: [{
2319
+ type: Input
2320
+ }], tabRef: [{
2321
+ type: Input
2322
+ }], stackContent: [{
2323
+ type: Input
2324
+ }], cssStyles: [{
2325
+ type: Input
2326
+ }], edit: [{
2327
+ type: Input
2328
+ }], visible: [{
2329
+ type: Input
2330
+ }], rtl: [{
2331
+ type: Input
2332
+ }], childrenAppTileGroup: [{
2333
+ type: Input
2334
+ }], isAppTileSubGroup: [{
2335
+ type: Input
2336
+ }], deviceSize: [{
2337
+ type: Input
2338
+ }], isLast: [{
2339
+ type: Input
2340
+ }], tilesDropped: [{
2341
+ type: Output
2342
+ }], hideAppTileClick: [{
2343
+ type: Output
2344
+ }], renameAppTileClick: [{
2345
+ type: Output
2346
+ }], changeGroupAppTileClick: [{
2347
+ type: Output
2348
+ }], toggleGroup: [{
2349
+ type: Output
2350
+ }], resetGroup: [{
2351
+ type: Output
2352
+ }], deleteGroup: [{
2353
+ type: Output
2354
+ }] } });
1874
2355
 
1875
2356
  class TilesViewerComponent extends BaseComponent {
1876
2357
  constructor() {
@@ -1910,9 +2391,6 @@ class TilesViewerComponent extends BaseComponent {
1910
2391
  this.tabListComponent._disableScrollSpy = true;
1911
2392
  }
1912
2393
  }
1913
- ngOnChanges(changes) {
1914
- super.ngOnChanges(changes);
1915
- }
1916
2394
  onSelectedTabChange(selectedTab) {
1917
2395
  if (!this.selectedTabTitle) {
1918
2396
  this._firstSelected = false;
@@ -1961,6 +2439,9 @@ class TilesViewerComponent extends BaseComponent {
1961
2439
  onCloseEditHome() {
1962
2440
  this.closeEditHome.emit();
1963
2441
  }
2442
+ onHideAppTileClick(appTile) {
2443
+ this.hideAppTileClick.emit(appTile);
2444
+ }
1964
2445
  _trackById(index, item) {
1965
2446
  return item ? item.Id : index;
1966
2447
  }
@@ -1970,11 +2451,11 @@ class TilesViewerComponent extends BaseComponent {
1970
2451
  }
1971
2452
  }
1972
2453
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1973
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerComponent, isStandalone: false, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", edit: "edit", rtl: "rtl", defaultTab: "defaultTab", tabsBackColor: "tabsBackColor", stackContent: "stackContent", iconTabType: "iconTabType", 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", changeGroupAppTileClick: "changeGroupAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "class.tiles-viewer": "this._cls", "attr.rtl": "this._rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: IconTabBarComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar 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\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n [iconTabType]=\"iconTabType || 'text'\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"appTileGroup.Color?.$Caption\"\r\n [icon]=\"appTileGroup.IconFont\"\r\n [iconFont]=\"appTileGroup.IconFontName?.$Caption\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n #tabRef\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable [scrollPersist]=\"appTileGroup.Id\" >\r\n <bnrc-dynamic-tile-group\r\n [component]=\"appTileGroup.Component?.Selector ? appTileGroup.Component : defaultTileGroupComponent\"\r\n [parameters]=\"appTileGroup.Component?.Settings\"\r\n [tabRef]=\"tabRef\"\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [cssStyles]=\"appTileGroup.CssStyles\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"i > 0\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (changeGroupAppTileClick)=\"changeGroupAppTileClick.emit($any($event))\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bnrc-dynamic-tile-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host .no-dynamic-page ::ng-deep fdp-icon-tab-bar-filter-type>ul{padding-inline:3rem}:host ::ng-deep>fd-dynamic-page ::ng-deep>article{height:calc(100vh - var(--shellbar-height) - var(--bottom-menu-height))!important}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep>fd-dynamic-page ::ng-deep>article fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__content{border-bottom:none;padding:1px}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (min-width: 1200px){:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fdp-icon-tab-bar-text-type{display:flex;justify-content:center}:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar ul,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content>bt-tiles-viewer-group{width:90rem}}:host.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i3$1.ɵɵCdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i2$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2$2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$4.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i4$4.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i4$4.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i4$4.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i4$4.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i4$4.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i6$2.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "id", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "component", type: i5$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i5$1.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i8$1.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "tabHeadingLevel", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "settings", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i8$1.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i5.DynamicTileGroupComponent, selector: "bnrc-dynamic-tile-group,[dynamictilegroup]", inputs: ["appTileGroup", "tabRef", "stackContent", "cssStyles", "edit", "rtl", "isAppTileSubGroup", "deviceSize", "isLast"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "changeGroupAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "directive", type: i5.ScrollPersistDirective, selector: "[scrollPersist]", inputs: ["scrollPersist"] }, { kind: "directive", type: i3.FixMoreDirective, selector: "[fixMore]" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2454
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerComponent, isStandalone: false, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", edit: "edit", rtl: "rtl", defaultTab: "defaultTab", tabsBackColor: "tabsBackColor", stackContent: "stackContent", iconTabType: "iconTabType", 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", changeGroupAppTileClick: "changeGroupAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "class.tiles-viewer": "this._cls", "attr.rtl": "this._rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: IconTabBarComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar 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\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n [iconTabType]=\"iconTabType || 'text'\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"appTileGroup.Color?.$Caption\"\r\n [icon]=\"appTileGroup.IconFont\"\r\n [iconFont]=\"appTileGroup.IconFontName?.$Caption\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n #tabRef\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable [scrollPersist]=\"appTileGroup.Id\" >\r\n <bt-dynamic-tile-group\r\n [component]=\"appTileGroup.Component?.Selector ? appTileGroup.Component : defaultTileGroupComponent\"\r\n [parameters]=\"appTileGroup.Component?.Settings\"\r\n [tabRef]=\"tabRef\"\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [visible]=\"appTileGroup.navigatorVisible\"\r\n [childrenAppTileGroup]=\"appTileGroup.$Children || []\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [cssStyles]=\"appTileGroup.CssStyles\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"i > 0\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"onHideAppTileClick($event)\"\r\n (changeGroupAppTileClick)=\"changeGroupAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-dynamic-tile-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host .no-dynamic-page ::ng-deep fdp-icon-tab-bar-filter-type>ul{padding-inline:3rem}:host ::ng-deep>fd-dynamic-page ::ng-deep>article{height:calc(100vh - var(--shellbar-height) - var(--bottom-menu-height))!important}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep>fd-dynamic-page ::ng-deep>article fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__content{border-bottom:none;padding:1px}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (min-width: 1200px){:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fdp-icon-tab-bar-text-type{display:flex;justify-content:center}:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar ul,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content>bt-tiles-viewer-group{width:90rem}}:host.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i2$1.ɵɵCdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i2$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2$3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i4$2.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i4$2.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i4$2.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i4$2.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i4$2.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i3$2.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i6$2.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "id", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i8$1.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "tabHeadingLevel", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "settings", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i8$1.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "directive", type: i5.ScrollPersistDirective, selector: "[scrollPersist]", inputs: ["scrollPersist"] }, { kind: "directive", type: i3.FixMoreDirective, selector: "[fixMore]" }, { kind: "component", type: DynamicTileGroupComponent, selector: "bt-dynamic-tile-group,[dynamictilegroup]", inputs: ["appTileGroup", "tabRef", "stackContent", "cssStyles", "edit", "visible", "rtl", "childrenAppTileGroup", "isAppTileSubGroup", "deviceSize", "isLast"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "changeGroupAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1974
2455
  }
1975
2456
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerComponent, decorators: [{
1976
2457
  type: Component,
1977
- args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar 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\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n [iconTabType]=\"iconTabType || 'text'\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"appTileGroup.Color?.$Caption\"\r\n [icon]=\"appTileGroup.IconFont\"\r\n [iconFont]=\"appTileGroup.IconFontName?.$Caption\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n #tabRef\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable [scrollPersist]=\"appTileGroup.Id\" >\r\n <bnrc-dynamic-tile-group\r\n [component]=\"appTileGroup.Component?.Selector ? appTileGroup.Component : defaultTileGroupComponent\"\r\n [parameters]=\"appTileGroup.Component?.Settings\"\r\n [tabRef]=\"tabRef\"\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [cssStyles]=\"appTileGroup.CssStyles\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"i > 0\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (changeGroupAppTileClick)=\"changeGroupAppTileClick.emit($any($event))\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bnrc-dynamic-tile-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host .no-dynamic-page ::ng-deep fdp-icon-tab-bar-filter-type>ul{padding-inline:3rem}:host ::ng-deep>fd-dynamic-page ::ng-deep>article{height:calc(100vh - var(--shellbar-height) - var(--bottom-menu-height))!important}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep>fd-dynamic-page ::ng-deep>article fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__content{border-bottom:none;padding:1px}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (min-width: 1200px){:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fdp-icon-tab-bar-text-type{display:flex;justify-content:center}:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar ul,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content>bt-tiles-viewer-group{width:90rem}}:host.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
2458
+ args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar 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\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n [iconTabType]=\"iconTabType || 'text'\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"appTileGroup.Color?.$Caption\"\r\n [icon]=\"appTileGroup.IconFont\"\r\n [iconFont]=\"appTileGroup.IconFontName?.$Caption\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n #tabRef\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable [scrollPersist]=\"appTileGroup.Id\" >\r\n <bt-dynamic-tile-group\r\n [component]=\"appTileGroup.Component?.Selector ? appTileGroup.Component : defaultTileGroupComponent\"\r\n [parameters]=\"appTileGroup.Component?.Settings\"\r\n [tabRef]=\"tabRef\"\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [visible]=\"appTileGroup.navigatorVisible\"\r\n [childrenAppTileGroup]=\"appTileGroup.$Children || []\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [cssStyles]=\"appTileGroup.CssStyles\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"i > 0\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"onHideAppTileClick($event)\"\r\n (changeGroupAppTileClick)=\"changeGroupAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-dynamic-tile-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host .no-dynamic-page ::ng-deep fdp-icon-tab-bar-filter-type>ul{padding-inline:3rem}:host ::ng-deep>fd-dynamic-page ::ng-deep>article{height:calc(100vh - var(--shellbar-height) - var(--bottom-menu-height))!important}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep>fd-dynamic-page ::ng-deep>article fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep>fd-dynamic-page ::ng-deep>article .fd-panel__content{border-bottom:none;padding:1px}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (min-width: 1200px){:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fdp-icon-tab-bar-text-type{display:flex;justify-content:center}:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar ul,:host.centerContent>fd-dynamic-page ::ng-deep>article>fdp-icon-tab-bar fd-dynamic-page-content>bt-tiles-viewer-group{width:90rem}}:host.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
1978
2459
  }], propDecorators: { tabListComponent: [{
1979
2460
  type: ViewChild,
1980
2461
  args: [IconTabBarComponent]
@@ -2172,178 +2653,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
2172
2653
  type: Output
2173
2654
  }] } });
2174
2655
 
2175
- class TilesViewerContainerComponent extends BaseComponent {
2656
+ class TilesViewerContainerComponent extends ViewBase {
2176
2657
  constructor() {
2177
- super();
2178
- this.changedOrder = false;
2179
- this.userStackContent = false;
2180
- this.initialStackContentValue = false;
2181
- this.firstSelected = false;
2182
- this.stackContent = false;
2183
- this._activatedRoute = inject(ActivatedRoute);
2184
- this._router = inject(Router);
2185
- this._portalService = inject(PortalService);
2186
- this._tilesService = inject(TilesService);
2187
- this._tilesViewerService = inject(TilesViewerService);
2188
- BarsaApi.Bw.RefreshAppTileGroup = (appTileGroupId) => {
2189
- this._tilesService.loadAppTileGroupsById(appTileGroupId);
2190
- };
2191
- this.stackContent$ = this._portalService.userPortalSettings$.pipe(takeUntil$1(this._onDestroy$), map((settings) => settings['UserPortalSettings']), map((settings) => settings?.TilesStackContent), distinctUntilChanged());
2192
- this.stackContent$.subscribe((stackContent) => {
2193
- this.initialStackContentValue = this.userStackContent = stackContent;
2194
- if (stackContent) {
2195
- this.stackContent = stackContent;
2196
- }
2197
- });
2198
- }
2199
- ngOnInit() {
2200
- super.ngOnInit();
2201
- if (this.settings.MetaReportTiles?.Id && this.settings.MetaReportTiles?.Id !== '0') {
2202
- this._tilesViewerService.loadAllAppTileGroupsByReportId(this.settings.MetaReportTiles?.Id);
2203
- }
2204
- else {
2205
- this._tilesViewerService.loadAllAppTileGroups();
2206
- }
2207
- this.viewLoading$ = this._tilesViewerService.viewLoading$;
2208
- this.selectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
2209
- this.rtl$ = this._portalService.rtl$;
2210
- this.deviceSize$ = this._portalService.deviceSize$;
2211
- this.edit$ = this._tilesService.edit$;
2212
- this.appTileGroups$ = this._tilesService.homeAppTileGroups$;
2213
- this.appTileGroups$.pipe(withLatestFrom(this.stackContent$)).subscribe(([tiles, stackContent]) => {
2214
- if (tiles && stackContent) {
2215
- tiles.forEach((c) => {
2216
- this.loadAppTileGroup(c);
2217
- });
2218
- }
2219
- });
2220
- }
2221
- ngOnDestroy() {
2222
- super.ngOnDestroy();
2223
- this._tilesService.setEditHome(false);
2224
- }
2225
- onSelectedTabChange(e) {
2226
- const { firstSelected, selectedTabTitle, appTileGroups: appGroups, tabPanels, tabbarComponent } = e;
2227
- let appTileGroup;
2228
- if (this.stackContent) {
2229
- return;
2230
- }
2231
- if (firstSelected) {
2232
- const lastSelectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
2233
- if (lastSelectedAppGroupId) {
2234
- appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
2235
- if (appTileGroup) {
2236
- const lastTab = tabPanels.find((c) => c.label === appTileGroup?.navigatorTitle);
2237
- if (lastTab && selectedTabTitle !== lastTab.label()) {
2238
- appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
2239
- tabbarComponent.selectTab(lastTab.id());
2240
- }
2241
- return;
2242
- }
2243
- }
2244
- }
2245
- if (!appTileGroup) {
2246
- appTileGroup = appGroups.find((c) => c.navigatorTitle === selectedTabTitle);
2247
- }
2248
- if (appTileGroup) {
2249
- this._tilesViewerService.setSelectedTab(appTileGroup);
2250
- this.loadAppTileGroup(appTileGroup);
2251
- }
2252
- }
2253
- onLoadAppTileGroup(appTileGroup) {
2254
- this.loadAppTileGroup(appTileGroup);
2255
- }
2256
- onDropGroup(e) {
2257
- const { event, appTileGroups: appGroups } = e;
2258
- moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
2259
- this.changedOrder = true;
2260
- // this.saveOrderAppTiles(allApps, group);
2261
- }
2262
- onDrop(e) {
2263
- const { appTileGroup: group, event } = e;
2264
- const previousContainer = event.previousContainer;
2265
- const container = event.container;
2266
- const containerIsTile = container.data.isTile;
2267
- const previousItems = previousContainer.data.items;
2268
- const containerItems = container.data.items;
2269
- const { previousIndex, currentIndex } = event;
2270
- if (previousContainer === container) {
2271
- moveItemInArray(previousItems, previousIndex, currentIndex);
2272
- if (containerIsTile) {
2273
- this._saveOrderAppTiles(group);
2274
- }
2275
- else {
2276
- this._saveOrderActionLinks(group);
2277
- }
2278
- }
2279
- else {
2280
- transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
2281
- const appTileIdTransferedId = containerItems[currentIndex]?.AppTile?.Id ?? containerItems[currentIndex].Id;
2282
- if (containerIsTile) {
2283
- this._saveOrderActionLinks(group);
2284
- this._saveOrderAppTiles(group, appTileIdTransferedId);
2285
- }
2286
- else {
2287
- this._saveOrderAppTiles(group);
2288
- this._saveOrderActionLinks(group, appTileIdTransferedId);
2289
- }
2290
- }
2291
- }
2292
- onStackContentChanged(checked) {
2293
- this.userStackContent = checked;
2294
- }
2295
- onExitEditHome(appTileGroups) {
2296
- if (this.changedOrder) {
2297
- this._tilesViewerService.saveAppGroupOrders(appTileGroups);
2298
- this.changedOrder = false;
2299
- }
2300
- if (this.userStackContent !== this.initialStackContentValue) {
2301
- this._tilesService.saveTilesStackContent(this.userStackContent);
2302
- }
2303
- this._setEditHome(false);
2658
+ super(...arguments);
2659
+ this.controller = new TilesViewerContainerController(this);
2660
+ this._onDestroyLocal$ = new Subject();
2304
2661
  }
2305
- onCloseEditHome() {
2306
- this._setEditHome(false);
2662
+ get onDestroy$() {
2663
+ return this._onDestroyLocal$.asObservable();
2307
2664
  }
2308
- onDelete(appTileGroup) {
2309
- this._tilesViewerService.deleteAppGroup(appTileGroup);
2665
+ // Template bindings come from the controller.
2666
+ get appTileGroups$() {
2667
+ return this.controller.appTileGroups$;
2310
2668
  }
2311
- onToggleShowHide(appTileGroup) {
2312
- this._tilesViewerService.toggleAppGroupSettingVisible(appTileGroup);
2669
+ get viewLoading$() {
2670
+ return this.controller.viewLoading$;
2313
2671
  }
2314
- onReset(appTileGroup) {
2315
- this._tilesViewerService.resetAppGroup(appTileGroup);
2672
+ get deviceSize$() {
2673
+ return this.controller.deviceSize$;
2316
2674
  }
2317
- onHideAppTile(appTile) {
2318
- this._tilesViewerService.hideTile(appTile);
2675
+ get edit$() {
2676
+ return this.controller.edit$;
2319
2677
  }
2320
- onRenameAppTile(appTile) {
2321
- this._tilesViewerService.openRenameForm(appTile);
2678
+ get stackContent$() {
2679
+ return this.controller.stackContent$;
2322
2680
  }
2323
- onChangeGroupAppTile(appTile) {
2324
- this._tilesViewerService.openChangeGroupForm(appTile);
2681
+ get rtl$() {
2682
+ return this.controller.rtl$;
2325
2683
  }
2326
- loadAppTileGroup(appTileGroup) {
2327
- this._tilesViewerService.loadAppTileGroup(appTileGroup);
2684
+ get selectedAppGroupId() {
2685
+ return this.controller.selectedAppGroupId;
2328
2686
  }
2329
- _setEditHome(val) {
2330
- this._tilesService.setEditHome(val);
2687
+ ngOnInit() {
2688
+ super.ngOnInit();
2331
2689
  }
2332
- _saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
2333
- const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
2334
- this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
2690
+ showError(message, code) {
2691
+ super.showError(message, code);
2335
2692
  }
2336
- _saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
2337
- const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
2338
- this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
2693
+ // `ViewBase.ngOnInit()` will call `controller.init()`.
2694
+ ngOnDestroy() {
2695
+ this._onDestroyLocal$.next();
2696
+ this._onDestroyLocal$.complete();
2697
+ this.controller.destroy();
2698
+ super.ngOnDestroy();
2339
2699
  }
2340
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2341
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerContainerComponent, isStandalone: false, selector: "bt-tiles-viewer-container", providers: [TilesViewerService, TilesService], usesInheritance: true, ngImport: i0, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n settings.DisplayMode$Caption === '\u062A\u0628 \u0628\u0646\u062F\u06CC' ? tabmode : megamenu;\r\n context: { $implicit: appTileGroups }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template #tabmode let-appTileGroups>\r\n <bt-tiles-viewer\r\n darkClass\r\n [class.edit]=\"(edit$ | async)!!\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [iconTabType]=\"settings?.TabType?.$Caption\"\r\n [class.hideTabs]=\"settings?.HideTabs\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [class.boxShadow]=\"settings?.BoxShadow\"\r\n [class.tabsBackColor]=\"settings?.TabsBackColor\"\r\n cssRootVariable\r\n [cssVariableValue]=\"settings?.TabsBackColor\"\r\n [cssVariableName]=\"'--tile-tabs-custom-color'\"\r\n [edit]=\"(edit$ | async)!!\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\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 (changeGroupAppTileClick)=\"onChangeGroupAppTile($event)\"\r\n ></bt-tiles-viewer>\r\n</ng-template>\r\n<ng-template #megamenu>\r\n <bt-tiles-viewer-megamenu\r\n darkClass\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\" \r\n (loadAppTileGroup)=\"onLoadAppTileGroup($event)\"\r\n ></bt-tiles-viewer-megamenu>\r\n</ng-template>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.DynamicRootVariableDirective, selector: "[cssRootVariable]", inputs: ["cssVariableName", "cssVariableValue", "disable"], exportAs: ["cssRootVariable"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "directive", type: i3.DarkClassDirective, selector: "[darkClass]" }, { kind: "component", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "edit", "rtl", "defaultTab", "tabsBackColor", "stackContent", "iconTabType", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "changeGroupAppTileClick", "tilesDropped"] }, { kind: "component", type: TilesViewerMegamenuComponent, selector: "bt-tiles-viewer-megamenu", inputs: ["appTileGroups", "loading", "rtl", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["loadAppTileGroup"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2700
+ onSelectedTabChange(e) { this.controller.onSelectedTabChange(e); }
2701
+ onLoadAppTileGroup(appTileGroup) { this.controller.onLoadAppTileGroup(appTileGroup); }
2702
+ onDropGroup(e) { this.controller.onDropGroup(e); }
2703
+ onDrop(e) { this.controller.onDrop(e); }
2704
+ onStackContentChanged(checked) { this.controller.onStackContentChanged(checked); }
2705
+ onExitEditHome(appTileGroups) { this.controller.onExitEditHome(appTileGroups); }
2706
+ onCloseEditHome() { this.controller.onCloseEditHome(); }
2707
+ onDelete(appTileGroup) { this.controller.onDelete(appTileGroup); }
2708
+ onToggleShowHide(appTileGroup) { this.controller.onToggleShowHide(appTileGroup); }
2709
+ onReset(appTileGroup) { this.controller.onReset(appTileGroup); }
2710
+ onHideAppTile(appTile) { this.controller.onHideAppTile(appTile); }
2711
+ onRenameAppTile(appTile) { this.controller.onRenameAppTile(appTile); }
2712
+ onChangeGroupAppTile(appTile) { this.controller.onChangeGroupAppTile(appTile); }
2713
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2714
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TilesViewerContainerComponent, isStandalone: false, selector: "bt-tiles-viewer-container", usesInheritance: true, ngImport: i0, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n settings.DisplayMode$Caption === '\u062A\u0628 \u0628\u0646\u062F\u06CC' ? tabmode : megamenu;\r\n context: { $implicit: appTileGroups }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template #tabmode let-appTileGroups>\r\n <bt-tiles-viewer\r\n darkClass\r\n [class.edit]=\"(edit$ | async) === true\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [iconTabType]=\"settings?.TabType?.$Caption\"\r\n [class.hideTabs]=\"settings?.HideTabs\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [class.boxShadow]=\"settings?.BoxShadow\"\r\n [class.tabsBackColor]=\"settings?.TabsBackColor\"\r\n cssRootVariable\r\n [cssVariableValue]=\"settings?.TabsBackColor\"\r\n [cssVariableName]=\"'--tile-tabs-custom-color'\"\r\n [edit]=\"(edit$ | async) === true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [stackContent]=\"(stackContent$ | async) === true\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\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 (changeGroupAppTileClick)=\"onChangeGroupAppTile($event)\"\r\n ></bt-tiles-viewer>\r\n</ng-template>\r\n<ng-template #megamenu>\r\n <bt-tiles-viewer-megamenu\r\n darkClass\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\" \r\n (loadAppTileGroup)=\"onLoadAppTileGroup($event)\"\r\n ></bt-tiles-viewer-megamenu>\r\n</ng-template>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.DynamicRootVariableDirective, selector: "[cssRootVariable]", inputs: ["cssVariableName", "cssVariableValue", "disable"], exportAs: ["cssRootVariable"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "directive", type: i3.DarkClassDirective, selector: "[darkClass]" }, { kind: "component", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "edit", "rtl", "defaultTab", "tabsBackColor", "stackContent", "iconTabType", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "changeGroupAppTileClick", "tilesDropped"] }, { kind: "component", type: TilesViewerMegamenuComponent, selector: "bt-tiles-viewer-megamenu", inputs: ["appTileGroups", "loading", "rtl", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["loadAppTileGroup"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2342
2715
  }
2343
2716
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
2344
2717
  type: Component,
2345
- args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService, TilesService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n settings.DisplayMode$Caption === '\u062A\u0628 \u0628\u0646\u062F\u06CC' ? tabmode : megamenu;\r\n context: { $implicit: appTileGroups }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template #tabmode let-appTileGroups>\r\n <bt-tiles-viewer\r\n darkClass\r\n [class.edit]=\"(edit$ | async)!!\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [iconTabType]=\"settings?.TabType?.$Caption\"\r\n [class.hideTabs]=\"settings?.HideTabs\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [class.boxShadow]=\"settings?.BoxShadow\"\r\n [class.tabsBackColor]=\"settings?.TabsBackColor\"\r\n cssRootVariable\r\n [cssVariableValue]=\"settings?.TabsBackColor\"\r\n [cssVariableName]=\"'--tile-tabs-custom-color'\"\r\n [edit]=\"(edit$ | async)!!\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\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 (changeGroupAppTileClick)=\"onChangeGroupAppTile($event)\"\r\n ></bt-tiles-viewer>\r\n</ng-template>\r\n<ng-template #megamenu>\r\n <bt-tiles-viewer-megamenu\r\n darkClass\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\" \r\n (loadAppTileGroup)=\"onLoadAppTileGroup($event)\"\r\n ></bt-tiles-viewer-megamenu>\r\n</ng-template>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
2346
- }], ctorParameters: () => [] });
2718
+ args: [{ selector: 'bt-tiles-viewer-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n settings.DisplayMode$Caption === '\u062A\u0628 \u0628\u0646\u062F\u06CC' ? tabmode : megamenu;\r\n context: { $implicit: appTileGroups }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template #tabmode let-appTileGroups>\r\n <bt-tiles-viewer\r\n darkClass\r\n [class.edit]=\"(edit$ | async) === true\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [iconTabType]=\"settings?.TabType?.$Caption\"\r\n [class.hideTabs]=\"settings?.HideTabs\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [class.boxShadow]=\"settings?.BoxShadow\"\r\n [class.tabsBackColor]=\"settings?.TabsBackColor\"\r\n cssRootVariable\r\n [cssVariableValue]=\"settings?.TabsBackColor\"\r\n [cssVariableName]=\"'--tile-tabs-custom-color'\"\r\n [edit]=\"(edit$ | async) === true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [stackContent]=\"(stackContent$ | async) === true\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\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 (changeGroupAppTileClick)=\"onChangeGroupAppTile($event)\"\r\n ></bt-tiles-viewer>\r\n</ng-template>\r\n<ng-template #megamenu>\r\n <bt-tiles-viewer-megamenu\r\n darkClass\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [class.centerContent]=\"settings?.CenterContent\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\" \r\n (loadAppTileGroup)=\"onLoadAppTileGroup($event)\"\r\n ></bt-tiles-viewer-megamenu>\r\n</ng-template>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
2719
+ }] });
2347
2720
 
2348
2721
  class MicroTileChartBulletComponent extends BaseBtTileComponent {
2349
2722
  ngOnInit() {
@@ -2357,7 +2730,7 @@ class MicroTileChartBulletComponent extends BaseBtTileComponent {
2357
2730
  this.isDelta = this.settings.IsDelta;
2358
2731
  }
2359
2732
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartBulletComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2360
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MicroTileChartBulletComponent, isStandalone: false, selector: "bt-micro-tile-chart-bullet", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n>\r\n <div fd-tile-content>\r\n @if (double) {\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]=\"isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n }\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$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$3.MicroChartBulletComponent, selector: "be-micro-chart-bullet", inputs: ["chartInstanceId", "parentMoId", "range", "value", "forecast", "target", "suffix", "separatorLines", "isDelta"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2733
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MicroTileChartBulletComponent, isStandalone: false, selector: "bt-micro-tile-chart-bullet", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n>\r\n <div fd-tile-content>\r\n @if (double) {\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]=\"isDelta\"\r\n [separatorLines]=\"separatorLines\"\r\n [suffix]=\"suffix\"\r\n >\r\n </be-micro-chart-bullet>\r\n }\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$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i2$4.MicroChartBulletComponent, selector: "be-micro-chart-bullet", inputs: ["chartInstanceId", "parentMoId", "range", "value", "forecast", "target", "suffix", "separatorLines", "isDelta"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2361
2734
  }
2362
2735
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartBulletComponent, decorators: [{
2363
2736
  type: Component,
@@ -2395,7 +2768,7 @@ class NewsTileComponent extends BaseBtTileComponent {
2395
2768
  this.activeNews = newsMo;
2396
2769
  }
2397
2770
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NewsTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2398
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: NewsTileComponent, isStandalone: false, selector: "bt-news-tile", viewQueries: [{ propertyName: "carouselComponent", first: true, predicate: CarouselComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [footerTemplate]=\"newsFooter\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [setToStorage]=\"setToStorage\"\r\n [deviceSize]=\"deviceSize\"\r\n [listMode]=\"listMode\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n>\r\n <div fd-tile-content style=\"align-items: center; padding-top: 1rem\">\r\n <span>\r\n {{ activeNews?.Text | bbbTranslate }}\r\n </span>\r\n\r\n <div class=\"wrapper-carousel\">\r\n <div class=\"cover\"></div>\r\n @if (slides.length > 1) {\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n [glyph]=\"isStop ? 'play' : 'pause'\"\r\n (click)=\"isStop = !isStop; $event.preventDefault(); $event.stopPropagation()\"\r\n ></button>\r\n }\r\n <fd-carousel\r\n carouselIndicatorsOrientation=\"top\"\r\n [slideTransitionDuration]=\"1000\"\r\n (slideChange)=\"slideChange($event)\"\r\n [loop]=\"true\"\r\n [navigation]=\"false\"\r\n [navigatorInPageIndicator]=\"false\"\r\n width=\"100%\"\r\n >\r\n @for (slide of slides; track slide) {\r\n <fd-carousel-item [value]=\"slide\">\r\n <img\r\n [src]=\"slide.Img ? (slide.Img.FileId | picFieldSrc: 'ID':null:slide.Img.FileId:335:170) : ''\"\r\n loading=\"lazy\"\r\n />\r\n </fd-carousel-item>\r\n }\r\n </fd-carousel>\r\n </div>\r\n </div>\r\n</bt-tile>\r\n\r\n<!-- tile footer-->\r\n<ng-template #newsFooter>\r\n <div fd-tile-footer [twoColumn]=\"twoColumn\" *untilInView=\"el\">\r\n @if (twoColumn) {\r\n <div fd-tile-section>\r\n <span fd-tile-footer-text>{{ activeNews?.Footer1 | bbbTranslate }}</span>\r\n </div>\r\n <div fd-tile-section>\r\n <span fd-tile-footer-text>{{ activeNews?.Footer2 | bbbTranslate }}</span>\r\n </div>\r\n } @else {\r\n <span fd-tile-footer-text>{{ activeNews?.Footer1 | bbbTranslate }}</span>\r\n }\r\n </div>\r\n</ng-template>\r\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 .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: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i2$4.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "noPaginationContainerBorder", "contentBackground", "pageIndicatorBackground", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i2$4.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: i5.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2771
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: NewsTileComponent, isStandalone: false, selector: "bt-news-tile", viewQueries: [{ propertyName: "carouselComponent", first: true, predicate: CarouselComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [footerTemplate]=\"newsFooter\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [setToStorage]=\"setToStorage\"\r\n [deviceSize]=\"deviceSize\"\r\n [listMode]=\"listMode\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n>\r\n <div fd-tile-content style=\"align-items: center; padding-top: 1rem\">\r\n <span>\r\n {{ activeNews?.Text | bbbTranslate }}\r\n </span>\r\n\r\n <div class=\"wrapper-carousel\">\r\n <div class=\"cover\"></div>\r\n @if (slides.length > 1) {\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n [glyph]=\"isStop ? 'play' : 'pause'\"\r\n (click)=\"isStop = !isStop; $event.preventDefault(); $event.stopPropagation()\"\r\n ></button>\r\n }\r\n <fd-carousel\r\n carouselIndicatorsOrientation=\"top\"\r\n [slideTransitionDuration]=\"1000\"\r\n (slideChange)=\"slideChange($event)\"\r\n [loop]=\"true\"\r\n [navigation]=\"false\"\r\n [navigatorInPageIndicator]=\"false\"\r\n width=\"100%\"\r\n >\r\n @for (slide of slides; track slide) {\r\n <fd-carousel-item [value]=\"slide\">\r\n <img\r\n [src]=\"slide.Img ? (slide.Img.FileId | picFieldSrc: 'ID':null:slide.Img.FileId:335:170) : ''\"\r\n loading=\"lazy\"\r\n />\r\n </fd-carousel-item>\r\n }\r\n </fd-carousel>\r\n </div>\r\n </div>\r\n</bt-tile>\r\n\r\n<!-- tile footer-->\r\n<ng-template #newsFooter>\r\n <div fd-tile-footer [twoColumn]=\"twoColumn\" *untilInView=\"el\">\r\n @if (twoColumn) {\r\n <div fd-tile-section>\r\n <span fd-tile-footer-text>{{ activeNews?.Footer1 | bbbTranslate }}</span>\r\n </div>\r\n <div fd-tile-section>\r\n <span fd-tile-footer-text>{{ activeNews?.Footer2 | bbbTranslate }}</span>\r\n </div>\r\n } @else {\r\n <span fd-tile-footer-text>{{ activeNews?.Footer1 | bbbTranslate }}</span>\r\n }\r\n </div>\r\n</ng-template>\r\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 .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: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i2$5.CarouselComponent, selector: "fd-carousel", inputs: ["id", "ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "pageIndicatorsOrientation", "height", "width", "loop", "navigation", "navigatorInPageIndicator", "numericIndicator", "pageIndicatorContainer", "pageIndicator", "resourceStrings", "slideTransitionDuration", "swipeEnabled", "vertical", "noPaginationContainerBorder", "contentBackground", "pageIndicatorBackground", "visibleSlidesCount"], outputs: ["slideChange"] }, { kind: "component", type: i2$5.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: i5.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2399
2772
  }
2400
2773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: NewsTileComponent, decorators: [{
2401
2774
  type: Component,
@@ -2422,7 +2795,7 @@ class MicroTileChartComparisonComponent extends BaseBtTileComponent {
2422
2795
  };
2423
2796
  }
2424
2797
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartComparisonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2425
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartComparisonComponent, isStandalone: false, selector: "bt-micro-tile-chart-comparison", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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$3.MicroChartComparisonComponent, selector: "be-micro-chart-comparison", inputs: ["chartInstanceId", "parentMoId", "size"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2798
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartComparisonComponent, isStandalone: false, selector: "bt-micro-tile-chart-comparison", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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: ["chartInstanceId", "parentMoId", "size"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2426
2799
  }
2427
2800
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartComparisonComponent, decorators: [{
2428
2801
  type: Component,
@@ -2442,7 +2815,7 @@ class MicroTileChartStackbarComponent extends BaseBtTileComponent {
2442
2815
  };
2443
2816
  }
2444
2817
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartStackbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2445
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartStackbarComponent, isStandalone: false, selector: "bt-micro-tile-chart-stackbar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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$3.MicroChartStackbarComponent, selector: "be-micro-chart-stackbar", inputs: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2818
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartStackbarComponent, isStandalone: false, selector: "bt-micro-tile-chart-stackbar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2446
2819
  }
2447
2820
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartStackbarComponent, decorators: [{
2448
2821
  type: Component,
@@ -2467,7 +2840,7 @@ class MicroTileChartLineComponent extends BaseBtTileComponent {
2467
2840
  };
2468
2841
  }
2469
2842
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartLineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2470
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartLineComponent, isStandalone: false, selector: "bt-micro-tile-chart-line", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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$3.MicroChartLineComponent, selector: "be-micro-chart-line", inputs: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2843
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartLineComponent, isStandalone: false, selector: "bt-micro-tile-chart-line", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2471
2844
  }
2472
2845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartLineComponent, decorators: [{
2473
2846
  type: Component,
@@ -2480,7 +2853,7 @@ class MicroTileChartCircularComponent extends BaseBtTileComponent {
2480
2853
  this.chartData = 70;
2481
2854
  }
2482
2855
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartCircularComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2483
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartCircularComponent, isStandalone: false, selector: "bt-micro-tile-chart-circular", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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$3.MicroChartCircularComponent, selector: "be-micro-chart-circular", inputs: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2856
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartCircularComponent, isStandalone: false, selector: "bt-micro-tile-chart-circular", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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: ["chartInstanceId", "parentMoId"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2484
2857
  }
2485
2858
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartCircularComponent, decorators: [{
2486
2859
  type: Component,
@@ -2513,7 +2886,7 @@ class MicroTileChartAreaComponent extends BaseBtTileComponent {
2513
2886
  };
2514
2887
  }
2515
2888
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2516
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartAreaComponent, isStandalone: false, selector: "bt-micro-tile-chart-area", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [deviceSize]=\"deviceSize\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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$3.MicroChartAreaComponent, selector: "be-micro-chart-area", inputs: ["chartInstanceId", "parentMoId", "size", "chartData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2889
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MicroTileChartAreaComponent, isStandalone: false, selector: "bt-micro-tile-chart-area", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [deviceSize]=\"deviceSize\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\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: ["chartInstanceId", "parentMoId", "size", "chartData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2517
2890
  }
2518
2891
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartAreaComponent, decorators: [{
2519
2892
  type: Component,
@@ -2522,7 +2895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
2522
2895
 
2523
2896
  class MicroTileChartBarComponent extends BaseBtTileComponent {
2524
2897
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2525
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MicroTileChartBarComponent, isStandalone: false, selector: "bt-micro-tile-chart-bar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n [footerTemplate]=\"footerTpl\"\r\n [hideHeader]=\"true\"\r\n>\r\n <div fd-tile-content style=\"height: 100%; max-height: 100%\">\r\n @if(settings.ChartInstance?.Id){\r\n <be-micro-chart-bar\r\n [chartInstanceId]=\"settings.ChartInstance.Id\"\r\n [size]=\"double ? 'l' : 's'\"\r\n ></be-micro-chart-bar>\r\n }@else{\r\n <div>chart defined</div>\r\n }\r\n </div>\r\n</bt-tile>\r\n<ng-template #footerTpl></ng-template>\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$3.MicroChartBarComponent, selector: "be-micro-chart-bar", inputs: ["chartInstanceId", "parentMoId", "size", "extraData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2898
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MicroTileChartBarComponent, isStandalone: false, selector: "bt-micro-tile-chart-bar", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\r\n [footer]=\"data | tileProp: 'Footer':parameters\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (click)=\"onTileClick()\"\r\n [footerTemplate]=\"footerTpl\"\r\n [hideHeader]=\"true\"\r\n>\r\n <div fd-tile-content style=\"height: 100%; max-height: 100%\">\r\n @if(settings.ChartInstance?.Id){\r\n <be-micro-chart-bar\r\n [chartInstanceId]=\"settings.ChartInstance.Id\"\r\n [size]=\"double ? 'l' : 's'\"\r\n ></be-micro-chart-bar>\r\n }@else{\r\n <div>chart defined</div>\r\n }\r\n </div>\r\n</bt-tile>\r\n<ng-template #footerTpl></ng-template>\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: ["chartInstanceId", "parentMoId", "size", "extraData"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["changeGroupClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2526
2899
  }
2527
2900
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MicroTileChartBarComponent, decorators: [{
2528
2901
  type: Component,
@@ -2543,7 +2916,7 @@ class AppFinderService {
2543
2916
  this.pinnedAppInAppTileGroups$ = this._pinnedAppInAppTileGroupsSource.asObservable();
2544
2917
  this.appGroups$ = this._appGroupsSource.asObservable();
2545
2918
  this.selectedAppGroupId$ = this._selectedAppGroupIdSource.asObservable().pipe(distinctUntilChanged());
2546
- this.selectedAppGroup$ = combineLatest([this.appGroups$, this.selectedAppGroupId$]).pipe(map(([moDataList, selectedId]) => moDataList?.find((c) => c.Id === selectedId)));
2919
+ this.selectedAppGroup$ = combineLatest([this.appGroups$, this.selectedAppGroupId$]).pipe(map$1(([moDataList, selectedId]) => moDataList?.find((c) => c.Id === selectedId)));
2547
2920
  }
2548
2921
  get deviceSize() {
2549
2922
  return this._portalService.deviceSize;
@@ -2658,11 +3031,11 @@ class FormAppFinderComponent extends BaseComponent {
2658
3031
  this.selectedAppGroupId$ = this._appFinderService.selectedAppGroupId$;
2659
3032
  this.deviceSize$ = this._appFinderService.deviceSize$;
2660
3033
  this.pinnedAppInAppTileGroups$ = this._appFinderService.pinnedAppInAppTileGroups$;
2661
- this.mobile$ = this.deviceSize$.pipe(map((c) => c === 's'));
3034
+ this.mobile$ = this.deviceSize$.pipe(map$1((c) => c === 's'));
2662
3035
  }
2663
3036
  ngOnInit() {
2664
3037
  super.ngOnInit();
2665
- this.sideContentSize$ = this.deviceSize$.pipe(takeUntil$1(this._onDestroy$), map((deviceSize) => {
3038
+ this.sideContentSize$ = this.deviceSize$.pipe(takeUntil$1(this._onDestroy$), map$1((deviceSize) => {
2666
3039
  switch (deviceSize) {
2667
3040
  case 's':
2668
3041
  return 'sm';
@@ -3072,6 +3445,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
3072
3445
  class BarsaShellbarComponent extends BaseComponent {
3073
3446
  constructor() {
3074
3447
  super();
3448
+ this.dastoratSarasari = [];
3449
+ this.workflowMenuItems = [];
3450
+ this.groupedCommandMenus = [];
3075
3451
  this.isServiceDesk = false;
3076
3452
  this.appTileGroupChange = new EventEmitter();
3077
3453
  this.searchItemClick = new EventEmitter();
@@ -3120,7 +3496,7 @@ class BarsaShellbarComponent extends BaseComponent {
3120
3496
  };
3121
3497
  this.showVersion = false;
3122
3498
  fromEvent(document, 'scroll')
3123
- .pipe(map$1(() => window.scrollY) // یا document.documentElement.scrollTop
3499
+ .pipe(map(() => window.scrollY) // یا document.documentElement.scrollTop
3124
3500
  )
3125
3501
  .subscribe((scrollTop) => {
3126
3502
  const x = this._el.nativeElement;
@@ -3218,11 +3594,11 @@ class BarsaShellbarComponent extends BaseComponent {
3218
3594
  this.cultureChanged.emit(culture);
3219
3595
  }
3220
3596
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaShellbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaShellbarComponent, isStandalone: false, selector: "bt-barsa-shellbar", inputs: { showSidebar: "showSidebar", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationsUnreadCount: "notificationsUnreadCount", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", footerButtons: "footerButtons", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", flatButtons: "flatButtons", isTablet: "isTablet", userInfo: "userInfo", isDesktop: "isDesktop", informativeText: "informativeText", informativeStatus: "informativeStatus", hideProductMenu: "hideProductMenu", enableSearch: "enableSearch", hideNotifications: "hideNotifications", isServiceDesk: "isServiceDesk", isOpenQuickAccess: "isOpenQuickAccess", sideMenuTemplate: "sideMenuTemplate", notificationReport: "notificationReport", profileDynamicCommand: "profileDynamicCommand", profileDynamicCommandText: "profileDynamicCommandText", profileDynamicCommandIcon: "profileDynamicCommandIcon", displayName: "displayName", hideBranding: "hideBranding", showSearchInSystem: "showSearchInSystem", rtl: "rtl", suggestions: "suggestions" }, outputs: { appTileGroupChange: "appTileGroupChange", searchItemClick: "searchItemClick", searchInput: "searchInput", isOpenQuickAccessChanged: "isOpenQuickAccessChanged", openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notifiationActionClick: "notifiationActionClick" }, viewQueries: [{ propertyName: "searchDialogContent", first: true, predicate: ["searchContent"], descendants: true, read: TemplateRef }, { propertyName: "searchDialogSubHeader", first: true, predicate: ["searchSubHeader"], descendants: true, read: TemplateRef }, { propertyName: "shellbar", first: true, predicate: ShellbarComponent$1, descendants: true, static: true }, { propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-shellbar\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [showNavigationButton]=\"sideMenuTemplate || showSidebar ? true : false\"\r\n (navigationButtonClicked)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n [handleBodyClick]=\"true\"\r\n [size]=\"deviceSize === 's' && userLoggedIn ? 'm' : deviceSize\"\r\n>\r\n <fd-shellbar-branding [interactiveBranding]=\"true\" [style.display]=\"hideBranding ? 'none' : null\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced tw-bg-center !tw-bg-auto\"\r\n [attr.aria-label]=\"subtitle | bbbTranslate\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n </fd-shellbar-branding>\r\n\r\n <fd-shellbar-context-area>\r\n <span\r\n [class.hide]=\"!informativeText\"\r\n fdShellbarHidePriority=\"1\"\r\n fd-object-status\r\n [status]=\"informativeStatus || 'informative'\"\r\n [inverted]=\"true\"\r\n [label]=\"informativeText\"\r\n ></span>\r\n <fd-product-switch\r\n fdShellbarHidePriority=\"3\"\r\n [class.hide]=\"!productSwitcher?.length\"\r\n [restoreFocusOnClose]=\"false\"\r\n >\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n <span\r\n [class.hide]=\"!showSearchInSystem\"\r\n fdShellbarHidePriority=\"4\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n (click)=\"onOpenSearchDialog()\"\r\n >\r\n </span>\r\n <fd-product-menu\r\n fdShellbarHidePriority=\"2\"\r\n [control]=\"productMenuControl\"\r\n [closePopoverOnSelect]=\"true\"\r\n [items]=\"productMenuItems1\"\r\n [class.hide]=\"!productMenuItems1?.length\"\r\n >\r\n </fd-product-menu>\r\n </fd-shellbar-context-area>\r\n\r\n @if(inputEnableSearch()){\r\n <fdp-search-field\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n (inputChange)=\"onSearchInputChange($event)\"\r\n [suggestions]=\"suggestions\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field>\r\n }\r\n <fd-shellbar-actions\r\n #shellbarActions\r\n (searchOpen)=\"onSearchOpen($event)\"\r\n [class.flat-buttons]=\"flatButtons?.length && !showSearch()\"\r\n >\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar size=\"xs\" [circle]=\"true\" [attr.ariaLabel]=\"displayName\" [image]=\"userInfo?.Url\"></fd-avatar>\r\n </fd-user-menu-control>\r\n <fd-user-menu-body>\r\n <div fd-user-menu-header>\r\n <fd-avatar\r\n [circle]=\"true\"\r\n [size]=\"deviceSize\"\r\n [label]=\"userInfo?.Url ? '' : displayName\"\r\n zoomGlyph=\"\"\r\n title=\"Edit avatar\"\r\n [image]=\"userInfo?.Url\"\r\n ></fd-avatar>\r\n <div fd-user-menu-header-container>\r\n <div fd-user-menu-user-name>{{ displayName }}</div>\r\n @for(item of userInfo?.Sublines;track item){\r\n <div fd-user-menu-subline>{{ item }}</div>\r\n }\r\n </div>\r\n @if(profileDynamicCommandText){\r\n <button\r\n fd-button\r\n [label]=\"profileDynamicCommandText || 'Edit' | bbbTranslate\"\r\n [glyph]=\"profileDynamicCommandIcon || 'edit'\"\r\n [attr.ariaLabel]=\"'\u0648\u06CC\u0631\u0627\u06CC\u0634 \u067E\u0631\u0648\u0641\u0627\u06CC\u0644'\"\r\n [dynCommand]=\"profileDynamicCommand\"\r\n bodyClick\r\n ></button>\r\n }\r\n </div>\r\n <div fd-user-menu-content-container>\r\n @if(userMenu?.length){\r\n <fd-panel transparent noRadius [fixed]=\"true\" class=\"hide-panel-header\"> </fd-panel>}\r\n\r\n <fd-user-menu-list>\r\n @for(item of userMenu;track item.text){\r\n <li fd-user-menu-list-item [icon]=\"item.icon\" [text]=\"item.text\" (click)=\"item.callback()\"></li>\r\n }\r\n </fd-user-menu-list>\r\n </div>\r\n </fd-user-menu-body>\r\n\r\n <fd-user-menu-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n @for(item of footerButtons;track item.text){\r\n <button\r\n fd-button\r\n [label]=\"item.text\"\r\n fdType=\"transparent\"\r\n [glyph]=\"item.icon\"\r\n [attr.ariaLabel]=\"item.text\"\r\n (click)=\"item.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n </fd-user-menu-footer>\r\n </fd-user-menu>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n [notificationLabel]=\"action.label\"\r\n >\r\n </fd-shellbar-action>\r\n\r\n } @if (!settings?.HideLanguage && multiLanguages && userLoggedIn) {\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @if (deviceSize !== 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if(flatButtons?.length){\r\n <div class=\"tw-flex tw-gap-1\">\r\n @if (!settings?.HideLanguage && multiLanguages){\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @for(btn of flatButtons;track btn){\r\n <button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\r\n fdType=\"emphasized\"\r\n (click)=\"btn.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n }\r\n </fd-shellbar-actions>\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [noArrow]=\"true\"\r\n placement=\"top-end\"\r\n title=\"Notification Popover\"\r\n [appendTo]=\"el\"\r\n [mobile]=\"false\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <!-- <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action> -->\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n @if(isOpenNotificatoin){\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-shellbar>\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile && rtl\"\r\n [class.!tw-right-0]=\"rtl && isOpenQuickAccess\"\r\n [class.-tw-left-96]=\"!isMobile && !rtl\"\r\n [class.!tw-left-0]=\"!rtl && isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title class=\"tw-flex tw-items-center tw-gap-1\">\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" loading=\"lazy\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #searchContent>\r\n <ul fd-list [byline]=\"true\">\r\n @for (item of (suggestions | suggestionsFilter:selectedSuggestionFiltertype) ; track item.data.path) {\r\n <li\r\n fd-list-item\r\n [interactive]=\"true\"\r\n (click)=\"onSearchItemClick(item)\"\r\n class=\"!tw-ps-1\"\r\n [class.!tw-bg-blue-600]=\"item.data.source === 'Report'\"\r\n [class.!tw-bg-green-600]=\"item.data.source === 'Command'\"\r\n [class.!tw-bg-gray-600]=\"item.data.source !== 'Command' && item.data.source !== 'Report'\"\r\n >\r\n <a fd-list-link [attr.href]=\"!item.data.url ? null : item.data.url\" (click)=\"onSearchLink(item, $event)\">\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item.value }}</div>\r\n <div fd-list-byline>{{ item.data.path }}</div>\r\n </div>\r\n <span fd-list-secondary>\r\n @if(item.data.canPin){\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n ariaLabel=\"Favorite\"\r\n title=\"favorite\"\r\n fd-button\r\n glyph=\"unfavorite\"\r\n (click)=\"oFavoriteLink(item, $event)\"\r\n ></button>\r\n }\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n<ng-template #searchSubHeader>\r\n <div class=\"tw-flex tw-flex-col tw-w-full\">\r\n <fd-input-group\r\n glyph=\"search\"\r\n fdkInitialFocus\r\n glyphAriaLabel=\"Submit\"\r\n [button]=\"true\"\r\n (input)=\"onSearchInputChange($event)\"\r\n >\r\n </fd-input-group>\r\n @if(suggestions.length){\r\n <div class=\"tw-flex tw-gap-4 tw-overflow-x-auto suggestion-filters-cat tw-pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0647\u0645\u0647', count: (suggestions | suggestionsCountFilter: 'all'), type: '' }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645', count: (suggestions | suggestionsCountFilter: 'subsystem'), type: '' }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n count: (suggestions | suggestionsCountFilter: 'navgroup'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0632\u0627\u0631\u0634\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'report'),\r\n type: 'information'\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u062F\u0633\u062A\u0648\u0631\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'command'),\r\n type: 'success'\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #catTag let-name=\"name\" let-count=\"count\" let-type=\"type\">\r\n @if(count && count!==' '){\r\n <div fd-generic-tag [name]=\"name\" [value]=\"count\" (click)=\"selectedSuggestionFiltertype = name\" [type]=\"type\"></div>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host fd-user-menu{background-color:transparent}:host fd-shellbar-actions.flat-buttons{flex-direction:row-reverse}:host.hide-user-menu fd-shellbar-actions ::ng-deep .fd-user-menu{display:none}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep .fd-shellbar--s .fd-shellbar__title{display:block;max-width:10rem;text-wrap:auto;font-size:.8rem}: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 ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .fd-shellbar{height:var(--shellbar-height)}:host ::ng-deep fd-shellbar.s .fd-shellbar__product{max-width:120px}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area{justify-content:center!important}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area .fd-shellbar__action--shrink button{color:var(--fdButtonIconColor, var(--sapShell_InteractiveTextColor))}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$4.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "interactive", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i11.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i6$3.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "component", type: i13.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i13.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i14.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i14.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i14.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i15.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex", "showNavigationButton", "showBackButton", "navigationButtonLabel", "backButtonLabel"], outputs: ["navigationButtonClicked", "backButtonClicked"] }, { kind: "component", type: i15.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i15.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "assistiveTools", "assistiveToolsCallback"], outputs: ["searchOpen"] }, { kind: "component", type: i15.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i15.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "component", type: i15.ShellbarTitleComponent, selector: "fd-shellbar-title" }, { kind: "component", type: i15.ShellbarBrandingComponent, selector: "fd-shellbar-branding", inputs: ["interactiveBranding"] }, { kind: "component", type: i15.ShellbarContextAreaComponent, selector: "fd-shellbar-context-area", outputs: ["contentItemVisibilityChange"] }, { kind: "directive", type: i15.ShellbarHidePriorityDirective, selector: "[fdShellbarHidePriority]", inputs: ["fdShellbarHidePriority"] }, { kind: "component", type: i16.GenericTagComponent, selector: "[fd-generic-tag]", inputs: ["class", "type", "name", "value", "ariaRoleDescription"] }, { kind: "component", type: i8$1.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i18.UserMenuComponent, selector: "fd-user-menu", inputs: ["mobile"], outputs: ["isOpenChange"] }, { kind: "component", type: i18.UserMenuControlComponent, selector: "fd-user-menu-control", outputs: ["clicked"] }, { kind: "component", type: i18.UserMenuBodyComponent, selector: "fd-user-menu-body" }, { kind: "component", type: i18.UserMenuListComponent, selector: "fd-user-menu-list" }, { kind: "component", type: i18.UserMenuFooterComponent, selector: "fd-user-menu-footer" }, { kind: "directive", type: i18.UserMenuHeaderDirective, selector: "[fd-user-menu-header]" }, { kind: "directive", type: i18.UserMenuSublineDirective, selector: "[fd-user-menu-subline]", inputs: ["truncate"] }, { kind: "directive", type: i18.UserMenuUserNameDirective, selector: "[fd-user-menu-user-name]", inputs: ["truncate"] }, { kind: "directive", type: i18.UserMenuHeaderContainerDirective, selector: "[fd-user-menu-header-container]" }, { kind: "component", type: i18.UserMenuListItemComponent, selector: "[fd-user-menu-list-item]", inputs: ["uniqueId", "icon", "text", "textId", "hasSubmenu", "submenu", "selected"], outputs: ["keyDown", "isOpenChange", "showSubmenu", "updateTitle"] }, { kind: "directive", type: i5.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: i5.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i5.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i5.RouteFormChangeDirective, selector: "[routeFormChange]", inputs: ["handleBodyClick"], outputs: ["stateChanged"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount", "notificationReport"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i1$2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: SuggestionsFilterPipe, name: "suggestionsFilter" }, { kind: "pipe", type: SuggestionsCountFilterPipe, name: "suggestionsCountFilter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3597
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaShellbarComponent, isStandalone: false, selector: "bt-barsa-shellbar", inputs: { showSidebar: "showSidebar", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", dastoratSarasari: "dastoratSarasari", workflowMenuItems: "workflowMenuItems", groupedCommandMenus: "groupedCommandMenus", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationsUnreadCount: "notificationsUnreadCount", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", footerButtons: "footerButtons", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", flatButtons: "flatButtons", isTablet: "isTablet", userInfo: "userInfo", isDesktop: "isDesktop", informativeText: "informativeText", informativeStatus: "informativeStatus", hideProductMenu: "hideProductMenu", enableSearch: "enableSearch", hideNotifications: "hideNotifications", isServiceDesk: "isServiceDesk", isOpenQuickAccess: "isOpenQuickAccess", sideMenuTemplate: "sideMenuTemplate", notificationReport: "notificationReport", profileDynamicCommand: "profileDynamicCommand", profileDynamicCommandText: "profileDynamicCommandText", profileDynamicCommandIcon: "profileDynamicCommandIcon", displayName: "displayName", hideBranding: "hideBranding", showSearchInSystem: "showSearchInSystem", rtl: "rtl", suggestions: "suggestions" }, outputs: { appTileGroupChange: "appTileGroupChange", searchItemClick: "searchItemClick", searchInput: "searchInput", isOpenQuickAccessChanged: "isOpenQuickAccessChanged", openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notifiationActionClick: "notifiationActionClick" }, viewQueries: [{ propertyName: "searchDialogContent", first: true, predicate: ["searchContent"], descendants: true, read: TemplateRef }, { propertyName: "searchDialogSubHeader", first: true, predicate: ["searchSubHeader"], descendants: true, read: TemplateRef }, { propertyName: "shellbar", first: true, predicate: ShellbarComponent$1, descendants: true, static: true }, { propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-shellbar\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [showNavigationButton]=\"sideMenuTemplate || showSidebar ? true : false\"\r\n (navigationButtonClicked)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n [handleBodyClick]=\"true\"\r\n [size]=\"deviceSize === 's' && userLoggedIn ? 'm' : deviceSize\"\r\n>\r\n <fd-shellbar-branding [interactiveBranding]=\"true\" [style.display]=\"hideBranding ? 'none' : null\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced tw-bg-center !tw-bg-auto\"\r\n [attr.aria-label]=\"subtitle | bbbTranslate\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n </fd-shellbar-branding>\r\n\r\n <fd-shellbar-context-area> \r\n <span\r\n [class.hide]=\"!informativeText\"\r\n fdShellbarHidePriority=\"1\"\r\n fd-object-status\r\n [status]=\"informativeStatus || 'informative'\"\r\n [inverted]=\"true\"\r\n [label]=\"informativeText\"\r\n ></span>\r\n <fd-product-switch\r\n fdShellbarHidePriority=\"3\"\r\n [class.hide]=\"!productSwitcher?.length\"\r\n [restoreFocusOnClose]=\"false\"\r\n >\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n <span\r\n [class.hide]=\"!showSearchInSystem\"\r\n fdShellbarHidePriority=\"4\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n (click)=\"onOpenSearchDialog()\"\r\n >\r\n </span>\r\n <fd-product-menu\r\n fdShellbarHidePriority=\"2\"\r\n [control]=\"productMenuControl\"\r\n [closePopoverOnSelect]=\"true\"\r\n [items]=\"productMenuItems1\"\r\n [class.hide]=\"!productMenuItems1?.length\" \r\n >\r\n </fd-product-menu>\r\n <fd-shellbar-separator fdshellbarhidepriority=\"5\" style=\"flex-shrink: 0;\"></fd-shellbar-separator>\r\n @for(dastor of dastoratSarasari; track dastor.label){\r\n @if(dastor.children?.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n [fdShellbarHidePriority]=\"dastor.priority\"\r\n fd-button\r\n fdType=\"transparent\"\r\n [glyph]=\"dastor.glyph\"\r\n [label]=\"dastor.label | bbbTranslate\"\r\n [fdMenuTrigger]=\"globalCommandMenu\"\r\n \r\n > \r\n </button>\r\n <fd-menu #globalCommandMenu>\r\n @for(item of dastor.children; track item.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n globalSubmenuTemplate;\r\n context: { item: item, parentSubmenu: undefined, rootMenu: globalCommandMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template #globalSubmenuTemplate let-item=\"item\" let-parentSubmenu=\"parentSubmenu\" let-rootMenu=\"rootMenu\">\r\n <li fd-menu-item [submenu]=\"item.children?.length ? submenu : undefined\" [parentSubmenu]=\"parentSubmenu\">\r\n @if(item.children?.length){\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n <fd-menu-addon [submenuIndicator]=\"true\"></fd-menu-addon>\r\n </div>\r\n } @else {\r\n <a\r\n fd-menu-interactive\r\n href=\"\"\r\n [class.shellbar-command-action--image-glyph]=\"item.useImageGlyph\"\r\n (click)=\"$event.preventDefault(); rootMenu.close(); item.callback?.()\"\r\n >\r\n @if(item.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"item.glyph\"\r\n [alt]=\"item.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n }\r\n <span fd-menu-title class=\"shellbar-command-action__label\">{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){\r\n @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n globalSubmenuTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n }\r\n </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } @else {\r\n <span \r\n [fdShellbarHidePriority]=\"dastor.priority\"\r\n fd-button\r\n [glyph]=\"dastor.glyph\"\r\n class=\"fd-shellbar__button\"\r\n [label]=\"dastor.useImageGlyph ? undefined : (dastor.label | bbbTranslate)\"\r\n [class.shellbar-command-action--image-glyph]=\"dastor.useImageGlyph\"\r\n (click)=\"dastor.callback?.()\"\r\n >\r\n @if(dastor.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"dastor.glyph\"\r\n [alt]=\"dastor.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n <span class=\"shellbar-command-action__label\">{{ dastor.label | bbbTranslate }}</span>\r\n }\r\n </span>\r\n }\r\n }\r\n\r\n\r\n @if(workflowMenuItems.length){\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n [label]=\"'Workflow' | bbbTranslate\"\r\n [fdMenu]=\"true\"\r\n [fdMenuTrigger]=\"workflowMenu\"\r\n ></button>\r\n <fd-menu #workflowMenu>\r\n @for(item of workflowMenuItems; track item.key) {\r\n <li fd-menu-item>\r\n <a fd-menu-interactive href=\"\" (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\">\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n }\r\n\r\n @for(group of groupedCommandMenus; track group.Caption){\r\n <button \r\n fd-button \r\n [label]=\"group.Caption | bbbTranslate\"\r\n [fdMenu]=\"true\"\r\n [fdMenuTrigger]=\"groupMenu\"\r\n ></button>\r\n <fd-menu #groupMenu>\r\n @for(item of group.Commands; track item.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n groupSubmenuTemplate;\r\n context: { item: item, parentSubmenu: undefined, rootMenu: groupMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template #groupSubmenuTemplate let-item=\"item\" let-parentSubmenu=\"parentSubmenu\" let-rootMenu=\"rootMenu\">\r\n <li fd-menu-item [submenu]=\"item.children?.length ? submenu : undefined\" [parentSubmenu]=\"parentSubmenu\">\r\n @if(item.children?.length){\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n <fd-menu-addon [submenuIndicator]=\"true\"></fd-menu-addon>\r\n </div>\r\n } @else {\r\n <a\r\n fd-menu-interactive\r\n href=\"\"\r\n [class.shellbar-command-action--image-glyph]=\"item.useImageGlyph\"\r\n (click)=\"$event.preventDefault(); rootMenu.close(); item.callback?.()\"\r\n >\r\n @if(item.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"item.glyph\"\r\n [alt]=\"item.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n }\r\n <span fd-menu-title class=\"shellbar-command-action__label\">{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){\r\n @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n groupSubmenuTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n }\r\n </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n }\r\n </fd-shellbar-context-area>\r\n\r\n @if(inputEnableSearch()){\r\n <fdp-search-field\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n (inputChange)=\"onSearchInputChange($event)\"\r\n [suggestions]=\"suggestions\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field>\r\n }\r\n <fd-shellbar-actions\r\n #shellbarActions\r\n (searchOpen)=\"onSearchOpen($event)\"\r\n [class.flat-buttons]=\"flatButtons?.length && !showSearch()\"\r\n >\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar size=\"xs\" [circle]=\"true\" [attr.ariaLabel]=\"displayName\" [image]=\"userInfo?.Url\"></fd-avatar>\r\n </fd-user-menu-control>\r\n <fd-user-menu-body>\r\n <div fd-user-menu-header>\r\n <fd-avatar\r\n [circle]=\"true\"\r\n [size]=\"deviceSize\"\r\n [label]=\"userInfo?.Url ? '' : displayName\"\r\n zoomGlyph=\"\"\r\n title=\"Edit avatar\"\r\n [image]=\"userInfo?.Url\"\r\n ></fd-avatar>\r\n <div fd-user-menu-header-container>\r\n <div fd-user-menu-user-name>{{ displayName }}</div>\r\n @for(item of userInfo?.Sublines;track item){\r\n <div fd-user-menu-subline>{{ item }}</div>\r\n }\r\n </div>\r\n @if(profileDynamicCommandText){\r\n <button\r\n fd-button\r\n [label]=\"profileDynamicCommandText || 'Edit' | bbbTranslate\"\r\n [glyph]=\"profileDynamicCommandIcon || 'edit'\"\r\n [attr.ariaLabel]=\"'\u0648\u06CC\u0631\u0627\u06CC\u0634 \u067E\u0631\u0648\u0641\u0627\u06CC\u0644'\"\r\n [dynCommand]=\"profileDynamicCommand\"\r\n bodyClick\r\n ></button>\r\n }\r\n </div>\r\n <div fd-user-menu-content-container>\r\n @if(userMenu?.length){\r\n <fd-panel transparent noRadius [fixed]=\"true\" class=\"hide-panel-header\"> </fd-panel>}\r\n\r\n <fd-user-menu-list>\r\n @for(item of userMenu;track item.text){\r\n <li fd-user-menu-list-item [icon]=\"item.icon\" [text]=\"item.text\" (click)=\"item.callback()\"></li>\r\n }\r\n </fd-user-menu-list>\r\n </div>\r\n </fd-user-menu-body>\r\n\r\n <fd-user-menu-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n @for(item of footerButtons;track item.text){\r\n <button\r\n fd-button\r\n [label]=\"item.text\"\r\n fdType=\"transparent\"\r\n [glyph]=\"item.icon\"\r\n [attr.ariaLabel]=\"item.text\"\r\n (click)=\"item.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n </fd-user-menu-footer>\r\n </fd-user-menu>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n [notificationLabel]=\"action.label\"\r\n >\r\n </fd-shellbar-action>\r\n\r\n } @if (!settings?.HideLanguage && multiLanguages && userLoggedIn) {\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @if (deviceSize !== 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if(flatButtons?.length){\r\n <div class=\"tw-flex tw-gap-1\">\r\n @if (!settings?.HideLanguage && multiLanguages){\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @for(btn of flatButtons;track btn){\r\n <button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\r\n fdType=\"emphasized\"\r\n (click)=\"btn.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n }\r\n </fd-shellbar-actions>\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [noArrow]=\"true\"\r\n placement=\"top-end\"\r\n title=\"Notification Popover\"\r\n [appendTo]=\"el\"\r\n [mobile]=\"false\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <!-- <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action> -->\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n @if(isOpenNotificatoin){\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-shellbar>\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile && rtl\"\r\n [class.!tw-right-0]=\"rtl && isOpenQuickAccess\"\r\n [class.-tw-left-96]=\"!isMobile && !rtl\"\r\n [class.!tw-left-0]=\"!rtl && isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title class=\"tw-flex tw-items-center tw-gap-1\">\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" loading=\"lazy\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #searchContent>\r\n <ul fd-list [byline]=\"true\">\r\n @for (item of (suggestions | suggestionsFilter:selectedSuggestionFiltertype) ; track item.data.path) {\r\n <li\r\n fd-list-item\r\n [interactive]=\"true\"\r\n (click)=\"onSearchItemClick(item)\"\r\n class=\"!tw-ps-1\"\r\n [class.!tw-bg-blue-600]=\"item.data.source === 'Report'\"\r\n [class.!tw-bg-green-600]=\"item.data.source === 'Command'\"\r\n [class.!tw-bg-gray-600]=\"item.data.source !== 'Command' && item.data.source !== 'Report'\"\r\n >\r\n <a fd-list-link [attr.href]=\"!item.data.url ? null : item.data.url\" (click)=\"onSearchLink(item, $event)\">\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item.value }}</div>\r\n <div fd-list-byline>{{ item.data.path }}</div>\r\n </div>\r\n <span fd-list-secondary>\r\n @if(item.data.canPin){\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"'AddToFavorite' | bbbTranslate\"\r\n [title]=\"'Add To Favorite' | bbbTranslate\"\r\n fd-button\r\n glyph=\"shortcut\"\r\n (click)=\"oFavoriteLink(item, $event)\"\r\n ></button>\r\n }\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n<ng-template #searchSubHeader>\r\n <div class=\"tw-flex tw-flex-col tw-w-full\">\r\n <fd-input-group\r\n glyph=\"search\"\r\n fdkInitialFocus\r\n glyphAriaLabel=\"Submit\"\r\n [button]=\"true\"\r\n (input)=\"onSearchInputChange($event)\"\r\n >\r\n </fd-input-group>\r\n @if(suggestions.length){\r\n <div class=\"tw-flex tw-gap-4 tw-overflow-x-auto suggestion-filters-cat tw-pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0647\u0645\u0647', count: (suggestions | suggestionsCountFilter: 'all'), type: '' }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645', count: (suggestions | suggestionsCountFilter: 'subsystem'), type: '' }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n count: (suggestions | suggestionsCountFilter: 'navgroup'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0632\u0627\u0631\u0634\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'report'),\r\n type: 'information'\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u062F\u0633\u062A\u0648\u0631\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'command'),\r\n type: 'success'\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #catTag let-name=\"name\" let-count=\"count\" let-type=\"type\">\r\n @if(count && count!==' '){\r\n <div fd-generic-tag [name]=\"name\" [value]=\"count\" (click)=\"selectedSuggestionFiltertype = name\" [type]=\"type\"></div>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host fd-user-menu{background-color:transparent}:host fd-shellbar-actions.flat-buttons{flex-direction:row-reverse}:host.hide-user-menu fd-shellbar-actions ::ng-deep .fd-user-menu{display:none}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep .fd-shellbar--s .fd-shellbar__title{display:block;max-width:10rem;text-wrap:auto;font-size:.8rem}: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 ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem;margin:0!important}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{display:inline-flex;align-items:center;flex-direction:row-reverse;gap:.375rem}:host ::ng-deep .shellbar-command-action--image-glyph ::ng-deep fd-icon{display:none}.shellbar-command-action__image{width:1rem;height:1rem;object-fit:contain;flex-shrink:0}.shellbar-command-action__label{line-height:1}:host ::ng-deep .fd-shellbar{height:var(--shellbar-height)}:host ::ng-deep fd-shellbar.s .fd-shellbar__product{max-width:120px}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area{justify-content:center!important}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area .fd-shellbar__action--shrink button{color:var(--fdButtonIconColor, var(--sapShell_InteractiveTextColor))}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "interactive", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$1.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i4.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i4.SubmenuComponent, selector: "fd-submenu", inputs: ["ariaLabel", "ariaLabelledby"], exportAs: ["fdSubmenu"] }, { kind: "component", type: i4.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i4.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i4.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i5$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$1.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i11.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i6$3.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "component", type: i13.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i13.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i14.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i14.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i14.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i15.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex", "showNavigationButton", "showBackButton", "navigationButtonLabel", "backButtonLabel"], outputs: ["navigationButtonClicked", "backButtonClicked"] }, { kind: "component", type: i15.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i15.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "assistiveTools", "assistiveToolsCallback"], outputs: ["searchOpen"] }, { kind: "component", type: i15.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i15.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "component", type: i15.ShellbarTitleComponent, selector: "fd-shellbar-title" }, { kind: "component", type: i15.ShellbarBrandingComponent, selector: "fd-shellbar-branding", inputs: ["interactiveBranding"] }, { kind: "component", type: i15.ShellbarContextAreaComponent, selector: "fd-shellbar-context-area", outputs: ["contentItemVisibilityChange"] }, { kind: "component", type: i15.ShellbarSeparatorComponent, selector: "fd-shellbar-separator" }, { kind: "directive", type: i15.ShellbarHidePriorityDirective, selector: "[fdShellbarHidePriority]", inputs: ["fdShellbarHidePriority"] }, { kind: "component", type: i16.GenericTagComponent, selector: "[fd-generic-tag]", inputs: ["class", "type", "name", "value", "ariaRoleDescription"] }, { kind: "component", type: i8$1.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i18.UserMenuComponent, selector: "fd-user-menu", inputs: ["mobile"], outputs: ["isOpenChange"] }, { kind: "component", type: i18.UserMenuControlComponent, selector: "fd-user-menu-control", outputs: ["clicked"] }, { kind: "component", type: i18.UserMenuBodyComponent, selector: "fd-user-menu-body" }, { kind: "component", type: i18.UserMenuListComponent, selector: "fd-user-menu-list" }, { kind: "component", type: i18.UserMenuFooterComponent, selector: "fd-user-menu-footer" }, { kind: "directive", type: i18.UserMenuHeaderDirective, selector: "[fd-user-menu-header]" }, { kind: "directive", type: i18.UserMenuSublineDirective, selector: "[fd-user-menu-subline]", inputs: ["truncate"] }, { kind: "directive", type: i18.UserMenuUserNameDirective, selector: "[fd-user-menu-user-name]", inputs: ["truncate"] }, { kind: "directive", type: i18.UserMenuHeaderContainerDirective, selector: "[fd-user-menu-header-container]" }, { kind: "component", type: i18.UserMenuListItemComponent, selector: "[fd-user-menu-list-item]", inputs: ["uniqueId", "icon", "text", "textId", "hasSubmenu", "submenu", "selected"], outputs: ["keyDown", "isOpenChange", "showSubmenu", "updateTitle"] }, { kind: "directive", type: i5.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: i5.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i5.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i5.RouteFormChangeDirective, selector: "[routeFormChange]", inputs: ["handleBodyClick"], outputs: ["stateChanged"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount", "notificationReport"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i1$2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: SuggestionsFilterPipe, name: "suggestionsFilter" }, { kind: "pipe", type: SuggestionsCountFilterPipe, name: "suggestionsCountFilter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3222
3598
  }
3223
3599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaShellbarComponent, decorators: [{
3224
3600
  type: Component,
3225
- args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-shellbar\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [showNavigationButton]=\"sideMenuTemplate || showSidebar ? true : false\"\r\n (navigationButtonClicked)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n [handleBodyClick]=\"true\"\r\n [size]=\"deviceSize === 's' && userLoggedIn ? 'm' : deviceSize\"\r\n>\r\n <fd-shellbar-branding [interactiveBranding]=\"true\" [style.display]=\"hideBranding ? 'none' : null\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced tw-bg-center !tw-bg-auto\"\r\n [attr.aria-label]=\"subtitle | bbbTranslate\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n </fd-shellbar-branding>\r\n\r\n <fd-shellbar-context-area>\r\n <span\r\n [class.hide]=\"!informativeText\"\r\n fdShellbarHidePriority=\"1\"\r\n fd-object-status\r\n [status]=\"informativeStatus || 'informative'\"\r\n [inverted]=\"true\"\r\n [label]=\"informativeText\"\r\n ></span>\r\n <fd-product-switch\r\n fdShellbarHidePriority=\"3\"\r\n [class.hide]=\"!productSwitcher?.length\"\r\n [restoreFocusOnClose]=\"false\"\r\n >\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n <span\r\n [class.hide]=\"!showSearchInSystem\"\r\n fdShellbarHidePriority=\"4\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n (click)=\"onOpenSearchDialog()\"\r\n >\r\n </span>\r\n <fd-product-menu\r\n fdShellbarHidePriority=\"2\"\r\n [control]=\"productMenuControl\"\r\n [closePopoverOnSelect]=\"true\"\r\n [items]=\"productMenuItems1\"\r\n [class.hide]=\"!productMenuItems1?.length\"\r\n >\r\n </fd-product-menu>\r\n </fd-shellbar-context-area>\r\n\r\n @if(inputEnableSearch()){\r\n <fdp-search-field\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n (inputChange)=\"onSearchInputChange($event)\"\r\n [suggestions]=\"suggestions\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field>\r\n }\r\n <fd-shellbar-actions\r\n #shellbarActions\r\n (searchOpen)=\"onSearchOpen($event)\"\r\n [class.flat-buttons]=\"flatButtons?.length && !showSearch()\"\r\n >\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar size=\"xs\" [circle]=\"true\" [attr.ariaLabel]=\"displayName\" [image]=\"userInfo?.Url\"></fd-avatar>\r\n </fd-user-menu-control>\r\n <fd-user-menu-body>\r\n <div fd-user-menu-header>\r\n <fd-avatar\r\n [circle]=\"true\"\r\n [size]=\"deviceSize\"\r\n [label]=\"userInfo?.Url ? '' : displayName\"\r\n zoomGlyph=\"\"\r\n title=\"Edit avatar\"\r\n [image]=\"userInfo?.Url\"\r\n ></fd-avatar>\r\n <div fd-user-menu-header-container>\r\n <div fd-user-menu-user-name>{{ displayName }}</div>\r\n @for(item of userInfo?.Sublines;track item){\r\n <div fd-user-menu-subline>{{ item }}</div>\r\n }\r\n </div>\r\n @if(profileDynamicCommandText){\r\n <button\r\n fd-button\r\n [label]=\"profileDynamicCommandText || 'Edit' | bbbTranslate\"\r\n [glyph]=\"profileDynamicCommandIcon || 'edit'\"\r\n [attr.ariaLabel]=\"'\u0648\u06CC\u0631\u0627\u06CC\u0634 \u067E\u0631\u0648\u0641\u0627\u06CC\u0644'\"\r\n [dynCommand]=\"profileDynamicCommand\"\r\n bodyClick\r\n ></button>\r\n }\r\n </div>\r\n <div fd-user-menu-content-container>\r\n @if(userMenu?.length){\r\n <fd-panel transparent noRadius [fixed]=\"true\" class=\"hide-panel-header\"> </fd-panel>}\r\n\r\n <fd-user-menu-list>\r\n @for(item of userMenu;track item.text){\r\n <li fd-user-menu-list-item [icon]=\"item.icon\" [text]=\"item.text\" (click)=\"item.callback()\"></li>\r\n }\r\n </fd-user-menu-list>\r\n </div>\r\n </fd-user-menu-body>\r\n\r\n <fd-user-menu-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n @for(item of footerButtons;track item.text){\r\n <button\r\n fd-button\r\n [label]=\"item.text\"\r\n fdType=\"transparent\"\r\n [glyph]=\"item.icon\"\r\n [attr.ariaLabel]=\"item.text\"\r\n (click)=\"item.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n </fd-user-menu-footer>\r\n </fd-user-menu>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n [notificationLabel]=\"action.label\"\r\n >\r\n </fd-shellbar-action>\r\n\r\n } @if (!settings?.HideLanguage && multiLanguages && userLoggedIn) {\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @if (deviceSize !== 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if(flatButtons?.length){\r\n <div class=\"tw-flex tw-gap-1\">\r\n @if (!settings?.HideLanguage && multiLanguages){\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @for(btn of flatButtons;track btn){\r\n <button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\r\n fdType=\"emphasized\"\r\n (click)=\"btn.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n }\r\n </fd-shellbar-actions>\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [noArrow]=\"true\"\r\n placement=\"top-end\"\r\n title=\"Notification Popover\"\r\n [appendTo]=\"el\"\r\n [mobile]=\"false\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <!-- <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action> -->\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n @if(isOpenNotificatoin){\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-shellbar>\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile && rtl\"\r\n [class.!tw-right-0]=\"rtl && isOpenQuickAccess\"\r\n [class.-tw-left-96]=\"!isMobile && !rtl\"\r\n [class.!tw-left-0]=\"!rtl && isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title class=\"tw-flex tw-items-center tw-gap-1\">\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" loading=\"lazy\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #searchContent>\r\n <ul fd-list [byline]=\"true\">\r\n @for (item of (suggestions | suggestionsFilter:selectedSuggestionFiltertype) ; track item.data.path) {\r\n <li\r\n fd-list-item\r\n [interactive]=\"true\"\r\n (click)=\"onSearchItemClick(item)\"\r\n class=\"!tw-ps-1\"\r\n [class.!tw-bg-blue-600]=\"item.data.source === 'Report'\"\r\n [class.!tw-bg-green-600]=\"item.data.source === 'Command'\"\r\n [class.!tw-bg-gray-600]=\"item.data.source !== 'Command' && item.data.source !== 'Report'\"\r\n >\r\n <a fd-list-link [attr.href]=\"!item.data.url ? null : item.data.url\" (click)=\"onSearchLink(item, $event)\">\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item.value }}</div>\r\n <div fd-list-byline>{{ item.data.path }}</div>\r\n </div>\r\n <span fd-list-secondary>\r\n @if(item.data.canPin){\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n ariaLabel=\"Favorite\"\r\n title=\"favorite\"\r\n fd-button\r\n glyph=\"unfavorite\"\r\n (click)=\"oFavoriteLink(item, $event)\"\r\n ></button>\r\n }\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n<ng-template #searchSubHeader>\r\n <div class=\"tw-flex tw-flex-col tw-w-full\">\r\n <fd-input-group\r\n glyph=\"search\"\r\n fdkInitialFocus\r\n glyphAriaLabel=\"Submit\"\r\n [button]=\"true\"\r\n (input)=\"onSearchInputChange($event)\"\r\n >\r\n </fd-input-group>\r\n @if(suggestions.length){\r\n <div class=\"tw-flex tw-gap-4 tw-overflow-x-auto suggestion-filters-cat tw-pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0647\u0645\u0647', count: (suggestions | suggestionsCountFilter: 'all'), type: '' }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645', count: (suggestions | suggestionsCountFilter: 'subsystem'), type: '' }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n count: (suggestions | suggestionsCountFilter: 'navgroup'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0632\u0627\u0631\u0634\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'report'),\r\n type: 'information'\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u062F\u0633\u062A\u0648\u0631\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'command'),\r\n type: 'success'\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #catTag let-name=\"name\" let-count=\"count\" let-type=\"type\">\r\n @if(count && count!==' '){\r\n <div fd-generic-tag [name]=\"name\" [value]=\"count\" (click)=\"selectedSuggestionFiltertype = name\" [type]=\"type\"></div>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host fd-user-menu{background-color:transparent}:host fd-shellbar-actions.flat-buttons{flex-direction:row-reverse}:host.hide-user-menu fd-shellbar-actions ::ng-deep .fd-user-menu{display:none}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep .fd-shellbar--s .fd-shellbar__title{display:block;max-width:10rem;text-wrap:auto;font-size:.8rem}: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 ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .fd-shellbar{height:var(--shellbar-height)}:host ::ng-deep fd-shellbar.s .fd-shellbar__product{max-width:120px}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area{justify-content:center!important}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area .fd-shellbar__action--shrink button{color:var(--fdButtonIconColor, var(--sapShell_InteractiveTextColor))}\n"] }]
3601
+ args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-shellbar\r\n [ngClass]=\"deviceSize\"\r\n routeFormChange\r\n (stateChanged)=\"onRouteFormStateChange()\"\r\n [showNavigationButton]=\"sideMenuTemplate || showSidebar ? true : false\"\r\n (navigationButtonClicked)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\r\n [handleBodyClick]=\"true\"\r\n [size]=\"deviceSize === 's' && userLoggedIn ? 'm' : deviceSize\"\r\n>\r\n <fd-shellbar-branding [interactiveBranding]=\"true\" [style.display]=\"hideBranding ? 'none' : null\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced tw-bg-center !tw-bg-auto\"\r\n [attr.aria-label]=\"subtitle | bbbTranslate\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n </fd-shellbar-branding>\r\n\r\n <fd-shellbar-context-area> \r\n <span\r\n [class.hide]=\"!informativeText\"\r\n fdShellbarHidePriority=\"1\"\r\n fd-object-status\r\n [status]=\"informativeStatus || 'informative'\"\r\n [inverted]=\"true\"\r\n [label]=\"informativeText\"\r\n ></span>\r\n <fd-product-switch\r\n fdShellbarHidePriority=\"3\"\r\n [class.hide]=\"!productSwitcher?.length\"\r\n [restoreFocusOnClose]=\"false\"\r\n >\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n <span\r\n [class.hide]=\"!showSearchInSystem\"\r\n fdShellbarHidePriority=\"4\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n (click)=\"onOpenSearchDialog()\"\r\n >\r\n </span>\r\n <fd-product-menu\r\n fdShellbarHidePriority=\"2\"\r\n [control]=\"productMenuControl\"\r\n [closePopoverOnSelect]=\"true\"\r\n [items]=\"productMenuItems1\"\r\n [class.hide]=\"!productMenuItems1?.length\" \r\n >\r\n </fd-product-menu>\r\n <fd-shellbar-separator fdshellbarhidepriority=\"5\" style=\"flex-shrink: 0;\"></fd-shellbar-separator>\r\n @for(dastor of dastoratSarasari; track dastor.label){\r\n @if(dastor.children?.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n [fdShellbarHidePriority]=\"dastor.priority\"\r\n fd-button\r\n fdType=\"transparent\"\r\n [glyph]=\"dastor.glyph\"\r\n [label]=\"dastor.label | bbbTranslate\"\r\n [fdMenuTrigger]=\"globalCommandMenu\"\r\n \r\n > \r\n </button>\r\n <fd-menu #globalCommandMenu>\r\n @for(item of dastor.children; track item.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n globalSubmenuTemplate;\r\n context: { item: item, parentSubmenu: undefined, rootMenu: globalCommandMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template #globalSubmenuTemplate let-item=\"item\" let-parentSubmenu=\"parentSubmenu\" let-rootMenu=\"rootMenu\">\r\n <li fd-menu-item [submenu]=\"item.children?.length ? submenu : undefined\" [parentSubmenu]=\"parentSubmenu\">\r\n @if(item.children?.length){\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n <fd-menu-addon [submenuIndicator]=\"true\"></fd-menu-addon>\r\n </div>\r\n } @else {\r\n <a\r\n fd-menu-interactive\r\n href=\"\"\r\n [class.shellbar-command-action--image-glyph]=\"item.useImageGlyph\"\r\n (click)=\"$event.preventDefault(); rootMenu.close(); item.callback?.()\"\r\n >\r\n @if(item.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"item.glyph\"\r\n [alt]=\"item.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n }\r\n <span fd-menu-title class=\"shellbar-command-action__label\">{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){\r\n @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n globalSubmenuTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n }\r\n </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } @else {\r\n <span \r\n [fdShellbarHidePriority]=\"dastor.priority\"\r\n fd-button\r\n [glyph]=\"dastor.glyph\"\r\n class=\"fd-shellbar__button\"\r\n [label]=\"dastor.useImageGlyph ? undefined : (dastor.label | bbbTranslate)\"\r\n [class.shellbar-command-action--image-glyph]=\"dastor.useImageGlyph\"\r\n (click)=\"dastor.callback?.()\"\r\n >\r\n @if(dastor.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"dastor.glyph\"\r\n [alt]=\"dastor.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n <span class=\"shellbar-command-action__label\">{{ dastor.label | bbbTranslate }}</span>\r\n }\r\n </span>\r\n }\r\n }\r\n\r\n\r\n @if(workflowMenuItems.length){\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n [label]=\"'Workflow' | bbbTranslate\"\r\n [fdMenu]=\"true\"\r\n [fdMenuTrigger]=\"workflowMenu\"\r\n ></button>\r\n <fd-menu #workflowMenu>\r\n @for(item of workflowMenuItems; track item.key) {\r\n <li fd-menu-item>\r\n <a fd-menu-interactive href=\"\" (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\">\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n }\r\n\r\n @for(group of groupedCommandMenus; track group.Caption){\r\n <button \r\n fd-button \r\n [label]=\"group.Caption | bbbTranslate\"\r\n [fdMenu]=\"true\"\r\n [fdMenuTrigger]=\"groupMenu\"\r\n ></button>\r\n <fd-menu #groupMenu>\r\n @for(item of group.Commands; track item.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n groupSubmenuTemplate;\r\n context: { item: item, parentSubmenu: undefined, rootMenu: groupMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template #groupSubmenuTemplate let-item=\"item\" let-parentSubmenu=\"parentSubmenu\" let-rootMenu=\"rootMenu\">\r\n <li fd-menu-item [submenu]=\"item.children?.length ? submenu : undefined\" [parentSubmenu]=\"parentSubmenu\">\r\n @if(item.children?.length){\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n <fd-menu-addon [submenuIndicator]=\"true\"></fd-menu-addon>\r\n </div>\r\n } @else {\r\n <a\r\n fd-menu-interactive\r\n href=\"\"\r\n [class.shellbar-command-action--image-glyph]=\"item.useImageGlyph\"\r\n (click)=\"$event.preventDefault(); rootMenu.close(); item.callback?.()\"\r\n >\r\n @if(item.useImageGlyph){\r\n <img\r\n class=\"shellbar-command-action__image\"\r\n [src]=\"item.glyph\"\r\n [alt]=\"item.label | bbbTranslate\"\r\n loading=\"lazy\"\r\n />\r\n }\r\n <span fd-menu-title class=\"shellbar-command-action__label\">{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){\r\n @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n groupSubmenuTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n }\r\n </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n }\r\n </fd-shellbar-context-area>\r\n\r\n @if(inputEnableSearch()){\r\n <fdp-search-field\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n (inputChange)=\"onSearchInputChange($event)\"\r\n [suggestions]=\"suggestions\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field>\r\n }\r\n <fd-shellbar-actions\r\n #shellbarActions\r\n (searchOpen)=\"onSearchOpen($event)\"\r\n [class.flat-buttons]=\"flatButtons?.length && !showSearch()\"\r\n >\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar size=\"xs\" [circle]=\"true\" [attr.ariaLabel]=\"displayName\" [image]=\"userInfo?.Url\"></fd-avatar>\r\n </fd-user-menu-control>\r\n <fd-user-menu-body>\r\n <div fd-user-menu-header>\r\n <fd-avatar\r\n [circle]=\"true\"\r\n [size]=\"deviceSize\"\r\n [label]=\"userInfo?.Url ? '' : displayName\"\r\n zoomGlyph=\"\"\r\n title=\"Edit avatar\"\r\n [image]=\"userInfo?.Url\"\r\n ></fd-avatar>\r\n <div fd-user-menu-header-container>\r\n <div fd-user-menu-user-name>{{ displayName }}</div>\r\n @for(item of userInfo?.Sublines;track item){\r\n <div fd-user-menu-subline>{{ item }}</div>\r\n }\r\n </div>\r\n @if(profileDynamicCommandText){\r\n <button\r\n fd-button\r\n [label]=\"profileDynamicCommandText || 'Edit' | bbbTranslate\"\r\n [glyph]=\"profileDynamicCommandIcon || 'edit'\"\r\n [attr.ariaLabel]=\"'\u0648\u06CC\u0631\u0627\u06CC\u0634 \u067E\u0631\u0648\u0641\u0627\u06CC\u0644'\"\r\n [dynCommand]=\"profileDynamicCommand\"\r\n bodyClick\r\n ></button>\r\n }\r\n </div>\r\n <div fd-user-menu-content-container>\r\n @if(userMenu?.length){\r\n <fd-panel transparent noRadius [fixed]=\"true\" class=\"hide-panel-header\"> </fd-panel>}\r\n\r\n <fd-user-menu-list>\r\n @for(item of userMenu;track item.text){\r\n <li fd-user-menu-list-item [icon]=\"item.icon\" [text]=\"item.text\" (click)=\"item.callback()\"></li>\r\n }\r\n </fd-user-menu-list>\r\n </div>\r\n </fd-user-menu-body>\r\n\r\n <fd-user-menu-footer>\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n @for(item of footerButtons;track item.text){\r\n <button\r\n fd-button\r\n [label]=\"item.text\"\r\n fdType=\"transparent\"\r\n [glyph]=\"item.icon\"\r\n [attr.ariaLabel]=\"item.text\"\r\n (click)=\"item.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n </fd-user-menu-footer>\r\n </fd-user-menu>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.Icon\"\r\n [callback]=\"action.Callback\"\r\n [label]=\"action.Label\"\r\n [notificationLabel]=\"action.label\"\r\n >\r\n </fd-shellbar-action>\r\n\r\n } @if (!settings?.HideLanguage && multiLanguages && userLoggedIn) {\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @if (deviceSize !== 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !hideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if(flatButtons?.length){\r\n <div class=\"tw-flex tw-gap-1\">\r\n @if (!settings?.HideLanguage && multiLanguages){\r\n <button\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n glyph=\"world\"\r\n fdType=\"transparent\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n } @for(btn of flatButtons;track btn){\r\n <button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\r\n fdType=\"emphasized\"\r\n (click)=\"btn.callback()\"\r\n ></button>\r\n }\r\n </div>\r\n }\r\n </fd-shellbar-actions>\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [noArrow]=\"true\"\r\n placement=\"top-end\"\r\n title=\"Notification Popover\"\r\n [appendTo]=\"el\"\r\n [mobile]=\"false\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <!-- <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationsUnreadCount\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action> -->\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n @if(isOpenNotificatoin){\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n }\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-shellbar>\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n *ngIf=\"sideMenuTemplate\"\r\n class=\"sidemenu-h tw-fixed tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.tw-w-screen]=\"isMobile\"\r\n [class.-tw-right-full]=\"isMobile\"\r\n [class.tw-w-96]=\"!isMobile\"\r\n [class.-tw-right-96]=\"!isMobile && rtl\"\r\n [class.!tw-right-0]=\"rtl && isOpenQuickAccess\"\r\n [class.-tw-left-96]=\"!isMobile && !rtl\"\r\n [class.!tw-left-0]=\"!rtl && isOpenQuickAccess\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\r\n</div>\r\n\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title class=\"tw-flex tw-items-center tw-gap-1\">\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" loading=\"lazy\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n <bt-notification-group\r\n [notificationReport]=\"notificationReport\"\r\n [notificationCount]=\"notificationCount\"\r\n (actionClick)=\"popoverComponent.close()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsUnreadCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #searchContent>\r\n <ul fd-list [byline]=\"true\">\r\n @for (item of (suggestions | suggestionsFilter:selectedSuggestionFiltertype) ; track item.data.path) {\r\n <li\r\n fd-list-item\r\n [interactive]=\"true\"\r\n (click)=\"onSearchItemClick(item)\"\r\n class=\"!tw-ps-1\"\r\n [class.!tw-bg-blue-600]=\"item.data.source === 'Report'\"\r\n [class.!tw-bg-green-600]=\"item.data.source === 'Command'\"\r\n [class.!tw-bg-gray-600]=\"item.data.source !== 'Command' && item.data.source !== 'Report'\"\r\n >\r\n <a fd-list-link [attr.href]=\"!item.data.url ? null : item.data.url\" (click)=\"onSearchLink(item, $event)\">\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item.value }}</div>\r\n <div fd-list-byline>{{ item.data.path }}</div>\r\n </div>\r\n <span fd-list-secondary>\r\n @if(item.data.canPin){\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"'AddToFavorite' | bbbTranslate\"\r\n [title]=\"'Add To Favorite' | bbbTranslate\"\r\n fd-button\r\n glyph=\"shortcut\"\r\n (click)=\"oFavoriteLink(item, $event)\"\r\n ></button>\r\n }\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n<ng-template #searchSubHeader>\r\n <div class=\"tw-flex tw-flex-col tw-w-full\">\r\n <fd-input-group\r\n glyph=\"search\"\r\n fdkInitialFocus\r\n glyphAriaLabel=\"Submit\"\r\n [button]=\"true\"\r\n (input)=\"onSearchInputChange($event)\"\r\n >\r\n </fd-input-group>\r\n @if(suggestions.length){\r\n <div class=\"tw-flex tw-gap-4 tw-overflow-x-auto suggestion-filters-cat tw-pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0647\u0645\u0647', count: (suggestions | suggestionsCountFilter: 'all'), type: '' }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: { name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645', count: (suggestions | suggestionsCountFilter: 'subsystem'), type: '' }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n count: (suggestions | suggestionsCountFilter: 'navgroup'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u06AF\u0632\u0627\u0631\u0634\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'report'),\r\n type: 'information'\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u062F\u0633\u062A\u0648\u0631\u0627\u062A',\r\n count: (suggestions | suggestionsCountFilter: 'command'),\r\n type: 'success'\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #catTag let-name=\"name\" let-count=\"count\" let-type=\"type\">\r\n @if(count && count!==' '){\r\n <div fd-generic-tag [name]=\"name\" [value]=\"count\" (click)=\"selectedSuggestionFiltertype = name\" [type]=\"type\"></div>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:block;position:relative}:host fd-user-menu{background-color:transparent}:host fd-shellbar-actions.flat-buttons{flex-direction:row-reverse}:host.hide-user-menu fd-shellbar-actions ::ng-deep .fd-user-menu{display:none}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep .fd-shellbar--s .fd-shellbar__title{display:block;max-width:10rem;text-wrap:auto;font-size:.8rem}: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 ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem;margin:0!important}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{display:inline-flex;align-items:center;flex-direction:row-reverse;gap:.375rem}:host ::ng-deep .shellbar-command-action--image-glyph ::ng-deep fd-icon{display:none}.shellbar-command-action__image{width:1rem;height:1rem;object-fit:contain;flex-shrink:0}.shellbar-command-action__label{line-height:1}:host ::ng-deep .fd-shellbar{height:var(--shellbar-height)}:host ::ng-deep fd-shellbar.s .fd-shellbar__product{max-width:120px}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area{justify-content:center!important}:host ::ng-deep fd-shellbar.s .fd-shellbar--has-context-area .fd-shellbar__action--shrink button{color:var(--fdButtonIconColor, var(--sapShell_InteractiveTextColor))}\n"] }]
3226
3602
  }], ctorParameters: () => [], propDecorators: { searchDialogContent: [{
3227
3603
  type: ViewChild,
3228
3604
  args: ['searchContent', { read: TemplateRef }]
@@ -3239,6 +3615,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
3239
3615
  type: Input
3240
3616
  }], productMenuControl: [{
3241
3617
  type: Input
3618
+ }], dastoratSarasari: [{
3619
+ type: Input
3620
+ }], workflowMenuItems: [{
3621
+ type: Input
3622
+ }], groupedCommandMenus: [{
3623
+ type: Input
3242
3624
  }], deviceSize: [{
3243
3625
  type: Input
3244
3626
  }], cultures: [{
@@ -3400,7 +3782,7 @@ class ShellbarComponent extends BaseComponent {
3400
3782
  }
3401
3783
  get productMenuItems() {
3402
3784
  const items = this.shellbarData?.ProductMenuItems?.MoDataList ?? [];
3403
- items.forEach((c) => (c.callback = new Function(c.Code + this.bodyClick)));
3785
+ items.forEach((c) => c.webcode && (c.callback = new Function(c.webcode + this.bodyClick)));
3404
3786
  return items;
3405
3787
  }
3406
3788
  get IsUserLoggedIn() {
@@ -3466,12 +3848,6 @@ class ShellbarComponent extends BaseComponent {
3466
3848
  this._cdr.detectChanges();
3467
3849
  };
3468
3850
  this.deviceSize$ = this._portalService.deviceSize$.pipe(takeUntil$1(this._onDestroy$));
3469
- this._breadCrumbService.breadcrumbs$.pipe(takeUntil$1(this._onDestroy$)).subscribe((breadCrumbs) => {
3470
- if (breadCrumbs.length > 0) {
3471
- this.productMenuControl = breadCrumbs[breadCrumbs.length - 1].label;
3472
- }
3473
- this._cdr.detectChanges();
3474
- });
3475
3851
  this.userInfo$ = this._tilesService.userInfo$;
3476
3852
  this._tilesService.shellbar$.pipe(takeUntil$1(this._onDestroy$)).subscribe((mo) => {
3477
3853
  this.shellbarData = mo;
@@ -3480,7 +3856,7 @@ class ShellbarComponent extends BaseComponent {
3480
3856
  }
3481
3857
  // this._cdr.detectChanges();
3482
3858
  forkJoin([of(this.productMenuItems), of([])]) // to append user defined
3483
- .pipe(takeUntil$1(this._onDestroy$), map(([s1, s2]) => [...s1, ...s2]))
3859
+ .pipe(takeUntil$1(this._onDestroy$), map$1(([s1, s2]) => [...s1, ...s2]))
3484
3860
  .subscribe((c) => {
3485
3861
  this.productMenuItems1 = c;
3486
3862
  this._cdr.detectChanges();
@@ -3505,7 +3881,7 @@ class ShellbarComponent extends BaseComponent {
3505
3881
  });
3506
3882
  }
3507
3883
  onAppTileGroupChange(appTileGroupId) {
3508
- BarsaApi.Bw.RefreshAppTileGroup(appTileGroupId);
3884
+ this._tilesService.loadAppTileGroupsById(appTileGroupId);
3509
3885
  }
3510
3886
  onCultureChange(culture) {
3511
3887
  this._changeCulture(culture);
@@ -3537,11 +3913,11 @@ class ShellbarComponent extends BaseComponent {
3537
3913
  BarsaApi.Bw.NavigateTo('/');
3538
3914
  }
3539
3915
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ShellbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3540
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ShellbarComponent, isStandalone: false, selector: "bt-shellbar", host: { properties: { "class.isOpenQuickAccess": "this.isOpenQuickAccess" } }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notificationsUnreadCount$ | async; as notificationsUnreadCount) { @if\r\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\r\n<bt-barsa-shellbar\r\n [class.service-desk]=\"isServiceDesk\"\r\n cssRootVariable\r\n [cssVariableValue]=\"(shellbarHeight$ | async)!!\"\r\n [cssVariableName]=\"'--absolute-page-top'\"\r\n [notificationReport]=\"notificationReport\"\r\n [userInfo]=\"userInfo$ | async\"\r\n [userLoggedIn]=\"true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [deviceSize]=\"deviceSize\"\r\n [shellbarData]=\"shellbarData\"\r\n [cssStyle]=\"cssStyles\"\r\n [productMenuControl]=\"productMenuControl\"\r\n [settings]=\"settings\"\r\n [suggestions]=\"suggestions\"\r\n [informativeText]=\"settings?.InformativeText\"\r\n [informativeStatus]=\"settings?.InformativeStatus\"\r\n [hideProductMenu]=\"settings?.HideProductMenu\"\r\n [hideNotifications]=\"settings?.HideNotifications\"\r\n [profileDynamicCommand]=\"shellbarData.ProfileDynamicCommand\"\r\n [profileDynamicCommandText]=\"shellbarData.ProfileDynamicCommandText\"\r\n [profileDynamicCommandIcon]=\"shellbarData.ProfileDynamicCommandIcon\"\r\n [isMobile]=\"isMobile\"\r\n [displayName]=\"displayName\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [notificationsUnreadCount]=\"notificationsUnreadCount > 0 ? notificationsUnreadCount : undefined\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [actions]=\"actions\"\r\n [footerButtons]=\"userMenu | filter: { inFooter: true }\"\r\n [userMenu]=\"userMenu | filter: { inFooter: false }\"\r\n [productSwitcher]=\"productSwitcherItems\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [sideMenuTemplate]=\"\r\n sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0' ? QuickAccessTemplate : null\r\n \"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\r\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n (notifiationActionClick)=\"onNotificationAction($event)\"\r\n (appTileGroupChange)=\"onAppTileGroupChange($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} } } } @else{ @if (settings?.AllowAnonymous) {\r\n<bt-barsa-shellbar\r\n class=\"hide-user-menu\"\r\n [notificationReport]=\"notificationReport\"\r\n [cssStyle]=\"cssStyles\"\r\n [userLoggedIn]=\"false\"\r\n [suggestions]=\"suggestions\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [userMenu]=\"userMenu\"\r\n [logo]=\"logo\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [shellbarData]=\"shellbarData\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [isMobile]=\"isMobile\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [actions]=\"actions\"\r\n [userMenu]=\"[]\"\r\n [productMenuControl]=\"productMenuControl\"\r\n [productSwitcher]=\"[]\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [settings]=\"settings\"\r\n [flatButtons]=\"userMenu\"\r\n [cultures]=\"cultures\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} }\r\n<ng-template #QuickAccessTemplate>\r\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\r\n <bnrc-report-container [settings]=\"sidebarSettings\"> </bnrc-report-container>\r\n</ng-template>\r\n@if(isOpenQuickAccess) { @if(sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0'){\r\n\r\n<div\r\n class=\"sidemenu-h tw-fixed rtl:tw-right-0 ltr:tw-left-0 !tw-z-[90] tw-w-screen\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n\r\n}\r\n\r\n<!-- <div class=\"tw-h-full\" [class.s]=\"(deviceSize$ | async) === 's'\">\r\n \r\n </div> -->\r\n}\r\n", styles: [":host{display:block;position:relative}:host #menu_btn{background-color:transparent;border-color:transparent}:host ::ng-deep .sidemenu-h{top:var(--shellbar-height);height:calc(100vh - var(--shellbar-height))}:host ::ng-deep .sidemenu-h>div.s{z-index:100!important}:host ::ng-deep .sidemenu-h ::ng-deep bsu-barsa-ulv-main{background-color:var(--sapBaseColor)}\n"], dependencies: [{ kind: "component", type: i5.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "directive", type: i5.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "directive", type: i5.DynamicRootVariableDirective, selector: "[cssRootVariable]", inputs: ["cssVariableName", "cssVariableValue", "disable"], exportAs: ["cssRootVariable"] }, { kind: "component", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["showSidebar", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "deviceSize", "cultures", "shellbarData", "notificationsUnreadCount", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "footerButtons", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "flatButtons", "isTablet", "userInfo", "isDesktop", "informativeText", "informativeStatus", "hideProductMenu", "enableSearch", "hideNotifications", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate", "notificationReport", "profileDynamicCommand", "profileDynamicCommandText", "profileDynamicCommandIcon", "displayName", "hideBranding", "showSearchInSystem", "rtl", "suggestions"], outputs: ["appTileGroupChange", "searchItemClick", "searchInput", "isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notifiationActionClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.FilterPipe, name: "filter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3916
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: ShellbarComponent, isStandalone: false, selector: "bt-shellbar", host: { properties: { "class.isOpenQuickAccess": "this.isOpenQuickAccess" } }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notificationsUnreadCount$ | async; as notificationsUnreadCount) { @if\r\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\r\n<bt-barsa-shellbar\r\n [class.service-desk]=\"isServiceDesk\"\r\n cssRootVariable\r\n [cssVariableValue]=\"(shellbarHeight$ | async)!!\"\r\n [cssVariableName]=\"'--absolute-page-top'\"\r\n [notificationReport]=\"notificationReport\"\r\n [userInfo]=\"userInfo$ | async\"\r\n [userLoggedIn]=\"true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [deviceSize]=\"deviceSize\"\r\n [shellbarData]=\"shellbarData\"\r\n [cssStyle]=\"cssStyles\"\r\n productMenuControl=\"\" \r\n [settings]=\"settings\"\r\n [suggestions]=\"suggestions\"\r\n [informativeText]=\"settings?.InformativeText\"\r\n [informativeStatus]=\"settings?.InformativeStatus\"\r\n [hideProductMenu]=\"settings?.HideProductMenu\"\r\n [hideNotifications]=\"settings?.HideNotifications\"\r\n [profileDynamicCommand]=\"shellbarData.ProfileDynamicCommand\"\r\n [profileDynamicCommandText]=\"shellbarData.ProfileDynamicCommandText\"\r\n [profileDynamicCommandIcon]=\"shellbarData.ProfileDynamicCommandIcon\"\r\n [isMobile]=\"isMobile\"\r\n [displayName]=\"displayName\" \r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [multiLanguages]=\"multiLanguages\" \r\n [notificationsUnreadCount]=\"notificationsUnreadCount > 0 ? notificationsUnreadCount : undefined\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [actions]=\"actions\"\r\n [footerButtons]=\"userMenu | filter: { inFooter: true }\"\r\n [userMenu]=\"userMenu | filter: { inFooter: false }\"\r\n [productSwitcher]=\"productSwitcherItems\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [sideMenuTemplate]=\"\r\n sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0' ? QuickAccessTemplate : null\r\n \"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\r\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n (notifiationActionClick)=\"onNotificationAction($event)\"\r\n (appTileGroupChange)=\"onAppTileGroupChange($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} } } } @else{ @if (settings?.AllowAnonymous) {\r\n<bt-barsa-shellbar\r\n class=\"hide-user-menu\"\r\n [notificationReport]=\"notificationReport\"\r\n [cssStyle]=\"cssStyles\"\r\n [userLoggedIn]=\"false\"\r\n [suggestions]=\"suggestions\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [userMenu]=\"userMenu\"\r\n [logo]=\"logo\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [shellbarData]=\"shellbarData\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [isMobile]=\"isMobile\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [actions]=\"actions\"\r\n [userMenu]=\"[]\"\r\n productMenuControl=\"\" \r\n \r\n [productSwitcher]=\"[]\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [settings]=\"settings\"\r\n [flatButtons]=\"userMenu\"\r\n [cultures]=\"cultures\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} }\r\n<ng-template #QuickAccessTemplate>\r\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\r\n <bnrc-report-container [settings]=\"sidebarSettings\"> </bnrc-report-container>\r\n</ng-template>\r\n@if(isOpenQuickAccess) { @if(sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0'){\r\n\r\n<div\r\n class=\"sidemenu-h tw-fixed rtl:tw-right-0 ltr:tw-left-0 !tw-z-[90] tw-w-screen\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n\r\n}\r\n\r\n<!-- <div class=\"tw-h-full\" [class.s]=\"(deviceSize$ | async) === 's'\">\r\n \r\n </div> -->\r\n}\r\n", styles: [":host{display:block;position:relative}:host #menu_btn{background-color:transparent;border-color:transparent}:host ::ng-deep .sidemenu-h{top:var(--shellbar-height);height:calc(100vh - var(--shellbar-height))}:host ::ng-deep .sidemenu-h>div.s{z-index:100!important}:host ::ng-deep .sidemenu-h ::ng-deep bsu-barsa-ulv-main{background-color:var(--sapBaseColor)}\n"], dependencies: [{ kind: "component", type: i5.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "directive", type: i5.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "directive", type: i5.DynamicRootVariableDirective, selector: "[cssRootVariable]", inputs: ["cssVariableName", "cssVariableValue", "disable"], exportAs: ["cssRootVariable"] }, { kind: "component", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["showSidebar", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "dastoratSarasari", "workflowMenuItems", "groupedCommandMenus", "deviceSize", "cultures", "shellbarData", "notificationsUnreadCount", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "footerButtons", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "flatButtons", "isTablet", "userInfo", "isDesktop", "informativeText", "informativeStatus", "hideProductMenu", "enableSearch", "hideNotifications", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate", "notificationReport", "profileDynamicCommand", "profileDynamicCommandText", "profileDynamicCommandIcon", "displayName", "hideBranding", "showSearchInSystem", "rtl", "suggestions"], outputs: ["appTileGroupChange", "searchItemClick", "searchInput", "isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notifiationActionClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.FilterPipe, name: "filter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3541
3917
  }
3542
3918
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ShellbarComponent, decorators: [{
3543
3919
  type: Component,
3544
- args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notificationsUnreadCount$ | async; as notificationsUnreadCount) { @if\r\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\r\n<bt-barsa-shellbar\r\n [class.service-desk]=\"isServiceDesk\"\r\n cssRootVariable\r\n [cssVariableValue]=\"(shellbarHeight$ | async)!!\"\r\n [cssVariableName]=\"'--absolute-page-top'\"\r\n [notificationReport]=\"notificationReport\"\r\n [userInfo]=\"userInfo$ | async\"\r\n [userLoggedIn]=\"true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [deviceSize]=\"deviceSize\"\r\n [shellbarData]=\"shellbarData\"\r\n [cssStyle]=\"cssStyles\"\r\n [productMenuControl]=\"productMenuControl\"\r\n [settings]=\"settings\"\r\n [suggestions]=\"suggestions\"\r\n [informativeText]=\"settings?.InformativeText\"\r\n [informativeStatus]=\"settings?.InformativeStatus\"\r\n [hideProductMenu]=\"settings?.HideProductMenu\"\r\n [hideNotifications]=\"settings?.HideNotifications\"\r\n [profileDynamicCommand]=\"shellbarData.ProfileDynamicCommand\"\r\n [profileDynamicCommandText]=\"shellbarData.ProfileDynamicCommandText\"\r\n [profileDynamicCommandIcon]=\"shellbarData.ProfileDynamicCommandIcon\"\r\n [isMobile]=\"isMobile\"\r\n [displayName]=\"displayName\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [notificationsUnreadCount]=\"notificationsUnreadCount > 0 ? notificationsUnreadCount : undefined\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [actions]=\"actions\"\r\n [footerButtons]=\"userMenu | filter: { inFooter: true }\"\r\n [userMenu]=\"userMenu | filter: { inFooter: false }\"\r\n [productSwitcher]=\"productSwitcherItems\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [sideMenuTemplate]=\"\r\n sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0' ? QuickAccessTemplate : null\r\n \"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\r\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n (notifiationActionClick)=\"onNotificationAction($event)\"\r\n (appTileGroupChange)=\"onAppTileGroupChange($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} } } } @else{ @if (settings?.AllowAnonymous) {\r\n<bt-barsa-shellbar\r\n class=\"hide-user-menu\"\r\n [notificationReport]=\"notificationReport\"\r\n [cssStyle]=\"cssStyles\"\r\n [userLoggedIn]=\"false\"\r\n [suggestions]=\"suggestions\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [userMenu]=\"userMenu\"\r\n [logo]=\"logo\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [shellbarData]=\"shellbarData\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [isMobile]=\"isMobile\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [actions]=\"actions\"\r\n [userMenu]=\"[]\"\r\n [productMenuControl]=\"productMenuControl\"\r\n [productSwitcher]=\"[]\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [settings]=\"settings\"\r\n [flatButtons]=\"userMenu\"\r\n [cultures]=\"cultures\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} }\r\n<ng-template #QuickAccessTemplate>\r\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\r\n <bnrc-report-container [settings]=\"sidebarSettings\"> </bnrc-report-container>\r\n</ng-template>\r\n@if(isOpenQuickAccess) { @if(sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0'){\r\n\r\n<div\r\n class=\"sidemenu-h tw-fixed rtl:tw-right-0 ltr:tw-left-0 !tw-z-[90] tw-w-screen\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n\r\n}\r\n\r\n<!-- <div class=\"tw-h-full\" [class.s]=\"(deviceSize$ | async) === 's'\">\r\n \r\n </div> -->\r\n}\r\n", styles: [":host{display:block;position:relative}:host #menu_btn{background-color:transparent;border-color:transparent}:host ::ng-deep .sidemenu-h{top:var(--shellbar-height);height:calc(100vh - var(--shellbar-height))}:host ::ng-deep .sidemenu-h>div.s{z-index:100!important}:host ::ng-deep .sidemenu-h ::ng-deep bsu-barsa-ulv-main{background-color:var(--sapBaseColor)}\n"] }]
3920
+ args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notificationsUnreadCount$ | async; as notificationsUnreadCount) { @if\r\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\r\n<bt-barsa-shellbar\r\n [class.service-desk]=\"isServiceDesk\"\r\n cssRootVariable\r\n [cssVariableValue]=\"(shellbarHeight$ | async)!!\"\r\n [cssVariableName]=\"'--absolute-page-top'\"\r\n [notificationReport]=\"notificationReport\"\r\n [userInfo]=\"userInfo$ | async\"\r\n [userLoggedIn]=\"true\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [deviceSize]=\"deviceSize\"\r\n [shellbarData]=\"shellbarData\"\r\n [cssStyle]=\"cssStyles\"\r\n productMenuControl=\"\" \r\n [settings]=\"settings\"\r\n [suggestions]=\"suggestions\"\r\n [informativeText]=\"settings?.InformativeText\"\r\n [informativeStatus]=\"settings?.InformativeStatus\"\r\n [hideProductMenu]=\"settings?.HideProductMenu\"\r\n [hideNotifications]=\"settings?.HideNotifications\"\r\n [profileDynamicCommand]=\"shellbarData.ProfileDynamicCommand\"\r\n [profileDynamicCommandText]=\"shellbarData.ProfileDynamicCommandText\"\r\n [profileDynamicCommandIcon]=\"shellbarData.ProfileDynamicCommandIcon\"\r\n [isMobile]=\"isMobile\"\r\n [displayName]=\"displayName\" \r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [multiLanguages]=\"multiLanguages\" \r\n [notificationsUnreadCount]=\"notificationsUnreadCount > 0 ? notificationsUnreadCount : undefined\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [actions]=\"actions\"\r\n [footerButtons]=\"userMenu | filter: { inFooter: true }\"\r\n [userMenu]=\"userMenu | filter: { inFooter: false }\"\r\n [productSwitcher]=\"productSwitcherItems\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [sideMenuTemplate]=\"\r\n sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0' ? QuickAccessTemplate : null\r\n \"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\r\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n (notifiationActionClick)=\"onNotificationAction($event)\"\r\n (appTileGroupChange)=\"onAppTileGroupChange($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} } } } @else{ @if (settings?.AllowAnonymous) {\r\n<bt-barsa-shellbar\r\n class=\"hide-user-menu\"\r\n [notificationReport]=\"notificationReport\"\r\n [cssStyle]=\"cssStyles\"\r\n [userLoggedIn]=\"false\"\r\n [suggestions]=\"suggestions\"\r\n [rtl]=\"(rtl$ | async) === true\"\r\n [multiLanguages]=\"multiLanguages\"\r\n [userMenu]=\"userMenu\"\r\n [logo]=\"logo\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [shellbarData]=\"shellbarData\"\r\n [cultures]=\"cultures\"\r\n [logo]=\"logo\"\r\n [isMobile]=\"isMobile\"\r\n [isTablet]=\"isTablet\"\r\n [isDesktop]=\"isDesktop\"\r\n [isServiceDesk]=\"isServiceDesk\"\r\n [actions]=\"actions\"\r\n [userMenu]=\"[]\"\r\n productMenuControl=\"\" \r\n \r\n [productSwitcher]=\"[]\"\r\n [subtitle]=\"subtitle\"\r\n [enableSearch]=\"shellbarData?.EnableSearch\"\r\n [settings]=\"settings\"\r\n [flatButtons]=\"userMenu\"\r\n [cultures]=\"cultures\"\r\n [productMenuItems1]=\"productMenuItems1\"\r\n (cultureChanged)=\"onCultureChanged($event)\"\r\n>\r\n</bt-barsa-shellbar>\r\n} }\r\n<ng-template #QuickAccessTemplate>\r\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\r\n <bnrc-report-container [settings]=\"sidebarSettings\"> </bnrc-report-container>\r\n</ng-template>\r\n@if(isOpenQuickAccess) { @if(sidebarSettings?.RelatedReport && sidebarSettings?.RelatedReport?.Id !== '0'){\r\n\r\n<div\r\n class=\"sidemenu-h tw-fixed rtl:tw-right-0 ltr:tw-left-0 !tw-z-[90] tw-w-screen\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n\r\n}\r\n\r\n<!-- <div class=\"tw-h-full\" [class.s]=\"(deviceSize$ | async) === 's'\">\r\n \r\n </div> -->\r\n}\r\n", styles: [":host{display:block;position:relative}:host #menu_btn{background-color:transparent;border-color:transparent}:host ::ng-deep .sidemenu-h{top:var(--shellbar-height);height:calc(100vh - var(--shellbar-height))}:host ::ng-deep .sidemenu-h>div.s{z-index:100!important}:host ::ng-deep .sidemenu-h ::ng-deep bsu-barsa-ulv-main{background-color:var(--sapBaseColor)}\n"] }]
3545
3921
  }], ctorParameters: () => [], propDecorators: { comboboxComponent: [{
3546
3922
  type: ViewChild,
3547
3923
  args: [ComboboxComponent]
@@ -3590,7 +3966,7 @@ class GroupTilesPipe {
3590
3966
  }
3591
3967
  const predefine$ = of(predefineTiles);
3592
3968
  const userDefine$ = of(appGroup.UserAppTileGroupSetting?.UserAppTilesSetting?.MoDataList);
3593
- return forkJoin([predefine$, userDefine$]).pipe(map(([s1, s2]) => [...s1, ...s2]), map((arrTiles) => {
3969
+ return forkJoin([predefine$, userDefine$]).pipe(map$1(([s1, s2]) => [...s1, ...s2]), map$1((arrTiles) => {
3594
3970
  const tempTiles = arrTiles.filter((c) => c.Visible).sort((a, b) => (a.OrderItem > b.OrderItem ? 1 : 0));
3595
3971
  const group = { ...appGroup };
3596
3972
  group.Title = BarsaApi.Common.Util.TryGetValue(group, 'UserAppTileGroupSetting.Title', group.Title);
@@ -3619,7 +3995,7 @@ class PopoverAppFinderComponent extends BaseComponent {
3619
3995
  this._appFinderService = inject(AppFinderService);
3620
3996
  this._contentDensityService = inject(ContentDensityService);
3621
3997
  this.contentDensity$ = this._contentDensityService.contentDensity.asObservable();
3622
- this.appGroups$ = this._appFinderService.appGroups$.pipe(map((appGroups) => {
3998
+ this.appGroups$ = this._appFinderService.appGroups$.pipe(map$1((appGroups) => {
3623
3999
  appGroups.forEach((cat) => {
3624
4000
  this._appFinderService.loadAppsByAppGroup(appGroups, cat);
3625
4001
  });
@@ -3629,12 +4005,12 @@ class PopoverAppFinderComponent extends BaseComponent {
3629
4005
  this.selectedAppGroupId$ = this._appFinderService.selectedAppGroupId$;
3630
4006
  this.deviceSize$ = this._appFinderService.deviceSize$;
3631
4007
  this.pinnedAppInAppTileGroups$ = this._appFinderService.pinnedAppInAppTileGroups$;
3632
- this.mobile$ = this.deviceSize$.pipe(map((c) => c === 's'));
4008
+ this.mobile$ = this.deviceSize$.pipe(map$1((c) => c === 's'));
3633
4009
  }
3634
4010
  ngOnInit() {
3635
4011
  super.ngOnInit();
3636
4012
  this.contentHeight = 'calc(' + this._el.nativeElement.offsetHeight + 'px - 2.75rem)';
3637
- this.sideContentSize$ = this.deviceSize$.pipe(takeUntil$1(this._onDestroy$), map((deviceSize) => {
4013
+ this.sideContentSize$ = this.deviceSize$.pipe(takeUntil$1(this._onDestroy$), map$1((deviceSize) => {
3638
4014
  switch (deviceSize) {
3639
4015
  case 's':
3640
4016
  return 'sm';
@@ -3793,7 +4169,7 @@ class BarsaTileGroupPageComponent extends BaseComponent {
3793
4169
  });
3794
4170
  }
3795
4171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTileGroupPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3796
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaTileGroupPageComponent, isStandalone: false, selector: "bt-barsa-tile-group-page", host: { properties: { "style.position": "this._position" } }, providers: [RoutingService], viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.hide-title]=\"false\"\r\n [class.mobile]=\"isMobile\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\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\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-flex-col tw-gap-4\">\r\n @for(appGroup of moList() | multipleGroupBy: sortSetting();track appGroup.$Group || appGroup.Id) {\r\n @if(appGroup.$Group) {\r\n <fd-panel [fixed]=\"true\">\r\n <h2 fd-panel-title>\r\n {{ appGroup.$Group !== 'undefined' ? appGroup.$Group : '' }}\r\n </h2>\r\n <div\r\n fd-panel-content\r\n [class.small-size]=\"deviceSize === 's'\"\r\n class=\"tw-flex tw-gap-2 tw-flex-wrap tw-p-4 !tw-border-b-0\"\r\n >\r\n @for(app of appGroup.$Children;track app.Id;let i=$index){\r\n <ng-container\r\n *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize, index: i }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n </fd-panel>\r\n } }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #tile\r\n let-app\r\n let-listMode=\"listMode\"\r\n let-navigateBack=\"navigateBack\"\r\n let-deviceSize=\"deviceSize\"\r\n let-index=\"index\"\r\n>\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [style.margin-right]=\"rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [style.margin-left]=\"!rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}fd-dynamic-page-header.mobile{--fdDynamicPage_Title_Font_Size:1rem}fd-dynamic-page-header.mobile ::ng-deep>.fd-dynamic-page__main-container>.fd-dynamic-page__breadcrumb-title-container{display:flex;flex-direction:row;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.ɵɵCdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3$3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$4.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i4$4.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i4$4.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i4$4.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i4$4.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i6$3.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "directive", type: i6$3.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "noPadding", "transparent", "id"] }, { kind: "directive", type: i6$3.PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id"] }, { kind: "component", type: i5$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "directive", type: TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "groupType", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick", "changeGroupClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.SlicePipe, name: "slice" }, { kind: "pipe", type: i5.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaTileGroupPageComponent, isStandalone: false, selector: "bt-barsa-tile-group-page", host: { properties: { "style.position": "this._position" } }, providers: [RoutingService], viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.hide-title]=\"false\"\r\n [class.mobile]=\"isMobile\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\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\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-flex-col tw-gap-4\">\r\n @for(appGroup of moList() | multipleGroupBy: sortSetting();track appGroup.$Group || appGroup.Id) {\r\n @if(appGroup.$Group) {\r\n <fd-panel [fixed]=\"true\">\r\n <h2 fd-panel-title>\r\n {{ appGroup.$Group !== 'undefined' ? appGroup.$Group : '' }}\r\n </h2>\r\n <div\r\n fd-panel-content\r\n [class.small-size]=\"deviceSize === 's'\"\r\n class=\"tw-flex tw-gap-2 tw-flex-wrap tw-p-4 !tw-border-b-0\"\r\n >\r\n @for(app of appGroup.$Children;track app.Id;let i=$index){\r\n <ng-container\r\n *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize, index: i }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n </fd-panel>\r\n } }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #tile\r\n let-app\r\n let-listMode=\"listMode\"\r\n let-navigateBack=\"navigateBack\"\r\n let-deviceSize=\"deviceSize\"\r\n let-index=\"index\"\r\n>\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [style.margin-right]=\"rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [style.margin-left]=\"!rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}fd-dynamic-page-header.mobile{--fdDynamicPage_Title_Font_Size:1rem}fd-dynamic-page-header.mobile ::ng-deep>.fd-dynamic-page__main-container>.fd-dynamic-page__breadcrumb-title-container{display:flex;flex-direction:row;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.ɵɵCdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3$3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class", "id"], exportAs: ["fd-button"] }, { kind: "component", type: i4$2.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i4$2.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i4$2.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i4$2.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i4$2.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i6$3.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "directive", type: i6$3.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "noPadding", "transparent", "id"] }, { kind: "directive", type: i6$3.PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "directive", type: TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "groupType", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick", "changeGroupClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.SlicePipe, name: "slice" }, { kind: "pipe", type: i5.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3797
4173
  }
3798
4174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTileGroupPageComponent, decorators: [{
3799
4175
  type: Component,
@@ -3831,7 +4207,7 @@ class BarsaTileSidebarPageComponent extends EmptyPageComponent {
3831
4207
  this._router.navigate(['../']);
3832
4208
  }
3833
4209
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTileSidebarPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3834
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaTileSidebarPageComponent, isStandalone: false, selector: "bt-barsa-tile-sidebar-page", providers: [RoutingService], usesInheritance: true, ngImport: i0, template: "<div fd-bar>\r\n <div fd-bar-left style=\"flex: 1; width: 100%\">\r\n <fd-breadcrumb style=\"width: 100%\">\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs ;track breadCrumb.url; let i =\r\n $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </div>\r\n</div>\r\n\r\n<fd-dynamic-side-content class=\"tiles-sidebar-wrapper\" fillEmptySpace style=\"overflow: auto\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container #containerRef></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main style=\"padding: 2rem\">\r\n @if(firstReportLoaded()===false){\r\n <fd-message-page type=\"no-items\" style=\"align-self: center; background: transparent\">\r\n <fd-message-page-title>{{ 'SearchInReports' | bbbTranslate }}</fd-message-page-title>\r\n </fd-message-page>\r\n }\r\n <router-outlet name=\"mainside\"> </router-outlet>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n<div class=\"sidbar-outlet\">\r\n <router-outlet></router-outlet>\r\n</div>\r\n", styles: [":host{width:100%;display:block}fd-dynamic-page ::ng-deep article fd-dynamic-page-content{padding:0}fd-dynamic-page ::ng-deep article fd-layout-panel{background-color:var(--sapBackgroundColor)}fd-dynamic-page ::ng-deep article li{border:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{max-width:20svw;width:20svw;overflow-y:auto;padding:0;background-color:var(--sapBaseColor);border:.0625rem solid var(--sapTile_SeparatorColor, #ccc);border-top:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep li span.haschildren{font-family:B-Font Medium}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep bsu-barsa-ulv-main,.tiles-sidebar-wrapper>fd-dynamic-side-content-main ::ng-deep bsu-barsa-ulv-main{margin:0!important}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:80svw;max-width:80svw;background-color:var(--sapBaseColor)}@media (max-width: 799px){.tiles-sidebar-wrapper{flex-direction:column}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:100svw;max-width:100svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:100svw;max-width:100svw}}@media (min-width: 800px) and (max-width: 1439px){.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:35svw;max-width:35svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:65svw;max-width:65svw}}\n"], dependencies: [{ kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$2.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "component", type: i3$3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4$5.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$5.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$5.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i5$3.MessagePageComponent, selector: "fd-message-page", inputs: ["class", "type", "hasIcon", "glyphFont", "glyph"] }, { kind: "component", type: i5$3.MessagePageTitleComponent, selector: "fd-message-page-title" }, { kind: "directive", type: i5.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight", "setMaxHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaTileSidebarPageComponent, isStandalone: false, selector: "bt-barsa-tile-sidebar-page", providers: [RoutingService], usesInheritance: true, ngImport: i0, template: "<div fd-bar>\r\n <div fd-bar-left style=\"flex: 1; width: 100%\">\r\n <fd-breadcrumb style=\"width: 100%\">\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs ;track breadCrumb.url; let i =\r\n $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </div>\r\n</div>\r\n\r\n<fd-dynamic-side-content class=\"tiles-sidebar-wrapper\" fillEmptySpace style=\"overflow: auto\">\r\n <fd-dynamic-side-content-side>\r\n <ng-container #containerRef></ng-container>\r\n </fd-dynamic-side-content-side>\r\n <fd-dynamic-side-content-main style=\"padding: 2rem\">\r\n @if(firstReportLoaded()===false){\r\n <fd-message-page type=\"no-items\" style=\"align-self: center; background: transparent\">\r\n <fd-message-page-title>{{ 'SearchInReports' | bbbTranslate }}</fd-message-page-title>\r\n </fd-message-page>\r\n }\r\n <router-outlet name=\"mainside\"> </router-outlet>\r\n </fd-dynamic-side-content-main>\r\n</fd-dynamic-side-content>\r\n<div class=\"sidbar-outlet\">\r\n <router-outlet></router-outlet>\r\n</div>\r\n", styles: [":host{width:100%;display:block}fd-dynamic-page ::ng-deep article fd-dynamic-page-content{padding:0}fd-dynamic-page ::ng-deep article fd-layout-panel{background-color:var(--sapBackgroundColor)}fd-dynamic-page ::ng-deep article li{border:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{max-width:20svw;width:20svw;overflow-y:auto;padding:0;background-color:var(--sapBaseColor);border:.0625rem solid var(--sapTile_SeparatorColor, #ccc);border-top:none}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep li span.haschildren{font-family:B-Font Medium}.tiles-sidebar-wrapper>fd-dynamic-side-content-side ::ng-deep bsu-barsa-ulv-main,.tiles-sidebar-wrapper>fd-dynamic-side-content-main ::ng-deep bsu-barsa-ulv-main{margin:0!important}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:80svw;max-width:80svw;background-color:var(--sapBaseColor)}@media (max-width: 799px){.tiles-sidebar-wrapper{flex-direction:column}.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:100svw;max-width:100svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:100svw;max-width:100svw}}@media (min-width: 800px) and (max-width: 1439px){.tiles-sidebar-wrapper>fd-dynamic-side-content-side{width:35svw;max-width:35svw;overflow:hidden}.tiles-sidebar-wrapper>fd-dynamic-side-content-main{width:65svw;max-width:65svw}}\n"], dependencies: [{ kind: "directive", type: i1$5.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: i2$3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "component", type: i3$3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4$3.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i4$3.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i4$3.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i5$4.MessagePageComponent, selector: "fd-message-page", inputs: ["class", "type", "hasIcon", "glyphFont", "glyph"] }, { kind: "component", type: i5$4.MessagePageTitleComponent, selector: "fd-message-page-title" }, { kind: "directive", type: i5.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight", "setMaxHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3835
4211
  }
3836
4212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTileSidebarPageComponent, decorators: [{
3837
4213
  type: Component,
@@ -3856,7 +4232,7 @@ class CardTileComponent extends BaseBtTileComponent {
3856
4232
  this.iconColor = this.settings.IconColor;
3857
4233
  }
3858
4234
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3859
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: CardTileComponent, isStandalone: false, selector: "bt-card-tile", usesInheritance: true, ngImport: i0, template: "<fd-card\r\n (click)=\"onTileClick()\"\r\n tileDynCommand\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"data | tileProp: 'Title':parameters | bbbTranslate\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [badge]=\"data | tileProp: 'Badge':parameters | bbbTranslate\"\r\n [ngClass]=\"groupType\"\r\n [interactive]=\"true\"\r\n [class.hassize]=\"cardMediaSize\"\r\n [style.background-color]=\"backgroundColor ? backgroundColor : null\"\r\n [class.custom-background]=\"backgroundColor\"\r\n>\r\n <fd-card-media>\r\n <div fd-card-media-image-container>\r\n <bsu-barsa-img-skeleton\r\n fd-card-media-image\r\n [title]=\"data | tileProp: 'Title':parameters | bbbTranslate\"\r\n [imageUrl]=\"data | tileProp: 'Picture':parameters | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n [size]=\"cardMediaSize | cardMediaSize: 160\"\r\n [widthFull]=\"!cardMediaSize\"\r\n ></bsu-barsa-img-skeleton>\r\n <!-- <fd-skeleton [style.display]=\"!hideSkeleton() ? null:'none'\" type=\"rectangle\" width=\"100%\" height=\"160px\"></fd-skeleton>\r\n <img\r\n fd-card-media-image\r\n [src]=\"data | tileProp: 'Picture':parameters | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n [alt]=\"data | tileProp: 'Title':parameters\"\r\n style=\"max-height: 160px\"\r\n [style.display]=\"!hideSkeleton() ? 'none':null\"\r\n (load)=\"hideSkeleton.set(true)\"\r\n /> -->\r\n </div>\r\n </fd-card-media>\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n <h2 fd-card-title>{{ data | tileProp: 'Title':parameters | bbbTranslate }}</h2>\r\n <h3 fd-card-subtitle>{{ data | tileProp: 'Subtitle':parameters | bbbTranslate }}</h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{cursor:pointer}:host ::ng-deep .fd-card__badge-container{z-index:4}:host.InlineCards fd-card-main-header>div{border:none}fd-card.hassize fd-card-media{padding:.3rem .5rem}fd-card.hassize fd-card-media ::ng-deep .fd-card__media-image-container{justify-content:center}fd-card.hassize fd-card-main-header ::ng-deep .fd-card__header-main{border:none;padding:0}fd-card.hassize fd-card-main-header ::ng-deep .fd-card__header-main .fd-card__title-area{justify-content:center}fd-card.hassize fd-card-main-header ::ng-deep h2,fd-card.hassize fd-card-main-header ::ng-deep h3{-webkit-line-clamp:1;text-align:center}fd-card.hassize fd-card-main-header ::ng-deep h2{font-size:.8rem}fd-card.hassize fd-card-main-header ::ng-deep h3{font-size:.7rem}fd-card.custom-background fd-card-media{background-color:transparent}fd-card.custom-background ::ng-deep .fd-card__header-main{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$1.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$1.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$1.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i2$1.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i2$1.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i2$1.CardMediaComponent, selector: "fd-card-media", inputs: ["ariaRoleDescription", "hasPadding", "shellColor", "legendColor"] }, { kind: "directive", type: i2$1.CardMediaImageDirective, selector: "[fd-card-media-image]" }, { kind: "directive", type: i2$1.CardMediaImageContainerDirective, selector: "[fd-card-media-image-container]" }, { kind: "component", type: i3.BarsaImgSkeletonComponent, selector: "bsu-barsa-img-skeleton", inputs: ["title", "size", "imageUrl", "widthFull"] }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i5.CardMediaSizePipe, name: "cardMediaSize" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4235
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: CardTileComponent, isStandalone: false, selector: "bt-card-tile", usesInheritance: true, ngImport: i0, template: "<fd-card\r\n (click)=\"onTileClick()\"\r\n tileDynCommand\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"data | tileProp: 'Title':parameters | bbbTranslate\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [badge]=\"data | tileProp: 'Badge':parameters | bbbTranslate\"\r\n [ngClass]=\"groupType\"\r\n [interactive]=\"true\"\r\n [class.hassize]=\"cardMediaSize\"\r\n [style.background-color]=\"backgroundColor ? backgroundColor : null\"\r\n [class.custom-background]=\"backgroundColor\"\r\n>\r\n <fd-card-media>\r\n <div fd-card-media-image-container>\r\n <bsu-barsa-img-skeleton\r\n fd-card-media-image\r\n [title]=\"data | tileProp: 'Title':parameters | bbbTranslate\"\r\n [imageUrl]=\"data | tileProp: 'Picture':parameters | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n [size]=\"cardMediaSize | cardMediaSize: 160\"\r\n [widthFull]=\"!cardMediaSize\"\r\n ></bsu-barsa-img-skeleton>\r\n <!-- <fd-skeleton [style.display]=\"!hideSkeleton() ? null:'none'\" type=\"rectangle\" width=\"100%\" height=\"160px\"></fd-skeleton>\r\n <img\r\n fd-card-media-image\r\n [src]=\"data | tileProp: 'Picture':parameters | picFieldSrc: 'GetPictureFromFileInfo':null\"\r\n [alt]=\"data | tileProp: 'Title':parameters\"\r\n style=\"max-height: 160px\"\r\n [style.display]=\"!hideSkeleton() ? 'none':null\"\r\n (load)=\"hideSkeleton.set(true)\"\r\n /> -->\r\n </div>\r\n </fd-card-media>\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n <h2 fd-card-title>{{ data | tileProp: 'Title':parameters | bbbTranslate }}</h2>\r\n <h3 fd-card-subtitle>{{ data | tileProp: 'Subtitle':parameters | bbbTranslate }}</h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n</fd-card>\r\n", styles: [":host{cursor:pointer}:host ::ng-deep .fd-card__badge-container{z-index:4}:host.InlineCards fd-card-main-header>div{border:none}fd-card.hassize fd-card-media{padding:.3rem .5rem}fd-card.hassize fd-card-media ::ng-deep .fd-card__media-image-container{justify-content:center}fd-card.hassize fd-card-main-header ::ng-deep .fd-card__header-main{border:none;padding:0}fd-card.hassize fd-card-main-header ::ng-deep .fd-card__header-main .fd-card__title-area{justify-content:center}fd-card.hassize fd-card-main-header ::ng-deep h2,fd-card.hassize fd-card-main-header ::ng-deep h3{-webkit-line-clamp:1;text-align:center}fd-card.hassize fd-card-main-header ::ng-deep h2{font-size:.8rem}fd-card.hassize fd-card-main-header ::ng-deep h3{font-size:.7rem}fd-card.custom-background fd-card-media{background-color:transparent}fd-card.custom-background ::ng-deep .fd-card__header-main{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$2.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i2$2.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i2$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i2$2.CardMediaComponent, selector: "fd-card-media", inputs: ["ariaRoleDescription", "hasPadding", "shellColor", "legendColor"] }, { kind: "directive", type: i2$2.CardMediaImageDirective, selector: "[fd-card-media-image]" }, { kind: "directive", type: i2$2.CardMediaImageContainerDirective, selector: "[fd-card-media-image-container]" }, { kind: "component", type: i3.BarsaImgSkeletonComponent, selector: "bsu-barsa-img-skeleton", inputs: ["title", "size", "imageUrl", "widthFull"] }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: i5.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i5.CardMediaSizePipe, name: "cardMediaSize" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3860
4236
  }
3861
4237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardTileComponent, decorators: [{
3862
4238
  type: Component,
@@ -4021,7 +4397,7 @@ const extendHomeRouter = [
4021
4397
  const routes = [];
4022
4398
  class BarsaTilesRoutingModule {
4023
4399
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4024
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesRoutingModule, imports: [i1$3.RouterModule], exports: [RouterModule] }); }
4400
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesRoutingModule, imports: [i1$5.RouterModule], exports: [RouterModule] }); }
4025
4401
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
4026
4402
  }
4027
4403
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesRoutingModule, decorators: [{
@@ -4161,7 +4537,8 @@ class BarsaTilesModule extends BaseModule {
4161
4537
  TileSizeDirective,
4162
4538
  TileDynamicCommandDirective,
4163
4539
  TileClassDirective, NotificationGroupComponent,
4164
- NotificationGroupHeaderComponent], imports: [CommonModule,
4540
+ NotificationGroupHeaderComponent,
4541
+ DynamicTileGroupComponent], imports: [CommonModule,
4165
4542
  FormsModule,
4166
4543
  RouterModule,
4167
4544
  ReactiveFormsModule,
@@ -4233,6 +4610,7 @@ class BarsaTilesModule extends BaseModule {
4233
4610
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaTilesModule, providers: [
4234
4611
  ...pipes,
4235
4612
  TilesService,
4613
+ TilesViewerService,
4236
4614
  AppFinderService,
4237
4615
  LowerCasePipe,
4238
4616
  provideAppInitializer(() => {
@@ -4305,6 +4683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
4305
4683
  providers: [
4306
4684
  ...pipes,
4307
4685
  TilesService,
4686
+ TilesViewerService,
4308
4687
  AppFinderService,
4309
4688
  LowerCasePipe,
4310
4689
  provideAppInitializer(() => {
@@ -4317,7 +4696,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
4317
4696
  ...pipes,
4318
4697
  ...directives,
4319
4698
  NotificationGroupComponent,
4320
- NotificationGroupHeaderComponent
4699
+ NotificationGroupHeaderComponent,
4700
+ DynamicTileGroupComponent
4321
4701
  ],
4322
4702
  exports: [...components]
4323
4703
  }]
@@ -4327,5 +4707,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
4327
4707
  * Generated bundle index. Do not edit.
4328
4708
  */
4329
4709
 
4330
- export { ActionItemComponent, ActionsLinkComponent, AppFinderAppListComponent, AppFinderComponent, AppFinderGroupComponent, BarsaPinAppComponent, BarsaShellbarComponent, BarsaTileGroupPageComponent, BarsaTileSidebarPageComponent, BarsaTilesModule, CardTileComponent, ChangeAppTileComponent, CreateAppGroupComponent, FeedTileComponent, FooterEditTileComponent, FooterTileComponent, FormAppFinderComponent, FormTileComponent, GroupTilesPipe, LogoTileComponent, MegamenuPipe, MicroTileChartAreaComponent, MicroTileChartBarComponent, MicroTileChartBulletComponent, MicroTileChartCircularComponent, MicroTileChartComparisonComponent, MicroTileChartLineComponent, MicroTileChartStackbarComponent, NewsTileComponent, NumericTileComponent, PinTileComponent, PopoverAppFinderComponent, ProfileTileComponent, ReportTileComponent, SemantiToButtonColorPipe, ShellbarComponent, SimpleTileComponent, SuggestionsCountFilterPipe, SuggestionsFilterPipe, TileClassDirective, TileComponent, TileHomeFilterPipe, TilePropPipe, TilesService, TilesViewerComponent, TilesViewerContainerComponent, TilesViewerGroupComponent, TilesViewerMegamenuComponent, TilesViewerService, addTilesPageSidebar };
4710
+ export { ActionItemComponent, ActionsLinkComponent, AppFinderAppListComponent, AppFinderComponent, AppFinderGroupComponent, BarsaPinAppComponent, BarsaShellbarComponent, BarsaTileGroupPageComponent, BarsaTileSidebarPageComponent, BarsaTilesModule, BaseBtTileComponent, BaseTileComponent, CardTileComponent, ChangeAppTileComponent, CreateAppGroupComponent, DynamicTileGroupComponent, FeedTileComponent, FooterEditTileComponent, FooterTileComponent, FormAppFinderComponent, FormTileComponent, GroupTilesPipe, LogoTileComponent, MegamenuPipe, MicroTileChartAreaComponent, MicroTileChartBarComponent, MicroTileChartBulletComponent, MicroTileChartCircularComponent, MicroTileChartComparisonComponent, MicroTileChartLineComponent, MicroTileChartStackbarComponent, NewsTileComponent, NumericTileComponent, PinTileComponent, PopoverAppFinderComponent, ProfileTileComponent, ReportTileComponent, SemantiToButtonColorPipe, ShellbarComponent, SimpleTileComponent, SuggestionsCountFilterPipe, SuggestionsFilterPipe, TileClassDirective, TileComponent, TileHomeFilterPipe, TilePropPipe, TilesService, TilesViewerComponent, TilesViewerContainerComponent, TilesViewerGroupComponent, TilesViewerMegamenuComponent, TilesViewerService, addTilesPageSidebar };
4331
4711
  //# sourceMappingURL=barsa-tiles.mjs.map