barsa-tiles 3.0.11 → 3.0.13

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, inject, Injectable, DestroyRef, NgZone, ChangeDetectionStrategy, Component, EventEmitter, Output, Input, Directive, ChangeDetectorRef, ViewContainerRef, HostListener, ViewChild, ElementRef, Pipe, HostBinding, Injector, EnvironmentInjector, input, Renderer2, TemplateRef, DOCUMENT, NgModule, provideAppInitializer, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { signal, computed, inject, Injectable, DestroyRef, NgZone, ChangeDetectionStrategy, Component, EventEmitter, Output, Input, Directive, ChangeDetectorRef, ViewContainerRef, HostListener, Pipe, ViewChild, ElementRef, HostBinding, Injector, EnvironmentInjector, input, Renderer2, TemplateRef, DOCUMENT, NgModule, provideAppInitializer, NO_ERRORS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from 'barsa-novin-ray-core';
4
4
  import { BarsaApi, BbbTranslatePipe, PortalService, TilePropsComponent, BaseComponent, BaseDirective, IsDarkMode, LocalStorageService, PreventDefaulEvent, hhmmToMs, ScrollLayoutContextHolder, getDeviceIsMobile, BaseController, BaseDynamicComponent, SaveScrollPositionService, ExecuteDynamicCommand, ShellbarHeightService, ViewBase, EnumCaptionPipe, ReportContainerComponent, GroupByService, APP_VERSION, FavoriteItemsService, resolveShellbarLogo, bodyClick, 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';
@@ -739,6 +739,8 @@ class TilesService {
739
739
  appTiles.MoDataList.forEach((element) => {
740
740
  element.Component = element.A_App_Component ?? element.A_AppTile_App_Component;
741
741
  element.DynamicCommand = element.A_App_DynamicCommand ?? element.A_AppTile_App_DynamicCommand;
742
+ element.DisableDynamicCommand =
743
+ element.A_App_DisableDynamicCommand ?? element.A_AppTile_App_DisableDynamicCommand;
742
744
  element.Predefined = element.Predefined ?? element.A_AppTile_Predefined;
743
745
  });
744
746
  return { ...appTilegroup, $TilesLoaded: true, AppTiles: appTiles };
@@ -1015,6 +1017,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1015
1017
  args: ['click', ['$event']]
1016
1018
  }] } });
1017
1019
 
