ngx-bimplus-components 0.0.1 → 0.0.2

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 +1 @@
1
- {"version":3,"file":"ngx-bimplus-components.mjs","sources":["../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.service.ts","../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.component.ts","../../../projects/ngx-bimplus-components/src/lib/utils/utils.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/pipes/pxsuffix.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/directives/x-draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/svgGenerator.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../projects/ngx-bimplus-components/src/lib/services/language-strings.service.ts","../../../projects/ngx-bimplus-components/src/public-api.ts","../../../projects/ngx-bimplus-components/src/ngx-bimplus-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxBimplusComponentsService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-ngx-bimplus-components',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n ngx-bimplus-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgxBimplusComponentsComponent {\r\n\r\n}\r\n","// Define the type of the window.BimPlus object\r\ninterface BimPlusObject {\r\n [key: string]: (dataDetail: { detail: unknown }) => void;\r\n}\r\nexport interface Source {\r\n [key: string]: { emit: (arg0: unknown) => void; };\r\n}\r\n\r\n\r\n/**--------------------------------------------------------------------------\r\n* fire event from component in two ways : \r\n - fire custom event from component in standard recommended way via. this.eventName.emit function\r\n \r\n - call window.BimPlus.eventName function directly on window object (eventName is name\r\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\r\n Function must be defined in app. where we are using our components.\r\n This was implemented because MS Edge browser has problems with custom events and in some \r\n situations(e.g. after file download) it stops handling custom events.\r\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\r\n--------------------------------------------------------------------------*/\r\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\r\n if ( !eventName ) {\r\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\r\n return;\r\n }\r\n // Check if eventName exists on window.BimPlus and if it's a function\r\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\r\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\r\n bimPlus[eventName]({detail: data});\r\n }\r\n\r\n const _source = (source as Source);\r\n if (eventName in _source) {\r\n _source[eventName].emit(data);\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isModelViewerActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n if (!this.isModelViewerActive ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n>\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"isModelViewerActive ? 'model-viewer' : ''\"\r\n (click)=\"_logoClicked()\"\r\n ></div>\r\n <div \r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarMenuVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n <span *ngIf=\"projectInfo && !isTouch\">&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\" \r\n (click)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n \r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div class=\"bimcomp-overlay\" [ngClass]=\"_menuOpened ? 'open' : ''\" (click)=\"_toggleOpened()\"></div>\r\n<div data-test=\"language-menu-dropdown\" class=\"dropdown\" [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\" (click)=\"_toggleOpened()\">\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"expandUp ? 'expand-up' : ''\">\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\" class=\"bimcomp-dropdown-menu-item\" [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\" (click)=\"_switchLanguage(languageItem.symbol)\" *ngFor=\"let languageItem of _languagesList\">\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n constructor(public translateService: TranslateService){\r\n }\r\n\r\n _selectedLanguage: string = \"en\";\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage;\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage = value;\r\n this.translateService.use(value); \r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings); \r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: LocalizedStrings = {};\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings;\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings = value;\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value); \r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService], \r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n //this.prjImageStyle = \"\";\r\n }\r\n\r\n\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n \r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n \r\n \r\n prjListThumbnail = [];\r\n prjList = [];\r\n \r\n //prjImageOverlayStyle:{ [klass: string]: unknown; } | null | undefined;\r\n //prjImageStyle : { [klass: string]: unknown; } | null | undefined;\r\n\r\n\r\n get prjImgUrl(){ \r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/images/bimplus_Components_Project_Pic_Default.png\";\r\n }\r\n get backgroundValue(){\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/images/bimplus_Components_Project_Pic_Default.png'})`;\r\n }\r\n\r\n get prjImageOverlayStyle () {\r\n return {'background': `${this.backgroundValue}`};\r\n }\r\n\r\n get prjImageStyle(){\r\n return {'background': `url(${this.prjImgUrl})`};\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList : MenuListType[] = [\r\n { action:\"projectmembers\", id:\"portalBimUsers\", type:\"\",class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}, \r\n { action:\"models\", id:\"portalBimModels\", type:\"\",class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id:\"portalBimDocuments\", type:\"\",class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id:\"portalBimProjectSettings\",type:\"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id:\"portalBimProcesses\", type:\"\",class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n \r\n \r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n \r\n return !((this as unknown as BimplusProjectMenuComponentAttribute )[key]);\r\n } \r\n return false;\r\n }\r\n/**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType):boolean {\r\n \r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute )[key];\r\n }\r\n return false;\r\n }\r\n\r\n \r\n _projectMenuItemClicked(action:string,param:string){\r\n console.log(action,param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item:MenuListType, type: string, event : Event){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this,\"bimplusProjectMenuClicked\", {action, type} );\r\n }\r\n \r\n _menuItemIgnoreAction(event : Event){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item:MenuListType,isTouch:boolean){\r\n const retval:string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch?'':'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item:MenuListType){\r\n const retval:string = `${item.class} ${item.action === this.projectActiveItem ? 'active ' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #prjList>\r\n@for(item of _menuPrjList; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\" \r\n (click)=\"_menuItemClicked(item, 'normal',$event)\">\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\">\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #prjListThumbnail>\r\n@for(item of _menuPrjList; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\" \r\n (click)=\"_menuItemClicked(item, 'normal',$event)\">\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\" \r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\">\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass] = \"isCollapsed ? 'collapsed' : ''\"\r\n [ngClass] = \"isMiniMode ? 'mini-mode' : ''\"\r\n [ngClass] = \"isTouch ? 'is-touch' : ''\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\" \r\n [ngStyle]=\"prjImageOverlayStyle\"> \r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]= \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\" \r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n \r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div \r\n class=\"bim-pm-prj-items-list\" \r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"prjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\" >\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div> \r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule,BimplusProjectMenuComponent], \r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(translateService: TranslateService ){\r\n super(translateService) \r\n }\r\n\r\n \r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) sciaSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) sciaDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) sciaVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true; \r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this.localizedStrings = changes['localizedStrings'].currentValue; \r\n }\r\n }\r\n\r\n \r\n get footerList() {\r\n return this._menuFooterList.filter( item => (!this._isSubscribed(item) || this._isHidden(item)) ? false : true );\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`; \r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]); \r\n }\r\n\r\n _getContextData(item:MenuListType,active:boolean,disabled:boolean,clickable:boolean,selected:boolean){ \r\n return {item:item,active:active,disabled:disabled,clickable:clickable,selected:selected};\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n \r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n \r\n appsList : MenuListType[] = [\r\n { action:\"projectmembers\", id:\"portalBimUsers\",type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id:\"portalBimModels\", type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id:\"portalBimDocuments\", type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id:\"portalBimProjectSettings\", type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id:\"portalBimProcesses\", type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id:\"dividerprojectmanagement\", type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id:\"portalBimViewerBtn\", type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"_Portal_Menu_BIM_Explorer\", textIdDisabled: \"_Portal_Menu_BIM_Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"scia\", id:\"portalBimSCIA\", type:\"\",class: \"bim-mm-icon-scia\", textId: \"_Scia\", textIdDisabled: \"_Scia\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id:\"dividerapps\", type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id:\"portalTeamManagementBtn\",type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id:\"portalPropertyManagerBtn\", type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList : MenuListType[] = [\r\n { action:\"shop\", id:\"portalShopBtn\", type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Shop\", textIdDisabled: \"_Shop\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appItemContent let-contextData>\r\n @if (contextData.item.type === 'divider'){\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div> \r\n }@else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\" \r\n [ngClass]=\"isTouch?'':'hover-show-info'+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\" \r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\" \r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"> \r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div class=\"bim-mm-wrapper\" [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\" (click)=\"_overlayClicked()\">\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n \r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}} \r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}} \r\n projectActiveItem = {{projectActiveItem}} \r\n projectmembersDisabled = {{projectmembersDisabled}} \r\n modelsDisabled = {{modelsDisabled}} \r\n documentsDisabled = {{documentsDisabled}} \r\n projectsettingsDisabled = {{projectsettingsDisabled}} \r\n processesDisabled = {{processesDisabled}} \r\n projectmembersVisible = {{projectmembersVisible}} \r\n modelsVisible = {{modelsVisible}} \r\n documentsVisible = {{documentsVisible}} \r\n projectsettingsVisible = {{projectsettingsVisible}} \r\n processesVisible = {{processesVisible}} \r\n isCollapsed = {{isCollapsed}} \r\n isMiniMode = {{isTouch}} \r\n isTouch = {{isTouch}} \r\n hideMenuIcons = {{hideProjectMenuIcons}} \r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}} \r\n ></lib-bimplus-project-menu>\r\n } \r\n <div [ngClass]=\"appsList.length || footerList.length ? 'bim-mm-apps-container' : ''\"> \r\n <div class=\"bim-mm-apps-list\">\r\n <div *ngFor=\"let appItem of appsList\">\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n <div *ngFor=\"let footerItem of footerList\">\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div> \r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pxsuffix',\r\n standalone: true\r\n})\r\nexport class PxsuffixPipe implements PipeTransform {\r\n\r\n transform(input: number): string{ //string type\r\n return input + 'px';\r\n } \r\n\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[xDraggable]',\r\n standalone: true\r\n})\r\nexport class XDraggableDirective {\r\n\r\n oldX = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<number>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", deltaX);\r\n\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\r\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface SidenavItem{\r\n id : string;\r\n icon? : string;\r\n iconActive? : string;\r\n iconDisabled? : string;\r\n text : string;\r\n disabled? : boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav',\r\n standalone: true,\r\n imports: [CommonModule, PxsuffixPipe, XDraggableDirective, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-sidenav.component.html',\r\n styleUrl: './bimplus-sidenav.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusSidenavComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService) \r\n }\r\n\r\n// #region public fields\r\n activeItem : string = \"\";\r\n drawerHeader : string = \"\";\r\n drawerWidth : number = 300;\r\n drawerExpanded : boolean = true;\r\n\r\n @Output() activeItemChanged = new EventEmitter<string>();\r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Output() footerClicked = new EventEmitter<string>();\r\n\r\n get items() : Array<SidenavItem>{\r\n return this._items;\r\n }\r\n\r\n @Input() set items(value: Array<SidenavItem>) {\r\n this._items.length = 0;\r\n\r\n this._items = value;\r\n if(this.items.length > 0){\r\n this._activateItem(this.items[0].id);\r\n }\r\n }\r\n\r\n get actionItems() : Array<SidenavItem>{\r\n return this._actionItems;\r\n }\r\n\r\n @Input() set actionItems(value: Array<SidenavItem>) {\r\n this._actionItems.length = 0;\r\n this._actionItems = value;\r\n }\r\n\r\n get footerItem() : SidenavItem | null{\r\n return this._footerItem;\r\n }\r\n\r\n @Input() set footerItem(value: SidenavItem | null) {\r\n\r\n this._footerItem = value;\r\n }\r\n// #endregion public fields\r\n\r\n// #region private fields\r\n private _items : Array<SidenavItem> = new Array<SidenavItem>();\r\n private _actionItems : Array<SidenavItem> = new Array<SidenavItem>();\r\n private _footerItem : SidenavItem | null = null;\r\n// #endregion private fields\r\n\r\n// #region public methods\r\n_activateItem(item : string){\r\n this.activeItem = item;\r\n const foundItem = this._items.find(x=>x.id == item);\r\n this.drawerHeader = foundItem ? foundItem.text : \"\";\r\n if(!this.drawerExpanded){\r\n this._toggleDrawer();\r\n }\r\n fireEvent(this, \"activeItemChanged\", item);\r\n}\r\n\r\n_clickAction(item : string){\r\n fireEvent(this, \"actionClicked\", item);\r\n}\r\n\r\n_clickFooter(item : string){\r\n fireEvent(this, \"footerClicked\", item);\r\n}\r\n\r\n_toggleDrawer(){\r\n this.drawerExpanded = !this.drawerExpanded;\r\n}\r\n\r\n_onResizeWidth(event : number): void {\r\n const deltaX = event;\r\n this.drawerWidth += deltaX;\r\n}\r\n// #endregion public methods\r\n\r\n}\r\n","\r\n<div class=\"sidenav\">\r\n <div class=\"sidenav-row\" *ngFor=\"let sideNavItem of items\">\r\n @if (sideNavItem.disabled) {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.iconDisabled + ')'\"></div>\r\n } @else {\r\n @if (activeItem === sideNavItem.id) {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.iconActive + ')'\" (click)=\"_toggleDrawer()\"></div>\r\n } @else {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.icon + ')'\" (click)=\"_activateItem(sideNavItem.id)\"></div>\r\n }\r\n }\r\n </div>\r\n @if (actionItems.length > 0) {\r\n <div class=\"sidenav-separator\"></div>\r\n <div class=\"sidenav-row\" *ngFor=\"let actionItem of actionItems\">\r\n <div [attr.data-test]=\"'sidenav_action_item_' + actionItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + actionItem.icon + ')'\" (click)=\"_clickAction(actionItem.id)\"></div>\r\n </div>\r\n }\r\n @if (footerItem) {\r\n <div class=\"sidenav-row-footer\">\r\n <div [attr.data-test]=\"'sidenav_footer_item_' + footerItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + footerItem.icon + ')'\" (click)=\"_clickFooter(footerItem.id)\"></div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"sidenav-drawer\" [style.width] = \"drawerWidth | pxsuffix\" [ngClass]=\"drawerExpanded ? '' : 'hidden'\">\r\n <div class=\"sidenav-drawer-content-layout\">\r\n <div class = \"sidenav-drawer-header\">\r\n <div class = \"sidenav-drawer-header__title\">\r\n <span>{{drawerHeader | translate}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"sidenav-drawer-content-offset\">\r\n <slot class=\"sidenav-drawer-content\" name=\"sidenavDrawerContent\"></slot>\r\n </div>\r\n </div>\r\n @if (drawerExpanded) { \r\n <div xDraggable class=\"sidenav-resize-border-right\" (dragging)=\"_onResizeWidth($event)\"></div>\r\n <div xDraggable data-test=\"sidenav-resize-handle\" class=\"sidenav-resize-handle-left\" (dragging)=\"_onResizeWidth($event)\" (clicked)=\"_toggleDrawer()\"></div>\r\n }\r\n</div>\r\n@if (!drawerExpanded) { \r\n <div data-test=\"sidenav-resize-handle\" class =\"sidenav-resize-handle-left collapsed\" (click)=\"_toggleDrawer()\"></div>\r\n}\r\n","import { ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\r\n\r\nconst RAD_DEG : number = Math.PI / 180.0;\r\nconst PI2 : number = 2 * Math.PI;\r\n\r\n\r\nexport class SVGGenerator {\r\n\r\n // Constants for drawing arc\r\n /**\r\n * @param {Array.<Number>} center\r\n * @param {Number} R\r\n * @param {Number} angle\r\n * @return {Array.<Number>}\r\n */\r\n static pointOnArc(center: [number,number], R: number, angle: number) : [number, number] {\r\n const radians = (angle - 90) * RAD_DEG;\r\n\r\n return [center[0] + R * Math.cos(radians), center[1] + R * Math.sin(radians)];\r\n }\r\n\r\n /**\r\n * Generates arc path\r\n *\r\n * @param {Array.<Number>} center\r\n * @param {Number} radius\r\n * @param {Number} start\r\n * @param {Number} end\r\n * @param {Number} width\r\n * @param {Number} corner Corner radius\r\n * @param {Number} canvasWidth - Divisor to have svg with range 0 to 1\r\n *\r\n * @return {String|Array.<Number|String>}\r\n */\r\n static arc(center: [number,number], radius: number, start: number, end: number, width: number, corner: number, canvasWidth: number) : string {\r\n\r\n const innerR = radius - width;\r\n const circumference = Math.abs(end - start);\r\n corner = Math.min(width / 2, corner);\r\n\r\n if (360 * (corner / (Math.PI * (radius - width))) > Math.abs(start - end)) {\r\n corner = circumference / 360 * innerR * Math.PI;\r\n }\r\n\r\n // inner and outer radiuses\r\n const innerR2 = innerR + corner;\r\n const outerRadius = radius - corner;\r\n\r\n // butts corner points\r\n const oStart = this.pointOnArc(center, outerRadius, start);\r\n const oEnd = this.pointOnArc(center, outerRadius, end);\r\n\r\n const iStart = this.pointOnArc(center, innerR2, start);\r\n const iEnd = this.pointOnArc(center, innerR2, end);\r\n\r\n const iSection = 360 * (corner / (PI2 * innerR));\r\n const oSection = 360 * (corner / (PI2 * radius));\r\n\r\n // arcs endpoints\r\n const iArcStart = this.pointOnArc(center, innerR, start + iSection);\r\n const iArcEnd = this.pointOnArc(center, innerR, end - iSection);\r\n\r\n const oArcStart = this.pointOnArc(center, radius, start + oSection);\r\n const oArcEnd = this.pointOnArc(center, radius, end - oSection);\r\n\r\n const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0;\r\n const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0;\r\n\r\n const points : Array<string> = new Array<string>(\r\n // begin path\r\n \"M\", (oStart[0] / canvasWidth).toString(), (oStart[1] / canvasWidth).toString(),\r\n // outer start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oArcStart[0] / canvasWidth).toString(), (oArcStart[1] / canvasWidth).toString(),\r\n // outer main arc\r\n \"A\", (radius / canvasWidth).toString(), (radius / canvasWidth).toString(), \"0\", (arcSweep1 / canvasWidth).toString(), \"1\", (oArcEnd[0] / canvasWidth).toString(), (oArcEnd[1] / canvasWidth).toString(),\r\n // outer end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oEnd[0] / canvasWidth).toString(), (oEnd[1] / canvasWidth).toString(),\r\n // end butt\r\n \"L\", (iEnd[0] / canvasWidth).toString(), (iEnd[1] / canvasWidth).toString(),\r\n // inner end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iArcEnd[0] / canvasWidth).toString(), (iArcEnd[1] / canvasWidth).toString(),\r\n // inner arc\r\n \"A\", (innerR / canvasWidth).toString(), (innerR / canvasWidth).toString(), \"0\", (arcSweep2 / canvasWidth).toString(), \"0\", (iArcStart[0] / canvasWidth).toString(), (iArcStart[1] / canvasWidth).toString(),\r\n // inner start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iStart[0] / canvasWidth).toString(), (iStart[1] / canvasWidth).toString(), \"Z\" // end path*/\r\n );\r\n\r\n return points.join(' ');\r\n }\r\n\r\n /*\r\n * svg units - when \"objectBoundingBox\" is applied, coordinates are relative,\r\n * use coordinates as ratio (in range 0-1),\r\n * f.e. (1,1) is botom right corner of element\r\n */\r\n static drawMenuItemSvg(svgRadius: number, svgRadiusInner: number, buttonsLength: number, isEMEmbedded: boolean): ToolHubItemUnits {\r\n \r\n const radius = isEMEmbedded ? (svgRadius - 5) * 10 : svgRadius * 10;\r\n const radiusInner = isEMEmbedded ? (svgRadiusInner - 3) * 10 : svgRadiusInner * 10;\r\n const width = radius * 2;\r\n // coordinates of points describing one item on menu\r\n const angle = 360 / ((buttonsLength > 0) ? buttonsLength : 1);\r\n const halfAngleRadians = (angle * Math.PI) / 360;\r\n const leftX = radius - Math.sin(halfAngleRadians) * radius;\r\n const leftY = radius - Math.cos(halfAngleRadians) * radius;\r\n const rightX = radius + Math.sin(halfAngleRadians) * radius;\r\n const rightY = radius - Math.cos(halfAngleRadians) * radius;\r\n \r\n \r\n return {\r\n radius: radius / width,\r\n radiusInner: radiusInner / width,\r\n width: 1,\r\n thick: (radius - radiusInner) / width,\r\n innerEdgeRight: (radius + radiusInner) / width,\r\n leftX: leftX / width,\r\n leftY: leftY / width,\r\n rightX: rightX / width,\r\n rightY: rightY / width\r\n };\r\n }\r\n\r\n \r\n static generateAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n settings.subMenuRadius * multiplier,\r\n settings.subMenuStartAngle,\r\n settings.subMenuEndAngle,\r\n settings.subMenuWidth,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateAnnularSectorBorder(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n (settings.subMenuRadius * multiplier) + 1,\r\n settings.subMenuStartAngle - 0.5,\r\n settings.subMenuEndAngle + 0.5,\r\n settings.subMenuWidth + 2,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateDeadZoneAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.deadZoneCenter[0] * multiplier, settings.deadZoneCenter[1] * multiplier],\r\n (settings.deadZoneRadius) * multiplier,\r\n settings.deadZoneStartAngle,\r\n settings.deadZoneEndAngle,\r\n settings.deadZoneWidth,\r\n 7,\r\n 700);\r\n }\r\n\r\n static getSVGViewBox(units : ToolHubItemUnits):string{\r\n return `0 0 ${units.width} ${units.width}`;\r\n }\r\n\r\n static getSVGCenterMenuPath(units : ToolHubItemUnits):string{\r\n return `M 0 ${units.radius} A ${units.radius} ${units.radius} 0 0 1 ${units.width} ${units.radius} L ${units.width} ${units.radius} A ${units.radius} ${units.radius} 0 0 1 0 ${units.radius} L ${units.thick} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.innerEdgeRight} ${units.radius} L ${units.innerEdgeRight} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.thick} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterMenuItemPath(units : ToolHubItemUnits):string{\r\n return `M ${units.radius} ${units.radius} L ${units.leftX} ${units.leftY} A ${units.radius} ${units.radius} 0 0 1 ${units.rightX} ${units.rightY} L ${units.rightX} ${units.rightY} L ${units.radius} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterSubMenuItemPath(subMenuUnits : ToolHubItemUnits):string{\r\n return `M ${subMenuUnits.radius} ${subMenuUnits.radius} L ${subMenuUnits.leftX} ${subMenuUnits.leftY} A ${subMenuUnits.radius} ${subMenuUnits.radius} 0 0 1 ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.radius} ${subMenuUnits.radius} Z`;\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubItemComponent {\r\n @Input()\r\n item : ToolHubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n \r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"centermenu-button-icon dragger\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubSubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-sub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-sub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubSubItemComponent {\r\n @Input() item : ToolHubSubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n\r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n @HostBinding('class.center-sub-menu-button') centerSubMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"center-sub-menu-button-icon\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[libDraggable]',\r\n standalone: true\r\n})\r\nexport class DraggableDirective {\r\n\r\n oldX = 0;\r\n oldY = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<[number,number]>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n const deltaY = (event.clientY - this.oldY);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2 || Math.abs(deltaY) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", [deltaX,deltaY]);\r\n\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, booleanAttribute } from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { SVGGenerator } from './svgGenerator';\r\nimport { ToolHubItemComponent } from './tool-hub-item/tool-hub-item.component';\r\nimport { ToolHubSubItemComponent } from './tool-hub-sub-item/tool-hub-sub-item.component';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { ToolHubItem, ToolHubSubItem, ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\r\n\r\nfunction createDefaultVisualSettings() : ToolHubVisualSettings{\r\n const settings : ToolHubVisualSettings = {\r\n subMenuStartAngle : 50,\r\n subMenuEndAngle : 130,\r\n svgRadiusInner : 5.75,\r\n svgRadius : 10.25,\r\n subMenuCenter : [17.25, 17.5],\r\n subMenuRadius : 15.5,\r\n subMenuWidth : 52,\r\n deadZoneCenter : [17, 18],\r\n deadZoneWidth : 140,\r\n deadZoneRadius : 22,\r\n deadZoneStartAngle : 45,\r\n deadZoneEndAngle : 135\r\n }\r\n return settings;\r\n}\r\n\r\n// Use when implementing embedded mode\r\n/*\r\nfunction createEmbeddedSettings() : ToolHubVisualSettings{\r\n const settings : ToolHubVisualSettings = {\r\n subMenuStartAngle : 50,\r\n subMenuEndAngle : 130,\r\n svgRadiusInner : 4,\r\n svgRadius : 7.25,\r\n subMenuCenter : [17.25, 17.3],\r\n subMenuRadius : 16.2,\r\n subMenuWidth : 62,\r\n deadZoneCenter : [16.5, 16],\r\n deadZoneWidth : 120,\r\n deadZoneRadius : 18,\r\n deadZoneStartAngle : 35,\r\n deadZoneEndAngle : 145\r\n }\r\n return settings;\r\n}*/\r\n\r\nfunction createDefaultItems() : Array<ToolHubItem>{\r\n const items : Array<ToolHubItem> = [\r\n //--- create task ---------------------------------------------------\r\n {\r\n buttonId: 'cmButCreateTask',\r\n iconClass: 'ui-icon-create-task',\r\n text: '_Create_issue_center_menu_tooltip',\r\n tooltip: '_Create_issue_center_menu_tooltip',\r\n tooltipDisabled: '_Create_issue_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- quantity takeoff ---------------------------------------------------\r\n {\r\n buttonId: 'cmButQuantityTakeOff',\r\n iconClass: 'ui-icon-quantity-take-off',\r\n text: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltip: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltipDisabled : '_Quantity_take_Off_center_menu_tooltip',\r\n active: false,\r\n disabled : true\r\n },\r\n\r\n //--- markup ---------------------------------------------------\r\n {\r\n buttonId: 'cmButMarkup',\r\n iconClass: 'ui-icon-markup',\r\n text: '_Markups_center_menu_tooltip',\r\n tooltip: '_Markups_center_menu_tooltip',\r\n tooltipDisabled: '_Markups_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- section ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSection',\r\n iconClass: 'ui-icon-section',\r\n text: '_Sectioning_center_menu_tooltip',\r\n tooltip: '_Sectioning_center_menu_tooltip',\r\n tooltipDisabled: '_Sectioning_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- hide ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjTranspMenu',\r\n iconClass: 'ui-icon-obj-transp',\r\n text: '_Hide_objects_center_menu_tooltip',\r\n tooltip: '_Hide_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Hide_objects_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- isolate ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjSel',\r\n iconClass: 'ui-icon-obj-select',\r\n text: '_Isolate_objects_center_menu_tooltip',\r\n tooltip: '_Isolate_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Isolate_objects_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- navigation map ---------------------------------------------------\r\n {\r\n buttonId: 'cmButNavigationMap',\r\n iconClass: 'ui-icon-navigation-map',\r\n text: '_Navigation_nap_center_menu_tooltip',\r\n tooltip: '_Navigation_nap_center_menu_tooltip',\r\n tooltipDisabled: '_Navigation_nap_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- fullscreen ----------------------------------------------\r\n {\r\n buttonId: 'cmButFullScreen',\r\n iconClass: 'ui-icon-fullscreen',\r\n text: '_Fullscreen_node_center_menu_tooltip',\r\n tooltip: '_Fullscreen_node_center_menu_tooltip',\r\n tooltipDisabled: '_Fullscreen_node_center_menu_tooltip',\r\n active: false,\r\n },\r\n //--- project navigator ---------------------------------------\r\n {\r\n buttonId: 'cmButProjectNavigator',\r\n iconClass: 'ui-icon-project-navigator',\r\n text: '_Project_navigator_center_menu_tooltip',\r\n tooltip: '_Project_navigator_center_menu_tooltip',\r\n tooltipDisabled: '_Project_navigator_center_menu_tooltip',\r\n active: true,\r\n },\r\n\r\n //--- reset ---------------------------------------------------\r\n {\r\n iconClass: 'ui-icon-obj-reset',\r\n buttonId: 'cmButResetObj',\r\n text: '_Reset_viewport_center_menu_tooltip',\r\n tooltip: '_Reset_viewport_center_menu_tooltip',\r\n tooltipDisabled: '_Reset_viewport_center_menu_tooltip',\r\n active: false,\r\n },\r\n //--- view ---------------------------------------------------\r\n {\r\n buttonId: 'cmButResetVp',\r\n iconClass: 'ui-icon-reset-vp',\r\n text: '_Select_view_center_menu_tooltip',\r\n tooltip: '_Select_view_center_menu_tooltip',\r\n tooltipDisabled: '_Select_view_center_menu_tooltip',\r\n active: false,\r\n subMenuId: 'cmb-view-submenu',\r\n subItems: [\r\n {\r\n buttonId: 'cmButFrontView',\r\n iconClass: 'ui-icon-front-view',\r\n text: '_Front_view_center_menu_tooltip',\r\n tooltip: '_Front_view_center_menu_tooltip',\r\n tooltipDisabled: '_Front_view_center_menu_tooltip',\r\n actionClick: 'centerMenuFrontViewClick',\r\n },\r\n \r\n //--- Top View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButTopView',\r\n iconClass: 'ui-icon-top-view',\r\n text: '_Top_view_center_menu_tooltip',\r\n tooltip: '_Top_view_center_menu_tooltip',\r\n tooltipDisabled: '_Top_view_center_menu_tooltip',\r\n actionClick: 'centerMenuTopViewClick',\r\n },\r\n //--- Side View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSideView',\r\n iconClass: 'ui-icon-side-view',\r\n text: '_Side_view_center_menu_tooltip',\r\n tooltip: '_Side_view_center_menu_tooltip',\r\n tooltipDisabled: '_Side_view_center_menu_tooltip',\r\n actionClick: 'centerMenuSideViewClick',\r\n },\r\n //--- Perspective View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButPerspectiveView',\r\n iconClass: 'ui-icon-perspective-view',\r\n text: '_Perspective_view_center_menu_tooltip',\r\n tooltip: '_Perspective_view_center_menu_tooltip',\r\n tooltipDisabled: '_Perspective_view_center_menu_tooltip',\r\n actionClick: 'centerMenuPerspectiveViewClick',\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n return items;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-tool-hub',\r\n standalone: true,\r\n imports: [CommonModule, ToolHubItemComponent, ToolHubSubItemComponent, DraggableDirective],\r\n templateUrl: './bimplus-tool-hub.component.html',\r\n styleUrl: './bimplus-tool-hub.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n\r\n this.items = createDefaultItems();\r\n this._visualSettings = createDefaultVisualSettings();\r\n this._units = this.calculateCurrentMenuItemUnits();\r\n this._subMenuUnits = this.calculateCurrentSubMenuItemUnits();\r\n this._annularSector = SVGGenerator.generateAnnularSector(this._visualSettings); \r\n this._annularSectorBorder = SVGGenerator.generateAnnularSectorBorder(this._visualSettings);\r\n this._deadZoneAnnularSector = SVGGenerator.generateDeadZoneAnnularSector(this._visualSettings);\r\n \r\n }\r\n\r\n // #region public fields\r\n @HostBinding('style.left.px') @Input() left: number = 500;\r\n @HostBinding('style.top.px') @Input() top: number = 500;\r\n\r\n get items() : Array<ToolHubItem> {\r\n return this._items;\r\n }\r\n @Input() set items(value: Array<ToolHubItem>) {\r\n this._items = value;\r\n\r\n const buttonsLength = ((this._items?.length) > 0) ? this._items.length : 1;\r\n const rootStyle = document?.documentElement?.style;\r\n if (rootStyle) {\r\n const menuItems = rootStyle.getPropertyValue(\"--menu-items\");\r\n parseInt(menuItems) != buttonsLength && rootStyle.setProperty(\"--menu-items\", buttonsLength.toString());\r\n }\r\n }\r\n\r\n get activeSubItems() : Array<ToolHubSubItem> | null{\r\n return this._activeSubItems;\r\n }\r\n\r\n title : string = \"\";\r\n\r\n get isOpened() : boolean{\r\n return this._isOpened;\r\n }\r\n @Input({ transform: booleanAttribute }) \r\n set isOpened(value: boolean){\r\n this._isOpened = value;\r\n this.title = this._isOpened ? this.translateService.instant('_Minimize_toolhub_tooltip') : this.translateService.instant('_Show_toolhub_tooltip');\r\n }\r\n\r\n get units(): ToolHubItemUnits{\r\n return this._units;\r\n }\r\n\r\n get subMenuUnits(): ToolHubItemUnits{\r\n return this._subMenuUnits;\r\n }\r\n\r\n get annularSector(): string{\r\n return this._annularSector;\r\n }\r\n\r\n get annularSectorBorder(): string{\r\n return this._annularSectorBorder;\r\n }\r\n\r\n get deadZoneAnnularSector(): string{\r\n return this._deadZoneAnnularSector;\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isFocused : boolean = false;\r\n @Input({ transform: booleanAttribute }) isActive : boolean = true;\r\n @Output() itemClicked = new EventEmitter<string>();\r\n @Output() subItemClicked = new EventEmitter<string>();\r\n\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n public getSVGViewBox():string{\r\n return SVGGenerator.getSVGViewBox(this._units);\r\n }\r\n\r\n public getSVGCenterMenuPath():string{\r\n return SVGGenerator.getSVGCenterMenuPath(this._units);\r\n }\r\n\r\n public getSVGCenterMenuItemPath():string{\r\n return SVGGenerator.getSVGCenterMenuItemPath(this._units);\r\n }\r\n\r\n public getSVGCenterSubMenuItemPath():string{\r\n return SVGGenerator.getSVGCenterSubMenuItemPath(this._subMenuUnits);\r\n }\r\n \r\n public toggleMenu() {\r\n this.isOpened = !this.isOpened;\r\n }\r\n\r\n findToolHubItemById(id : string) : ToolHubItem | undefined{\r\n return this._items.find(x=>x.buttonId === id);\r\n }\r\n\r\n clickToolHubItem( action: string){\r\n const item = this.findToolHubItemById(action);\r\n if(!item || item?.disabled){\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(action);\r\n }\r\n\r\n clickToolHubSubItem( action: string){\r\n if(!this._activeSubItems){\r\n return;\r\n }\r\n\r\n const item = this._activeSubItems.find(x=>x.buttonId === action);\r\n if(!item){\r\n return;\r\n }\r\n\r\n this.subItemClicked.emit(action);\r\n this.closeActiveSubItemsView();\r\n }\r\n\r\n toggleToolHubItemActive(buttonId: string){\r\n const item = this.findToolHubItemById(buttonId);\r\n if(!item || item.disabled){\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n }\r\n\r\n toggleSubItemsView(buttonId: string){\r\n const item = this.findToolHubItemById(buttonId);\r\n if(!item || item.disabled || !item.subItems){\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n if(item.active){\r\n this._activeSubItemsView = item;\r\n this._activeSubItems = item.subItems;\r\n }else{\r\n this._activeSubItemsView = null;\r\n this._activeSubItems = null;\r\n }\r\n }\r\n\r\n closeActiveSubItemsView(){\r\n if(this._activeSubItemsView){\r\n this._activeSubItemsView.active = false;\r\n this._activeSubItemsView = null;\r\n }\r\n this._activeSubItems = null;\r\n }\r\n\r\n setHoveredState(element: string, hovered : boolean){\r\n const index = this._hoveredElements.indexOf(element);\r\n const storedCountHoverd = this._hoveredElements.length;\r\n \r\n if(index >= 0 && !hovered){\r\n this._hoveredElements.splice(index, 1);\r\n }\r\n\r\n if(index < 0 && hovered){\r\n this._hoveredElements.push(element);\r\n }\r\n\r\n if(storedCountHoverd > 0 && this._hoveredElements.length === 0){\r\n\r\n // If hovered elements count reaches zero, check again a bit delayed. If nothing hovered at that time, close submenu\r\n setInterval(() => {\r\n if( this._hoveredElements.length === 0){\r\n this.closeActiveSubItemsView();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n dragElement(event : [number,number]): void {\r\n const deltaX = event[0];\r\n const deltaY = event[1];\r\n this.left += deltaX;\r\n this.top += deltaY;\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _isOpened : boolean = true;\r\n private _items : Array<ToolHubItem> = Array<ToolHubItem>();\r\n private _activeSubItemsView : ToolHubItem | null = null;\r\n private _activeSubItems : Array<ToolHubSubItem> | null = null;\r\n private _visualSettings : ToolHubVisualSettings;\r\n private _units : ToolHubItemUnits;\r\n private _subMenuUnits : ToolHubItemUnits;\r\n private _annularSector : string; \r\n private _annularSectorBorder : string;\r\n private _deadZoneAnnularSector : string;\r\n private _hoveredElements : Array<string> = Array<string>();\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private calculateCurrentMenuItemUnits() : ToolHubItemUnits{\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, this._items.length, this.isEmbedded);\r\n }\r\n\r\n private calculateCurrentSubMenuItemUnits() : ToolHubItemUnits{\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, 20, this.isEmbedded);\r\n }\r\n // #region private methods\r\n}\r\n"," <div class=\"center-menu\">\r\n <div class=\"center-menu-fp\" id=\"center-menu-fp-id\" [ngClass]=\"activeSubItems ? 'submenu-active' : ''\">\r\n <div libDraggable id=\"center-menu-controller\" class=\"center-menu-controller dragger\" data-test=\"toolhub_controller\" [ngClass]=\"{\r\n 'opened': isOpened,\r\n 'active': isActive\r\n }\" \r\n [title]=\"title\"\r\n (clicked)=\"toggleMenu()\"\r\n (dragging)=\"dragElement($event)\"\r\n >\r\n </div>\r\n <div class=\"center-menu-circle-border-inner\" [ngClass]=\"!isOpened ? 'hidden' : ''\"></div>\r\n <div class=\"center-menu-circle-border-outer\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('menuCircleBorderOuter', false)\" (mouseenter)=\"setHoveredState('menuCircleBorderOuter', true)\"></div>\r\n <div libDraggable class=\"center-menu-circle\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('menuCircle', false)\" (mouseenter)=\"setHoveredState('menuCircle', true)\" (dragging)=\"dragElement($event)\">\r\n \r\n <lib-tool-hub-item libDraggable *ngFor=\"let item of items\"\r\n [attr.data-test]=\"'toolhub_item_' + item.buttonId\"\r\n [item]=\"item\"\r\n [active] = \"item.active\"\r\n [isEnabled]=\"!item.disabled\"\r\n (clicked) = \"clickToolHubItem(item.buttonId)\"\r\n ></lib-tool-hub-item>\r\n\r\n <svg class=\"centermenu-button-svg\" [attr.viewBox]=\"getSVGViewBox()\" fill=\"none\">\r\n <clipPath id=\"svgCenterMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuItemPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterSubMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterSubMenuItemPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSector\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenuBorder\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSectorBorder\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenuDeadZone\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"deadZoneAnnularSector\" fill=\"none\" />\r\n </clipPath>\r\n </svg>\r\n </div>\r\n \r\n @if (activeSubItems) {\r\n <div class=\"center-menu-sub-menu-border\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('submenuBorder', false)\" (mouseenter)=\"setHoveredState('submenuBorder', true)\"></div>\r\n <div class=\"center-menu-sub-menu\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('submenu', false)\" (mouseenter)=\"setHoveredState('submenu', true)\">\r\n <lib-tool-hub-sub-item *ngFor=\"let item of activeSubItems\"\r\n [attr.data-test]=\"'toolhub_subitem_' + item.buttonId\"\r\n [item]=\"item\"\r\n (click) = \"clickToolHubSubItem(item.buttonId)\"\r\n ></lib-tool-hub-sub-item>\r\n </div>\r\n <div class=\"center-menu-sub-menu-dead-zone\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('deadZone', false)\" (mouseenter)=\"setHoveredState('deadZone', true)\"></div>\r\n }\r\n\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-contact',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-contact.component.html',\r\n styleUrl: './bimplus-contact.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n @Output() bimplusContactClicked = new EventEmitter<string>();\r\n\r\n _contactClicked(){\r\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\r\n }\r\n}\r\n","<a href=\"https://www.allplan.com/consulting-sale\" \r\n class=\"bimplus-contact-link\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n (click)=\"_contactClicked()\"\r\n [title]=\"'_BimplusContactTitle' | translate\"\r\n>\r\n <div class=\"bimplus-contact\"></div>\r\n</a>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-zoom',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-zoom.component.html',\r\n styleUrl: './bimplus-zoom.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusZoomComponent{\r\n /**--------------------------------------------------------------------------\r\n * List of available zoom\r\n --------------------------------------------------------------------------*/\r\n _zoomList = [\r\n { symbol: \"100\", text: \"100%\"},\r\n { symbol: \"105\", text: \"105%\"},\r\n { symbol: \"110\", text: \"110%\"},\r\n { symbol: \"115\", text: \"115%\"},\r\n { symbol: \"120\", text: \"120%\"},\r\n { symbol: \"125\", text: \"125%\"},\r\n { symbol: \"130\", text: \"130%\"},\r\n { symbol: \"135\", text: \"135%\"},\r\n { symbol: \"140\", text: \"140%\"},\r\n { symbol: \"145\", text: \"145%\"},\r\n { symbol: \"150\", text: \"150%\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedZoom : string = '125';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusZoomSelected = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selection\r\n --------------------------------------------------------------------------*/\r\n _switchZoom( zoom: string ){\r\n fireEvent(this, \"bimplusZoomSelected\", zoom);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup dynamic classes for zoom item\r\n --------------------------------------------------------------------------*/\r\n _getZoomClassObject( symbol: string ){\r\n return {\r\n 'selected': this.selectedZoom === symbol,\r\n ['bimzoom-' + symbol]: true\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n<div \r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n>\r\n <div class=\"dropdown-toggle\">\r\n <div class=\"main-icon icon-zoom\"></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <li\r\n *ngFor=\"let zoom of _zoomList\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\r\n (click)=\"_switchZoom(zoom.symbol)\"\r\n >\r\n <span>{{zoom.text}}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n booleanAttribute,\r\n OnChanges,\r\n SimpleChanges,\r\n OnInit,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n ElementRef,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport SimpleBar from 'simplebar';\r\n\r\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\r\ninterface MessageModel {\r\n 'id': string | undefined,\r\n 'type': string | undefined,\r\n 'title': string | undefined,\r\n 'text': string | undefined,\r\n 'link': string | undefined,\r\n 'linkText': string | string[] | undefined,\r\n 'links': string[] | undefined,\r\n 'actionId': number | undefined,\r\n 'capitalizedTitle': string | boolean | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-notify',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-notify.component.html',\r\n styleUrl: './bimplus-notify.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked{\r\n constructor(translateService: TranslateService, elementRef: ElementRef){\r\n super(translateService)\r\n this._element = elementRef.nativeElement;\r\n }\r\n // Expose Array constructor as a property\r\n Array = Array;\r\n \r\n @HostBinding('class.new-messages')\r\n get newMessages() {\r\n return this._alertActive;\r\n }\r\n\r\n @HostBinding('class.bim-notify')\r\n get bimNotify() {\r\n return true; // Or you can use a condition here if needed\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of messages\r\n --------------------------------------------------------------------------*/\r\n _messagesList: MessageModel[] = [];\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messagePreviewTime : number = 3000; // in ms\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesLimit : number = 3;\r\n\r\n /**--------------------------------------------------------------------------\r\n * offset of preview messages from main icon\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesOffsetY : string = '2.7em';\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messages : string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messages']) {\r\n const newValue = changes['messages'].currentValue;\r\n this.updateMessages(newValue);\r\n }\r\n }\r\n\r\n updateMessages(newValue: string /*, oldValue: string*/) {\r\n const isOk = newValue && typeof newValue === 'string';\r\n if (!isOk) {\r\n this._messagesList = [];\r\n this._previewMessagesList = [];\r\n this._alertActive = false;\r\n return;\r\n }\r\n\r\n const msgData = JSON.parse(newValue);\r\n this._messagesList = msgData.messages;\r\n\r\n // filter new messages into the list for preview\r\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\r\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\r\n\r\n // setup preview for new messages\r\n newMessagesList.reverse().forEach( (newMsg) => {\r\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\r\n this._previewMessagesList.unshift(newMsg);\r\n\r\n if( this.messagePreviewTime > 0 ) {\r\n setTimeout(() => {\r\n this._closePreviewMessage(newMsg.id, false);\r\n }, this.messagePreviewTime);\r\n }\r\n }\r\n })\r\n\r\n // limit preview messages count\r\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\r\n\r\n // set old state and alert\r\n this._oldMessagesList = this._messagesList;\r\n this._alertActive = this._messagesList.length != 0;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened: boolean = false;\r\n _alertActive: boolean = false;\r\n _oldMessagesList: MessageModel[] = [];\r\n // list of messages for preview\r\n _previewMessagesList: MessageModel[] = [];\r\n\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete all item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Message action event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * scrollbar stuff\r\n --------------------------------------------------------------------------*/\r\n _element: HTMLElement | undefined;\r\n _simpleBar: SimpleBar | undefined;\r\n\r\n /**--------------------------------------------------------------------------\r\n * initial component load\r\n --------------------------------------------------------------------------*/\r\n ngOnInit(): void {\r\n this.updateMessages(this.messages);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * component did load\r\n --------------------------------------------------------------------------*/\r\n ngAfterViewInit(): void {\r\n // init simple bar scrollbar\r\n const messagesContainer: HTMLElement | null | undefined = this._element?.querySelector('.messages-container');\r\n if (messagesContainer) {\r\n this._simpleBar = new SimpleBar(messagesContainer);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * component did render\r\n --------------------------------------------------------------------------*/\r\n ngAfterViewChecked(): void {\r\n //--- fix for simple bar component update -----------------------------------------------------------------------\r\n //--- message-item items are rerendered outside of the simple bar container so we need to move them inside of the scroll container --\r\n const _element = this._element;\r\n const barElem = _element?.querySelector('.messages-container');\r\n\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n const msgItems= _element?.querySelectorAll(\".messages-container > .message-item\");\r\n const barContent = _element?.querySelector(\".simplebar-content\");\r\n\r\n if (!barContent || !msgItems) {\r\n return;\r\n }\r\n\r\n if (this._simpleBar) {\r\n this._simpleBar.recalculate();\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close single message\r\n --------------------------------------------------------------------------*/\r\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\r\n if (preview) {\r\n return this._closePreviewMessage(item.id);\r\n }\r\n\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close preview message\r\n --------------------------------------------------------------------------*/\r\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\r\n if (!msgId) {\r\n return;\r\n }\r\n\r\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\r\n this.storeMessagesAsRead([msgId]);\r\n if ( closedByUser && this._previewMessagesList.length === 0 ){\r\n this._alertActive = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all messages\r\n --------------------------------------------------------------------------*/\r\n _deleteAllMessages(){\r\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\r\n this.clearAllLocalStorageMessages();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * message clicked\r\n --------------------------------------------------------------------------*/\r\n _messageAction( item: MessageModel, index: number ){\r\n item.actionId = index;\r\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n this._alertActive = false;\r\n this._previewMessagesList = [];\r\n }\r\n\r\n _messageNotReadYet(message: MessageModel){\r\n if(!message || !message.id){\r\n return true;\r\n }\r\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n return true;\r\n }\r\n return !messageListString.includes(message.id);\r\n }\r\n\r\n storeMessagesAsRead(messageList: string[]){\r\n if(!messageList || messageList.length <1){\r\n return;\r\n }\r\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n messageListString = \"\";\r\n }\r\n messageList.forEach((item: string)=>{\r\n if(!messageListString?.includes(item)){\r\n messageListString+=(item+\";\");\r\n }\r\n })\r\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\r\n }\r\n\r\n clearAllLocalStorageMessages(){\r\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get item link title\r\n --------------------------------------------------------------------------*/\r\n _getItemLinkTitle( item: MessageModel, index: number ){\r\n let itemLinksTitles: (string | undefined)[] = [];\r\n if ( item.linkText && (item.links || item.link)) {\r\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\r\n }\r\n return itemLinksTitles[index] || '';\r\n }\r\n}\r\n","<div\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n [title]=\"'_BimplusNotifyTitle' | translate\"\r\n>\r\n <div class=\"dropdown-toggle\" >\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\r\n ></div>\r\n </div>\r\n\r\n <div\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"notify-tick\"></div>\r\n <div class=\"messages-title\">\r\n <div class=\"messages-count\">\r\n ({{this._messagesList.length}})\r\n </div>\r\n <div\r\n class=\"messages-delete-all\"\r\n (click)=\"_deleteAllMessages()\"\r\n >\r\n {{\"_Notify_Mark_All\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"messages-container\">\r\n @if (_messagesList.length) {\r\n <div\r\n *ngFor=\"let item of _messagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, false, $event)\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"message-item-body-text\">{{item.text}}</div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n } \r\n </div>\r\n } @else {\r\n <div class=\"message-item-empty\">\r\n <div class=\"message-item-empty-icon\"></div>\r\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n\r\n<div\r\n class=\"bimcomp-messages-preview\"\r\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\r\n [style.top]=\"previewMessagesOffsetY\"\r\n>\r\n <div class=\"messages-container-preview\">\r\n <div\r\n *ngFor=\"let item of _previewMessagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, true, $event)\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"message-item-body-text\">\r\n {{item.text}}\r\n </div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute,OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n textClass: string,\r\n queryParams: string\r\n}\r\ninterface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\ninterface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", url: \"https://doc.allplan.com/display/BIMPLUSMANUAL/Bimplus+Benutzerhandbuch\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"supportLink\", action:\"support\", class: \"icon-support\", textId: \"_Support\", url: \"https://connect.allplan.com/en/support/contact.ct\", queryParams: \"no_cache=1\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", url: \"https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) supportVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n \r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this.localizedStrings = changes['localizedStrings'].currentValue; \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n \r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = item?.url?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div \r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n<div \r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n>\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{userPhotoUrl ? userPhotoUrl : '../../../../assets/images/bimplus_Components_User_Pic_Default.png'}}\"\r\n alt=\"{{buttonTitle ? buttonTitle : ''}}\"\r\n >\r\n <div\r\n class=\"user-name\"\r\n >\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <ng-container *ngFor=\"let item of _getMenuItems(); let i = index\">\r\n <li\r\n *ngIf=\"item\"\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n 'divider': item.type === 'divider',\r\n 'languageMenuItem': item.action === 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n <div\r\n *ngFor=\"let lang of _languagesList\"\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{_getLangId(lang)}}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"lang.symbol === this.selectedLanguage ? 'selected' : ''\"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{lang.text}}\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"submenu\"></div>\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <div class=\"submenu\"></div>\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n >\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() usedStorage : number = 0;\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\">\r\n {{usedStorage}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage >= 90,\r\n 'yellow': usedStorage >= 80 && usedStorage < 90,\r\n 'green': usedStorage < 80\r\n }\"\r\n [style.width]=\"usedStorage + '%'\"\r\n [style.max-width]=\"usedStorage + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n\r\n\r\n get currentLanguage() : string {\r\n return this._currentLanguage;\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this._strings = langStrings;\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this._strings;\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n await this.fetchLanguageStrings(lang);\r\n this._currentLanguage = lang;\r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this._strings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n this._strings = await data.json(); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n private _strings : LocalizedStrings = {};\r\n private _currentLanguage : string = \"en\";\r\n // #endregion private fields\r\n}\r\n","/*\r\n * Public API Surface of ngx-bimplus-components\r\n */\r\n\r\nexport * from './lib/ngx-bimplus-components.service';\r\nexport * from './lib/ngx-bimplus-components.component';\r\nexport * from './lib/components/bimplus-navbar/bimplus-navbar.component';\r\nexport * from './lib/components/bimplus-language-menu/bimplus-language-menu.component';\r\nexport * from './lib/components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nexport * from './lib/components/bimplus-main-menu/bimplus-main-menu.component';\r\nexport * from './lib/components/bimplus-sidenav/bimplus-sidenav.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.component';\r\nexport * from './lib/components/bimplus-contact/bimplus-contact.component';\r\nexport * from './lib/components/bimplus-zoom/bimplus-zoom.component';\r\nexport * from './lib/components/bimplus-notify/bimplus-notify.component';\r\nexport * from './lib/components/bimplus-user-menu/bimplus-user-menu.component';\r\nexport * from './lib/components/bimplus-storage-info/bimplus-storage-info.component';\r\nexport * from './lib/services/language-strings.service';\r\nexport * from './lib/types/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-bimplus-components.mjs","sources":["../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.service.ts","../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.component.ts","../../../projects/ngx-bimplus-components/src/lib/utils/utils.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/pipes/pxsuffix.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/directives/x-draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/svgGenerator.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../projects/ngx-bimplus-components/src/lib/services/language-strings.service.ts","../../../projects/ngx-bimplus-components/src/public-api.ts","../../../projects/ngx-bimplus-components/src/ngx-bimplus-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxBimplusComponentsService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-ngx-bimplus-components',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n ngx-bimplus-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgxBimplusComponentsComponent {\r\n\r\n}\r\n","// Define the type of the window.BimPlus object\r\ninterface BimPlusObject {\r\n [key: string]: (dataDetail: { detail: unknown }) => void;\r\n}\r\nexport interface Source {\r\n [key: string]: { emit: (arg0: unknown) => void; };\r\n}\r\n\r\n\r\n/**--------------------------------------------------------------------------\r\n* fire event from component in two ways : \r\n - fire custom event from component in standard recommended way via. this.eventName.emit function\r\n \r\n - call window.BimPlus.eventName function directly on window object (eventName is name\r\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\r\n Function must be defined in app. where we are using our components.\r\n This was implemented because MS Edge browser has problems with custom events and in some \r\n situations(e.g. after file download) it stops handling custom events.\r\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\r\n--------------------------------------------------------------------------*/\r\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\r\n if ( !eventName ) {\r\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\r\n return;\r\n }\r\n // Check if eventName exists on window.BimPlus and if it's a function\r\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\r\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\r\n bimPlus[eventName]({detail: data});\r\n }\r\n\r\n const _source = (source as Source);\r\n if (eventName in _source) {\r\n _source[eventName].emit(data);\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isModelViewerActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n if (!this.isModelViewerActive ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n>\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"isModelViewerActive ? 'model-viewer' : ''\"\r\n (click)=\"_logoClicked()\"\r\n ></div>\r\n <div \r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarMenuVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n <span *ngIf=\"projectInfo && !isTouch\">&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\" \r\n (click)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n \r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div class=\"bimcomp-overlay\" [ngClass]=\"_menuOpened ? 'open' : ''\" (click)=\"_toggleOpened()\"></div>\r\n<div data-test=\"language-menu-dropdown\" class=\"dropdown\" [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\" (click)=\"_toggleOpened()\">\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"expandUp ? 'expand-up' : ''\">\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\" class=\"bimcomp-dropdown-menu-item\" [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\" (click)=\"_switchLanguage(languageItem.symbol)\" *ngFor=\"let languageItem of _languagesList\">\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n constructor(public translateService: TranslateService){\r\n }\r\n\r\n _selectedLanguage: string = \"en\";\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage;\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage = value;\r\n this.translateService.use(value); \r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings); \r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: LocalizedStrings = {};\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings;\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings = value;\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value); \r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService], \r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n //this.prjImageStyle = \"\";\r\n }\r\n\r\n\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n \r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n \r\n \r\n prjListThumbnail = [];\r\n prjList = [];\r\n \r\n //prjImageOverlayStyle:{ [klass: string]: unknown; } | null | undefined;\r\n //prjImageStyle : { [klass: string]: unknown; } | null | undefined;\r\n\r\n\r\n get prjImgUrl(){ \r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/images/bimplus_Components_Project_Pic_Default.png\";\r\n }\r\n get backgroundValue(){\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/images/bimplus_Components_Project_Pic_Default.png'})`;\r\n }\r\n\r\n get prjImageOverlayStyle () {\r\n return {'background': `${this.backgroundValue}`};\r\n }\r\n\r\n get prjImageStyle(){\r\n return {'background': `url(${this.prjImgUrl})`};\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList : MenuListType[] = [\r\n { action:\"projectmembers\", id:\"portalBimUsers\", type:\"\",class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}, \r\n { action:\"models\", id:\"portalBimModels\", type:\"\",class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id:\"portalBimDocuments\", type:\"\",class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id:\"portalBimProjectSettings\",type:\"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id:\"portalBimProcesses\", type:\"\",class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n \r\n \r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n \r\n return !((this as unknown as BimplusProjectMenuComponentAttribute )[key]);\r\n } \r\n return false;\r\n }\r\n/**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType):boolean {\r\n \r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute )[key];\r\n }\r\n return false;\r\n }\r\n\r\n \r\n _projectMenuItemClicked(action:string,param:string){\r\n console.log(action,param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item:MenuListType, type: string, event : Event){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this,\"bimplusProjectMenuClicked\", {action, type} );\r\n }\r\n \r\n _menuItemIgnoreAction(event : Event){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item:MenuListType,isTouch:boolean){\r\n const retval:string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch?'':'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item:MenuListType){\r\n const retval:string = `${item.class} ${item.action === this.projectActiveItem ? 'active ' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #prjList>\r\n@for(item of _menuPrjList; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\" \r\n (click)=\"_menuItemClicked(item, 'normal',$event)\">\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\">\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #prjListThumbnail>\r\n@for(item of _menuPrjList; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\" \r\n (click)=\"_menuItemClicked(item, 'normal',$event)\">\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\" \r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\">\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass] = \"isCollapsed ? 'collapsed' : ''\"\r\n [ngClass] = \"isMiniMode ? 'mini-mode' : ''\"\r\n [ngClass] = \"isTouch ? 'is-touch' : ''\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\" \r\n [ngStyle]=\"prjImageOverlayStyle\"> \r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]= \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\" \r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n \r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div \r\n class=\"bim-pm-prj-items-list\" \r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"prjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\" >\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div> \r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule,BimplusProjectMenuComponent], \r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(translateService: TranslateService ){\r\n super(translateService) \r\n }\r\n\r\n \r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) sciaSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) sciaDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) sciaVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true; \r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this.localizedStrings = changes['localizedStrings'].currentValue; \r\n }\r\n }\r\n\r\n \r\n get footerList() {\r\n return this._menuFooterList.filter( item => (!this._isSubscribed(item) || this._isHidden(item)) ? false : true );\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`; \r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]); \r\n }\r\n\r\n _getContextData(item:MenuListType,active:boolean,disabled:boolean,clickable:boolean,selected:boolean){ \r\n return {item:item,active:active,disabled:disabled,clickable:clickable,selected:selected};\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n \r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n \r\n appsList : MenuListType[] = [\r\n { action:\"projectmembers\", id:\"portalBimUsers\",type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id:\"portalBimModels\", type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id:\"portalBimDocuments\", type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id:\"portalBimProjectSettings\", type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id:\"portalBimProcesses\", type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id:\"dividerprojectmanagement\", type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id:\"portalBimViewerBtn\", type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"_Portal_Menu_BIM_Explorer\", textIdDisabled: \"_Portal_Menu_BIM_Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"scia\", id:\"portalBimSCIA\", type:\"\",class: \"bim-mm-icon-scia\", textId: \"_Scia\", textIdDisabled: \"_Scia\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id:\"dividerapps\", type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id:\"portalTeamManagementBtn\",type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id:\"portalPropertyManagerBtn\", type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList : MenuListType[] = [\r\n { action:\"shop\", id:\"portalShopBtn\", type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Shop\", textIdDisabled: \"_Shop\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appItemContent let-contextData>\r\n @if (contextData.item.type === 'divider'){\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div> \r\n }@else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\" \r\n [ngClass]=\"isTouch?'':'hover-show-info'+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\" \r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\" \r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"> \r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div class=\"bim-mm-wrapper\" [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\" (click)=\"_overlayClicked()\">\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n \r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}} \r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}} \r\n projectActiveItem = {{projectActiveItem}} \r\n projectmembersDisabled = {{projectmembersDisabled}} \r\n modelsDisabled = {{modelsDisabled}} \r\n documentsDisabled = {{documentsDisabled}} \r\n projectsettingsDisabled = {{projectsettingsDisabled}} \r\n processesDisabled = {{processesDisabled}} \r\n projectmembersVisible = {{projectmembersVisible}} \r\n modelsVisible = {{modelsVisible}} \r\n documentsVisible = {{documentsVisible}} \r\n projectsettingsVisible = {{projectsettingsVisible}} \r\n processesVisible = {{processesVisible}} \r\n isCollapsed = {{isCollapsed}} \r\n isMiniMode = {{isTouch}} \r\n isTouch = {{isTouch}} \r\n hideMenuIcons = {{hideProjectMenuIcons}} \r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}} \r\n ></lib-bimplus-project-menu>\r\n } \r\n <div [ngClass]=\"appsList.length || footerList.length ? 'bim-mm-apps-container' : ''\"> \r\n <div class=\"bim-mm-apps-list\">\r\n <div *ngFor=\"let appItem of appsList\">\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n <div *ngFor=\"let footerItem of footerList\">\r\n <ng-container \r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div> \r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pxsuffix',\r\n standalone: true\r\n})\r\nexport class PxsuffixPipe implements PipeTransform {\r\n\r\n transform(input: number): string{ //string type\r\n return input + 'px';\r\n } \r\n\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[xDraggable]',\r\n standalone: true\r\n})\r\nexport class XDraggableDirective {\r\n\r\n oldX = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<number>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", deltaX);\r\n\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\r\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface SidenavItem{\r\n id : string;\r\n icon? : string;\r\n iconActive? : string;\r\n iconDisabled? : string;\r\n text : string;\r\n disabled? : boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav',\r\n standalone: true,\r\n imports: [CommonModule, PxsuffixPipe, XDraggableDirective, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-sidenav.component.html',\r\n styleUrl: './bimplus-sidenav.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusSidenavComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService) \r\n }\r\n\r\n// #region public fields\r\n activeItem : string = \"\";\r\n drawerHeader : string = \"\";\r\n drawerWidth : number = 300;\r\n drawerExpanded : boolean = true;\r\n\r\n @Output() activeItemChanged = new EventEmitter<string>();\r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Output() footerClicked = new EventEmitter<string>();\r\n\r\n get items() : Array<SidenavItem>{\r\n return this._items;\r\n }\r\n\r\n @Input() set items(value: Array<SidenavItem>) {\r\n this._items.length = 0;\r\n\r\n this._items = value;\r\n if(this.items.length > 0){\r\n this._activateItem(this.items[0].id);\r\n }\r\n }\r\n\r\n get actionItems() : Array<SidenavItem>{\r\n return this._actionItems;\r\n }\r\n\r\n @Input() set actionItems(value: Array<SidenavItem>) {\r\n this._actionItems.length = 0;\r\n this._actionItems = value;\r\n }\r\n\r\n get footerItem() : SidenavItem | null{\r\n return this._footerItem;\r\n }\r\n\r\n @Input() set footerItem(value: SidenavItem | null) {\r\n\r\n this._footerItem = value;\r\n }\r\n// #endregion public fields\r\n\r\n// #region private fields\r\n private _items : Array<SidenavItem> = new Array<SidenavItem>();\r\n private _actionItems : Array<SidenavItem> = new Array<SidenavItem>();\r\n private _footerItem : SidenavItem | null = null;\r\n// #endregion private fields\r\n\r\n// #region public methods\r\n_activateItem(item : string){\r\n this.activeItem = item;\r\n const foundItem = this._items.find(x=>x.id == item);\r\n this.drawerHeader = foundItem ? foundItem.text : \"\";\r\n if(!this.drawerExpanded){\r\n this._toggleDrawer();\r\n }\r\n fireEvent(this, \"activeItemChanged\", item);\r\n}\r\n\r\n_clickAction(item : string){\r\n fireEvent(this, \"actionClicked\", item);\r\n}\r\n\r\n_clickFooter(item : string){\r\n fireEvent(this, \"footerClicked\", item);\r\n}\r\n\r\n_toggleDrawer(){\r\n this.drawerExpanded = !this.drawerExpanded;\r\n}\r\n\r\n_onResizeWidth(event : number): void {\r\n const deltaX = event;\r\n this.drawerWidth += deltaX;\r\n}\r\n// #endregion public methods\r\n\r\n}\r\n","\r\n<div class=\"sidenav\">\r\n <div class=\"sidenav-row\" *ngFor=\"let sideNavItem of items\">\r\n @if (sideNavItem.disabled) {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.iconDisabled + ')'\"></div>\r\n } @else {\r\n @if (activeItem === sideNavItem.id) {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.iconActive + ')'\" (click)=\"_toggleDrawer()\"></div>\r\n } @else {\r\n <div [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + sideNavItem.icon + ')'\" (click)=\"_activateItem(sideNavItem.id)\"></div>\r\n }\r\n }\r\n </div>\r\n @if (actionItems.length > 0) {\r\n <div class=\"sidenav-separator\"></div>\r\n <div class=\"sidenav-row\" *ngFor=\"let actionItem of actionItems\">\r\n <div [attr.data-test]=\"'sidenav_action_item_' + actionItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + actionItem.icon + ')'\" (click)=\"_clickAction(actionItem.id)\"></div>\r\n </div>\r\n }\r\n @if (footerItem) {\r\n <div class=\"sidenav-row-footer\">\r\n <div [attr.data-test]=\"'sidenav_footer_item_' + footerItem.id\" class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + footerItem.icon + ')'\" (click)=\"_clickFooter(footerItem.id)\"></div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"sidenav-drawer\" [style.width] = \"drawerWidth | pxsuffix\" [ngClass]=\"drawerExpanded ? '' : 'hidden'\">\r\n <div class=\"sidenav-drawer-content-layout\">\r\n <div class = \"sidenav-drawer-header\">\r\n <div class = \"sidenav-drawer-header__title\">\r\n <span>{{drawerHeader | translate}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"sidenav-drawer-content-offset\">\r\n <slot class=\"sidenav-drawer-content\" name=\"sidenavDrawerContent\"></slot>\r\n </div>\r\n </div>\r\n @if (drawerExpanded) { \r\n <div xDraggable class=\"sidenav-resize-border-right\" (dragging)=\"_onResizeWidth($event)\"></div>\r\n <div xDraggable data-test=\"sidenav-resize-handle\" class=\"sidenav-resize-handle-left\" (dragging)=\"_onResizeWidth($event)\" (clicked)=\"_toggleDrawer()\"></div>\r\n }\r\n</div>\r\n@if (!drawerExpanded) { \r\n <div data-test=\"sidenav-resize-handle\" class =\"sidenav-resize-handle-left collapsed\" (click)=\"_toggleDrawer()\"></div>\r\n}\r\n","import { ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\r\n\r\nconst RAD_DEG : number = Math.PI / 180.0;\r\nconst PI2 : number = 2 * Math.PI;\r\n\r\n\r\nexport class SVGGenerator {\r\n\r\n // Constants for drawing arc\r\n /**\r\n * @param {Array.<Number>} center\r\n * @param {Number} R\r\n * @param {Number} angle\r\n * @return {Array.<Number>}\r\n */\r\n static pointOnArc(center: [number,number], R: number, angle: number) : [number, number] {\r\n const radians = (angle - 90) * RAD_DEG;\r\n\r\n return [center[0] + R * Math.cos(radians), center[1] + R * Math.sin(radians)];\r\n }\r\n\r\n /**\r\n * Generates arc path\r\n *\r\n * @param {Array.<Number>} center\r\n * @param {Number} radius\r\n * @param {Number} start\r\n * @param {Number} end\r\n * @param {Number} width\r\n * @param {Number} corner Corner radius\r\n * @param {Number} canvasWidth - Divisor to have svg with range 0 to 1\r\n *\r\n * @return {String|Array.<Number|String>}\r\n */\r\n static arc(center: [number,number], radius: number, start: number, end: number, width: number, corner: number, canvasWidth: number) : string {\r\n\r\n const innerR = radius - width;\r\n const circumference = Math.abs(end - start);\r\n corner = Math.min(width / 2, corner);\r\n\r\n if (360 * (corner / (Math.PI * (radius - width))) > Math.abs(start - end)) {\r\n corner = circumference / 360 * innerR * Math.PI;\r\n }\r\n\r\n // inner and outer radiuses\r\n const innerR2 = innerR + corner;\r\n const outerRadius = radius - corner;\r\n\r\n // butts corner points\r\n const oStart = this.pointOnArc(center, outerRadius, start);\r\n const oEnd = this.pointOnArc(center, outerRadius, end);\r\n\r\n const iStart = this.pointOnArc(center, innerR2, start);\r\n const iEnd = this.pointOnArc(center, innerR2, end);\r\n\r\n const iSection = 360 * (corner / (PI2 * innerR));\r\n const oSection = 360 * (corner / (PI2 * radius));\r\n\r\n // arcs endpoints\r\n const iArcStart = this.pointOnArc(center, innerR, start + iSection);\r\n const iArcEnd = this.pointOnArc(center, innerR, end - iSection);\r\n\r\n const oArcStart = this.pointOnArc(center, radius, start + oSection);\r\n const oArcEnd = this.pointOnArc(center, radius, end - oSection);\r\n\r\n const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0;\r\n const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0;\r\n\r\n const points : Array<string> = new Array<string>(\r\n // begin path\r\n \"M\", (oStart[0] / canvasWidth).toString(), (oStart[1] / canvasWidth).toString(),\r\n // outer start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oArcStart[0] / canvasWidth).toString(), (oArcStart[1] / canvasWidth).toString(),\r\n // outer main arc\r\n \"A\", (radius / canvasWidth).toString(), (radius / canvasWidth).toString(), \"0\", (arcSweep1 / canvasWidth).toString(), \"1\", (oArcEnd[0] / canvasWidth).toString(), (oArcEnd[1] / canvasWidth).toString(),\r\n // outer end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oEnd[0] / canvasWidth).toString(), (oEnd[1] / canvasWidth).toString(),\r\n // end butt\r\n \"L\", (iEnd[0] / canvasWidth).toString(), (iEnd[1] / canvasWidth).toString(),\r\n // inner end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iArcEnd[0] / canvasWidth).toString(), (iArcEnd[1] / canvasWidth).toString(),\r\n // inner arc\r\n \"A\", (innerR / canvasWidth).toString(), (innerR / canvasWidth).toString(), \"0\", (arcSweep2 / canvasWidth).toString(), \"0\", (iArcStart[0] / canvasWidth).toString(), (iArcStart[1] / canvasWidth).toString(),\r\n // inner start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iStart[0] / canvasWidth).toString(), (iStart[1] / canvasWidth).toString(), \"Z\" // end path*/\r\n );\r\n\r\n return points.join(' ');\r\n }\r\n\r\n /*\r\n * svg units - when \"objectBoundingBox\" is applied, coordinates are relative,\r\n * use coordinates as ratio (in range 0-1),\r\n * f.e. (1,1) is botom right corner of element\r\n */\r\n static drawMenuItemSvg(svgRadius: number, svgRadiusInner: number, buttonsLength: number, isEMEmbedded: boolean): ToolHubItemUnits {\r\n \r\n const radius = isEMEmbedded ? (svgRadius - 5) * 10 : svgRadius * 10;\r\n const radiusInner = isEMEmbedded ? (svgRadiusInner - 3) * 10 : svgRadiusInner * 10;\r\n const width = radius * 2;\r\n // coordinates of points describing one item on menu\r\n const angle = 360 / ((buttonsLength > 0) ? buttonsLength : 1);\r\n const halfAngleRadians = (angle * Math.PI) / 360;\r\n const leftX = radius - Math.sin(halfAngleRadians) * radius;\r\n const leftY = radius - Math.cos(halfAngleRadians) * radius;\r\n const rightX = radius + Math.sin(halfAngleRadians) * radius;\r\n const rightY = radius - Math.cos(halfAngleRadians) * radius;\r\n \r\n \r\n return {\r\n radius: radius / width,\r\n radiusInner: radiusInner / width,\r\n width: 1,\r\n thick: (radius - radiusInner) / width,\r\n innerEdgeRight: (radius + radiusInner) / width,\r\n leftX: leftX / width,\r\n leftY: leftY / width,\r\n rightX: rightX / width,\r\n rightY: rightY / width\r\n };\r\n }\r\n\r\n \r\n static generateAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n settings.subMenuRadius * multiplier,\r\n settings.subMenuStartAngle,\r\n settings.subMenuEndAngle,\r\n settings.subMenuWidth,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateAnnularSectorBorder(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n (settings.subMenuRadius * multiplier) + 1,\r\n settings.subMenuStartAngle - 0.5,\r\n settings.subMenuEndAngle + 0.5,\r\n settings.subMenuWidth + 2,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateDeadZoneAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.deadZoneCenter[0] * multiplier, settings.deadZoneCenter[1] * multiplier],\r\n (settings.deadZoneRadius) * multiplier,\r\n settings.deadZoneStartAngle,\r\n settings.deadZoneEndAngle,\r\n settings.deadZoneWidth,\r\n 7,\r\n 700);\r\n }\r\n\r\n static getSVGViewBox(units : ToolHubItemUnits):string{\r\n return `0 0 ${units.width} ${units.width}`;\r\n }\r\n\r\n static getSVGCenterMenuPath(units : ToolHubItemUnits):string{\r\n return `M 0 ${units.radius} A ${units.radius} ${units.radius} 0 0 1 ${units.width} ${units.radius} L ${units.width} ${units.radius} A ${units.radius} ${units.radius} 0 0 1 0 ${units.radius} L ${units.thick} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.innerEdgeRight} ${units.radius} L ${units.innerEdgeRight} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.thick} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterMenuItemPath(units : ToolHubItemUnits):string{\r\n return `M ${units.radius} ${units.radius} L ${units.leftX} ${units.leftY} A ${units.radius} ${units.radius} 0 0 1 ${units.rightX} ${units.rightY} L ${units.rightX} ${units.rightY} L ${units.radius} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterSubMenuItemPath(subMenuUnits : ToolHubItemUnits):string{\r\n return `M ${subMenuUnits.radius} ${subMenuUnits.radius} L ${subMenuUnits.leftX} ${subMenuUnits.leftY} A ${subMenuUnits.radius} ${subMenuUnits.radius} 0 0 1 ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.radius} ${subMenuUnits.radius} Z`;\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubItemComponent {\r\n @Input()\r\n item : ToolHubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n \r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"centermenu-button-icon dragger\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubSubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-sub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-sub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubSubItemComponent {\r\n @Input() item : ToolHubSubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n\r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n @HostBinding('class.center-sub-menu-button') centerSubMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"center-sub-menu-button-icon\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[libDraggable]',\r\n standalone: true\r\n})\r\nexport class DraggableDirective {\r\n\r\n oldX = 0;\r\n oldY = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<[number,number]>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n const deltaY = (event.clientY - this.oldY);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2 || Math.abs(deltaY) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", [deltaX,deltaY]);\r\n\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, booleanAttribute } from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { SVGGenerator } from './svgGenerator';\r\nimport { ToolHubItemComponent } from './tool-hub-item/tool-hub-item.component';\r\nimport { ToolHubSubItemComponent } from './tool-hub-sub-item/tool-hub-sub-item.component';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { ToolHubItem, ToolHubSubItem, ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\r\n\r\nfunction createDefaultVisualSettings() : ToolHubVisualSettings{\r\n const settings : ToolHubVisualSettings = {\r\n subMenuStartAngle : 50,\r\n subMenuEndAngle : 130,\r\n svgRadiusInner : 5.75,\r\n svgRadius : 10.25,\r\n subMenuCenter : [17.25, 17.5],\r\n subMenuRadius : 15.5,\r\n subMenuWidth : 52,\r\n deadZoneCenter : [17, 18],\r\n deadZoneWidth : 140,\r\n deadZoneRadius : 22,\r\n deadZoneStartAngle : 45,\r\n deadZoneEndAngle : 135\r\n }\r\n return settings;\r\n}\r\n\r\n// Use when implementing embedded mode\r\n/*\r\nfunction createEmbeddedSettings() : ToolHubVisualSettings{\r\n const settings : ToolHubVisualSettings = {\r\n subMenuStartAngle : 50,\r\n subMenuEndAngle : 130,\r\n svgRadiusInner : 4,\r\n svgRadius : 7.25,\r\n subMenuCenter : [17.25, 17.3],\r\n subMenuRadius : 16.2,\r\n subMenuWidth : 62,\r\n deadZoneCenter : [16.5, 16],\r\n deadZoneWidth : 120,\r\n deadZoneRadius : 18,\r\n deadZoneStartAngle : 35,\r\n deadZoneEndAngle : 145\r\n }\r\n return settings;\r\n}*/\r\n\r\nfunction createDefaultItems() : Array<ToolHubItem>{\r\n const items : Array<ToolHubItem> = [\r\n //--- create task ---------------------------------------------------\r\n {\r\n buttonId: 'cmButCreateTask',\r\n iconClass: 'ui-icon-create-task',\r\n text: '_Create_issue_center_menu_tooltip',\r\n tooltip: '_Create_issue_center_menu_tooltip',\r\n tooltipDisabled: '_Create_issue_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- quantity takeoff ---------------------------------------------------\r\n {\r\n buttonId: 'cmButQuantityTakeOff',\r\n iconClass: 'ui-icon-quantity-take-off',\r\n text: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltip: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltipDisabled : '_Quantity_take_Off_center_menu_tooltip',\r\n active: false,\r\n disabled : true\r\n },\r\n\r\n //--- markup ---------------------------------------------------\r\n {\r\n buttonId: 'cmButMarkup',\r\n iconClass: 'ui-icon-markup',\r\n text: '_Markups_center_menu_tooltip',\r\n tooltip: '_Markups_center_menu_tooltip',\r\n tooltipDisabled: '_Markups_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- section ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSection',\r\n iconClass: 'ui-icon-section',\r\n text: '_Sectioning_center_menu_tooltip',\r\n tooltip: '_Sectioning_center_menu_tooltip',\r\n tooltipDisabled: '_Sectioning_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- hide ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjTranspMenu',\r\n iconClass: 'ui-icon-obj-transp',\r\n text: '_Hide_objects_center_menu_tooltip',\r\n tooltip: '_Hide_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Hide_objects_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- isolate ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjSel',\r\n iconClass: 'ui-icon-obj-select',\r\n text: '_Isolate_objects_center_menu_tooltip',\r\n tooltip: '_Isolate_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Isolate_objects_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- navigation map ---------------------------------------------------\r\n {\r\n buttonId: 'cmButNavigationMap',\r\n iconClass: 'ui-icon-navigation-map',\r\n text: '_Navigation_nap_center_menu_tooltip',\r\n tooltip: '_Navigation_nap_center_menu_tooltip',\r\n tooltipDisabled: '_Navigation_nap_center_menu_tooltip',\r\n active: false,\r\n },\r\n\r\n //--- fullscreen ----------------------------------------------\r\n {\r\n buttonId: 'cmButFullScreen',\r\n iconClass: 'ui-icon-fullscreen',\r\n text: '_Fullscreen_node_center_menu_tooltip',\r\n tooltip: '_Fullscreen_node_center_menu_tooltip',\r\n tooltipDisabled: '_Fullscreen_node_center_menu_tooltip',\r\n active: false,\r\n },\r\n //--- project navigator ---------------------------------------\r\n {\r\n buttonId: 'cmButProjectNavigator',\r\n iconClass: 'ui-icon-project-navigator',\r\n text: '_Project_navigator_center_menu_tooltip',\r\n tooltip: '_Project_navigator_center_menu_tooltip',\r\n tooltipDisabled: '_Project_navigator_center_menu_tooltip',\r\n active: true,\r\n },\r\n\r\n //--- reset ---------------------------------------------------\r\n {\r\n iconClass: 'ui-icon-obj-reset',\r\n buttonId: 'cmButResetObj',\r\n text: '_Reset_viewport_center_menu_tooltip',\r\n tooltip: '_Reset_viewport_center_menu_tooltip',\r\n tooltipDisabled: '_Reset_viewport_center_menu_tooltip',\r\n active: false,\r\n },\r\n //--- view ---------------------------------------------------\r\n {\r\n buttonId: 'cmButResetVp',\r\n iconClass: 'ui-icon-reset-vp',\r\n text: '_Select_view_center_menu_tooltip',\r\n tooltip: '_Select_view_center_menu_tooltip',\r\n tooltipDisabled: '_Select_view_center_menu_tooltip',\r\n active: false,\r\n subMenuId: 'cmb-view-submenu',\r\n subItems: [\r\n {\r\n buttonId: 'cmButFrontView',\r\n iconClass: 'ui-icon-front-view',\r\n text: '_Front_view_center_menu_tooltip',\r\n tooltip: '_Front_view_center_menu_tooltip',\r\n tooltipDisabled: '_Front_view_center_menu_tooltip',\r\n actionClick: 'centerMenuFrontViewClick',\r\n },\r\n \r\n //--- Top View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButTopView',\r\n iconClass: 'ui-icon-top-view',\r\n text: '_Top_view_center_menu_tooltip',\r\n tooltip: '_Top_view_center_menu_tooltip',\r\n tooltipDisabled: '_Top_view_center_menu_tooltip',\r\n actionClick: 'centerMenuTopViewClick',\r\n },\r\n //--- Side View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSideView',\r\n iconClass: 'ui-icon-side-view',\r\n text: '_Side_view_center_menu_tooltip',\r\n tooltip: '_Side_view_center_menu_tooltip',\r\n tooltipDisabled: '_Side_view_center_menu_tooltip',\r\n actionClick: 'centerMenuSideViewClick',\r\n },\r\n //--- Perspective View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButPerspectiveView',\r\n iconClass: 'ui-icon-perspective-view',\r\n text: '_Perspective_view_center_menu_tooltip',\r\n tooltip: '_Perspective_view_center_menu_tooltip',\r\n tooltipDisabled: '_Perspective_view_center_menu_tooltip',\r\n actionClick: 'centerMenuPerspectiveViewClick',\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n return items;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-tool-hub',\r\n standalone: true,\r\n imports: [CommonModule, ToolHubItemComponent, ToolHubSubItemComponent, DraggableDirective],\r\n templateUrl: './bimplus-tool-hub.component.html',\r\n styleUrl: './bimplus-tool-hub.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n\r\n this.items = createDefaultItems();\r\n this._visualSettings = createDefaultVisualSettings();\r\n this._units = this.calculateCurrentMenuItemUnits();\r\n this._subMenuUnits = this.calculateCurrentSubMenuItemUnits();\r\n this._annularSector = SVGGenerator.generateAnnularSector(this._visualSettings); \r\n this._annularSectorBorder = SVGGenerator.generateAnnularSectorBorder(this._visualSettings);\r\n this._deadZoneAnnularSector = SVGGenerator.generateDeadZoneAnnularSector(this._visualSettings);\r\n \r\n }\r\n\r\n // #region public fields\r\n @HostBinding('style.left.px') @Input() left: number = 500;\r\n @HostBinding('style.top.px') @Input() top: number = 500;\r\n\r\n get items() : Array<ToolHubItem> {\r\n return this._items;\r\n }\r\n @Input() set items(value: Array<ToolHubItem>) {\r\n this._items = value;\r\n\r\n const buttonsLength = ((this._items?.length) > 0) ? this._items.length : 1;\r\n const rootStyle = document?.documentElement?.style;\r\n if (rootStyle) {\r\n const menuItems = rootStyle.getPropertyValue(\"--menu-items\");\r\n parseInt(menuItems) != buttonsLength && rootStyle.setProperty(\"--menu-items\", buttonsLength.toString());\r\n }\r\n }\r\n\r\n get activeSubItems() : Array<ToolHubSubItem> | null{\r\n return this._activeSubItems;\r\n }\r\n\r\n title : string = \"\";\r\n\r\n get isOpened() : boolean{\r\n return this._isOpened;\r\n }\r\n @Input({ transform: booleanAttribute }) \r\n set isOpened(value: boolean){\r\n this._isOpened = value;\r\n this.title = this._isOpened ? this.translateService.instant('_Minimize_toolhub_tooltip') : this.translateService.instant('_Show_toolhub_tooltip');\r\n }\r\n\r\n get units(): ToolHubItemUnits{\r\n return this._units;\r\n }\r\n\r\n get subMenuUnits(): ToolHubItemUnits{\r\n return this._subMenuUnits;\r\n }\r\n\r\n get annularSector(): string{\r\n return this._annularSector;\r\n }\r\n\r\n get annularSectorBorder(): string{\r\n return this._annularSectorBorder;\r\n }\r\n\r\n get deadZoneAnnularSector(): string{\r\n return this._deadZoneAnnularSector;\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isFocused : boolean = false;\r\n @Input({ transform: booleanAttribute }) isActive : boolean = true;\r\n @Output() itemClicked = new EventEmitter<string>();\r\n @Output() subItemClicked = new EventEmitter<string>();\r\n\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n public getSVGViewBox():string{\r\n return SVGGenerator.getSVGViewBox(this._units);\r\n }\r\n\r\n public getSVGCenterMenuPath():string{\r\n return SVGGenerator.getSVGCenterMenuPath(this._units);\r\n }\r\n\r\n public getSVGCenterMenuItemPath():string{\r\n return SVGGenerator.getSVGCenterMenuItemPath(this._units);\r\n }\r\n\r\n public getSVGCenterSubMenuItemPath():string{\r\n return SVGGenerator.getSVGCenterSubMenuItemPath(this._subMenuUnits);\r\n }\r\n \r\n public toggleMenu() {\r\n this.isOpened = !this.isOpened;\r\n }\r\n\r\n findToolHubItemById(id : string) : ToolHubItem | undefined{\r\n return this._items.find(x=>x.buttonId === id);\r\n }\r\n\r\n clickToolHubItem( action: string){\r\n const item = this.findToolHubItemById(action);\r\n if(!item || item?.disabled){\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(action);\r\n }\r\n\r\n clickToolHubSubItem( action: string){\r\n if(!this._activeSubItems){\r\n return;\r\n }\r\n\r\n const item = this._activeSubItems.find(x=>x.buttonId === action);\r\n if(!item){\r\n return;\r\n }\r\n\r\n this.subItemClicked.emit(action);\r\n this.closeActiveSubItemsView();\r\n }\r\n\r\n toggleToolHubItemActive(buttonId: string){\r\n const item = this.findToolHubItemById(buttonId);\r\n if(!item || item.disabled){\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n }\r\n\r\n toggleSubItemsView(buttonId: string){\r\n const item = this.findToolHubItemById(buttonId);\r\n if(!item || item.disabled || !item.subItems){\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n if(item.active){\r\n this._activeSubItemsView = item;\r\n this._activeSubItems = item.subItems;\r\n }else{\r\n this._activeSubItemsView = null;\r\n this._activeSubItems = null;\r\n }\r\n }\r\n\r\n closeActiveSubItemsView(){\r\n if(this._activeSubItemsView){\r\n this._activeSubItemsView.active = false;\r\n this._activeSubItemsView = null;\r\n }\r\n this._activeSubItems = null;\r\n }\r\n\r\n setHoveredState(element: string, hovered : boolean){\r\n const index = this._hoveredElements.indexOf(element);\r\n const storedCountHoverd = this._hoveredElements.length;\r\n \r\n if(index >= 0 && !hovered){\r\n this._hoveredElements.splice(index, 1);\r\n }\r\n\r\n if(index < 0 && hovered){\r\n this._hoveredElements.push(element);\r\n }\r\n\r\n if(storedCountHoverd > 0 && this._hoveredElements.length === 0){\r\n\r\n // If hovered elements count reaches zero, check again a bit delayed. If nothing hovered at that time, close submenu\r\n setInterval(() => {\r\n if( this._hoveredElements.length === 0){\r\n this.closeActiveSubItemsView();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n dragElement(event : [number,number]): void {\r\n const deltaX = event[0];\r\n const deltaY = event[1];\r\n this.left += deltaX;\r\n this.top += deltaY;\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _isOpened : boolean = true;\r\n private _items : Array<ToolHubItem> = Array<ToolHubItem>();\r\n private _activeSubItemsView : ToolHubItem | null = null;\r\n private _activeSubItems : Array<ToolHubSubItem> | null = null;\r\n private _visualSettings : ToolHubVisualSettings;\r\n private _units : ToolHubItemUnits;\r\n private _subMenuUnits : ToolHubItemUnits;\r\n private _annularSector : string; \r\n private _annularSectorBorder : string;\r\n private _deadZoneAnnularSector : string;\r\n private _hoveredElements : Array<string> = Array<string>();\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private calculateCurrentMenuItemUnits() : ToolHubItemUnits{\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, this._items.length, this.isEmbedded);\r\n }\r\n\r\n private calculateCurrentSubMenuItemUnits() : ToolHubItemUnits{\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, 20, this.isEmbedded);\r\n }\r\n // #region private methods\r\n}\r\n"," <div class=\"center-menu\">\r\n <div class=\"center-menu-fp\" id=\"center-menu-fp-id\" [ngClass]=\"activeSubItems ? 'submenu-active' : ''\">\r\n <div libDraggable id=\"center-menu-controller\" class=\"center-menu-controller dragger\" data-test=\"toolhub_controller\" [ngClass]=\"{\r\n 'opened': isOpened,\r\n 'active': isActive\r\n }\" \r\n [title]=\"title\"\r\n (clicked)=\"toggleMenu()\"\r\n (dragging)=\"dragElement($event)\"\r\n >\r\n </div>\r\n <div class=\"center-menu-circle-border-inner\" [ngClass]=\"!isOpened ? 'hidden' : ''\"></div>\r\n <div class=\"center-menu-circle-border-outer\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('menuCircleBorderOuter', false)\" (mouseenter)=\"setHoveredState('menuCircleBorderOuter', true)\"></div>\r\n <div libDraggable class=\"center-menu-circle\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('menuCircle', false)\" (mouseenter)=\"setHoveredState('menuCircle', true)\" (dragging)=\"dragElement($event)\">\r\n \r\n <lib-tool-hub-item libDraggable *ngFor=\"let item of items\"\r\n [attr.data-test]=\"'toolhub_item_' + item.buttonId\"\r\n [item]=\"item\"\r\n [active] = \"item.active\"\r\n [isEnabled]=\"!item.disabled\"\r\n (clicked) = \"clickToolHubItem(item.buttonId)\"\r\n ></lib-tool-hub-item>\r\n\r\n <svg class=\"centermenu-button-svg\" [attr.viewBox]=\"getSVGViewBox()\" fill=\"none\">\r\n <clipPath id=\"svgCenterMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuItemPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterSubMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterSubMenuItemPath()\" fill=\"white\"/>\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSector\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenuBorder\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSectorBorder\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenuDeadZone\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"deadZoneAnnularSector\" fill=\"none\" />\r\n </clipPath>\r\n </svg>\r\n </div>\r\n \r\n @if (activeSubItems) {\r\n <div class=\"center-menu-sub-menu-border\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('submenuBorder', false)\" (mouseenter)=\"setHoveredState('submenuBorder', true)\"></div>\r\n <div class=\"center-menu-sub-menu\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('submenu', false)\" (mouseenter)=\"setHoveredState('submenu', true)\">\r\n <lib-tool-hub-sub-item *ngFor=\"let item of activeSubItems\"\r\n [attr.data-test]=\"'toolhub_subitem_' + item.buttonId\"\r\n [item]=\"item\"\r\n (click) = \"clickToolHubSubItem(item.buttonId)\"\r\n ></lib-tool-hub-sub-item>\r\n </div>\r\n <div class=\"center-menu-sub-menu-dead-zone\" [ngClass]=\"!isOpened ? 'hidden' : ''\" (mouseleave)=\"setHoveredState('deadZone', false)\" (mouseenter)=\"setHoveredState('deadZone', true)\"></div>\r\n }\r\n\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-contact',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-contact.component.html',\r\n styleUrl: './bimplus-contact.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n @Output() bimplusContactClicked = new EventEmitter<string>();\r\n\r\n _contactClicked(){\r\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\r\n }\r\n}\r\n","<a href=\"https://www.allplan.com/consulting-sale\" \r\n class=\"bimplus-contact-link\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n (click)=\"_contactClicked()\"\r\n [title]=\"'_BimplusContactTitle' | translate\"\r\n>\r\n <div class=\"bimplus-contact\"></div>\r\n</a>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-zoom',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-zoom.component.html',\r\n styleUrl: './bimplus-zoom.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusZoomComponent{\r\n /**--------------------------------------------------------------------------\r\n * List of available zoom\r\n --------------------------------------------------------------------------*/\r\n _zoomList = [\r\n { symbol: \"100\", text: \"100%\"},\r\n { symbol: \"105\", text: \"105%\"},\r\n { symbol: \"110\", text: \"110%\"},\r\n { symbol: \"115\", text: \"115%\"},\r\n { symbol: \"120\", text: \"120%\"},\r\n { symbol: \"125\", text: \"125%\"},\r\n { symbol: \"130\", text: \"130%\"},\r\n { symbol: \"135\", text: \"135%\"},\r\n { symbol: \"140\", text: \"140%\"},\r\n { symbol: \"145\", text: \"145%\"},\r\n { symbol: \"150\", text: \"150%\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedZoom : string = '125';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusZoomSelected = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selection\r\n --------------------------------------------------------------------------*/\r\n _switchZoom( zoom: string ){\r\n fireEvent(this, \"bimplusZoomSelected\", zoom);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup dynamic classes for zoom item\r\n --------------------------------------------------------------------------*/\r\n _getZoomClassObject( symbol: string ){\r\n return {\r\n 'selected': this.selectedZoom === symbol,\r\n ['bimzoom-' + symbol]: true\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n<div \r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n>\r\n <div class=\"dropdown-toggle\">\r\n <div class=\"main-icon icon-zoom\"></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <li\r\n *ngFor=\"let zoom of _zoomList\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\r\n (click)=\"_switchZoom(zoom.symbol)\"\r\n >\r\n <span>{{zoom.text}}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n booleanAttribute,\r\n OnChanges,\r\n SimpleChanges,\r\n OnInit,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n ElementRef,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport SimpleBar from 'simplebar';\r\n\r\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\r\ninterface MessageModel {\r\n 'id': string | undefined,\r\n 'type': string | undefined,\r\n 'title': string | undefined,\r\n 'text': string | undefined,\r\n 'link': string | undefined,\r\n 'linkText': string | string[] | undefined,\r\n 'links': string[] | undefined,\r\n 'actionId': number | undefined,\r\n 'capitalizedTitle': string | boolean | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-notify',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-notify.component.html',\r\n styleUrl: './bimplus-notify.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked{\r\n constructor(translateService: TranslateService, elementRef: ElementRef){\r\n super(translateService)\r\n this._element = elementRef.nativeElement;\r\n }\r\n // Expose Array constructor as a property\r\n Array = Array;\r\n \r\n @HostBinding('class.new-messages')\r\n get newMessages() {\r\n return this._alertActive;\r\n }\r\n\r\n @HostBinding('class.bim-notify')\r\n get bimNotify() {\r\n return true; // Or you can use a condition here if needed\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of messages\r\n --------------------------------------------------------------------------*/\r\n _messagesList: MessageModel[] = [];\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messagePreviewTime : number = 3000; // in ms\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesLimit : number = 3;\r\n\r\n /**--------------------------------------------------------------------------\r\n * offset of preview messages from main icon\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesOffsetY : string = '2.7em';\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messages : string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messages']) {\r\n const newValue = changes['messages'].currentValue;\r\n this.updateMessages(newValue);\r\n }\r\n }\r\n\r\n updateMessages(newValue: string /*, oldValue: string*/) {\r\n const isOk = newValue && typeof newValue === 'string';\r\n if (!isOk) {\r\n this._messagesList = [];\r\n this._previewMessagesList = [];\r\n this._alertActive = false;\r\n return;\r\n }\r\n\r\n const msgData = JSON.parse(newValue);\r\n this._messagesList = msgData.messages;\r\n\r\n // filter new messages into the list for preview\r\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\r\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\r\n\r\n // setup preview for new messages\r\n newMessagesList.reverse().forEach( (newMsg) => {\r\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\r\n this._previewMessagesList.unshift(newMsg);\r\n\r\n if( this.messagePreviewTime > 0 ) {\r\n setTimeout(() => {\r\n this._closePreviewMessage(newMsg.id, false);\r\n }, this.messagePreviewTime);\r\n }\r\n }\r\n })\r\n\r\n // limit preview messages count\r\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\r\n\r\n // set old state and alert\r\n this._oldMessagesList = this._messagesList;\r\n this._alertActive = this._messagesList.length != 0;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened: boolean = false;\r\n _alertActive: boolean = false;\r\n _oldMessagesList: MessageModel[] = [];\r\n // list of messages for preview\r\n _previewMessagesList: MessageModel[] = [];\r\n\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete all item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Message action event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * scrollbar stuff\r\n --------------------------------------------------------------------------*/\r\n _element: HTMLElement | undefined;\r\n _simpleBar: SimpleBar | undefined;\r\n\r\n /**--------------------------------------------------------------------------\r\n * initial component load\r\n --------------------------------------------------------------------------*/\r\n ngOnInit(): void {\r\n this.updateMessages(this.messages);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * component did load\r\n --------------------------------------------------------------------------*/\r\n ngAfterViewInit(): void {\r\n // init simple bar scrollbar\r\n const messagesContainer: HTMLElement | null | undefined = this._element?.querySelector('.messages-container');\r\n if (messagesContainer) {\r\n this._simpleBar = new SimpleBar(messagesContainer);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * component did render\r\n --------------------------------------------------------------------------*/\r\n ngAfterViewChecked(): void {\r\n //--- fix for simple bar component update -----------------------------------------------------------------------\r\n //--- message-item items are rerendered outside of the simple bar container so we need to move them inside of the scroll container --\r\n const _element = this._element;\r\n const barElem = _element?.querySelector('.messages-container');\r\n\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n const msgItems= _element?.querySelectorAll(\".messages-container > .message-item\");\r\n const barContent = _element?.querySelector(\".simplebar-content\");\r\n\r\n if (!barContent || !msgItems) {\r\n return;\r\n }\r\n\r\n if (this._simpleBar) {\r\n this._simpleBar.recalculate();\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close single message\r\n --------------------------------------------------------------------------*/\r\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\r\n if (preview) {\r\n return this._closePreviewMessage(item.id);\r\n }\r\n\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close preview message\r\n --------------------------------------------------------------------------*/\r\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\r\n if (!msgId) {\r\n return;\r\n }\r\n\r\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\r\n this.storeMessagesAsRead([msgId]);\r\n if ( closedByUser && this._previewMessagesList.length === 0 ){\r\n this._alertActive = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all messages\r\n --------------------------------------------------------------------------*/\r\n _deleteAllMessages(){\r\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\r\n this.clearAllLocalStorageMessages();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * message clicked\r\n --------------------------------------------------------------------------*/\r\n _messageAction( item: MessageModel, index: number ){\r\n item.actionId = index;\r\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n this._alertActive = false;\r\n this._previewMessagesList = [];\r\n }\r\n\r\n _messageNotReadYet(message: MessageModel){\r\n if(!message || !message.id){\r\n return true;\r\n }\r\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n return true;\r\n }\r\n return !messageListString.includes(message.id);\r\n }\r\n\r\n storeMessagesAsRead(messageList: string[]){\r\n if(!messageList || messageList.length <1){\r\n return;\r\n }\r\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n messageListString = \"\";\r\n }\r\n messageList.forEach((item: string)=>{\r\n if(!messageListString?.includes(item)){\r\n messageListString+=(item+\";\");\r\n }\r\n })\r\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\r\n }\r\n\r\n clearAllLocalStorageMessages(){\r\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get item link title\r\n --------------------------------------------------------------------------*/\r\n _getItemLinkTitle( item: MessageModel, index: number ){\r\n let itemLinksTitles: (string | undefined)[] = [];\r\n if ( item.linkText && (item.links || item.link)) {\r\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\r\n }\r\n return itemLinksTitles[index] || '';\r\n }\r\n}\r\n","<div\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n [title]=\"'_BimplusNotifyTitle' | translate\"\r\n>\r\n <div class=\"dropdown-toggle\" >\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\r\n ></div>\r\n </div>\r\n\r\n <div\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"notify-tick\"></div>\r\n <div class=\"messages-title\">\r\n <div class=\"messages-count\">\r\n ({{this._messagesList.length}})\r\n </div>\r\n <div\r\n class=\"messages-delete-all\"\r\n (click)=\"_deleteAllMessages()\"\r\n >\r\n {{\"_Notify_Mark_All\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"messages-container\">\r\n @if (_messagesList.length) {\r\n <div\r\n *ngFor=\"let item of _messagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, false, $event)\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"message-item-body-text\">{{item.text}}</div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n } \r\n </div>\r\n } @else {\r\n <div class=\"message-item-empty\">\r\n <div class=\"message-item-empty-icon\"></div>\r\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n\r\n<div\r\n class=\"bimcomp-messages-preview\"\r\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\r\n [style.top]=\"previewMessagesOffsetY\"\r\n>\r\n <div class=\"messages-container-preview\">\r\n <div\r\n *ngFor=\"let item of _previewMessagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, true, $event)\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"message-item-body-text\">\r\n {{item.text}}\r\n </div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute,OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n textClass: string,\r\n queryParams: string\r\n}\r\ninterface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\ninterface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", url: \"https://doc.allplan.com/display/BIMPLUSMANUAL/Bimplus+Benutzerhandbuch\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"supportLink\", action:\"support\", class: \"icon-support\", textId: \"_Support\", url: \"https://connect.allplan.com/en/support/contact.ct\", queryParams: \"no_cache=1\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", url: \"https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) supportVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n \r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this.localizedStrings = changes['localizedStrings'].currentValue; \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n \r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = item?.url?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div \r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n></div>\r\n<div \r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n>\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{userPhotoUrl ? userPhotoUrl : ''}}\"\r\n alt=\"{{buttonTitle ? buttonTitle : ''}}\"\r\n >\r\n <div\r\n class=\"user-name\"\r\n >\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <ng-container *ngFor=\"let item of _getMenuItems(); let i = index\">\r\n <li\r\n *ngIf=\"item\"\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n 'divider': item.type === 'divider',\r\n 'languageMenuItem': item.action === 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n <div\r\n *ngFor=\"let lang of _languagesList\"\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{_getLangId(lang)}}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"lang.symbol === this.selectedLanguage ? 'selected' : ''\"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{lang.text}}\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"submenu\"></div>\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <div class=\"submenu\"></div>\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n >\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{item.textId | translate}}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() usedStorage : number = 0;\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\">\r\n {{usedStorage}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage >= 90,\r\n 'yellow': usedStorage >= 80 && usedStorage < 90,\r\n 'green': usedStorage < 80\r\n }\"\r\n [style.width]=\"usedStorage + '%'\"\r\n [style.max-width]=\"usedStorage + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n\r\n\r\n get currentLanguage() : string {\r\n return this._currentLanguage;\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this._strings = langStrings;\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this._strings;\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n await this.fetchLanguageStrings(lang);\r\n this._currentLanguage = lang;\r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this._strings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n this._strings = await data.json(); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n private _strings : LocalizedStrings = {};\r\n private _currentLanguage : string = \"en\";\r\n // #endregion private fields\r\n}\r\n","/*\r\n * Public API Surface of ngx-bimplus-components\r\n */\r\n\r\nexport * from './lib/ngx-bimplus-components.service';\r\nexport * from './lib/ngx-bimplus-components.component';\r\nexport * from './lib/components/bimplus-navbar/bimplus-navbar.component';\r\nexport * from './lib/components/bimplus-language-menu/bimplus-language-menu.component';\r\nexport * from './lib/components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nexport * from './lib/components/bimplus-main-menu/bimplus-main-menu.component';\r\nexport * from './lib/components/bimplus-sidenav/bimplus-sidenav.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.component';\r\nexport * from './lib/components/bimplus-contact/bimplus-contact.component';\r\nexport * from './lib/components/bimplus-zoom/bimplus-zoom.component';\r\nexport * from './lib/components/bimplus-notify/bimplus-notify.component';\r\nexport * from './lib/components/bimplus-user-menu/bimplus-user-menu.component';\r\nexport * from './lib/components/bimplus-storage-info/bimplus-storage-info.component';\r\nexport * from './lib/services/language-strings.service';\r\nexport * from './lib/types/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}