1020
+ class TilePropPipe {
1021
+ transform(data, prop, parameters) {
1022
+ if (data) {
1023
+ if (prop === 'Title') {
1024
+ let val = data.TileTitle;
1025
+ if (!val) {
1026
+ val = BarsaApi.Common.Util.TryGetValue(data, 'Component.Settings.TileSetting.Title', '');
1027
+ }
1028
+ if (!val) {
1029
+ val = BarsaApi.Common.Util.TryGetValue(data, 'Title', '');
1030
+ }
1031
+ return val;
1032
+ }
1033
+ if (prop === 'Subtitle') {
1034
+ let val = data.Subtitle;
1035
+ if (!val) {
1036
+ val = BarsaApi.Common.Util.TryGetValue(data, 'Component.Settings.TileSetting.Subtitle', '');
1037
+ }
1038
+ if (!val) {
1039
+ val = BarsaApi.Common.Util.TryGetValue(data, 'Subtitle', '');
1040
+ }
1041
+ return val;
1042
+ }
1043
+ if (prop === 'DynamicCommand') {
1044
+ return data['DynamicCommand'];
1045
+ }
1046
+ if (prop === 'DisableDynamicCommand') {
1047
+ // App.DisableDynamicCommand lives on the tile data row, not in Component.Settings
1048
+ const val = data.DisableDynamicCommand ??
1049
+ data.A_App_DisableDynamicCommand ??
1050
+ data.A_AppTile_App_DisableDynamicCommand;
1051
+ return val === true;
1052
+ }
1053
+ if (data.Component && data.Component.Settings) {
1054
+ const val = data.Component.Settings.TileSetting[prop];
1055
+ if (typeof val === 'undefined') {
1056
+ return data.Component.Settings[prop];
1057
+ }
1058
+ return val;
1059
+ }
1060
+ return '';
1061
+ }
1062
+ return parameters ? parameters.TileSetting[prop] : '';
1063
+ }
1064
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1065
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, isStandalone: false, name: "tileProp" }); }
1066
+ }
1067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, decorators: [{
1068
+ type: Pipe,
1069
+ args: [{
1070
+ name: 'tileProp',
1071
+ standalone: false
1072
+ }]
1073
+ }] });
1074
+
1018
1075
  class TileComponent extends TilePropsComponent {
1019
1076
  constructor() {
1020
1077
  super(...arguments);
@@ -1028,11 +1085,11 @@ class TileComponent extends TilePropsComponent {
1028
1085
  this._footer?.markUpdated();
1029
1086
  }
1030
1087
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1031
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: TileComponent, isStandalone: false, selector: "bt-tile", inputs: { type: "type", footerTemplate: "footerTemplate", footer: "footer", title: "title", icon: "icon", subtitle: "subtitle", isDouble: "isDouble", canReload: "canReload", showUpdateTime: "showUpdateTime", darkMode: "darkMode", disableClick: "disableClick", edit: "edit", dynamicCommand: "dynamicCommand", backColor: "backColor", hideHeader: "hideHeader", setToStorage: "setToStorage", listMode: "listMode", navigateBackOnClick: "navigateBackOnClick", contentOnly: "contentOnly" }, outputs: { changeGroupClick: "changeGroupClick", reloadClick: "reloadClick" }, viewQueries: [{ propertyName: "_footer", first: true, predicate: FooterTileComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if(!listMode) {\r\n<fd-tile\r\n [type]=\"type\"\r\n [double]=\"isDouble === true\"\r\n [action]=\"edit\"\r\n tileStyle\r\n [backColor]=\"darkMode ? '' : backColor\"\r\n [size]=\"'s'\"\r\n tileDynCommand\r\n [disableClick]=\"disableClick\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"title\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"dynamicCommand\"\r\n [class.bt-tile--content-only]=\"contentOnly\"\r\n [class.bt-tile--content-only-edit]=\"contentOnly && edit\"\r\n>\r\n @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n } @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n } @if(!hideHeader && !contentOnly){\r\n <div fd-tile-header>\r\n <h1 fd-tile-title [overflowText]=\"title | bbbTranslate\">\r\n {{ title | bbbTranslate }}\r\n </h1>\r\n <h2 fd-tile-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </h2>\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (!contentOnly) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate ? footerTemplate : defaultFooter\"></ng-container>\r\n }\r\n</fd-tile>\r\n}@else{\r\n<span fd-list-title> {{ title | bbbTranslate }} </span>\r\n<span fd-list-secondary> {{ subtitle | bbbTranslate }} </span>\r\n@if(icon){ <i fd-list-icon [glyph]=\"icon\"></i>} }\r\n<ng-template #defaultFooter>\r\n @if (footer) {\r\n <div\r\n fd-tile-footer\r\n bt-footer-tile\r\n [canReload]=\"canReload\"\r\n [showUpdateTime]=\"showUpdateTime\"\r\n [secondSection]=\"footer.SecondSection\"\r\n [twoColumn]=\"footer.twoColumn\"\r\n [firstSection]=\"footer.FirstSection\"\r\n (reloadClick)=\"reloadClick.emit()\"\r\n ></div>\r\n\r\n }\r\n</ng-template>\r\n<fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); changeGroupClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Groups' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n</fd-menu>\r\n", styles: [":host,fd-tile{display:block}fd-tile.bt-tile--content-only{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;max-height:none!important;min-height:0!important;min-width:0!important;overflow:visible;padding:0!important}fd-tile.bt-tile--content-only:hover,fd-tile.bt-tile--content-only:active,fd-tile.bt-tile--content-only.is-hover,fd-tile.bt-tile--content-only.is-active{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;box-shadow:none!important}fd-tile.bt-tile--content-only ::ng-deep .fd-tile__content{margin:0!important;max-height:none!important;min-height:0!important;padding:0!important}fd-tile.bt-tile--content-only-edit{outline:var(--sapContent_FocusWidth, .0625rem) dashed var(--sapContent_FocusColor, #0070f2);outline-offset:calc(-1 * var(--sapContent_FocusWidth, .0625rem))}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i7.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i7.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["openOnHoverTime", "ariaLabel", "ariaLabelledby", "id", "config", "mobile", "mobileConfig", "placement", "closeOnEscapeKey", "focusAutoCapture", "disabled", "disableScrollbar", "triggers", "fillControlMode", "closeOnOutsideClick", "noArrow", "focusTrapped", "additionalBodyClass", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "scrollStrategy", "isOpen"], outputs: ["isOpenChange", "activePath", "beforeOpen"] }, { 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.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i4.MenuTitleDirective, selector: "[fd-menu-title]", inputs: ["truncate"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i1$1.TileComponent, selector: "fd-tile, [fd-tile]", inputs: ["size", "double", "type", "action", "clickable", "role", "ariaLabel", "ariaLabelledby", "id"], outputs: ["tileClick"] }, { kind: "directive", type: i1$1.TileHeaderDirective, selector: "[fdTileHeader], [fd-tile-header]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileFooterDirective, selector: "[fdTileFooter], [fd-tile-footer]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileTitleDirective, selector: "[fdTileTitle], [fd-tile-title]" }, { kind: "directive", type: i1$1.TileSubtitleDirective, selector: "[fdTileTitle], [fd-tile-subtitle]" }, { kind: "directive", type: i1$1.TileActionCloseDirective, selector: "[fdTileActionClose], [fd-tile-action-close]" }, { kind: "directive", type: i1$1.TileActionIndicatorDirective, selector: "[fdTileActionIndicator], [fd-tile-action-indicator]" }, { kind: "directive", type: i5.OverflowTextDirective, selector: "[overflowText]", exportAs: ["overflowText"] }, { kind: "component", type: FooterTileComponent, selector: "bt-footer-tile,div[bt-footer-tile]", inputs: ["firstSection", "secondSection", "twoColumn", "canReload", "showUpdateTime"], outputs: ["reloadClick"] }, { kind: "directive", type: TileStyleDirective, selector: "[tileStyle]", inputs: ["backColor"] }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1088
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: TileComponent, isStandalone: false, selector: "bt-tile", inputs: { type: "type", footerTemplate: "footerTemplate", footer: "footer", title: "title", icon: "icon", subtitle: "subtitle", isDouble: "isDouble", canReload: "canReload", showUpdateTime: "showUpdateTime", darkMode: "darkMode", disableClick: "disableClick", edit: "edit", dynamicCommand: "dynamicCommand", backColor: "backColor", hideHeader: "hideHeader", setToStorage: "setToStorage", listMode: "listMode", navigateBackOnClick: "navigateBackOnClick", contentOnly: "contentOnly" }, outputs: { changeGroupClick: "changeGroupClick", reloadClick: "reloadClick" }, viewQueries: [{ propertyName: "_footer", first: true, predicate: FooterTileComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if(!listMode) {\r\n<fd-tile\r\n [type]=\"type\"\r\n [double]=\"isDouble === true\"\r\n [action]=\"edit\"\r\n tileStyle\r\n [backColor]=\"darkMode ? '' : backColor\"\r\n [size]=\"'s'\"\r\n tileDynCommand\r\n [disableClick]=\"disableClick || (data | tileProp: 'DisableDynamicCommand')\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"title\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"dynamicCommand\"\r\n [class.bt-tile--content-only]=\"contentOnly\"\r\n [class.bt-tile--content-only-edit]=\"contentOnly && edit\"\r\n>\r\n @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n } @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n } @if(!hideHeader && !contentOnly){\r\n <div fd-tile-header>\r\n <h1 fd-tile-title [overflowText]=\"title | bbbTranslate\">\r\n {{ title | bbbTranslate }}\r\n </h1>\r\n <h2 fd-tile-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </h2>\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (!contentOnly) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate ? footerTemplate : defaultFooter\"></ng-container>\r\n }\r\n</fd-tile>\r\n}@else{\r\n<span fd-list-title> {{ title | bbbTranslate }} </span>\r\n<span fd-list-secondary> {{ subtitle | bbbTranslate }} </span>\r\n@if(icon){ <i fd-list-icon [glyph]=\"icon\"></i>} }\r\n<ng-template #defaultFooter>\r\n @if (footer) {\r\n <div\r\n fd-tile-footer\r\n bt-footer-tile\r\n [canReload]=\"canReload\"\r\n [showUpdateTime]=\"showUpdateTime\"\r\n [secondSection]=\"footer.SecondSection\"\r\n [twoColumn]=\"footer.twoColumn\"\r\n [firstSection]=\"footer.FirstSection\"\r\n (reloadClick)=\"reloadClick.emit()\"\r\n ></div>\r\n\r\n }\r\n</ng-template>\r\n<fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); changeGroupClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Groups' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n</fd-menu>\r\n", styles: [":host,fd-tile{display:block}fd-tile.bt-tile--content-only{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;max-height:none!important;min-height:0!important;min-width:0!important;overflow:visible;padding:0!important}fd-tile.bt-tile--content-only:hover,fd-tile.bt-tile--content-only:active,fd-tile.bt-tile--content-only.is-hover,fd-tile.bt-tile--content-only.is-active{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;box-shadow:none!important}fd-tile.bt-tile--content-only ::ng-deep .fd-tile__content{margin:0!important;max-height:none!important;min-height:0!important;padding:0!important}fd-tile.bt-tile--content-only-edit{outline:var(--sapContent_FocusWidth, .0625rem) dashed var(--sapContent_FocusColor, #0070f2);outline-offset:calc(-1 * var(--sapContent_FocusWidth, .0625rem))}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i7.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i7.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["openOnHoverTime", "ariaLabel", "ariaLabelledby", "id", "config", "mobile", "mobileConfig", "placement", "closeOnEscapeKey", "focusAutoCapture", "disabled", "disableScrollbar", "triggers", "fillControlMode", "closeOnOutsideClick", "noArrow", "focusTrapped", "additionalBodyClass", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "scrollStrategy", "isOpen"], outputs: ["isOpenChange", "activePath", "beforeOpen"] }, { 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.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i4.MenuTitleDirective, selector: "[fd-menu-title]", inputs: ["truncate"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i1$1.TileComponent, selector: "fd-tile, [fd-tile]", inputs: ["size", "double", "type", "action", "clickable", "role", "ariaLabel", "ariaLabelledby", "id"], outputs: ["tileClick"] }, { kind: "directive", type: i1$1.TileHeaderDirective, selector: "[fdTileHeader], [fd-tile-header]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileFooterDirective, selector: "[fdTileFooter], [fd-tile-footer]", inputs: ["twoColumn"] }, { kind: "directive", type: i1$1.TileTitleDirective, selector: "[fdTileTitle], [fd-tile-title]" }, { kind: "directive", type: i1$1.TileSubtitleDirective, selector: "[fdTileTitle], [fd-tile-subtitle]" }, { kind: "directive", type: i1$1.TileActionCloseDirective, selector: "[fdTileActionClose], [fd-tile-action-close]" }, { kind: "directive", type: i1$1.TileActionIndicatorDirective, selector: "[fdTileActionIndicator], [fd-tile-action-indicator]" }, { kind: "directive", type: i5.OverflowTextDirective, selector: "[overflowText]", exportAs: ["overflowText"] }, { kind: "component", type: FooterTileComponent, selector: "bt-footer-tile,div[bt-footer-tile]", inputs: ["firstSection", "secondSection", "twoColumn", "canReload", "showUpdateTime"], outputs: ["reloadClick"] }, { kind: "directive", type: TileStyleDirective, selector: "[tileStyle]", inputs: ["backColor"] }, { kind: "directive", type: TileDynamicCommandDirective, selector: "[tileDynCommand]", inputs: ["disableClick", "edit", "dynamicCommand", "title", "setToStorage", "navigateBackOnClick"] }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1032
1089
  }
1033
1090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TileComponent, decorators: [{
1034
1091
  type: Component,
1035
- args: [{ selector: 'bt-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if(!listMode) {\r\n<fd-tile\r\n [type]=\"type\"\r\n [double]=\"isDouble === true\"\r\n [action]=\"edit\"\r\n tileStyle\r\n [backColor]=\"darkMode ? '' : backColor\"\r\n [size]=\"'s'\"\r\n tileDynCommand\r\n [disableClick]=\"disableClick\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"title\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"dynamicCommand\"\r\n [class.bt-tile--content-only]=\"contentOnly\"\r\n [class.bt-tile--content-only-edit]=\"contentOnly && edit\"\r\n>\r\n @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n } @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n } @if(!hideHeader && !contentOnly){\r\n <div fd-tile-header>\r\n <h1 fd-tile-title [overflowText]=\"title | bbbTranslate\">\r\n {{ title | bbbTranslate }}\r\n </h1>\r\n <h2 fd-tile-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </h2>\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (!contentOnly) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate ? footerTemplate : defaultFooter\"></ng-container>\r\n }\r\n</fd-tile>\r\n}@else{\r\n<span fd-list-title> {{ title | bbbTranslate }} </span>\r\n<span fd-list-secondary> {{ subtitle | bbbTranslate }} </span>\r\n@if(icon){ <i fd-list-icon [glyph]=\"icon\"></i>} }\r\n<ng-template #defaultFooter>\r\n @if (footer) {\r\n <div\r\n fd-tile-footer\r\n bt-footer-tile\r\n [canReload]=\"canReload\"\r\n [showUpdateTime]=\"showUpdateTime\"\r\n [secondSection]=\"footer.SecondSection\"\r\n [twoColumn]=\"footer.twoColumn\"\r\n [firstSection]=\"footer.FirstSection\"\r\n (reloadClick)=\"reloadClick.emit()\"\r\n ></div>\r\n\r\n }\r\n</ng-template>\r\n<fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); changeGroupClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Groups' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n</fd-menu>\r\n", styles: [":host,fd-tile{display:block}fd-tile.bt-tile--content-only{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;max-height:none!important;min-height:0!important;min-width:0!important;overflow:visible;padding:0!important}fd-tile.bt-tile--content-only:hover,fd-tile.bt-tile--content-only:active,fd-tile.bt-tile--content-only.is-hover,fd-tile.bt-tile--content-only.is-active{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;box-shadow:none!important}fd-tile.bt-tile--content-only ::ng-deep .fd-tile__content{margin:0!important;max-height:none!important;min-height:0!important;padding:0!important}fd-tile.bt-tile--content-only-edit{outline:var(--sapContent_FocusWidth, .0625rem) dashed var(--sapContent_FocusColor, #0070f2);outline-offset:calc(-1 * var(--sapContent_FocusWidth, .0625rem))}\n"] }]
1092
+ args: [{ selector: 'bt-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if(!listMode) {\r\n<fd-tile\r\n [type]=\"type\"\r\n [double]=\"isDouble === true\"\r\n [action]=\"edit\"\r\n tileStyle\r\n [backColor]=\"darkMode ? '' : backColor\"\r\n [size]=\"'s'\"\r\n tileDynCommand\r\n [disableClick]=\"disableClick || (data | tileProp: 'DisableDynamicCommand')\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [title]=\"title\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"dynamicCommand\"\r\n [class.bt-tile--content-only]=\"contentOnly\"\r\n [class.bt-tile--content-only-edit]=\"contentOnly && edit\"\r\n>\r\n @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-close fdType=\"transparent\" (click)=\"hideClick.emit()\"></button>\r\n } @if (edit && !data.Locked) {\r\n <button fd-button fd-tile-action-indicator fdType=\"transparent\" [fdMenuTrigger]=\"menu\"></button>\r\n } @if(!hideHeader && !contentOnly){\r\n <div fd-tile-header>\r\n <h1 fd-tile-title [overflowText]=\"title | bbbTranslate\">\r\n {{ title | bbbTranslate }}\r\n </h1>\r\n <h2 fd-tile-subtitle>\r\n {{ subtitle | bbbTranslate }}\r\n </h2>\r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (!contentOnly) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate ? footerTemplate : defaultFooter\"></ng-container>\r\n }\r\n</fd-tile>\r\n}@else{\r\n<span fd-list-title> {{ title | bbbTranslate }} </span>\r\n<span fd-list-secondary> {{ subtitle | bbbTranslate }} </span>\r\n@if(icon){ <i fd-list-icon [glyph]=\"icon\"></i>} }\r\n<ng-template #defaultFooter>\r\n @if (footer) {\r\n <div\r\n fd-tile-footer\r\n bt-footer-tile\r\n [canReload]=\"canReload\"\r\n [showUpdateTime]=\"showUpdateTime\"\r\n [secondSection]=\"footer.SecondSection\"\r\n [twoColumn]=\"footer.twoColumn\"\r\n [firstSection]=\"footer.FirstSection\"\r\n (reloadClick)=\"reloadClick.emit()\"\r\n ></div>\r\n\r\n }\r\n</ng-template>\r\n<fd-menu #menu>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); renameClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Rename' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item>\r\n <a (click)=\"menu.close(); changeGroupClick.emit()\" fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Groups' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n</fd-menu>\r\n", styles: [":host,fd-tile{display:block}fd-tile.bt-tile--content-only{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;max-height:none!important;min-height:0!important;min-width:0!important;overflow:visible;padding:0!important}fd-tile.bt-tile--content-only:hover,fd-tile.bt-tile--content-only:active,fd-tile.bt-tile--content-only.is-hover,fd-tile.bt-tile--content-only.is-active{--fdTile_Background: transparent;--fdTile_Border: transparent;--fdTile_Box_Shadow: none;background:transparent!important;border:0!important;box-shadow:none!important}fd-tile.bt-tile--content-only ::ng-deep .fd-tile__content{margin:0!important;max-height:none!important;min-height:0!important;padding:0!important}fd-tile.bt-tile--content-only-edit{outline:var(--sapContent_FocusWidth, .0625rem) dashed var(--sapContent_FocusColor, #0070f2);outline-offset:calc(-1 * var(--sapContent_FocusWidth, .0625rem))}\n"] }]
1036
1093
  }], propDecorators: { type: [{
1037
1094
  type: Input
1038
1095
  }], footerTemplate: [{
@@ -1179,78 +1236,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1179
1236
  ;
1180
1237
  ;
1181
1238
 
1182
- class TilePropPipe {
1183
- transform(data, prop, parameters) {
1184
- if (data) {
1185
- if (prop === 'Title') {
1186
- let val = data.TileTitle;
1187
- if (!val) {
1188
- val = BarsaApi.Common.Util.TryGetValue(data, 'Component.Settings.TileSetting.Title', '');
1189
- }
1190
- if (!val) {
1191
- val = BarsaApi.Common.Util.TryGetValue(data, 'Title', '');
1192
- }
1193
- return val;
1194
- }
1195
- if (prop === 'Subtitle') {
1196
- let val = data.Subtitle;
1197
- if (!val) {
1198
- val = BarsaApi.Common.Util.TryGetValue(data, 'Component.Settings.TileSetting.Subtitle', '');
1199
- }
1200
- if (!val) {
1201
- val = BarsaApi.Common.Util.TryGetValue(data, 'Subtitle', '');
1202
- }
1203
- return val;
1204
- }
1205
- if (prop === 'DynamicCommand') {
1206
- return data['DynamicCommand'];
1207
- }
1208
- if (data.Component && data.Component.Settings) {
1209
- const val = data.Component.Settings.TileSetting[prop];
1210
- if (typeof val === 'undefined') {
1211
- return data.Component.Settings[prop];
1212
- }
1213
- return val;
1214
- }
1215
- return '';
1216
- }
1217
- return parameters ? parameters.TileSetting[prop] : '';
1218
- }
1219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1220
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, isStandalone: false, name: "tileProp" }); }
1221
- }
1222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilePropPipe, decorators: [{
1223
- type: Pipe,
1224
- args: [{
1225
- name: 'tileProp',
1226
- standalone: false
1227
- }]
1228
- }] });
1229
-
1230
1239
  class FormTileComponent extends BaseBtTileComponent {
1231
1240
  ngOnInit() {
1232
1241
  super.ngOnInit();
1233
- const options = {
1234
- Parameters: [],
1235
- Method: this.settings.RunBlMethod,
1236
- SuccessFn: (mo) => {
1237
- this.params = {
1238
- moId: mo.$State === 'New' ? '0' : mo.Id,
1239
- typeDefId: this.settings.TypeDef.Id,
1240
- viewId: this.settings.TypeViewEntity.Id
1241
- };
1242
- this._cdr.detectChanges();
1243
- },
1244
- FailFn: () => { }
1242
+ this.params = {
1243
+ moId: this.settings?.SelectedMo,
1244
+ typeDefId: this.settings.TypeDef.Id,
1245
+ viewId: this.settings.TypeViewEntity.Id,
1246
+ isSimple: true
1245
1247
  };
1246
- BarsaApi.Bw.RunBlMethodAsync(options);
1247
1248
  }
1248
1249
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FormTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FormTileComponent, isStandalone: false, selector: "bt-form-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [setToStorage]=\"setToStorage\"\r\n [listMode]=\"listMode\"\r\n [deviceSize]=\"deviceSize\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\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 [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (reloadClick)=\"reload()\"\r\n>\r\n <div fd-tile-content>\r\n @if (params) {\r\n <bnrc-form [params]=\"params\"></bnrc-form>\r\n }\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}bnrc-form{z-index:3}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i5.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "canReload", "showUpdateTime", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick", "contentOnly"], outputs: ["changeGroupClick", "reloadClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FormTileComponent, isStandalone: false, selector: "bt-form-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [setToStorage]=\"setToStorage\"\r\n [listMode]=\"listMode\"\r\n [deviceSize]=\"deviceSize\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\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 [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (reloadClick)=\"reload()\"\r\n>\r\n <div fd-tile-content>\r\n @if (params) {\r\n <bnrc-form [params]=\"params\"></bnrc-form>\r\n }\r\n </div>\r\n</bt-tile>\r\n", styles: ["bnrc-form{z-index:3}:host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i5.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "canReload", "showUpdateTime", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick", "contentOnly"], outputs: ["changeGroupClick", "reloadClick"] }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1250
1251
  }
1251
1252
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FormTileComponent, decorators: [{
1252
1253
  type: Component,
1253
- args: [{ selector: 'bt-form-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [setToStorage]=\"setToStorage\"\r\n [listMode]=\"listMode\"\r\n [deviceSize]=\"deviceSize\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\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 [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (reloadClick)=\"reload()\"\r\n>\r\n <div fd-tile-content>\r\n @if (params) {\r\n <bnrc-form [params]=\"params\"></bnrc-form>\r\n }\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}bnrc-form{z-index:3}\n"] }]
1254
+ args: [{ selector: 'bt-form-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [setToStorage]=\"setToStorage\"\r\n [listMode]=\"listMode\"\r\n [deviceSize]=\"deviceSize\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\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 [disableClick]=\"true\"\r\n (hideClick)=\"hideClick.emit()\"\r\n (renameClick)=\"renameClick.emit()\"\r\n (changeGroupClick)=\"changeGroupClick.emit()\"\r\n (reloadClick)=\"reload()\"\r\n>\r\n <div fd-tile-content>\r\n @if (params) {\r\n <bnrc-form [params]=\"params\"></bnrc-form>\r\n }\r\n </div>\r\n</bt-tile>\r\n", styles: ["bnrc-form{z-index:3}:host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"] }]
1254
1255
  }] });
1255
1256
 
1256
1257
  class TileGroupBaseComponent extends BaseComponent {
@@ -2800,6 +2801,13 @@ class TilesViewerContainerComponent extends ViewBase {
2800
2801
  get selectedAppGroupId() {
2801
2802
  return this.controller.selectedAppGroupId;
2802
2803
  }
2804
+ /** DisplayMode caption is stored with Arabic yeh (U+064A, 'تب بندي'); normalize it to Persian yeh before comparing. */
2805
+ get isTabMode() {
2806
+ const caption = (this.settings?.DisplayMode$Caption ?? '')
2807
+ .replace(/\u064A/g, '\u06CC')
2808
+ .replace(/[\s\u200C]/g, '');
2809
+ return caption === 'تببندی';
2810
+ }
2803
2811
  ngOnInit() {
2804
2812
  super.ngOnInit();
2805
2813
  }
@@ -2827,11 +2835,11 @@ class TilesViewerContainerComponent extends ViewBase {
2827
2835
  onRenameAppTile(appTile) { this.controller.onRenameAppTile(appTile); }
2828
2836
  onChangeGroupAppTile(appTile) { this.controller.onChangeGroupAppTile(appTile); }
2829
2837
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilesViewerContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2830
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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 }); }
2838
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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 isTabMode ? 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 }); }
2831
2839
  }
2832
2840
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
2833
2841
  type: Component,
2834
- 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"] }]
2842
+ 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 isTabMode ? 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"] }]
2835
2843
  }] });
2836
2844
 
2837
2845
  class MicroTileChartBulletComponent extends BaseBtTileComponent {
@@ -3378,11 +3386,11 @@ class ReportTileComponent extends BaseBtTileComponent {
3378
3386
  this.reportContainer.ReloadReport();
3379
3387
  }
3380
3388
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3381
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ReportTileComponent, isStandalone: false, selector: "bt-report-tile", host: { properties: { "style.width": "this._width", "style.height": "this._height" } }, viewQueries: [{ propertyName: "reportContainer", first: true, predicate: ReportContainerComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [contentOnly]=\"contentOnly\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [setToStorage]=\"setToStorage\"\r\n [disableClick]=\"(data | tileProp: 'A_App_DisableDynamicCommand':parameters) !== true ? true : false\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [listMode]=\"listMode\"\r\n [darkMode]=\"(isDark$ | async) === true\"\r\n [backColor]=\"backColor\"\r\n [deviceSize]=\"deviceSize\"\r\n [canReload]=\"data | tileProp: 'CanReload':parameters\"\r\n [showUpdateTime]=\"data | tileProp: 'ShowUpdateTime':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':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 (reloadClick)=\"onReloadClick()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-report-container [settings]=\"reportSettings()\"> </bnrc-report-container>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i5.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "canReload", "showUpdateTime", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick", "contentOnly"], outputs: ["changeGroupClick", "reloadClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3389
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ReportTileComponent, isStandalone: false, selector: "bt-report-tile", host: { properties: { "style.width": "this._width", "style.height": "this._height" } }, viewQueries: [{ propertyName: "reportContainer", first: true, predicate: ReportContainerComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [contentOnly]=\"contentOnly\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [listMode]=\"listMode\"\r\n [darkMode]=\"(isDark$ | async) === true\"\r\n [backColor]=\"backColor\"\r\n [deviceSize]=\"deviceSize\"\r\n [canReload]=\"data | tileProp: 'CanReload':parameters\"\r\n [showUpdateTime]=\"data | tileProp: 'ShowUpdateTime':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':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 (reloadClick)=\"onReloadClick()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-report-container [settings]=\"reportSettings()\"> </bnrc-report-container>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "component", type: i5.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "component", type: TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "title", "icon", "subtitle", "isDouble", "canReload", "showUpdateTime", "darkMode", "disableClick", "edit", "dynamicCommand", "backColor", "hideHeader", "setToStorage", "listMode", "navigateBackOnClick", "contentOnly"], outputs: ["changeGroupClick", "reloadClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3382
3390
  }
3383
3391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportTileComponent, decorators: [{
3384
3392
  type: Component,
3385
- args: [{ selector: 'bt-report-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [contentOnly]=\"contentOnly\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [setToStorage]=\"setToStorage\"\r\n [disableClick]=\"(data | tileProp: 'A_App_DisableDynamicCommand':parameters) !== true ? true : false\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [listMode]=\"listMode\"\r\n [darkMode]=\"(isDark$ | async) === true\"\r\n [backColor]=\"backColor\"\r\n [deviceSize]=\"deviceSize\"\r\n [canReload]=\"data | tileProp: 'CanReload':parameters\"\r\n [showUpdateTime]=\"data | tileProp: 'ShowUpdateTime':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':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 (reloadClick)=\"onReloadClick()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-report-container [settings]=\"reportSettings()\"> </bnrc-report-container>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"] }]
3393
+ args: [{ selector: 'bt-report-tile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bt-tile\r\n [data]=\"data\"\r\n [type]=\"'launch'\"\r\n [edit]=\"edit\"\r\n [navigateBackOnClick]=\"navigateBackOnClick\"\r\n [contentOnly]=\"contentOnly\"\r\n [title]=\"data | tileProp: 'Title':parameters\"\r\n [setToStorage]=\"setToStorage\"\r\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\r\n [listMode]=\"listMode\"\r\n [darkMode]=\"(isDark$ | async) === true\"\r\n [backColor]=\"backColor\"\r\n [deviceSize]=\"deviceSize\"\r\n [canReload]=\"data | tileProp: 'CanReload':parameters\"\r\n [showUpdateTime]=\"data | tileProp: 'ShowUpdateTime':parameters\"\r\n [subtitle]=\"data | tileProp: 'Subtitle':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 (reloadClick)=\"onReloadClick()\"\r\n>\r\n <div fd-tile-content>\r\n <bnrc-report-container [settings]=\"reportSettings()\"> </bnrc-report-container>\r\n </div>\r\n</bt-tile>\r\n", styles: [":host{display:block}:host bt-tile ::ng-deep>fd-tile{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}:host bt-tile ::ng-deep>fd-tile .fd-tile__content{max-width:100%!important;width:100%!important;height:auto;max-height:fit-content!important}\n"] }]
3386
3394
  }], propDecorators: { _width: [{
3387
3395
  type: HostBinding,
3388
3396
  args: ['style.width']
@@ -3422,6 +3430,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3422
3430
  class NotificationGroupComponent extends BaseComponent {
3423
3431
  constructor() {
3424
3432
  super();
3433
+ /** از تنظیمات شل‌بار سرور؛ وقتی true است فقط تب «By Date» نمایش داده می‌شود */
3434
+ this.dateGroupOnly = false;
3425
3435
  this._deviceSize = '';
3426
3436
  this.viewed = new EventEmitter();
3427
3437
  this.remove = new EventEmitter();
@@ -3434,6 +3444,7 @@ class NotificationGroupComponent extends BaseComponent {
3434
3444
  { label: 'By Type', title: 'Subject' },
3435
3445
  { label: 'By Priority', title: 'Priority' }
3436
3446
  ];
3447
+ this.visibleTabs = this.tabList;
3437
3448
  this.viewedNotifications = [];
3438
3449
  this.reportSetting = signal({
3439
3450
  RelatedReport: { Id: '0', $Caption: '' },
@@ -3464,7 +3475,10 @@ class NotificationGroupComponent extends BaseComponent {
3464
3475
  }
3465
3476
  ngOnChanges(changes) {
3466
3477
  super.ngOnChanges(changes);
3467
- const { notifications } = changes;
3478
+ const { notifications, dateGroupOnly } = changes;
3479
+ if (dateGroupOnly) {
3480
+ this._updateVisibleTabs();
3481
+ }
3468
3482
  if (notifications && !notifications.firstChange) {
3469
3483
  this._cdr.detectChanges();
3470
3484
  }
@@ -3495,12 +3509,24 @@ class NotificationGroupComponent extends BaseComponent {
3495
3509
  _trackByTitle(_index, _) {
3496
3510
  return _index;
3497
3511
  }
3512
+ _updateVisibleTabs() {
3513
+ const dateTab = this.tabList.find((tab) => tab.title === 'CreationDateOnly');
3514
+ if (this.dateGroupOnly === true && dateTab) {
3515
+ this.visibleTabs = [dateTab];
3516
+ if (this._selectedTab !== dateTab.title) {
3517
+ this._selectedTab = dateTab.title;
3518
+ this._setGroupBy();
3519
+ }
3520
+ return;
3521
+ }
3522
+ this.visibleTabs = this.tabList;
3523
+ }
3498
3524
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NotificationGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3499
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NotificationGroupComponent, isStandalone: false, selector: "bt-notification-group", inputs: { notifications: "notifications", loading: "loading", deviceSize: "deviceSize", notificationCount: "notificationCount", notificationReport: "notificationReport" }, outputs: { viewed: "viewed", remove: "remove", actionClick: "actionClick", showEvent: "showEvent", loadMore: "loadMore" }, host: { properties: { "class": "this._deviceSize" } }, providers: [GroupByService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fdp-icon-tab-bar\r\n size=\"s\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n>\r\n @for (tab of tabList; track tab.label; let index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.label | bbbTranslate\" [title]=\"tab.label | bbbTranslate\" [id]=\"tab.title\">\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n</fdp-icon-tab-bar>\r\n@if(reportSetting() !==null){\r\n<bnrc-report-container [settings]=\"reportSetting()\"> </bnrc-report-container>\r\n}", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}fdp-icon-tab-bar ::ng-deep>div>fdp-icon-tab-bar-text-type>ul{padding:0 .5rem}\n"], dependencies: [{ 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.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "directive", type: i3.FixMoreDirective, selector: "[fixMore]" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3525
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NotificationGroupComponent, isStandalone: false, selector: "bt-notification-group", inputs: { notifications: "notifications", loading: "loading", deviceSize: "deviceSize", notificationCount: "notificationCount", notificationReport: "notificationReport", dateGroupOnly: "dateGroupOnly" }, outputs: { viewed: "viewed", remove: "remove", actionClick: "actionClick", showEvent: "showEvent", loadMore: "loadMore" }, host: { properties: { "class": "this._deviceSize" } }, providers: [GroupByService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fdp-icon-tab-bar\r\n size=\"s\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n>\r\n @for (tab of visibleTabs; track tab.label; let index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.label | bbbTranslate\" [title]=\"tab.label | bbbTranslate\" [id]=\"tab.title\">\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n</fdp-icon-tab-bar>\r\n@if(reportSetting() !==null){\r\n<bnrc-report-container [settings]=\"reportSetting()\"> </bnrc-report-container>\r\n}", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}fdp-icon-tab-bar ::ng-deep>div>fdp-icon-tab-bar-text-type>ul{padding:0 .5rem}\n"], dependencies: [{ 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.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "directive", type: i3.FixMoreDirective, selector: "[fixMore]" }, { kind: "pipe", type: i5.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3500
3526
  }
3501
3527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NotificationGroupComponent, decorators: [{
3502
3528
  type: Component,
3503
- args: [{ selector: 'bt-notification-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, providers: [GroupByService], template: "<fdp-icon-tab-bar\r\n size=\"s\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n>\r\n @for (tab of tabList; track tab.label; let index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.label | bbbTranslate\" [title]=\"tab.label | bbbTranslate\" [id]=\"tab.title\">\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n</fdp-icon-tab-bar>\r\n@if(reportSetting() !==null){\r\n<bnrc-report-container [settings]=\"reportSetting()\"> </bnrc-report-container>\r\n}", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}fdp-icon-tab-bar ::ng-deep>div>fdp-icon-tab-bar-text-type>ul{padding:0 .5rem}\n"] }]
3529
+ args: [{ selector: 'bt-notification-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, providers: [GroupByService], template: "<fdp-icon-tab-bar\r\n size=\"s\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n fixMore\r\n>\r\n @for (tab of visibleTabs; track tab.label; let index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.label | bbbTranslate\" [title]=\"tab.label | bbbTranslate\" [id]=\"tab.title\">\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n</fdp-icon-tab-bar>\r\n@if(reportSetting() !==null){\r\n<bnrc-report-container [settings]=\"reportSetting()\"> </bnrc-report-container>\r\n}", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}fdp-icon-tab-bar ::ng-deep>div>fdp-icon-tab-bar-text-type>ul{padding:0 .5rem}\n"] }]
3504
3530
  }], ctorParameters: () => [], propDecorators: { notifications: [{
3505
3531
  type: Input
3506
3532
  }], loading: [{
@@ -3511,6 +3537,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3511
3537
  type: Input
3512
3538
  }], notificationReport: [{
3513
3539
  type: Input
3540
+ }], dateGroupOnly: [{
3541
+ type: Input
3514
3542
  }], _deviceSize: [{
3515
3543
  type: HostBinding,
3516
3544
  args: ['class']
@@ -3535,17 +3563,19 @@ class SuggestionsFilterPipe {
3535
3563
  if (!suggestions || !suggestions.length) {
3536
3564
  return [];
3537
3565
  }
3566
+ // نتایج hidden (گره‌های عمق ۱ ناوبر) در همه‌ی شاخه‌ها کنار گذاشته می‌شوند تا طول فهرست با عدد chip یکی باشد.
3567
+ const visible = suggestions.filter((c) => !c.data.hidden);
3538
3568
  switch (filterType) {
3539
3569
  case 'subsystem':
3540
- return suggestions.filter((c) => c.data.original.IsRoot);
3570
+ return visible.filter((c) => c.data.original.IsRoot);
3541
3571
  case 'navgroup':
3542
- return suggestions.filter((c) => !c.data.original.IsRoot && c.data.source === 'Navigator');
3572
+ return visible.filter((c) => !c.data.original.IsRoot && c.data.source === 'Navigator');
3543
3573
  case 'report':
3544
- return suggestions.filter((c) => !c.data.original.IsRoot && c.data.source === 'Report');
3574
+ return visible.filter((c) => !c.data.original.IsRoot && c.data.source === 'Report');
3545
3575
  case 'command':
3546
- return suggestions.filter((c) => c.data.source === 'Command');
3576
+ return visible.filter((c) => c.data.source === 'Command');
3547
3577
  }
3548
- return suggestions.filter((c) => !c.data.hidden);
3578
+ return visible;
3549
3579
  }
3550
3580
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SuggestionsFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3551
3581
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: SuggestionsFilterPipe, isStandalone: false, name: "suggestionsFilter" }); }
@@ -3619,6 +3649,9 @@ class BarsaShellbarComponent extends BaseComponent {
3619
3649
  this.openQuickAccessPanel = new EventEmitter();
3620
3650
  this.cultureChanged = new EventEmitter();
3621
3651
  this.notifiationActionClick = new EventEmitter();
3652
+ /** گروه فعال فیلتر نتایج جستجو؛ `null` یعنی «همه». signal است تا view داخل dialog (OnPush) رفرش شود. */
3653
+ this.selectedSuggestionFilter = signal(null, /* @ts-ignore */
3654
+ ...(ngDevMode ? [{ debugName: "selectedSuggestionFilter" }] : /* istanbul ignore next */ []));
3622
3655
  this.isOpenNotificatoin = false;
3623
3656
  this.expanded = false;
3624
3657
  this.searchTerms = ['مرخصی', 'ماموریت', 'تیکت', 'پروژه'];
@@ -3703,7 +3736,20 @@ class BarsaShellbarComponent extends BaseComponent {
3703
3736
  const x = this._portalService.DefaultPage;
3704
3737
  this._router.navigateByUrl(`${x?.Route ?? ''}/search?term=` + e.text);
3705
3738
  }
3739
+ /**
3740
+ * کلیک روی chip گروه: `'all'` فیلتر را پاک می‌کند، کلیک دوباره روی گروه فعال هم همین‌طور،
3741
+ * و گروه دیگر جای گروه فعلی را می‌گیرد (تک‌انتخابی).
3742
+ */
3743
+ onSuggestionFilterClick(filter) {
3744
+ if (filter === 'all' || this.selectedSuggestionFilter() === filter) {
3745
+ this.selectedSuggestionFilter.set(null);
3746
+ return;
3747
+ }
3748
+ this.selectedSuggestionFilter.set(filter);
3749
+ }
3706
3750
  onOpenSearchDialog() {
3751
+ // باز کردن دوباره‌ی دیالوگ یک جستجوی تازه است؛ فیلتر به «همه» برمی‌گردد.
3752
+ this.selectedSuggestionFilter.set(null);
3707
3753
  if (this.userLoggedIn) {
3708
3754
  this._favoriteItems.load();
3709
3755
  }
@@ -3821,11 +3867,11 @@ class BarsaShellbarComponent extends BaseComponent {
3821
3867
  this.cultureChanged.emit(culture);
3822
3868
  }
3823
3869
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BarsaShellbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3824
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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", date: "date" }, 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 @if(!hideBranding){\r\n <fd-shellbar-branding [interactiveBranding]=\"true\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"\r\n 'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\r\n \"\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 @if(!brandingTitleHidden){\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n }\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 || deviceSize === 's'\"\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 @if(!isCompactShellbar){ @for(dastor of dastoratSarasari; track dastor.label){ @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 ></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\r\n #globalSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </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 } } @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\r\n fd-menu-interactive\r\n href=\"\"\r\n (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\"\r\n >\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n } @for(group of groupedCommandMenus; track group.Caption){\r\n <button fd-button [label]=\"group.Caption | bbbTranslate\" [fdMenu]=\"true\" [fdMenuTrigger]=\"groupMenu\"></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\r\n #groupSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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 class=\"tw-gap-2\"\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } } @if(isCompactShellbar && mobileCommandNodes.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n [attr.aria-label]=\"'Commands' | bbbTranslate\"\r\n [title]=\"'Commands' | bbbTranslate\"\r\n [fdMenuTrigger]=\"mobileCommandsMenu\"\r\n ></button>\r\n <fd-menu #mobileCommandsMenu [mobile]=\"true\">\r\n @for(node of mobileCommandNodes; track node.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: node, parentSubmenu: undefined, rootMenu: mobileCommandsMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template\r\n #mobileCommandTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\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 @if(deviceSize !== 's' && userLoggedIn && date){\r\n <span class=\"bt-shellbar-date\" [title]=\"date.full\">\r\n <fd-icon class=\"bt-shellbar-date__icon\" glyph=\"calendar\" [attr.aria-hidden]=\"true\"></fd-icon>\r\n <span class=\"bt-shellbar-date__text\">{{ date.compact }}</span>\r\n </span>\r\n }\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar\r\n size=\"xs\"\r\n [circle]=\"true\"\r\n [attr.ariaLabel]=\"displayName\"\r\n [image]=\"userInfo?.Url\"\r\n ></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.label) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.glyph\"\r\n [callback]=\"action.callback\"\r\n [label]=\"action.label\"\r\n [notificationLabel]=\"action.notificationLabel\"\r\n [notificationCount]=\"action.notificationCount\"\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.label){\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){ @let favorite = isFavorite(item);\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [title]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [attr.aria-pressed]=\"favorite\"\r\n fd-button\r\n [glyph]=\"favorite ? 'favorite' : '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;margin:0!important}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.bt-shellbar-date{display:inline-flex;align-items:center;gap:.285rem;flex-shrink:0;white-space:nowrap;padding:0 .5rem;font-size:.875rem;line-height:1;color:var(--sapShell_InteractiveTextColor, #d1e8ff);cursor:default;-webkit-user-select:none;user-select:none}.bt-shellbar-date__icon{font-size:1rem;opacity:.85}.bt-shellbar-date__text{font-variant-numeric:tabular-nums}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{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}[fd-menu-title],.shellbar-command-action__label{white-space:nowrap!important}: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: ["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: ["barDesign", "inPage", "inHomePage", "clear", "size", "initialSuggestionTitle", "initialSuggestionSubline", "role"] }, { kind: "directive", type: i2$3.BarRightDirective, selector: "[fd-bar-right]", inputs: ["stackContentsVertically"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { 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: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter", "notification", "searchResultsList"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "counterRole", "counterAriaLabel", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl", "suggestion"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i7.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i7.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i7.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i7.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["openOnHoverTime", "ariaLabel", "ariaLabelledby", "id", "config", "mobile", "mobileConfig", "placement", "closeOnEscapeKey", "focusAutoCapture", "disabled", "disableScrollbar", "triggers", "fillControlMode", "closeOnOutsideClick", "noArrow", "focusTrapped", "additionalBodyClass", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "scrollStrategy", "isOpen"], outputs: ["isOpenChange", "activePath", "beforeOpen"] }, { 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]", inputs: ["truncate"] }, { 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", "role", "ariaDescription"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$2.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i12.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["status", "statusMessage", "glyph", "glyphFont", "label", "ariaLabel", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate", "ariaRoleDescription"] }, { kind: "component", type: i6$2.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "component", type: i14.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled", "closeOnEscapeKey", "closeOnOutsideClick", "noArrow", "disableScrollbar", "triggers", "focusTrapped", "focusAutoCapture", "isOpen"], outputs: ["isOpenChange", "beforeOpen"] }, { kind: "component", type: i14.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode", "busy", "isOpen"], outputs: ["productsChange", "itemClicked", "isOpenChange"] }, { kind: "component", type: i15.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i15.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight", "ariaModal"], outputs: ["onClose"] }, { kind: "component", type: i15.PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: i16.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex", "showNavigationButton", "navigationButtonTemplate", "showBackButton", "navigationButtonLabel", "backButtonLabel", "showSearchFieldOnSizeSmall"], outputs: ["navigationButtonClicked", "backButtonClicked"] }, { kind: "component", type: i16.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i16.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "assistiveTools", "assistiveToolsCallback"], outputs: ["searchOpen"] }, { kind: "component", type: i16.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "ariaLabel", "title", "notificationLabel", "notificationCount", "fdType", "toggled"] }, { kind: "component", type: i16.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "component", type: i16.ShellbarTitleComponent, selector: "fd-shellbar-title" }, { kind: "component", type: i16.ShellbarBrandingComponent, selector: "fd-shellbar-branding", inputs: ["interactiveBranding"] }, { kind: "component", type: i16.ShellbarContextAreaComponent, selector: "fd-shellbar-context-area", outputs: ["contentItemVisibilityChange"] }, { kind: "component", type: i16.ShellbarSeparatorComponent, selector: "fd-shellbar-separator" }, { kind: "directive", type: i16.ShellbarHidePriorityDirective, selector: "[fdShellbarHidePriority]", inputs: ["fdShellbarHidePriority"] }, { kind: "component", type: i17.GenericTagComponent, selector: "[fd-generic-tag]", inputs: ["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", "showCategoryAllOption", "initialSuggestionTitle", "initialSuggestionSubline", "initialSuggestionEmptyTitle", "initialSuggestionEmptySubline", "suggestionFooter", "searchResultsEmptyTemplate", "searchResultsEmptyDefaultSuggestions", "showAdvancedFilter", "allowEmptySearch", "enableSelection", "suggestionsLoading", "busyIndicatorTitle", "busyIndicatorAriaValueText"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange", "advancedFilterButtonClick", "categoryModeChange", "appearanceChange", "disableRefreshChange", "inputTextChange", "forceSearchButtonChange"] }, { kind: "component", type: i19.UserMenuComponent, selector: "fd-user-menu", inputs: ["mobile"], outputs: ["isOpenChange"] }, { kind: "component", type: i19.UserMenuControlComponent, selector: "fd-user-menu-control", outputs: ["clicked"] }, { kind: "component", type: i19.UserMenuBodyComponent, selector: "fd-user-menu-body" }, { kind: "component", type: i19.UserMenuListComponent, selector: "fd-user-menu-list" }, { kind: "component", type: i19.UserMenuFooterComponent, selector: "fd-user-menu-footer" }, { kind: "directive", type: i19.UserMenuHeaderDirective, selector: "[fd-user-menu-header]" }, { kind: "directive", type: i19.UserMenuSublineDirective, selector: "[fd-user-menu-subline]", inputs: ["truncate"] }, { kind: "directive", type: i19.UserMenuUserNameDirective, selector: "[fd-user-menu-user-name]", inputs: ["truncate"] }, { kind: "directive", type: i19.UserMenuHeaderContainerDirective, selector: "[fd-user-menu-header-container]" }, { kind: "component", type: i19.UserMenuListItemComponent, selector: "[fd-user-menu-list-item]", inputs: ["uniqueId", "icon", "iconAfter", "iconAfterActive", "text", "textId", "truncateText", "subtitle", "subtitleId", "truncateSubtitle", "hasSubmenu", "submenu", "selected"], outputs: ["isOpenChange", "showSubmenu", "updateTitle", "keyDown"] }, { 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 }); }
3870
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", 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", date: "date" }, 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 @if(!hideBranding){\r\n <fd-shellbar-branding [interactiveBranding]=\"true\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"\r\n 'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\r\n \"\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 @if(!brandingTitleHidden){\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n }\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 || deviceSize === 's'\"\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 @if(!isCompactShellbar){ @for(dastor of dastoratSarasari; track dastor.label){ @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 ></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\r\n #globalSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </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 } } @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\r\n fd-menu-interactive\r\n href=\"\"\r\n (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\"\r\n >\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n } @for(group of groupedCommandMenus; track group.Caption){\r\n <button fd-button [label]=\"group.Caption | bbbTranslate\" [fdMenu]=\"true\" [fdMenuTrigger]=\"groupMenu\"></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\r\n #groupSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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 class=\"tw-gap-2\"\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } } @if(isCompactShellbar && mobileCommandNodes.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n [attr.aria-label]=\"'Commands' | bbbTranslate\"\r\n [title]=\"'Commands' | bbbTranslate\"\r\n [fdMenuTrigger]=\"mobileCommandsMenu\"\r\n ></button>\r\n <fd-menu #mobileCommandsMenu [mobile]=\"true\">\r\n @for(node of mobileCommandNodes; track node.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: node, parentSubmenu: undefined, rootMenu: mobileCommandsMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template\r\n #mobileCommandTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\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 @if(deviceSize !== 's' && userLoggedIn && date){\r\n <span class=\"bt-shellbar-date\" [title]=\"date.full\">\r\n <fd-icon class=\"bt-shellbar-date__icon\" glyph=\"calendar\" [attr.aria-hidden]=\"true\"></fd-icon>\r\n <span class=\"bt-shellbar-date__text\">{{ date.compact }}</span>\r\n </span>\r\n }\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar\r\n size=\"xs\"\r\n [circle]=\"true\"\r\n [attr.ariaLabel]=\"displayName\"\r\n [image]=\"userInfo?.Url\"\r\n ></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.label) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.glyph\"\r\n [callback]=\"action.callback\"\r\n [label]=\"action.label\"\r\n [notificationLabel]=\"action.notificationLabel\"\r\n [notificationCount]=\"action.notificationCount\"\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.label){\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 [dateGroupOnly]=\"shellbarData?.NotificationGroupByDateOnly === true\"\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:(selectedSuggestionFilter() ?? 'all')) ; 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){ @let favorite = isFavorite(item);\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [title]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [attr.aria-pressed]=\"favorite\"\r\n fd-button\r\n [glyph]=\"favorite ? 'favorite' : '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 || selectedSuggestionFilter()){\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: {\r\n name: '\u0647\u0645\u0647',\r\n filter: 'all',\r\n active: selectedSuggestionFilter() === null,\r\n count: (suggestions | suggestionsCountFilter: 'all'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645',\r\n filter: 'subsystem',\r\n active: selectedSuggestionFilter() === 'subsystem',\r\n count: (suggestions | suggestionsCountFilter: 'subsystem'),\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\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n filter: 'navgroup',\r\n active: selectedSuggestionFilter() === 'navgroup',\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 filter: 'report',\r\n active: selectedSuggestionFilter() === 'report',\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 filter: 'command',\r\n active: selectedSuggestionFilter() === 'command',\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-filter=\"filter\" let-active=\"active\" let-count=\"count\" let-type=\"type\">\r\n <!-- \u00AB\u0647\u0645\u0647\u00BB \u0648 \u06AF\u0631\u0648\u0647 \u0641\u0639\u0627\u0644 \u0647\u0645\u06CC\u0634\u0647 \u062F\u06CC\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u0646\u062F (\u0641\u0639\u0627\u0644 \u0628\u0627 \u0635\u0641\u0631 \u0646\u062A\u06CC\u062C\u0647 \u00AB\u06F0\u00BB \u0646\u0634\u0627\u0646 \u0645\u06CC\u200C\u062F\u0647\u062F)\u061B \u06AF\u0631\u0648\u0647 \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u0641\u0642\u0637 \u0628\u0627 \u0646\u062A\u06CC\u062C\u0647 -->\r\n @if(filter === 'all' || active || (count && count!==' ')){\r\n <div\r\n fd-generic-tag\r\n class=\"bt-suggestion-filter\"\r\n [class.bt-suggestion-filter--active]=\"active\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-pressed]=\"active\"\r\n [name]=\"name\"\r\n [value]=\"count || '0'\"\r\n [type]=\"type\"\r\n (click)=\"onSuggestionFilterClick(filter)\"\r\n (keydown.enter)=\"onSuggestionFilterClick(filter); $event.preventDefault()\"\r\n (keydown.space)=\"onSuggestionFilterClick(filter); $event.preventDefault()\"\r\n ></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}.bt-shellbar-date{display:inline-flex;align-items:center;gap:.285rem;flex-shrink:0;white-space:nowrap;padding:0 .5rem;font-size:.875rem;line-height:1;color:var(--sapShell_InteractiveTextColor, #d1e8ff);cursor:default;-webkit-user-select:none;user-select:none}.bt-shellbar-date__icon{font-size:1rem;opacity:.85}.bt-shellbar-date__text{font-variant-numeric:tabular-nums}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{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}[fd-menu-title],.shellbar-command-action__label{white-space:nowrap!important}.bt-suggestion-filter{cursor:pointer;flex-shrink:0}.bt-suggestion-filter--active{outline:.125rem solid var(--sapSelectedColor, var(--sapContent_FocusColor, currentColor));outline-offset:.0625rem;font-weight:700}.bt-suggestion-filter:focus-visible{box-shadow:0 0 0 .25rem var(--sapContent_FocusColor, currentColor)}: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: ["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: ["barDesign", "inPage", "inHomePage", "clear", "size", "initialSuggestionTitle", "initialSuggestionSubline", "role"] }, { kind: "directive", type: i2$3.BarRightDirective, selector: "[fd-bar-right]", inputs: ["stackContentsVertically"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: i1.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { 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: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter", "notification", "searchResultsList"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "counterRole", "counterAriaLabel", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl", "suggestion"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i7.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i7.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i7.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i7.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["openOnHoverTime", "ariaLabel", "ariaLabelledby", "id", "config", "mobile", "mobileConfig", "placement", "closeOnEscapeKey", "focusAutoCapture", "disabled", "disableScrollbar", "triggers", "fillControlMode", "closeOnOutsideClick", "noArrow", "focusTrapped", "additionalBodyClass", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "scrollStrategy", "isOpen"], outputs: ["isOpenChange", "activePath", "beforeOpen"] }, { 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]", inputs: ["truncate"] }, { 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", "role", "ariaDescription"] }, { kind: "component", type: i5$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i5$2.DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "component", type: i5$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7$2.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i12.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["status", "statusMessage", "glyph", "glyphFont", "label", "ariaLabel", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate", "ariaRoleDescription"] }, { kind: "component", type: i6$2.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "component", type: i14.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled", "closeOnEscapeKey", "closeOnOutsideClick", "noArrow", "disableScrollbar", "triggers", "focusTrapped", "focusAutoCapture", "isOpen"], outputs: ["isOpenChange", "beforeOpen"] }, { kind: "component", type: i14.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode", "busy", "isOpen"], outputs: ["productsChange", "itemClicked", "isOpenChange"] }, { kind: "component", type: i15.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i15.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight", "ariaModal"], outputs: ["onClose"] }, { kind: "component", type: i15.PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: i16.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex", "showNavigationButton", "navigationButtonTemplate", "showBackButton", "navigationButtonLabel", "backButtonLabel", "showSearchFieldOnSizeSmall"], outputs: ["navigationButtonClicked", "backButtonClicked"] }, { kind: "component", type: i16.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i16.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "assistiveTools", "assistiveToolsCallback"], outputs: ["searchOpen"] }, { kind: "component", type: i16.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "ariaLabel", "title", "notificationLabel", "notificationCount", "fdType", "toggled"] }, { kind: "component", type: i16.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "component", type: i16.ShellbarTitleComponent, selector: "fd-shellbar-title" }, { kind: "component", type: i16.ShellbarBrandingComponent, selector: "fd-shellbar-branding", inputs: ["interactiveBranding"] }, { kind: "component", type: i16.ShellbarContextAreaComponent, selector: "fd-shellbar-context-area", outputs: ["contentItemVisibilityChange"] }, { kind: "component", type: i16.ShellbarSeparatorComponent, selector: "fd-shellbar-separator" }, { kind: "directive", type: i16.ShellbarHidePriorityDirective, selector: "[fdShellbarHidePriority]", inputs: ["fdShellbarHidePriority"] }, { kind: "component", type: i17.GenericTagComponent, selector: "[fd-generic-tag]", inputs: ["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", "showCategoryAllOption", "initialSuggestionTitle", "initialSuggestionSubline", "initialSuggestionEmptyTitle", "initialSuggestionEmptySubline", "suggestionFooter", "searchResultsEmptyTemplate", "searchResultsEmptyDefaultSuggestions", "showAdvancedFilter", "allowEmptySearch", "enableSelection", "suggestionsLoading", "busyIndicatorTitle", "busyIndicatorAriaValueText"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange", "advancedFilterButtonClick", "categoryModeChange", "appearanceChange", "disableRefreshChange", "inputTextChange", "forceSearchButtonChange"] }, { kind: "component", type: i19.UserMenuComponent, selector: "fd-user-menu", inputs: ["mobile"], outputs: ["isOpenChange"] }, { kind: "component", type: i19.UserMenuControlComponent, selector: "fd-user-menu-control", outputs: ["clicked"] }, { kind: "component", type: i19.UserMenuBodyComponent, selector: "fd-user-menu-body" }, { kind: "component", type: i19.UserMenuListComponent, selector: "fd-user-menu-list" }, { kind: "component", type: i19.UserMenuFooterComponent, selector: "fd-user-menu-footer" }, { kind: "directive", type: i19.UserMenuHeaderDirective, selector: "[fd-user-menu-header]" }, { kind: "directive", type: i19.UserMenuSublineDirective, selector: "[fd-user-menu-subline]", inputs: ["truncate"] }, { kind: "directive", type: i19.UserMenuUserNameDirective, selector: "[fd-user-menu-user-name]", inputs: ["truncate"] }, { kind: "directive", type: i19.UserMenuHeaderContainerDirective, selector: "[fd-user-menu-header-container]" }, { kind: "component", type: i19.UserMenuListItemComponent, selector: "[fd-user-menu-list-item]", inputs: ["uniqueId", "icon", "iconAfter", "iconAfterActive", "text", "textId", "truncateText", "subtitle", "subtitleId", "truncateSubtitle", "hasSubmenu", "submenu", "selected"], outputs: ["isOpenChange", "showSubmenu", "updateTitle", "keyDown"] }, { 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", "dateGroupOnly"], 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 }); }
3825
3871
  }
3826
3872
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BarsaShellbarComponent, decorators: [{
3827
3873
  type: Component,
3828
- 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 @if(!hideBranding){\r\n <fd-shellbar-branding [interactiveBranding]=\"true\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"\r\n 'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\r\n \"\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 @if(!brandingTitleHidden){\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n }\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 || deviceSize === 's'\"\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 @if(!isCompactShellbar){ @for(dastor of dastoratSarasari; track dastor.label){ @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 ></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\r\n #globalSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </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 } } @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\r\n fd-menu-interactive\r\n href=\"\"\r\n (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\"\r\n >\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n } @for(group of groupedCommandMenus; track group.Caption){\r\n <button fd-button [label]=\"group.Caption | bbbTranslate\" [fdMenu]=\"true\" [fdMenuTrigger]=\"groupMenu\"></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\r\n #groupSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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 class=\"tw-gap-2\"\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } } @if(isCompactShellbar && mobileCommandNodes.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n [attr.aria-label]=\"'Commands' | bbbTranslate\"\r\n [title]=\"'Commands' | bbbTranslate\"\r\n [fdMenuTrigger]=\"mobileCommandsMenu\"\r\n ></button>\r\n <fd-menu #mobileCommandsMenu [mobile]=\"true\">\r\n @for(node of mobileCommandNodes; track node.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: node, parentSubmenu: undefined, rootMenu: mobileCommandsMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template\r\n #mobileCommandTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\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 @if(deviceSize !== 's' && userLoggedIn && date){\r\n <span class=\"bt-shellbar-date\" [title]=\"date.full\">\r\n <fd-icon class=\"bt-shellbar-date__icon\" glyph=\"calendar\" [attr.aria-hidden]=\"true\"></fd-icon>\r\n <span class=\"bt-shellbar-date__text\">{{ date.compact }}</span>\r\n </span>\r\n }\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar\r\n size=\"xs\"\r\n [circle]=\"true\"\r\n [attr.ariaLabel]=\"displayName\"\r\n [image]=\"userInfo?.Url\"\r\n ></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.label) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.glyph\"\r\n [callback]=\"action.callback\"\r\n [label]=\"action.label\"\r\n [notificationLabel]=\"action.notificationLabel\"\r\n [notificationCount]=\"action.notificationCount\"\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.label){\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){ @let favorite = isFavorite(item);\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [title]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [attr.aria-pressed]=\"favorite\"\r\n fd-button\r\n [glyph]=\"favorite ? 'favorite' : '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;margin:0!important}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.bt-shellbar-date{display:inline-flex;align-items:center;gap:.285rem;flex-shrink:0;white-space:nowrap;padding:0 .5rem;font-size:.875rem;line-height:1;color:var(--sapShell_InteractiveTextColor, #d1e8ff);cursor:default;-webkit-user-select:none;user-select:none}.bt-shellbar-date__icon{font-size:1rem;opacity:.85}.bt-shellbar-date__text{font-variant-numeric:tabular-nums}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{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}[fd-menu-title],.shellbar-command-action__label{white-space:nowrap!important}: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"] }]
3874
+ 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 @if(!hideBranding){\r\n <fd-shellbar-branding [interactiveBranding]=\"true\">\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"\r\n 'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\r\n \"\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 @if(!brandingTitleHidden){\r\n <fd-shellbar-title> {{ subtitle | bbbTranslate }} {{ showVersion ? appVersion : '' }}</fd-shellbar-title>\r\n }\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 || deviceSize === 's'\"\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 @if(!isCompactShellbar){ @for(dastor of dastoratSarasari; track dastor.label){ @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 ></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\r\n #globalSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </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 } } @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\r\n fd-menu-interactive\r\n href=\"\"\r\n (click)=\"$event.preventDefault(); workflowMenu.close(); item.callback?.()\"\r\n >\r\n <span fd-menu-title>{{ item.label | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </fd-menu>\r\n } @for(group of groupedCommandMenus; track group.Caption){\r\n <button fd-button [label]=\"group.Caption | bbbTranslate\" [fdMenu]=\"true\" [fdMenuTrigger]=\"groupMenu\"></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\r\n #groupSubmenuTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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 class=\"tw-gap-2\"\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @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 </fd-submenu>\r\n </ng-template>\r\n </fd-menu>\r\n } } @if(isCompactShellbar && mobileCommandNodes.length){\r\n <button\r\n type=\"button\"\r\n class=\"fd-shellbar__button\"\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n [attr.aria-label]=\"'Commands' | bbbTranslate\"\r\n [title]=\"'Commands' | bbbTranslate\"\r\n [fdMenuTrigger]=\"mobileCommandsMenu\"\r\n ></button>\r\n <fd-menu #mobileCommandsMenu [mobile]=\"true\">\r\n @for(node of mobileCommandNodes; track node.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: node, parentSubmenu: undefined, rootMenu: mobileCommandsMenu }\r\n \"\r\n ></ng-container>\r\n }\r\n <ng-template\r\n #mobileCommandTemplate\r\n let-item=\"item\"\r\n let-parentSubmenu=\"parentSubmenu\"\r\n let-rootMenu=\"rootMenu\"\r\n >\r\n <li\r\n fd-menu-item\r\n [submenu]=\"item.children?.length ? submenu : undefined\"\r\n [parentSubmenu]=\"parentSubmenu\"\r\n >\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\">{{\r\n item.label | bbbTranslate\r\n }}</span>\r\n </a>\r\n }\r\n </li>\r\n <fd-submenu #submenu>\r\n @if(item.children?.length){ @for(subItem of item.children; track subItem.key) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n mobileCommandTemplate;\r\n context: { item: subItem, parentSubmenu: submenu, rootMenu: rootMenu }\r\n \"\r\n ></ng-container>\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 @if(deviceSize !== 's' && userLoggedIn && date){\r\n <span class=\"bt-shellbar-date\" [title]=\"date.full\">\r\n <fd-icon class=\"bt-shellbar-date__icon\" glyph=\"calendar\" [attr.aria-hidden]=\"true\"></fd-icon>\r\n <span class=\"bt-shellbar-date__text\">{{ date.compact }}</span>\r\n </span>\r\n }\r\n <fd-user-menu>\r\n <fd-user-menu-control>\r\n <fd-avatar\r\n size=\"xs\"\r\n [circle]=\"true\"\r\n [attr.ariaLabel]=\"displayName\"\r\n [image]=\"userInfo?.Url\"\r\n ></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.label) {\r\n <fd-shellbar-action\r\n [glyph]=\"action.glyph\"\r\n [callback]=\"action.callback\"\r\n [label]=\"action.label\"\r\n [notificationLabel]=\"action.notificationLabel\"\r\n [notificationCount]=\"action.notificationCount\"\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.label){\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 [dateGroupOnly]=\"shellbarData?.NotificationGroupByDateOnly === true\"\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:(selectedSuggestionFilter() ?? 'all')) ; 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){ @let favorite = isFavorite(item);\r\n <button\r\n class=\"!tw-m-[0.1rem]\"\r\n [ariaLabel]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [title]=\"(favorite ? '\u062D\u0630\u0641 \u0627\u0632 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627' : '\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u0639\u0644\u0627\u0642\u0647\u200C\u0645\u0646\u062F\u06CC\u200C\u0647\u0627') | bbbTranslate\"\r\n [attr.aria-pressed]=\"favorite\"\r\n fd-button\r\n [glyph]=\"favorite ? 'favorite' : '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 || selectedSuggestionFilter()){\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: {\r\n name: '\u0647\u0645\u0647',\r\n filter: 'all',\r\n active: selectedSuggestionFilter() === null,\r\n count: (suggestions | suggestionsCountFilter: 'all'),\r\n type: ''\r\n }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n catTag;\r\n context: {\r\n name: '\u0632\u06CC\u0631\u0633\u06CC\u0633\u062A\u0645',\r\n filter: 'subsystem',\r\n active: selectedSuggestionFilter() === 'subsystem',\r\n count: (suggestions | suggestionsCountFilter: 'subsystem'),\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\u0631\u0648\u0647 \u0646\u0648\u06CC\u06AF\u06CC\u062A\u0648\u0631',\r\n filter: 'navgroup',\r\n active: selectedSuggestionFilter() === 'navgroup',\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 filter: 'report',\r\n active: selectedSuggestionFilter() === 'report',\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 filter: 'command',\r\n active: selectedSuggestionFilter() === 'command',\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-filter=\"filter\" let-active=\"active\" let-count=\"count\" let-type=\"type\">\r\n <!-- \u00AB\u0647\u0645\u0647\u00BB \u0648 \u06AF\u0631\u0648\u0647 \u0641\u0639\u0627\u0644 \u0647\u0645\u06CC\u0634\u0647 \u062F\u06CC\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u0646\u062F (\u0641\u0639\u0627\u0644 \u0628\u0627 \u0635\u0641\u0631 \u0646\u062A\u06CC\u062C\u0647 \u00AB\u06F0\u00BB \u0646\u0634\u0627\u0646 \u0645\u06CC\u200C\u062F\u0647\u062F)\u061B \u06AF\u0631\u0648\u0647 \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u0641\u0642\u0637 \u0628\u0627 \u0646\u062A\u06CC\u062C\u0647 -->\r\n @if(filter === 'all' || active || (count && count!==' ')){\r\n <div\r\n fd-generic-tag\r\n class=\"bt-suggestion-filter\"\r\n [class.bt-suggestion-filter--active]=\"active\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-pressed]=\"active\"\r\n [name]=\"name\"\r\n [value]=\"count || '0'\"\r\n [type]=\"type\"\r\n (click)=\"onSuggestionFilterClick(filter)\"\r\n (keydown.enter)=\"onSuggestionFilterClick(filter); $event.preventDefault()\"\r\n (keydown.space)=\"onSuggestionFilterClick(filter); $event.preventDefault()\"\r\n ></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}.bt-shellbar-date{display:inline-flex;align-items:center;gap:.285rem;flex-shrink:0;white-space:nowrap;padding:0 .5rem;font-size:.875rem;line-height:1;color:var(--sapShell_InteractiveTextColor, #d1e8ff);cursor:default;-webkit-user-select:none;user-select:none}.bt-shellbar-date__icon{font-size:1rem;opacity:.85}.bt-shellbar-date__text{font-variant-numeric:tabular-nums}.hide-panel-header ::ng-deep .fd-panel__header{min-height:auto;height:auto}:host ::ng-deep .shellbar-command-action--image-glyph{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}[fd-menu-title],.shellbar-command-action__label{white-space:nowrap!important}.bt-suggestion-filter{cursor:pointer;flex-shrink:0}.bt-suggestion-filter--active{outline:.125rem solid var(--sapSelectedColor, var(--sapContent_FocusColor, currentColor));outline-offset:.0625rem;font-weight:700}.bt-suggestion-filter:focus-visible{box-shadow:0 0 0 .25rem var(--sapContent_FocusColor, currentColor)}: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"] }]
3829
3875
  }], ctorParameters: () => [], propDecorators: { searchDialogContent: [{
3830
3876
  type: ViewChild,
3831
3877
  args: ['searchContent', { read: TemplateRef }]