@skysoftware-co/bayan-core-widgets-ui 0.0.20 → 0.0.21
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.
|
@@ -3079,11 +3079,11 @@ class BayanCoreGlobalSearchWidgetComponent {
|
|
|
3079
3079
|
}
|
|
3080
3080
|
}
|
|
3081
3081
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: BayanCoreGlobalSearchWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3082
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: BayanCoreGlobalSearchWidgetComponent, isStandalone: true, selector: "bayan-core-global-search-widget", inputs: { dataSource: "dataSource", baseUrl: "baseUrl", placeholder: "placeholder", searchMode: "searchMode", stylingMode: "stylingMode", searchWrapperClass: "searchWrapperClass", searchItemClass: "searchItemClass", searchItemTitleClass: "searchItemTitleClass", searchItemSubtitleClass: "searchItemSubtitleClass", iconClass: "iconClass" }, outputs: { search: "search", itemNavigate: "itemNavigate" }, viewQueries: [{ propertyName: "searchAutoComplete", first: true, predicate: ["searchAutoComplete"], descendants: true }], ngImport: i0, template: "<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex align-items-center flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n", styles: [".global-search-wrapper{position:relative;width:100%;max-width:480px}.dx-autocomplete-popup-wrapper{border-radius:8px!important;box-shadow:0 4px 16px #00000026!important;background:#fff!important;min-width:400px!important;padding:.5rem 0!important;max-height:340px!important;overflow-y:auto!important}.global-search-dropdown-item{width:100%}.global-search-link{display:block;border-radius:6px;transition:background .15s,color .15s;text-decoration:none;padding:0}.compact-search-item{padding:2px 7px!important;min-height:35px;line-height:1.2}.global-search-link:hover,.compact-search-item:hover{background:#f5f5f5!important;color:#999!important}.search-title{color:#999!important;font-weight:600;font-size:.8em!important;line-height:1.1}.search-subtitle{color:#222;font-size:14px;line-height:1.1;margin-top:1px}.global-search-icon{color:#999!important;font-size:.8em!important}.state-small-size{font-size:.95em}.menu-dropdown-panel,.dropdown-menu{background:#fff!important}[dir=rtl] .navbar-brand-link{margin-left:auto!important;margin-right:0!important;display:flex;justify-content:flex-end}.top-bar-header .dx-autocomplete,.header-toolbar .dx-autocomplete{width:100%!important;max-width:400px;margin:0 auto}.dx-autocomplete .dx-texteditor-input{background:#5c4848!important;color:#fff!important;border-radius:6px!important;border:2px solid #f18206!important;padding:8px 12px!important;font-size:16px!important;box-shadow:none!important}.dx-autocomplete .dx-texteditor-input::placeholder{color:#b9a9a9!important;opacity:1}.dx-autocomplete.dx-state-focused .dx-texteditor-input{border-color:#f18206!important;box-shadow:0 0 0 2px #f1820626!important}.settings-menu li{margin-bottom:9px}.settings-menu .header-dropdown-item,.settings-menu .menu-row{color:var(--dark-text-color, #333)!important;font-weight:400;background:none;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.settings-menu .header-dropdown-item.menu-item-active,.settings-menu .menu-row.menu-item-active{color:#222;font-weight:700}.settings-menu .menu-section-label{color:#bbb!important;font-size:13px;font-weight:400;cursor:default;padding-top:8px;padding-bottom:4px}.settings-menu .indicatorClass{display:inline-flex;align-items:center;margin-right:8px;color:var(--primary-color, #F18206)}.settings-menu .indicatorClass.invisible{color:transparent}.settings-menu .fa-icon{margin-right:8px}.settings-menu .dropdown-divider{margin:4px 0}[dir=rtl] .employee-info{margin-left:0!important;margin-right:8px!important;text-align:right}[dir=rtl] .user-name,[dir=rtl] .property-name{text-align:right}[dir=rtl] .employee-caret{margin-left:0!important;margin-right:2px!important}[dir=rtl] .menu-item,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row{flex-direction:row-reverse;text-align:right}[dir=rtl] .menu-indicator{margin-left:0!important;margin-right:8px!important}[dir=rtl] .dropdown-divider,[dir=rtl] .menu-divider{margin-left:0!important;margin-right:0!important}[dir=rtl] .navbar-brand-link{text-align:right}[dir=rtl] .top-bar-header,[dir=rtl] .header-toolbar{direction:rtl}[dir=rtl] .about-dialog .row,[dir=rtl] .about-dialog .col-4,[dir=rtl] .about-dialog .col-8,[dir=rtl] .change-password-dialog .dx-form,[dir=rtl] .change-password-dialog .dx-label,[dir=rtl] .change-password-dialog .dx-field-item-label{text-align:right}[dir=rtl] .menu-dropdown-panel,[dir=rtl] .settings-menu,[dir=rtl] .employee-menu,[dir=rtl] .notifications-menu{right:auto;left:0}[dir=rtl] .menu-section-label,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{text-align:right}[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{padding-left:16px;padding-right:16px;flex-direction:row-reverse}[dir=rtl] .menu-indicator{margin-left:0;margin-right:8px}[dir=rtl] .notifications-badge{right:auto;left:4px}[dir=rtl] .employee-info{margin-left:0;margin-right:8px}[dir=rtl] .employee-caret{margin-left:0;margin-right:2px}::ng-deep .dx-autocomplete.dx-state-focused .dx-texteditor-input,::ng-deep .dx-autocomplete .dx-texteditor-input:focus{outline:none!important;box-shadow:none!important}::ng-deep .dx-autocomplete.dx-state-focused.dx-texteditor-filled{border-color:transparent!important;box-shadow:none!important}.menu-dropdown-host{position:relative;display:flex;align-items:center}.menu-icon-btn{display:flex;align-items:center;justify-content:center;width:40px;height:56px;text-decoration:none;color:var(--Secondary-Light-Color, #999)!important;transition:color var(--tran-02, .2s);cursor:pointer;font-size:14px}.menu-icon-btn:hover{color:var(--bs-white, #fff)!important}.menu-dropdown-panel{position:absolute;top:100%;background:var(--bs-white, #fff);color:var(--dark-text-color, #333);border:1px solid var(--bs-gray, #dee2e6);box-shadow:0 4px 12px #0000001f;z-index:1050;padding:4px 0;list-style:none;border-radius:4px;margin-top:0}.menu-section-label{font-size:12px;color:var(--Secondary-Light-Color, #888);padding:4px 16px 6px;letter-spacing:.03em;display:block}.menu-row{display:flex;align-items:center;gap:6px}.menu-divider{border:none;border-top:1px solid rgba(0,0,0,.8);margin:4px 0}.dialog-content{display:flex;flex-direction:column;height:100%}.dialog-body{flex:1;overflow-y:auto;padding:8px 4px}.dialog-body h3{font-size:16px;font-weight:600;margin-bottom:12px!important}.dialog-body h4{font-size:14px;font-weight:600;margin-top:16px!important;margin-bottom:8px!important}.dialog-body p{font-size:13px;line-height:1.6;color:#444;margin-bottom:10px!important}.menu-indicator{display:inline-flex;align-items:center;justify-content:center;width:16px;flex-shrink:0;font-size:12px;padding-top:2px}.menu-indicator-active{color:var(--primary-color, #F18206)}::ng-deep .top-bar-header .dx-toolbar{padding:0!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-items-container{height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-before,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-center,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{display:flex!important;align-items:center!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-item.dx-toolbar-item{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-item-content.dx-toolbar-item-content{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{padding:0 20px!important}.navbar-brand-link{display:flex;align-items:center;text-decoration:none;width:235px;min-width:235px;transition:width var(--tran-03),min-width var(--tran-03);overflow:hidden}.navbar-brand-link.collapsed{width:60px;min-width:60px}.header-logo{height:38px;object-fit:contain}.header-logo-collapsed{height:32px;object-fit:contain}.nav.navbar-nav{list-style:none;padding:0;margin:0}.user-info{display:flex;align-items:center}ul{margin-top:0}.employee-toggle{display:flex;align-items:center;height:56px;padding:0 6px;text-decoration:none;cursor:pointer;color:var(--Secondary-Light-Color, #999);transition:color var(--tran-02, .2s)}.employee-toggle:hover{color:var(--bs-white, #fff)}.employee-info{display:flex;flex-direction:column;justify-content:center;margin-left:8px;margin-right:4px}.user-name{font-size:13px;font-weight:500;color:var(--bs-white, #fff);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;display:block}.property-name{font-size:11px;color:var(--Secondary-Light-Color, #999);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;letter-spacing:.03em;display:block}.employee-caret{font-size:9px;color:var(--Secondary-Light-Color, #999);flex-shrink:0;margin-left:2px}.employee-menu{right:0;min-width:200px;padding:6px 0;border-color:#0000001f;box-shadow:0 4px 16px #00000026}.menu-item{display:flex;align-items:center;padding:7px 16px;font-size:14px;color:var(--dark-text-color, #333);text-decoration:none;cursor:pointer;transition:background var(--tran-02, .15s)}.menu-item:hover,.menu-item:focus{background:#f5f5f5;color:var(--dark-text-color, #333)!important}.menu-item-active{color:var(--dark-text-color, #333);font-weight:600}.menu-item-active .menu-indicator{color:var(--primary-color, #F18206)}.menu-item-signout:hover,.menu-item-signout:focus{background:#f5f5f5!important;color:#222!important}.menu-item-signout:hover fa-icon,.menu-item-signout:focus fa-icon{color:#222!important}.settings-menu{right:0;min-width:240px}.header-dropdown-item{gap:6px;padding:7px 16px;font-size:14px}.header-dropdown-item.disabled{opacity:.5}.item-icon{font-size:16px;width:18px;flex-shrink:0}.dropdown-divider{border-top:1px solid rgba(0,0,0,.175)}.notifications-icon-btn{position:relative}.notifications-badge{position:absolute;top:5px;right:4px;min-width:18px;height:15px;border-radius:25%;padding:0 5px;font-size:10px;line-height:18px;text-align:center;background-color:var(--bs-danger, #dc3545)!important;color:#fff!important}.notifications-menu{right:0;top:calc(100% + 4px);min-width:280px;max-height:400px;overflow-y:auto;z-index:1050}.nav-item .nav-link{color:#999;font-weight:500;padding:0 14px;height:56px;display:flex;align-items:center;justify-content:flex-start;text-decoration:none;font-size:13px;white-space:nowrap;transition:color .2s,background .2s;background:#fff}.nav-item .nav-link:hover,.nav-item.dropdown.open>.nav-link{color:#222;background:#f5f5f5}.nav-item .nav-link .caret{margin-left:4px;font-size:10px}.nav-item.dropdown{position:relative}.dropdown-menu{left:0;min-width:200px}.nav-item.dropdown.open>.dropdown-menu{display:block}.top-bar-header .nav-item.dropdown>.nav-link{background:#fff!important;color:#222!important;font-weight:500;transition:background .15s,color .15s}.top-bar-header .nav-item.dropdown.open>.nav-link{background:#fff!important;color:#222!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link:hover{background:#222!important;color:#fff!important}.top-bar-header .dropdown-menu.menu-dropdown-panel{background:#fff!important;box-shadow:0 4px 16px #00000026;border-radius:6px;padding:0}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{background:#fff!important;color:#222!important;font-weight:400;height:38px!important;padding:0 22px;border-bottom:none;text-decoration:none!important;display:flex;align-items:center;transition:background .15s,color .15s}.top-bar-header .nav-item{margin:0}.top-bar-header .dropdown-menu.menu-dropdown-panel{top:100%;margin-top:0;min-width:220px;padding:0;border-radius:0 0 4px 4px;overflow:hidden;background:#fff!important;z-index:1200}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{height:35px!important;padding:0 22px;background:#fff!important;color:var(--dark-text-color, #333)!important;border-bottom:none;font-weight:400;text-decoration:none!important}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link:hover,.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item.dropdown.open>.nav-link{background:#f5f6f8!important;color:var(--dark-text-color, #222)!important;text-decoration:none!important}.top-bar-header .nav-item.dropdown>.nav-link,.top-bar-header .nav-item.dropdown>.nav-link:focus{color:var(--Secondary-Light-Color, #999)!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link{color:#fff!important}.top-bar-header input{border:none!important;margin-right:0!important}.dropdown-menu.menu-dropdown-panel>li.nav-item>a.nav-link{background:#fff!important;color:#222!important}.dropdown-menu.menu-dropdown-panel>li:hover{background:#f5f5f5!important}.dropdown-menu .menu-dropdown-panel>li:hover,.settings-menu .menu-dropdown-panel>li:hover,.menu-dropdown-panel .settings-menu>li:hover{background:#f5f5f5!important}.about-backdrop{position:fixed;inset:0;background:#00000073;z-index:2000;display:flex;align-items:center;justify-content:center;animation:about-fade-in .2s ease}@keyframes about-fade-in{0%{opacity:0}to{opacity:1}}.about-modal{background:#fff;border-radius:6px;width:560px;max-width:95vw;box-shadow:0 5px 30px #00000040;animation:about-slide-in .22s ease;overflow:hidden}@keyframes about-slide-in{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}.about-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #e5e5e5}.about-modal-title{font-size:1rem;font-weight:400;margin:0;color:#333}.about-close-btn{background:none;border:none;font-size:1.5rem;line-height:1;color:#999;cursor:pointer;padding:0 4px}.about-close-btn:hover{color:#333}.about-modal-body{padding:20px 20px 16px}.about-logo{max-width:175px;width:100%}.about-product-name{font-size:1.25rem;font-weight:400;margin:0 0 8px!important;color:#333}.about-version-text{font-size:.9rem;color:#555;margin-bottom:4px!important}.about-up-to-date{font-size:.85rem;margin-bottom:4px!important}.about-copyright{font-size:.82rem;color:#555;line-height:1.5}.about-modal-actions{display:flex;border-top:1px solid #e5e5e5}.about-action-btn{flex:1;background:none;border:none;border-right:1px solid #e5e5e5;padding:12px 8px;font-size:.875rem;color:var(--primary-color, #F18206);cursor:pointer;transition:background .15s}.about-action-btn:last-child{border-right:none}.about-action-btn:hover{background:var(--primary-color-light, #f4ede3)}.sidebar-content{background:#222}.sidebar{width:260px;background:#222;color:#d3d7dc;height:100vh;min-height:100vh;max-height:100vh;transition:var(--tran-03);position:fixed;left:0;top:0;z-index:1000;display:flex;flex-direction:column;box-shadow:var(--bs-xs-shadow-box, 2px 0 8px rgba(0,0,0,.04));&.collapsed{width:60px;.sidebar-content,.sidebar-footer small{display:none}.sidebar-footer{justify-content:center}.sidebar-logo img{margin:0 auto}}.nav-sidebar li ul{background-color:var(--bs-gray, #eee)}.nav-sidebar li a{border-top:1px solid rgba(255,255,255,.04);display:block;padding:10px 25px;color:#d3d7dc!important;font-size:var(--font-size-13, 13px);font-weight:300;white-space:nowrap;transition:color var(--tran-02, .15s ease)}.sidebar-logo{display:flex;align-items:center;justify-content:flex-start;padding:8px 0 10px 18px;background:#222;img{height:34px;transition:var(--tran-03)}}.sidebar-content{overflow-y:auto;flex:1 1 auto;height:100%;background:#222;scrollbar-width:thin;scrollbar-color:#4a4f58 #222222}.sidebar-content::-webkit-scrollbar{width:10px}.sidebar-content::-webkit-scrollbar-track{background:#222}.sidebar-content::-webkit-scrollbar-thumb{background:#4a4f58;border-radius:8px;border:2px solid #222222}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#5b616b}.nav-sidebar{list-style:none;padding:0;margin:0}.sidebar-footer{width:100%;padding:8px 10px;background:#222;font-size:var(--font-size-12, 12px);display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);position:absolute;bottom:0;left:0;a{color:var(--bs-white, #fff)}button{background:#222;border:1px solid #333;color:var(--bs-white, #fff)}a:hover{color:var(--bs-custom-light-white, #eee)!important}}}li.level-2>a{background:#ddd!important;color:#333!important}li.level-3>a{background:#eee!important;color:#333!important}.sub-menu li.level-last>a{background:#eee!important;color:#333!important}.sub-menu{background:none!important}li.level-2>a span,li.level-3>a span,.sub-menu li.level-last>a span{color:#333!important;font-size:13px}.nav-sidebar li ul li a{color:var(--dark-text-color, #333)!important}li.level-2>a:hover,li.level-2>a.active,li.level-3>a:hover,li.level-3>a.active,.sub-menu li.level-last>a:hover,.sub-menu li.level-last>a.active{background:#fff2e4!important;color:#333!important}a.has-children{display:flex;flex-wrap:nowrap}li.level-last>a.has-children:hover>fa-icon,li.level-2>a.has-children:hover>fa-icon{color:var(--dark-text-color, #333)!important}li.level-2>a>fa-icon.fa-fw:hover,li.level-2>a>fa-icon.fa-fw:focus{color:var(--dark-text-color, #333)!important}.popover-sub-menu{position:absolute;left:60px;top:0;z-index:2000;min-width:180px;background:transparent;pointer-events:none}.popover-menu{background:var(--bs-white, #fff);color:var(--dark-text-color, #232323);border-radius:6px;box-shadow:var(--bs-md-shadow-box, 0 4px 16px rgba(0,0,0,.15));margin:0;padding:8px 0;pointer-events:auto}.popover-arrow{position:absolute;left:-8px;top:16px;width:16px;height:16px;background:transparent}.popover-arrow:before{content:\"\";position:absolute;left:0;top:0;width:16px;height:16px;background:var(--bs-white, #fff);box-shadow:-2px 2px 6px #00000014;transform:rotate(45deg)}li.collapsed{position:relative}li.parent.level-2,li.level-last{padding:0!important;margin-bottom:0!important}li{&.level-2>a,&.level-last>a{transition:background var(--tran-02),color var(--tran-02)}margin-bottom:2px;&.collapsed>a{justify-content:center;span{display:none}.fa-fw{margin-right:0;display:inline-flex;justify-content:center;width:100%}}}li.parent>a{color:#999!important;background:none;border:none;outline:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;border-radius:0;gap:10px;width:100%;padding:11px 18px 11px 13px!important;text-decoration:none!important}.sidebar .nav-sidebar li>a>.d-flex{min-width:0}.sidebar .nav-sidebar li>a span{overflow:hidden;text-overflow:ellipsis}li.parent>fa-icon{color:var(--Secondary-Light-Color, #999)!important}li.parent.open>a{font-weight:400;background:#222;color:#f0f3f6;border-radius:0;display:flex!important}li.parent>a:hover{color:var(--bs-custom-light-white, #eee)!important}a.has-children{display:flex!important;flex-wrap:nowrap}.sub-menu{background:var(--bs-gray, #eee);color:var(--Secondary-Light-Color, #999);padding-left:0;margin:0;border-radius:0 0 4px 4px;box-shadow:var(--bs-xs-shadow-box, 0 2px 8px rgba(0,0,0,.04));display:none}li.open>.sub-menu{display:block}li .sub-menu li a{color:var(--dark-text-color, #333);background:none;font-weight:400;border-radius:0;justify-content:flex-start;gap:10px;padding:11px 18px 11px 30px!important;border-bottom:1px solid var(--bg-light-gray, #ddd);border-right:1px solid var(--bg-light-gray, #ddd)}li .sub-menu li a:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222)}li .sub-menu li.open>a{background:var(--bs-white, #fff);color:var(--dark-text-color, #222)}.sidebar-toggle-btn{width:32px;height:32px;border-radius:4px;background:#262626;color:var(--Secondary-Light-Color, #999);border:1px solid #48506a;display:flex;align-items:center;justify-content:center;margin:0;transition:background var(--tran-02),color var(--tran-02)}.sidebar-toggle-btn:hover{background:#48506a;color:#fff}a.navbar-brand-link,a.dropdown-item{color:var(--Secondary-Light-Color, #999);text-decoration:none;display:flex;align-items:center;border-radius:4px;transition:background var(--tran-02);justify-content:flex-start;gap:10px}a.navbar-brand-link:hover,a.dropdown-item:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222222)}.menu-dropdown-host>a:hover,.menu-icon-btn:hover,a.navbar-brand-link:hover{background:#222;color:var(--bs-white, #fff)!important}.fa{margin-right:8px}.sidebar-footer a:hover{background:#222!important;color:var(--bs-white, #fff)!important}.sidebar .nav-sidebar>li{margin:0}.sidebar .nav-sidebar>li>a{min-height:40px;padding:10px 16px 10px 28px!important;text-decoration:none!important;line-height:1.2;border-top:1px solid rgba(255,255,255,.05)}.sidebar .nav-sidebar>li>a .d-flex{align-items:center;gap:12px}.sidebar .nav-sidebar>li>a>.fa-fw:last-child{margin-left:10px;font-size:11px;flex-shrink:0;width:12px;text-align:center}.sidebar .nav-sidebar li>a:hover .text-secondary,.sidebar .nav-sidebar li>a:focus .text-secondary,.sidebar .nav-sidebar li.open>a .text-secondary,.sidebar .nav-sidebar li.level-1.open>a .text-secondary{color:#fff!important}.sidebar .nav-sidebar li.level-2>a:hover .text-secondary,.sidebar .nav-sidebar li.level-2>a:focus .text-secondary,.sidebar .nav-sidebar li.level-2.open>a .text-secondary,.sidebar .nav-sidebar li.level-3>a:hover .text-secondary,.sidebar .nav-sidebar li.level-3>a:focus .text-secondary,.sidebar .nav-sidebar li.level-last>a:hover .text-secondary,.sidebar .nav-sidebar li.level-last>a:focus .text-secondary{color:#222!important}.sidebar .nav-sidebar>li.level-1.open>a{background:#222!important;color:#f0f3f6!important}.sidebar .nav-sidebar .sub-menu{background:#efefef!important;margin:0;padding:0;border-radius:0;box-shadow:none}.sidebar .nav-sidebar .sub-menu>li{margin:0}.sidebar .nav-sidebar .sub-menu>li>a{min-height:38px;padding:9px 16px 9px 58px!important;background:#eee!important;color:#333!important;text-decoration:none!important;border-right:none;border-bottom:1px solid #dddddd;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-2.parent>a{padding-left:50px!important;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-3>a,.sidebar .nav-sidebar .sub-menu>li.level-last>a{padding-left:58px!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a,.sidebar .nav-sidebar .sub-menu>li.level-3>a{background:#fff!important;color:#333!important}.sidebar .nav-sidebar .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar a,.sidebar .nav-sidebar a:hover,.sidebar .nav-sidebar a:focus,.sidebar .nav-sidebar a:active{text-decoration:none!important}.sidebar .nav-sidebar li.parent>a{justify-content:space-between}.sidebar .nav-sidebar li.parent>a>.d-flex{flex:1 1 auto;min-width:0}.sidebar .nav-sidebar>li>a,.sidebar .nav-sidebar .sub-menu>li>a{display:flex;align-items:center;flex-wrap:nowrap}.sidebar .nav-sidebar .menu-label-wrap{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}.sidebar .nav-sidebar .menu-name-text{display:block;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .nav-sidebar .menu-expand-arrow{flex:0 0 14px;width:14px;min-width:14px;margin-left:10px;text-align:center;color:#999}.sidebar .nav-sidebar .sub-menu>li.parent>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a>.menu-expand-arrow{color:#6f7680!important;opacity:1!important;visibility:visible!important}.sidebar .nav-sidebar .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu>li.parent.open>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent.open>a>.menu-expand-arrow{color:#4e5560!important}.sidebar .nav-sidebar>li.level-1.parent>a,.sidebar .nav-sidebar>li.level-1.parent>a:visited,.sidebar .nav-sidebar>li.level-1.parent>a:focus,.sidebar .nav-sidebar>li.level-1.parent>a:active{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a span{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover,.sidebar .nav-sidebar>li.level-1.parent.open>a{color:#fff!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover span,.sidebar .nav-sidebar>li.level-1.parent.open>a span{color:#fff!important}.sidebar .nav-sidebar>li>a span,.sidebar .nav-sidebar .sub-menu>li>a span{font-size:12px}.sidebar .sidebar-footer small{display:flex;align-items:center;gap:10px;margin:0;line-height:1}.sidebar .sidebar-footer small,.sidebar .sidebar-footer small a{color:#8f949d!important;font-size:11px}.sidebar .sidebar-footer small a:hover{color:#fff!important}.sidebar.collapsed .sidebar-footer{justify-content:center;padding:8px 0}::ng-deep .dx-popup-title.dx-toolbar .dx-closebutton{inset-inline-start:10px}::ng-deep .dx-popup-title.dx-toolbar{padding-top:10px!important}\n", ":host{display:flex;align-items:center;height:56px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxAutocompleteModule }, { kind: "component", type: i1.DxAutocompleteComponent, selector: "dx-autocomplete", inputs: ["accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxItemCount", "maxLength", "minSearchLength", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxItemCountChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "pipe", type: BayanCoreTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3082
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: BayanCoreGlobalSearchWidgetComponent, isStandalone: true, selector: "bayan-core-global-search-widget", inputs: { dataSource: "dataSource", baseUrl: "baseUrl", placeholder: "placeholder", searchMode: "searchMode", stylingMode: "stylingMode", searchWrapperClass: "searchWrapperClass", searchItemClass: "searchItemClass", searchItemTitleClass: "searchItemTitleClass", searchItemSubtitleClass: "searchItemSubtitleClass", iconClass: "iconClass" }, outputs: { search: "search", itemNavigate: "itemNavigate" }, viewQueries: [{ propertyName: "searchAutoComplete", first: true, predicate: ["searchAutoComplete"], descendants: true }], ngImport: i0, template: "<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon mx-1\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle mx-4\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n", styles: [".global-search-wrapper{position:relative;width:100%;max-width:480px}.dx-autocomplete-popup-wrapper{border-radius:8px!important;box-shadow:0 4px 16px #00000026!important;background:#fff!important;min-width:400px!important;padding:.5rem 0!important;max-height:340px!important;overflow-y:auto!important}.global-search-dropdown-item{width:100%}.global-search-link{display:block;border-radius:6px;transition:background .15s,color .15s;text-decoration:none;padding:0}.compact-search-item{padding:2px 7px!important;min-height:35px;line-height:1.2}.global-search-link:hover,.compact-search-item:hover{background:#f5f5f5!important;color:#999!important}.search-title{color:#999!important;font-weight:600;font-size:.8em!important;line-height:1.1}.search-subtitle{color:#222;font-size:14px;line-height:1.1;margin-top:1px}.global-search-icon{color:#999!important;font-size:.8em!important}.state-small-size{font-size:.95em}.menu-dropdown-panel,.dropdown-menu{background:#fff!important}[dir=rtl] .navbar-brand-link{margin-left:auto!important;margin-right:0!important;display:flex;justify-content:flex-end}.top-bar-header .dx-autocomplete,.header-toolbar .dx-autocomplete{width:100%!important;max-width:400px;margin:0 auto}.dx-autocomplete .dx-texteditor-input{background:#5c4848!important;color:#fff!important;border-radius:6px!important;border:2px solid #f18206!important;padding:8px 12px!important;font-size:16px!important;box-shadow:none!important}.dx-autocomplete .dx-texteditor-input::placeholder{color:#b9a9a9!important;opacity:1}.dx-autocomplete.dx-state-focused .dx-texteditor-input{border-color:#f18206!important;box-shadow:0 0 0 2px #f1820626!important}.settings-menu li{margin-bottom:9px}.settings-menu .header-dropdown-item,.settings-menu .menu-row{color:var(--dark-text-color, #333)!important;font-weight:400;background:none;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.settings-menu .header-dropdown-item.menu-item-active,.settings-menu .menu-row.menu-item-active{color:#222;font-weight:700}.settings-menu .menu-section-label{color:#bbb!important;font-size:13px;font-weight:400;cursor:default;padding-top:8px;padding-bottom:4px}.settings-menu .indicatorClass{display:inline-flex;align-items:center;margin-right:8px;color:var(--primary-color, #F18206)}.settings-menu .indicatorClass.invisible{color:transparent}.settings-menu .fa-icon{margin-right:8px}.settings-menu .dropdown-divider{margin:4px 0}[dir=rtl] .employee-info{margin-left:0!important;margin-right:8px!important;text-align:right}[dir=rtl] .user-name,[dir=rtl] .property-name{text-align:right}[dir=rtl] .employee-caret{margin-left:0!important;margin-right:2px!important}[dir=rtl] .menu-item,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row{flex-direction:row-reverse;text-align:right}[dir=rtl] .menu-indicator{margin-left:0!important;margin-right:8px!important}[dir=rtl] .dropdown-divider,[dir=rtl] .menu-divider{margin-left:0!important;margin-right:0!important}[dir=rtl] .navbar-brand-link{text-align:right}[dir=rtl] .top-bar-header,[dir=rtl] .header-toolbar{direction:rtl}[dir=rtl] .about-dialog .row,[dir=rtl] .about-dialog .col-4,[dir=rtl] .about-dialog .col-8,[dir=rtl] .change-password-dialog .dx-form,[dir=rtl] .change-password-dialog .dx-label,[dir=rtl] .change-password-dialog .dx-field-item-label{text-align:right}[dir=rtl] .menu-dropdown-panel,[dir=rtl] .settings-menu,[dir=rtl] .employee-menu,[dir=rtl] .notifications-menu{right:auto;left:0}[dir=rtl] .menu-section-label,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{text-align:right}[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{padding-left:16px;padding-right:16px;flex-direction:row-reverse}[dir=rtl] .menu-indicator{margin-left:0;margin-right:8px}[dir=rtl] .notifications-badge{right:auto;left:4px}[dir=rtl] .employee-info{margin-left:0;margin-right:8px}[dir=rtl] .employee-caret{margin-left:0;margin-right:2px}::ng-deep .dx-autocomplete.dx-state-focused .dx-texteditor-input,::ng-deep .dx-autocomplete .dx-texteditor-input:focus{outline:none!important;box-shadow:none!important}::ng-deep .dx-autocomplete.dx-state-focused.dx-texteditor-filled{border-color:transparent!important;box-shadow:none!important}.menu-dropdown-host{position:relative;display:flex;align-items:center}.menu-icon-btn{display:flex;align-items:center;justify-content:center;width:40px;height:56px;text-decoration:none;color:var(--Secondary-Light-Color, #999)!important;transition:color var(--tran-02, .2s);cursor:pointer;font-size:14px}.menu-icon-btn:hover{color:var(--bs-white, #fff)!important}.menu-dropdown-panel{position:absolute;top:100%;background:var(--bs-white, #fff);color:var(--dark-text-color, #333);border:1px solid var(--bs-gray, #dee2e6);box-shadow:0 4px 12px #0000001f;z-index:1050;padding:4px 0;list-style:none;border-radius:4px;margin-top:0}.menu-section-label{font-size:12px;color:var(--Secondary-Light-Color, #888);padding:4px 16px 6px;letter-spacing:.03em;display:block}.menu-row{display:flex;align-items:center;gap:6px}.menu-divider{border:none;border-top:1px solid rgba(0,0,0,.8);margin:4px 0}.dialog-content{display:flex;flex-direction:column;height:100%}.dialog-body{flex:1;overflow-y:auto;padding:8px 4px}.dialog-body h3{font-size:16px;font-weight:600;margin-bottom:12px!important}.dialog-body h4{font-size:14px;font-weight:600;margin-top:16px!important;margin-bottom:8px!important}.dialog-body p{font-size:13px;line-height:1.6;color:#444;margin-bottom:10px!important}.menu-indicator{display:inline-flex;align-items:center;justify-content:center;width:16px;flex-shrink:0;font-size:12px;padding-top:2px}.menu-indicator-active{color:var(--primary-color, #F18206)}::ng-deep .top-bar-header .dx-toolbar{padding:0!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-items-container{height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-before,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-center,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{display:flex!important;align-items:center!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-item.dx-toolbar-item{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-item-content.dx-toolbar-item-content{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{padding:0 20px!important}.navbar-brand-link{display:flex;align-items:center;text-decoration:none;width:235px;min-width:235px;transition:width var(--tran-03),min-width var(--tran-03);overflow:hidden}.navbar-brand-link.collapsed{width:60px;min-width:60px}.header-logo{height:38px;object-fit:contain}.header-logo-collapsed{height:32px;object-fit:contain}.nav.navbar-nav{list-style:none;padding:0;margin:0}.user-info{display:flex;align-items:center}ul{margin-top:0}.employee-toggle{display:flex;align-items:center;height:56px;padding:0 6px;text-decoration:none;cursor:pointer;color:var(--Secondary-Light-Color, #999);transition:color var(--tran-02, .2s)}.employee-toggle:hover{color:var(--bs-white, #fff)}.employee-info{display:flex;flex-direction:column;justify-content:center;margin-left:8px;margin-right:4px}.user-name{font-size:13px;font-weight:500;color:var(--bs-white, #fff);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;display:block}.property-name{font-size:11px;color:var(--Secondary-Light-Color, #999);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;letter-spacing:.03em;display:block}.employee-caret{font-size:9px;color:var(--Secondary-Light-Color, #999);flex-shrink:0;margin-left:2px}.employee-menu{right:0;min-width:200px;padding:6px 0;border-color:#0000001f;box-shadow:0 4px 16px #00000026}.menu-item{display:flex;align-items:center;padding:7px 16px;font-size:14px;color:var(--dark-text-color, #333);text-decoration:none;cursor:pointer;transition:background var(--tran-02, .15s)}.menu-item:hover,.menu-item:focus{background:#f5f5f5;color:var(--dark-text-color, #333)!important}.menu-item-active{color:var(--dark-text-color, #333);font-weight:600}.menu-item-active .menu-indicator{color:var(--primary-color, #F18206)}.menu-item-signout:hover,.menu-item-signout:focus{background:#f5f5f5!important;color:#222!important}.menu-item-signout:hover fa-icon,.menu-item-signout:focus fa-icon{color:#222!important}.settings-menu{right:0;min-width:240px}.header-dropdown-item{gap:6px;padding:7px 16px;font-size:14px}.header-dropdown-item.disabled{opacity:.5}.item-icon{font-size:16px;width:18px;flex-shrink:0}.dropdown-divider{border-top:1px solid rgba(0,0,0,.175)}.notifications-icon-btn{position:relative}.notifications-badge{position:absolute;top:5px;right:4px;min-width:18px;height:15px;border-radius:25%;padding:0 5px;font-size:10px;line-height:18px;text-align:center;background-color:var(--bs-danger, #dc3545)!important;color:#fff!important}.notifications-menu{right:0;top:calc(100% + 4px);min-width:280px;max-height:400px;overflow-y:auto;z-index:1050}.nav-item .nav-link{color:#999;font-weight:500;padding:0 14px;height:56px;display:flex;align-items:center;justify-content:flex-start;text-decoration:none;font-size:13px;white-space:nowrap;transition:color .2s,background .2s;background:#fff}.nav-item .nav-link:hover,.nav-item.dropdown.open>.nav-link{color:#222;background:#f5f5f5}.nav-item .nav-link .caret{margin-left:4px;font-size:10px}.nav-item.dropdown{position:relative}.dropdown-menu{left:0;min-width:200px}.nav-item.dropdown.open>.dropdown-menu{display:block}.top-bar-header .nav-item.dropdown>.nav-link{background:#fff!important;color:#222!important;font-weight:500;transition:background .15s,color .15s}.top-bar-header .nav-item.dropdown.open>.nav-link{background:#fff!important;color:#222!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link:hover{background:#222!important;color:#fff!important}.top-bar-header .dropdown-menu.menu-dropdown-panel{background:#fff!important;box-shadow:0 4px 16px #00000026;border-radius:6px;padding:0}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{background:#fff!important;color:#222!important;font-weight:400;height:38px!important;padding:0 22px;border-bottom:none;text-decoration:none!important;display:flex;align-items:center;transition:background .15s,color .15s}.top-bar-header .nav-item{margin:0}.top-bar-header .dropdown-menu.menu-dropdown-panel{top:100%;margin-top:0;min-width:220px;padding:0;border-radius:0 0 4px 4px;overflow:hidden;background:#fff!important;z-index:1200}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{height:35px!important;padding:0 22px;background:#fff!important;color:var(--dark-text-color, #333)!important;border-bottom:none;font-weight:400;text-decoration:none!important}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link:hover,.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item.dropdown.open>.nav-link{background:#f5f6f8!important;color:var(--dark-text-color, #222)!important;text-decoration:none!important}.top-bar-header .nav-item.dropdown>.nav-link,.top-bar-header .nav-item.dropdown>.nav-link:focus{color:var(--Secondary-Light-Color, #999)!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link{color:#fff!important}.top-bar-header input{border:none!important;margin-right:0!important}.dropdown-menu.menu-dropdown-panel>li.nav-item>a.nav-link{background:#fff!important;color:#222!important}.dropdown-menu.menu-dropdown-panel>li:hover{background:#f5f5f5!important}.dropdown-menu .menu-dropdown-panel>li:hover,.settings-menu .menu-dropdown-panel>li:hover,.menu-dropdown-panel .settings-menu>li:hover{background:#f5f5f5!important}.about-backdrop{position:fixed;inset:0;background:#00000073;z-index:2000;display:flex;align-items:center;justify-content:center;animation:about-fade-in .2s ease}@keyframes about-fade-in{0%{opacity:0}to{opacity:1}}.about-modal{background:#fff;border-radius:6px;width:560px;max-width:95vw;box-shadow:0 5px 30px #00000040;animation:about-slide-in .22s ease;overflow:hidden}@keyframes about-slide-in{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}.about-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #e5e5e5}.about-modal-title{font-size:1rem;font-weight:400;margin:0;color:#333}.about-close-btn{background:none;border:none;font-size:1.5rem;line-height:1;color:#999;cursor:pointer;padding:0 4px}.about-close-btn:hover{color:#333}.about-modal-body{padding:20px 20px 16px}.about-logo{max-width:175px;width:100%}.about-product-name{font-size:1.25rem;font-weight:400;margin:0 0 8px!important;color:#333}.about-version-text{font-size:.9rem;color:#555;margin-bottom:4px!important}.about-up-to-date{font-size:.85rem;margin-bottom:4px!important}.about-copyright{font-size:.82rem;color:#555;line-height:1.5}.about-modal-actions{display:flex;border-top:1px solid #e5e5e5}.about-action-btn{flex:1;background:none;border:none;border-right:1px solid #e5e5e5;padding:12px 8px;font-size:.875rem;color:var(--primary-color, #F18206);cursor:pointer;transition:background .15s}.about-action-btn:last-child{border-right:none}.about-action-btn:hover{background:var(--primary-color-light, #f4ede3)}.sidebar-content{background:#222}.sidebar{width:260px;background:#222;color:#d3d7dc;height:100vh;min-height:100vh;max-height:100vh;transition:var(--tran-03);position:fixed;left:0;top:0;z-index:1000;display:flex;flex-direction:column;box-shadow:var(--bs-xs-shadow-box, 2px 0 8px rgba(0,0,0,.04));&.collapsed{width:60px;.sidebar-content,.sidebar-footer small{display:none}.sidebar-footer{justify-content:center}.sidebar-logo img{margin:0 auto}}.nav-sidebar li ul{background-color:var(--bs-gray, #eee)}.nav-sidebar li a{border-top:1px solid rgba(255,255,255,.04);display:block;padding:10px 25px;color:#d3d7dc!important;font-size:var(--font-size-13, 13px);font-weight:300;white-space:nowrap;transition:color var(--tran-02, .15s ease)}.sidebar-logo{display:flex;align-items:center;justify-content:flex-start;padding:8px 0 10px 18px;background:#222;img{height:34px;transition:var(--tran-03)}}.sidebar-content{overflow-y:auto;flex:1 1 auto;height:100%;background:#222;scrollbar-width:thin;scrollbar-color:#4a4f58 #222222}.sidebar-content::-webkit-scrollbar{width:10px}.sidebar-content::-webkit-scrollbar-track{background:#222}.sidebar-content::-webkit-scrollbar-thumb{background:#4a4f58;border-radius:8px;border:2px solid #222222}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#5b616b}.nav-sidebar{list-style:none;padding:0;margin:0}.sidebar-footer{width:100%;padding:8px 10px;background:#222;font-size:var(--font-size-12, 12px);display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);position:absolute;bottom:0;left:0;a{color:var(--bs-white, #fff)}button{background:#222;border:1px solid #333;color:var(--bs-white, #fff)}a:hover{color:var(--bs-custom-light-white, #eee)!important}}}li.level-2>a{background:#ddd!important;color:#333!important}li.level-3>a{background:#eee!important;color:#333!important}.sub-menu li.level-last>a{background:#eee!important;color:#333!important}.sub-menu{background:none!important}li.level-2>a span,li.level-3>a span,.sub-menu li.level-last>a span{color:#333!important;font-size:13px}.nav-sidebar li ul li a{color:var(--dark-text-color, #333)!important}li.level-2>a:hover,li.level-2>a.active,li.level-3>a:hover,li.level-3>a.active,.sub-menu li.level-last>a:hover,.sub-menu li.level-last>a.active{background:#fff2e4!important;color:#333!important}a.has-children{display:flex;flex-wrap:nowrap}li.level-last>a.has-children:hover>fa-icon,li.level-2>a.has-children:hover>fa-icon{color:var(--dark-text-color, #333)!important}li.level-2>a>fa-icon.fa-fw:hover,li.level-2>a>fa-icon.fa-fw:focus{color:var(--dark-text-color, #333)!important}.popover-sub-menu{position:absolute;left:60px;top:0;z-index:2000;min-width:180px;background:transparent;pointer-events:none}.popover-menu{background:var(--bs-white, #fff);color:var(--dark-text-color, #232323);border-radius:6px;box-shadow:var(--bs-md-shadow-box, 0 4px 16px rgba(0,0,0,.15));margin:0;padding:8px 0;pointer-events:auto}.popover-arrow{position:absolute;left:-8px;top:16px;width:16px;height:16px;background:transparent}.popover-arrow:before{content:\"\";position:absolute;left:0;top:0;width:16px;height:16px;background:var(--bs-white, #fff);box-shadow:-2px 2px 6px #00000014;transform:rotate(45deg)}li.collapsed{position:relative}li.parent.level-2,li.level-last{padding:0!important;margin-bottom:0!important}li{&.level-2>a,&.level-last>a{transition:background var(--tran-02),color var(--tran-02)}margin-bottom:2px;&.collapsed>a{justify-content:center;span{display:none}.fa-fw{margin-right:0;display:inline-flex;justify-content:center;width:100%}}}li.parent>a{color:#999!important;background:none;border:none;outline:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;border-radius:0;gap:10px;width:100%;padding:11px 18px 11px 13px!important;text-decoration:none!important}.sidebar .nav-sidebar li>a>.d-flex{min-width:0}.sidebar .nav-sidebar li>a span{overflow:hidden;text-overflow:ellipsis}li.parent>fa-icon{color:var(--Secondary-Light-Color, #999)!important}li.parent.open>a{font-weight:400;background:#222;color:#f0f3f6;border-radius:0;display:flex!important}li.parent>a:hover{color:var(--bs-custom-light-white, #eee)!important}a.has-children{display:flex!important;flex-wrap:nowrap}.sub-menu{background:var(--bs-gray, #eee);color:var(--Secondary-Light-Color, #999);padding-left:0;margin:0;border-radius:0 0 4px 4px;box-shadow:var(--bs-xs-shadow-box, 0 2px 8px rgba(0,0,0,.04));display:none}li.open>.sub-menu{display:block}li .sub-menu li a{color:var(--dark-text-color, #333);background:none;font-weight:400;border-radius:0;justify-content:flex-start;gap:10px;padding:11px 18px 11px 30px!important;border-bottom:1px solid var(--bg-light-gray, #ddd);border-right:1px solid var(--bg-light-gray, #ddd)}li .sub-menu li a:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222)}li .sub-menu li.open>a{background:var(--bs-white, #fff);color:var(--dark-text-color, #222)}.sidebar-toggle-btn{width:32px;height:32px;border-radius:4px;background:#262626;color:var(--Secondary-Light-Color, #999);border:1px solid #48506a;display:flex;align-items:center;justify-content:center;margin:0;transition:background var(--tran-02),color var(--tran-02)}.sidebar-toggle-btn:hover{background:#48506a;color:#fff}a.navbar-brand-link,a.dropdown-item{color:var(--Secondary-Light-Color, #999);text-decoration:none;display:flex;align-items:center;border-radius:4px;transition:background var(--tran-02);justify-content:flex-start;gap:10px}a.navbar-brand-link:hover,a.dropdown-item:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222222)}.menu-dropdown-host>a:hover,.menu-icon-btn:hover,a.navbar-brand-link:hover{background:#222;color:var(--bs-white, #fff)!important}.fa{margin-right:8px}.sidebar-footer a:hover{background:#222!important;color:var(--bs-white, #fff)!important}.sidebar .nav-sidebar>li{margin:0}.sidebar .nav-sidebar>li>a{min-height:40px;padding:10px 16px 10px 28px!important;text-decoration:none!important;line-height:1.2;border-top:1px solid rgba(255,255,255,.05)}.sidebar .nav-sidebar>li>a .d-flex{align-items:center;gap:12px}.sidebar .nav-sidebar>li>a>.fa-fw:last-child{margin-left:10px;font-size:11px;flex-shrink:0;width:12px;text-align:center}.sidebar .nav-sidebar li>a:hover .text-secondary,.sidebar .nav-sidebar li>a:focus .text-secondary,.sidebar .nav-sidebar li.open>a .text-secondary,.sidebar .nav-sidebar li.level-1.open>a .text-secondary{color:#fff!important}.sidebar .nav-sidebar li.level-2>a:hover .text-secondary,.sidebar .nav-sidebar li.level-2>a:focus .text-secondary,.sidebar .nav-sidebar li.level-2.open>a .text-secondary,.sidebar .nav-sidebar li.level-3>a:hover .text-secondary,.sidebar .nav-sidebar li.level-3>a:focus .text-secondary,.sidebar .nav-sidebar li.level-last>a:hover .text-secondary,.sidebar .nav-sidebar li.level-last>a:focus .text-secondary{color:#222!important}.sidebar .nav-sidebar>li.level-1.open>a{background:#222!important;color:#f0f3f6!important}.sidebar .nav-sidebar .sub-menu{background:#efefef!important;margin:0;padding:0;border-radius:0;box-shadow:none}.sidebar .nav-sidebar .sub-menu>li{margin:0}.sidebar .nav-sidebar .sub-menu>li>a{min-height:38px;padding:9px 16px 9px 58px!important;background:#eee!important;color:#333!important;text-decoration:none!important;border-right:none;border-bottom:1px solid #dddddd;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-2.parent>a{padding-left:50px!important;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-3>a,.sidebar .nav-sidebar .sub-menu>li.level-last>a{padding-left:58px!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a,.sidebar .nav-sidebar .sub-menu>li.level-3>a{background:#fff!important;color:#333!important}.sidebar .nav-sidebar .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar a,.sidebar .nav-sidebar a:hover,.sidebar .nav-sidebar a:focus,.sidebar .nav-sidebar a:active{text-decoration:none!important}.sidebar .nav-sidebar li.parent>a{justify-content:space-between}.sidebar .nav-sidebar li.parent>a>.d-flex{flex:1 1 auto;min-width:0}.sidebar .nav-sidebar>li>a,.sidebar .nav-sidebar .sub-menu>li>a{display:flex;align-items:center;flex-wrap:nowrap}.sidebar .nav-sidebar .menu-label-wrap{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}.sidebar .nav-sidebar .menu-name-text{display:block;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .nav-sidebar .menu-expand-arrow{flex:0 0 14px;width:14px;min-width:14px;margin-left:10px;text-align:center;color:#999}.sidebar .nav-sidebar .sub-menu>li.parent>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a>.menu-expand-arrow{color:#6f7680!important;opacity:1!important;visibility:visible!important}.sidebar .nav-sidebar .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu>li.parent.open>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent.open>a>.menu-expand-arrow{color:#4e5560!important}.sidebar .nav-sidebar>li.level-1.parent>a,.sidebar .nav-sidebar>li.level-1.parent>a:visited,.sidebar .nav-sidebar>li.level-1.parent>a:focus,.sidebar .nav-sidebar>li.level-1.parent>a:active{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a span{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover,.sidebar .nav-sidebar>li.level-1.parent.open>a{color:#fff!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover span,.sidebar .nav-sidebar>li.level-1.parent.open>a span{color:#fff!important}.sidebar .nav-sidebar>li>a span,.sidebar .nav-sidebar .sub-menu>li>a span{font-size:12px}.sidebar .sidebar-footer small{display:flex;align-items:center;gap:10px;margin:0;line-height:1}.sidebar .sidebar-footer small,.sidebar .sidebar-footer small a{color:#8f949d!important;font-size:11px}.sidebar .sidebar-footer small a:hover{color:#fff!important}.sidebar.collapsed .sidebar-footer{justify-content:center;padding:8px 0}::ng-deep .dx-popup-title.dx-toolbar .dx-closebutton{inset-inline-start:10px}::ng-deep .dx-popup-title.dx-toolbar{padding-top:10px!important}\n", ":host{display:flex;align-items:center;height:56px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxAutocompleteModule }, { kind: "component", type: i1.DxAutocompleteComponent, selector: "dx-autocomplete", inputs: ["accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxItemCount", "maxLength", "minSearchLength", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxItemCountChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "pipe", type: BayanCoreTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3083
3083
|
}
|
|
3084
3084
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: BayanCoreGlobalSearchWidgetComponent, decorators: [{
|
|
3085
3085
|
type: Component,
|
|
3086
|
-
args: [{ selector: 'bayan-core-global-search-widget', standalone: true, imports: [CommonModule, DxAutocompleteModule, FontAwesomeModule, BayanCoreTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex align-items-center flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n", styles: [".global-search-wrapper{position:relative;width:100%;max-width:480px}.dx-autocomplete-popup-wrapper{border-radius:8px!important;box-shadow:0 4px 16px #00000026!important;background:#fff!important;min-width:400px!important;padding:.5rem 0!important;max-height:340px!important;overflow-y:auto!important}.global-search-dropdown-item{width:100%}.global-search-link{display:block;border-radius:6px;transition:background .15s,color .15s;text-decoration:none;padding:0}.compact-search-item{padding:2px 7px!important;min-height:35px;line-height:1.2}.global-search-link:hover,.compact-search-item:hover{background:#f5f5f5!important;color:#999!important}.search-title{color:#999!important;font-weight:600;font-size:.8em!important;line-height:1.1}.search-subtitle{color:#222;font-size:14px;line-height:1.1;margin-top:1px}.global-search-icon{color:#999!important;font-size:.8em!important}.state-small-size{font-size:.95em}.menu-dropdown-panel,.dropdown-menu{background:#fff!important}[dir=rtl] .navbar-brand-link{margin-left:auto!important;margin-right:0!important;display:flex;justify-content:flex-end}.top-bar-header .dx-autocomplete,.header-toolbar .dx-autocomplete{width:100%!important;max-width:400px;margin:0 auto}.dx-autocomplete .dx-texteditor-input{background:#5c4848!important;color:#fff!important;border-radius:6px!important;border:2px solid #f18206!important;padding:8px 12px!important;font-size:16px!important;box-shadow:none!important}.dx-autocomplete .dx-texteditor-input::placeholder{color:#b9a9a9!important;opacity:1}.dx-autocomplete.dx-state-focused .dx-texteditor-input{border-color:#f18206!important;box-shadow:0 0 0 2px #f1820626!important}.settings-menu li{margin-bottom:9px}.settings-menu .header-dropdown-item,.settings-menu .menu-row{color:var(--dark-text-color, #333)!important;font-weight:400;background:none;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.settings-menu .header-dropdown-item.menu-item-active,.settings-menu .menu-row.menu-item-active{color:#222;font-weight:700}.settings-menu .menu-section-label{color:#bbb!important;font-size:13px;font-weight:400;cursor:default;padding-top:8px;padding-bottom:4px}.settings-menu .indicatorClass{display:inline-flex;align-items:center;margin-right:8px;color:var(--primary-color, #F18206)}.settings-menu .indicatorClass.invisible{color:transparent}.settings-menu .fa-icon{margin-right:8px}.settings-menu .dropdown-divider{margin:4px 0}[dir=rtl] .employee-info{margin-left:0!important;margin-right:8px!important;text-align:right}[dir=rtl] .user-name,[dir=rtl] .property-name{text-align:right}[dir=rtl] .employee-caret{margin-left:0!important;margin-right:2px!important}[dir=rtl] .menu-item,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row{flex-direction:row-reverse;text-align:right}[dir=rtl] .menu-indicator{margin-left:0!important;margin-right:8px!important}[dir=rtl] .dropdown-divider,[dir=rtl] .menu-divider{margin-left:0!important;margin-right:0!important}[dir=rtl] .navbar-brand-link{text-align:right}[dir=rtl] .top-bar-header,[dir=rtl] .header-toolbar{direction:rtl}[dir=rtl] .about-dialog .row,[dir=rtl] .about-dialog .col-4,[dir=rtl] .about-dialog .col-8,[dir=rtl] .change-password-dialog .dx-form,[dir=rtl] .change-password-dialog .dx-label,[dir=rtl] .change-password-dialog .dx-field-item-label{text-align:right}[dir=rtl] .menu-dropdown-panel,[dir=rtl] .settings-menu,[dir=rtl] .employee-menu,[dir=rtl] .notifications-menu{right:auto;left:0}[dir=rtl] .menu-section-label,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{text-align:right}[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{padding-left:16px;padding-right:16px;flex-direction:row-reverse}[dir=rtl] .menu-indicator{margin-left:0;margin-right:8px}[dir=rtl] .notifications-badge{right:auto;left:4px}[dir=rtl] .employee-info{margin-left:0;margin-right:8px}[dir=rtl] .employee-caret{margin-left:0;margin-right:2px}::ng-deep .dx-autocomplete.dx-state-focused .dx-texteditor-input,::ng-deep .dx-autocomplete .dx-texteditor-input:focus{outline:none!important;box-shadow:none!important}::ng-deep .dx-autocomplete.dx-state-focused.dx-texteditor-filled{border-color:transparent!important;box-shadow:none!important}.menu-dropdown-host{position:relative;display:flex;align-items:center}.menu-icon-btn{display:flex;align-items:center;justify-content:center;width:40px;height:56px;text-decoration:none;color:var(--Secondary-Light-Color, #999)!important;transition:color var(--tran-02, .2s);cursor:pointer;font-size:14px}.menu-icon-btn:hover{color:var(--bs-white, #fff)!important}.menu-dropdown-panel{position:absolute;top:100%;background:var(--bs-white, #fff);color:var(--dark-text-color, #333);border:1px solid var(--bs-gray, #dee2e6);box-shadow:0 4px 12px #0000001f;z-index:1050;padding:4px 0;list-style:none;border-radius:4px;margin-top:0}.menu-section-label{font-size:12px;color:var(--Secondary-Light-Color, #888);padding:4px 16px 6px;letter-spacing:.03em;display:block}.menu-row{display:flex;align-items:center;gap:6px}.menu-divider{border:none;border-top:1px solid rgba(0,0,0,.8);margin:4px 0}.dialog-content{display:flex;flex-direction:column;height:100%}.dialog-body{flex:1;overflow-y:auto;padding:8px 4px}.dialog-body h3{font-size:16px;font-weight:600;margin-bottom:12px!important}.dialog-body h4{font-size:14px;font-weight:600;margin-top:16px!important;margin-bottom:8px!important}.dialog-body p{font-size:13px;line-height:1.6;color:#444;margin-bottom:10px!important}.menu-indicator{display:inline-flex;align-items:center;justify-content:center;width:16px;flex-shrink:0;font-size:12px;padding-top:2px}.menu-indicator-active{color:var(--primary-color, #F18206)}::ng-deep .top-bar-header .dx-toolbar{padding:0!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-items-container{height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-before,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-center,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{display:flex!important;align-items:center!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-item.dx-toolbar-item{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-item-content.dx-toolbar-item-content{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{padding:0 20px!important}.navbar-brand-link{display:flex;align-items:center;text-decoration:none;width:235px;min-width:235px;transition:width var(--tran-03),min-width var(--tran-03);overflow:hidden}.navbar-brand-link.collapsed{width:60px;min-width:60px}.header-logo{height:38px;object-fit:contain}.header-logo-collapsed{height:32px;object-fit:contain}.nav.navbar-nav{list-style:none;padding:0;margin:0}.user-info{display:flex;align-items:center}ul{margin-top:0}.employee-toggle{display:flex;align-items:center;height:56px;padding:0 6px;text-decoration:none;cursor:pointer;color:var(--Secondary-Light-Color, #999);transition:color var(--tran-02, .2s)}.employee-toggle:hover{color:var(--bs-white, #fff)}.employee-info{display:flex;flex-direction:column;justify-content:center;margin-left:8px;margin-right:4px}.user-name{font-size:13px;font-weight:500;color:var(--bs-white, #fff);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;display:block}.property-name{font-size:11px;color:var(--Secondary-Light-Color, #999);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;letter-spacing:.03em;display:block}.employee-caret{font-size:9px;color:var(--Secondary-Light-Color, #999);flex-shrink:0;margin-left:2px}.employee-menu{right:0;min-width:200px;padding:6px 0;border-color:#0000001f;box-shadow:0 4px 16px #00000026}.menu-item{display:flex;align-items:center;padding:7px 16px;font-size:14px;color:var(--dark-text-color, #333);text-decoration:none;cursor:pointer;transition:background var(--tran-02, .15s)}.menu-item:hover,.menu-item:focus{background:#f5f5f5;color:var(--dark-text-color, #333)!important}.menu-item-active{color:var(--dark-text-color, #333);font-weight:600}.menu-item-active .menu-indicator{color:var(--primary-color, #F18206)}.menu-item-signout:hover,.menu-item-signout:focus{background:#f5f5f5!important;color:#222!important}.menu-item-signout:hover fa-icon,.menu-item-signout:focus fa-icon{color:#222!important}.settings-menu{right:0;min-width:240px}.header-dropdown-item{gap:6px;padding:7px 16px;font-size:14px}.header-dropdown-item.disabled{opacity:.5}.item-icon{font-size:16px;width:18px;flex-shrink:0}.dropdown-divider{border-top:1px solid rgba(0,0,0,.175)}.notifications-icon-btn{position:relative}.notifications-badge{position:absolute;top:5px;right:4px;min-width:18px;height:15px;border-radius:25%;padding:0 5px;font-size:10px;line-height:18px;text-align:center;background-color:var(--bs-danger, #dc3545)!important;color:#fff!important}.notifications-menu{right:0;top:calc(100% + 4px);min-width:280px;max-height:400px;overflow-y:auto;z-index:1050}.nav-item .nav-link{color:#999;font-weight:500;padding:0 14px;height:56px;display:flex;align-items:center;justify-content:flex-start;text-decoration:none;font-size:13px;white-space:nowrap;transition:color .2s,background .2s;background:#fff}.nav-item .nav-link:hover,.nav-item.dropdown.open>.nav-link{color:#222;background:#f5f5f5}.nav-item .nav-link .caret{margin-left:4px;font-size:10px}.nav-item.dropdown{position:relative}.dropdown-menu{left:0;min-width:200px}.nav-item.dropdown.open>.dropdown-menu{display:block}.top-bar-header .nav-item.dropdown>.nav-link{background:#fff!important;color:#222!important;font-weight:500;transition:background .15s,color .15s}.top-bar-header .nav-item.dropdown.open>.nav-link{background:#fff!important;color:#222!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link:hover{background:#222!important;color:#fff!important}.top-bar-header .dropdown-menu.menu-dropdown-panel{background:#fff!important;box-shadow:0 4px 16px #00000026;border-radius:6px;padding:0}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{background:#fff!important;color:#222!important;font-weight:400;height:38px!important;padding:0 22px;border-bottom:none;text-decoration:none!important;display:flex;align-items:center;transition:background .15s,color .15s}.top-bar-header .nav-item{margin:0}.top-bar-header .dropdown-menu.menu-dropdown-panel{top:100%;margin-top:0;min-width:220px;padding:0;border-radius:0 0 4px 4px;overflow:hidden;background:#fff!important;z-index:1200}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{height:35px!important;padding:0 22px;background:#fff!important;color:var(--dark-text-color, #333)!important;border-bottom:none;font-weight:400;text-decoration:none!important}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link:hover,.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item.dropdown.open>.nav-link{background:#f5f6f8!important;color:var(--dark-text-color, #222)!important;text-decoration:none!important}.top-bar-header .nav-item.dropdown>.nav-link,.top-bar-header .nav-item.dropdown>.nav-link:focus{color:var(--Secondary-Light-Color, #999)!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link{color:#fff!important}.top-bar-header input{border:none!important;margin-right:0!important}.dropdown-menu.menu-dropdown-panel>li.nav-item>a.nav-link{background:#fff!important;color:#222!important}.dropdown-menu.menu-dropdown-panel>li:hover{background:#f5f5f5!important}.dropdown-menu .menu-dropdown-panel>li:hover,.settings-menu .menu-dropdown-panel>li:hover,.menu-dropdown-panel .settings-menu>li:hover{background:#f5f5f5!important}.about-backdrop{position:fixed;inset:0;background:#00000073;z-index:2000;display:flex;align-items:center;justify-content:center;animation:about-fade-in .2s ease}@keyframes about-fade-in{0%{opacity:0}to{opacity:1}}.about-modal{background:#fff;border-radius:6px;width:560px;max-width:95vw;box-shadow:0 5px 30px #00000040;animation:about-slide-in .22s ease;overflow:hidden}@keyframes about-slide-in{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}.about-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #e5e5e5}.about-modal-title{font-size:1rem;font-weight:400;margin:0;color:#333}.about-close-btn{background:none;border:none;font-size:1.5rem;line-height:1;color:#999;cursor:pointer;padding:0 4px}.about-close-btn:hover{color:#333}.about-modal-body{padding:20px 20px 16px}.about-logo{max-width:175px;width:100%}.about-product-name{font-size:1.25rem;font-weight:400;margin:0 0 8px!important;color:#333}.about-version-text{font-size:.9rem;color:#555;margin-bottom:4px!important}.about-up-to-date{font-size:.85rem;margin-bottom:4px!important}.about-copyright{font-size:.82rem;color:#555;line-height:1.5}.about-modal-actions{display:flex;border-top:1px solid #e5e5e5}.about-action-btn{flex:1;background:none;border:none;border-right:1px solid #e5e5e5;padding:12px 8px;font-size:.875rem;color:var(--primary-color, #F18206);cursor:pointer;transition:background .15s}.about-action-btn:last-child{border-right:none}.about-action-btn:hover{background:var(--primary-color-light, #f4ede3)}.sidebar-content{background:#222}.sidebar{width:260px;background:#222;color:#d3d7dc;height:100vh;min-height:100vh;max-height:100vh;transition:var(--tran-03);position:fixed;left:0;top:0;z-index:1000;display:flex;flex-direction:column;box-shadow:var(--bs-xs-shadow-box, 2px 0 8px rgba(0,0,0,.04));&.collapsed{width:60px;.sidebar-content,.sidebar-footer small{display:none}.sidebar-footer{justify-content:center}.sidebar-logo img{margin:0 auto}}.nav-sidebar li ul{background-color:var(--bs-gray, #eee)}.nav-sidebar li a{border-top:1px solid rgba(255,255,255,.04);display:block;padding:10px 25px;color:#d3d7dc!important;font-size:var(--font-size-13, 13px);font-weight:300;white-space:nowrap;transition:color var(--tran-02, .15s ease)}.sidebar-logo{display:flex;align-items:center;justify-content:flex-start;padding:8px 0 10px 18px;background:#222;img{height:34px;transition:var(--tran-03)}}.sidebar-content{overflow-y:auto;flex:1 1 auto;height:100%;background:#222;scrollbar-width:thin;scrollbar-color:#4a4f58 #222222}.sidebar-content::-webkit-scrollbar{width:10px}.sidebar-content::-webkit-scrollbar-track{background:#222}.sidebar-content::-webkit-scrollbar-thumb{background:#4a4f58;border-radius:8px;border:2px solid #222222}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#5b616b}.nav-sidebar{list-style:none;padding:0;margin:0}.sidebar-footer{width:100%;padding:8px 10px;background:#222;font-size:var(--font-size-12, 12px);display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);position:absolute;bottom:0;left:0;a{color:var(--bs-white, #fff)}button{background:#222;border:1px solid #333;color:var(--bs-white, #fff)}a:hover{color:var(--bs-custom-light-white, #eee)!important}}}li.level-2>a{background:#ddd!important;color:#333!important}li.level-3>a{background:#eee!important;color:#333!important}.sub-menu li.level-last>a{background:#eee!important;color:#333!important}.sub-menu{background:none!important}li.level-2>a span,li.level-3>a span,.sub-menu li.level-last>a span{color:#333!important;font-size:13px}.nav-sidebar li ul li a{color:var(--dark-text-color, #333)!important}li.level-2>a:hover,li.level-2>a.active,li.level-3>a:hover,li.level-3>a.active,.sub-menu li.level-last>a:hover,.sub-menu li.level-last>a.active{background:#fff2e4!important;color:#333!important}a.has-children{display:flex;flex-wrap:nowrap}li.level-last>a.has-children:hover>fa-icon,li.level-2>a.has-children:hover>fa-icon{color:var(--dark-text-color, #333)!important}li.level-2>a>fa-icon.fa-fw:hover,li.level-2>a>fa-icon.fa-fw:focus{color:var(--dark-text-color, #333)!important}.popover-sub-menu{position:absolute;left:60px;top:0;z-index:2000;min-width:180px;background:transparent;pointer-events:none}.popover-menu{background:var(--bs-white, #fff);color:var(--dark-text-color, #232323);border-radius:6px;box-shadow:var(--bs-md-shadow-box, 0 4px 16px rgba(0,0,0,.15));margin:0;padding:8px 0;pointer-events:auto}.popover-arrow{position:absolute;left:-8px;top:16px;width:16px;height:16px;background:transparent}.popover-arrow:before{content:\"\";position:absolute;left:0;top:0;width:16px;height:16px;background:var(--bs-white, #fff);box-shadow:-2px 2px 6px #00000014;transform:rotate(45deg)}li.collapsed{position:relative}li.parent.level-2,li.level-last{padding:0!important;margin-bottom:0!important}li{&.level-2>a,&.level-last>a{transition:background var(--tran-02),color var(--tran-02)}margin-bottom:2px;&.collapsed>a{justify-content:center;span{display:none}.fa-fw{margin-right:0;display:inline-flex;justify-content:center;width:100%}}}li.parent>a{color:#999!important;background:none;border:none;outline:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;border-radius:0;gap:10px;width:100%;padding:11px 18px 11px 13px!important;text-decoration:none!important}.sidebar .nav-sidebar li>a>.d-flex{min-width:0}.sidebar .nav-sidebar li>a span{overflow:hidden;text-overflow:ellipsis}li.parent>fa-icon{color:var(--Secondary-Light-Color, #999)!important}li.parent.open>a{font-weight:400;background:#222;color:#f0f3f6;border-radius:0;display:flex!important}li.parent>a:hover{color:var(--bs-custom-light-white, #eee)!important}a.has-children{display:flex!important;flex-wrap:nowrap}.sub-menu{background:var(--bs-gray, #eee);color:var(--Secondary-Light-Color, #999);padding-left:0;margin:0;border-radius:0 0 4px 4px;box-shadow:var(--bs-xs-shadow-box, 0 2px 8px rgba(0,0,0,.04));display:none}li.open>.sub-menu{display:block}li .sub-menu li a{color:var(--dark-text-color, #333);background:none;font-weight:400;border-radius:0;justify-content:flex-start;gap:10px;padding:11px 18px 11px 30px!important;border-bottom:1px solid var(--bg-light-gray, #ddd);border-right:1px solid var(--bg-light-gray, #ddd)}li .sub-menu li a:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222)}li .sub-menu li.open>a{background:var(--bs-white, #fff);color:var(--dark-text-color, #222)}.sidebar-toggle-btn{width:32px;height:32px;border-radius:4px;background:#262626;color:var(--Secondary-Light-Color, #999);border:1px solid #48506a;display:flex;align-items:center;justify-content:center;margin:0;transition:background var(--tran-02),color var(--tran-02)}.sidebar-toggle-btn:hover{background:#48506a;color:#fff}a.navbar-brand-link,a.dropdown-item{color:var(--Secondary-Light-Color, #999);text-decoration:none;display:flex;align-items:center;border-radius:4px;transition:background var(--tran-02);justify-content:flex-start;gap:10px}a.navbar-brand-link:hover,a.dropdown-item:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222222)}.menu-dropdown-host>a:hover,.menu-icon-btn:hover,a.navbar-brand-link:hover{background:#222;color:var(--bs-white, #fff)!important}.fa{margin-right:8px}.sidebar-footer a:hover{background:#222!important;color:var(--bs-white, #fff)!important}.sidebar .nav-sidebar>li{margin:0}.sidebar .nav-sidebar>li>a{min-height:40px;padding:10px 16px 10px 28px!important;text-decoration:none!important;line-height:1.2;border-top:1px solid rgba(255,255,255,.05)}.sidebar .nav-sidebar>li>a .d-flex{align-items:center;gap:12px}.sidebar .nav-sidebar>li>a>.fa-fw:last-child{margin-left:10px;font-size:11px;flex-shrink:0;width:12px;text-align:center}.sidebar .nav-sidebar li>a:hover .text-secondary,.sidebar .nav-sidebar li>a:focus .text-secondary,.sidebar .nav-sidebar li.open>a .text-secondary,.sidebar .nav-sidebar li.level-1.open>a .text-secondary{color:#fff!important}.sidebar .nav-sidebar li.level-2>a:hover .text-secondary,.sidebar .nav-sidebar li.level-2>a:focus .text-secondary,.sidebar .nav-sidebar li.level-2.open>a .text-secondary,.sidebar .nav-sidebar li.level-3>a:hover .text-secondary,.sidebar .nav-sidebar li.level-3>a:focus .text-secondary,.sidebar .nav-sidebar li.level-last>a:hover .text-secondary,.sidebar .nav-sidebar li.level-last>a:focus .text-secondary{color:#222!important}.sidebar .nav-sidebar>li.level-1.open>a{background:#222!important;color:#f0f3f6!important}.sidebar .nav-sidebar .sub-menu{background:#efefef!important;margin:0;padding:0;border-radius:0;box-shadow:none}.sidebar .nav-sidebar .sub-menu>li{margin:0}.sidebar .nav-sidebar .sub-menu>li>a{min-height:38px;padding:9px 16px 9px 58px!important;background:#eee!important;color:#333!important;text-decoration:none!important;border-right:none;border-bottom:1px solid #dddddd;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-2.parent>a{padding-left:50px!important;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-3>a,.sidebar .nav-sidebar .sub-menu>li.level-last>a{padding-left:58px!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a,.sidebar .nav-sidebar .sub-menu>li.level-3>a{background:#fff!important;color:#333!important}.sidebar .nav-sidebar .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar a,.sidebar .nav-sidebar a:hover,.sidebar .nav-sidebar a:focus,.sidebar .nav-sidebar a:active{text-decoration:none!important}.sidebar .nav-sidebar li.parent>a{justify-content:space-between}.sidebar .nav-sidebar li.parent>a>.d-flex{flex:1 1 auto;min-width:0}.sidebar .nav-sidebar>li>a,.sidebar .nav-sidebar .sub-menu>li>a{display:flex;align-items:center;flex-wrap:nowrap}.sidebar .nav-sidebar .menu-label-wrap{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}.sidebar .nav-sidebar .menu-name-text{display:block;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .nav-sidebar .menu-expand-arrow{flex:0 0 14px;width:14px;min-width:14px;margin-left:10px;text-align:center;color:#999}.sidebar .nav-sidebar .sub-menu>li.parent>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a>.menu-expand-arrow{color:#6f7680!important;opacity:1!important;visibility:visible!important}.sidebar .nav-sidebar .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu>li.parent.open>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent.open>a>.menu-expand-arrow{color:#4e5560!important}.sidebar .nav-sidebar>li.level-1.parent>a,.sidebar .nav-sidebar>li.level-1.parent>a:visited,.sidebar .nav-sidebar>li.level-1.parent>a:focus,.sidebar .nav-sidebar>li.level-1.parent>a:active{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a span{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover,.sidebar .nav-sidebar>li.level-1.parent.open>a{color:#fff!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover span,.sidebar .nav-sidebar>li.level-1.parent.open>a span{color:#fff!important}.sidebar .nav-sidebar>li>a span,.sidebar .nav-sidebar .sub-menu>li>a span{font-size:12px}.sidebar .sidebar-footer small{display:flex;align-items:center;gap:10px;margin:0;line-height:1}.sidebar .sidebar-footer small,.sidebar .sidebar-footer small a{color:#8f949d!important;font-size:11px}.sidebar .sidebar-footer small a:hover{color:#fff!important}.sidebar.collapsed .sidebar-footer{justify-content:center;padding:8px 0}::ng-deep .dx-popup-title.dx-toolbar .dx-closebutton{inset-inline-start:10px}::ng-deep .dx-popup-title.dx-toolbar{padding-top:10px!important}\n", ":host{display:flex;align-items:center;height:56px}\n"] }]
|
|
3086
|
+
args: [{ selector: 'bayan-core-global-search-widget', standalone: true, imports: [CommonModule, DxAutocompleteModule, FontAwesomeModule, BayanCoreTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon mx-1\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle mx-4\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n", styles: [".global-search-wrapper{position:relative;width:100%;max-width:480px}.dx-autocomplete-popup-wrapper{border-radius:8px!important;box-shadow:0 4px 16px #00000026!important;background:#fff!important;min-width:400px!important;padding:.5rem 0!important;max-height:340px!important;overflow-y:auto!important}.global-search-dropdown-item{width:100%}.global-search-link{display:block;border-radius:6px;transition:background .15s,color .15s;text-decoration:none;padding:0}.compact-search-item{padding:2px 7px!important;min-height:35px;line-height:1.2}.global-search-link:hover,.compact-search-item:hover{background:#f5f5f5!important;color:#999!important}.search-title{color:#999!important;font-weight:600;font-size:.8em!important;line-height:1.1}.search-subtitle{color:#222;font-size:14px;line-height:1.1;margin-top:1px}.global-search-icon{color:#999!important;font-size:.8em!important}.state-small-size{font-size:.95em}.menu-dropdown-panel,.dropdown-menu{background:#fff!important}[dir=rtl] .navbar-brand-link{margin-left:auto!important;margin-right:0!important;display:flex;justify-content:flex-end}.top-bar-header .dx-autocomplete,.header-toolbar .dx-autocomplete{width:100%!important;max-width:400px;margin:0 auto}.dx-autocomplete .dx-texteditor-input{background:#5c4848!important;color:#fff!important;border-radius:6px!important;border:2px solid #f18206!important;padding:8px 12px!important;font-size:16px!important;box-shadow:none!important}.dx-autocomplete .dx-texteditor-input::placeholder{color:#b9a9a9!important;opacity:1}.dx-autocomplete.dx-state-focused .dx-texteditor-input{border-color:#f18206!important;box-shadow:0 0 0 2px #f1820626!important}.settings-menu li{margin-bottom:9px}.settings-menu .header-dropdown-item,.settings-menu .menu-row{color:var(--dark-text-color, #333)!important;font-weight:400;background:none;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.settings-menu .header-dropdown-item.menu-item-active,.settings-menu .menu-row.menu-item-active{color:#222;font-weight:700}.settings-menu .menu-section-label{color:#bbb!important;font-size:13px;font-weight:400;cursor:default;padding-top:8px;padding-bottom:4px}.settings-menu .indicatorClass{display:inline-flex;align-items:center;margin-right:8px;color:var(--primary-color, #F18206)}.settings-menu .indicatorClass.invisible{color:transparent}.settings-menu .fa-icon{margin-right:8px}.settings-menu .dropdown-divider{margin:4px 0}[dir=rtl] .employee-info{margin-left:0!important;margin-right:8px!important;text-align:right}[dir=rtl] .user-name,[dir=rtl] .property-name{text-align:right}[dir=rtl] .employee-caret{margin-left:0!important;margin-right:2px!important}[dir=rtl] .menu-item,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row{flex-direction:row-reverse;text-align:right}[dir=rtl] .menu-indicator{margin-left:0!important;margin-right:8px!important}[dir=rtl] .dropdown-divider,[dir=rtl] .menu-divider{margin-left:0!important;margin-right:0!important}[dir=rtl] .navbar-brand-link{text-align:right}[dir=rtl] .top-bar-header,[dir=rtl] .header-toolbar{direction:rtl}[dir=rtl] .about-dialog .row,[dir=rtl] .about-dialog .col-4,[dir=rtl] .about-dialog .col-8,[dir=rtl] .change-password-dialog .dx-form,[dir=rtl] .change-password-dialog .dx-label,[dir=rtl] .change-password-dialog .dx-field-item-label{text-align:right}[dir=rtl] .menu-dropdown-panel,[dir=rtl] .settings-menu,[dir=rtl] .employee-menu,[dir=rtl] .notifications-menu{right:auto;left:0}[dir=rtl] .menu-section-label,[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{text-align:right}[dir=rtl] .header-dropdown-item,[dir=rtl] .menu-row,[dir=rtl] .menu-item{padding-left:16px;padding-right:16px;flex-direction:row-reverse}[dir=rtl] .menu-indicator{margin-left:0;margin-right:8px}[dir=rtl] .notifications-badge{right:auto;left:4px}[dir=rtl] .employee-info{margin-left:0;margin-right:8px}[dir=rtl] .employee-caret{margin-left:0;margin-right:2px}::ng-deep .dx-autocomplete.dx-state-focused .dx-texteditor-input,::ng-deep .dx-autocomplete .dx-texteditor-input:focus{outline:none!important;box-shadow:none!important}::ng-deep .dx-autocomplete.dx-state-focused.dx-texteditor-filled{border-color:transparent!important;box-shadow:none!important}.menu-dropdown-host{position:relative;display:flex;align-items:center}.menu-icon-btn{display:flex;align-items:center;justify-content:center;width:40px;height:56px;text-decoration:none;color:var(--Secondary-Light-Color, #999)!important;transition:color var(--tran-02, .2s);cursor:pointer;font-size:14px}.menu-icon-btn:hover{color:var(--bs-white, #fff)!important}.menu-dropdown-panel{position:absolute;top:100%;background:var(--bs-white, #fff);color:var(--dark-text-color, #333);border:1px solid var(--bs-gray, #dee2e6);box-shadow:0 4px 12px #0000001f;z-index:1050;padding:4px 0;list-style:none;border-radius:4px;margin-top:0}.menu-section-label{font-size:12px;color:var(--Secondary-Light-Color, #888);padding:4px 16px 6px;letter-spacing:.03em;display:block}.menu-row{display:flex;align-items:center;gap:6px}.menu-divider{border:none;border-top:1px solid rgba(0,0,0,.8);margin:4px 0}.dialog-content{display:flex;flex-direction:column;height:100%}.dialog-body{flex:1;overflow-y:auto;padding:8px 4px}.dialog-body h3{font-size:16px;font-weight:600;margin-bottom:12px!important}.dialog-body h4{font-size:14px;font-weight:600;margin-top:16px!important;margin-bottom:8px!important}.dialog-body p{font-size:13px;line-height:1.6;color:#444;margin-bottom:10px!important}.menu-indicator{display:inline-flex;align-items:center;justify-content:center;width:16px;flex-shrink:0;font-size:12px;padding-top:2px}.menu-indicator-active{color:var(--primary-color, #F18206)}::ng-deep .top-bar-header .dx-toolbar{padding:0!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-items-container{height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-before,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-center,::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{display:flex!important;align-items:center!important;height:56px!important}::ng-deep .top-bar-header .dx-toolbar .dx-item.dx-toolbar-item{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-item-content.dx-toolbar-item-content{display:flex!important;align-items:center!important}::ng-deep .top-bar-header .dx-toolbar .dx-toolbar-after{padding:0 20px!important}.navbar-brand-link{display:flex;align-items:center;text-decoration:none;width:235px;min-width:235px;transition:width var(--tran-03),min-width var(--tran-03);overflow:hidden}.navbar-brand-link.collapsed{width:60px;min-width:60px}.header-logo{height:38px;object-fit:contain}.header-logo-collapsed{height:32px;object-fit:contain}.nav.navbar-nav{list-style:none;padding:0;margin:0}.user-info{display:flex;align-items:center}ul{margin-top:0}.employee-toggle{display:flex;align-items:center;height:56px;padding:0 6px;text-decoration:none;cursor:pointer;color:var(--Secondary-Light-Color, #999);transition:color var(--tran-02, .2s)}.employee-toggle:hover{color:var(--bs-white, #fff)}.employee-info{display:flex;flex-direction:column;justify-content:center;margin-left:8px;margin-right:4px}.user-name{font-size:13px;font-weight:500;color:var(--bs-white, #fff);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;display:block}.property-name{font-size:11px;color:var(--Secondary-Light-Color, #999);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;letter-spacing:.03em;display:block}.employee-caret{font-size:9px;color:var(--Secondary-Light-Color, #999);flex-shrink:0;margin-left:2px}.employee-menu{right:0;min-width:200px;padding:6px 0;border-color:#0000001f;box-shadow:0 4px 16px #00000026}.menu-item{display:flex;align-items:center;padding:7px 16px;font-size:14px;color:var(--dark-text-color, #333);text-decoration:none;cursor:pointer;transition:background var(--tran-02, .15s)}.menu-item:hover,.menu-item:focus{background:#f5f5f5;color:var(--dark-text-color, #333)!important}.menu-item-active{color:var(--dark-text-color, #333);font-weight:600}.menu-item-active .menu-indicator{color:var(--primary-color, #F18206)}.menu-item-signout:hover,.menu-item-signout:focus{background:#f5f5f5!important;color:#222!important}.menu-item-signout:hover fa-icon,.menu-item-signout:focus fa-icon{color:#222!important}.settings-menu{right:0;min-width:240px}.header-dropdown-item{gap:6px;padding:7px 16px;font-size:14px}.header-dropdown-item.disabled{opacity:.5}.item-icon{font-size:16px;width:18px;flex-shrink:0}.dropdown-divider{border-top:1px solid rgba(0,0,0,.175)}.notifications-icon-btn{position:relative}.notifications-badge{position:absolute;top:5px;right:4px;min-width:18px;height:15px;border-radius:25%;padding:0 5px;font-size:10px;line-height:18px;text-align:center;background-color:var(--bs-danger, #dc3545)!important;color:#fff!important}.notifications-menu{right:0;top:calc(100% + 4px);min-width:280px;max-height:400px;overflow-y:auto;z-index:1050}.nav-item .nav-link{color:#999;font-weight:500;padding:0 14px;height:56px;display:flex;align-items:center;justify-content:flex-start;text-decoration:none;font-size:13px;white-space:nowrap;transition:color .2s,background .2s;background:#fff}.nav-item .nav-link:hover,.nav-item.dropdown.open>.nav-link{color:#222;background:#f5f5f5}.nav-item .nav-link .caret{margin-left:4px;font-size:10px}.nav-item.dropdown{position:relative}.dropdown-menu{left:0;min-width:200px}.nav-item.dropdown.open>.dropdown-menu{display:block}.top-bar-header .nav-item.dropdown>.nav-link{background:#fff!important;color:#222!important;font-weight:500;transition:background .15s,color .15s}.top-bar-header .nav-item.dropdown.open>.nav-link{background:#fff!important;color:#222!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link:hover{background:#222!important;color:#fff!important}.top-bar-header .dropdown-menu.menu-dropdown-panel{background:#fff!important;box-shadow:0 4px 16px #00000026;border-radius:6px;padding:0}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{background:#fff!important;color:#222!important;font-weight:400;height:38px!important;padding:0 22px;border-bottom:none;text-decoration:none!important;display:flex;align-items:center;transition:background .15s,color .15s}.top-bar-header .nav-item{margin:0}.top-bar-header .dropdown-menu.menu-dropdown-panel{top:100%;margin-top:0;min-width:220px;padding:0;border-radius:0 0 4px 4px;overflow:hidden;background:#fff!important;z-index:1200}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link{height:35px!important;padding:0 22px;background:#fff!important;color:var(--dark-text-color, #333)!important;border-bottom:none;font-weight:400;text-decoration:none!important}.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item .nav-link:hover,.top-bar-header .dropdown-menu.menu-dropdown-panel .nav-item.dropdown.open>.nav-link{background:#f5f6f8!important;color:var(--dark-text-color, #222)!important;text-decoration:none!important}.top-bar-header .nav-item.dropdown>.nav-link,.top-bar-header .nav-item.dropdown>.nav-link:focus{color:var(--Secondary-Light-Color, #999)!important}.top-bar-header .nav-item.dropdown>.nav-link:hover,.top-bar-header .nav-item.dropdown.open>.nav-link{color:#fff!important}.top-bar-header input{border:none!important;margin-right:0!important}.dropdown-menu.menu-dropdown-panel>li.nav-item>a.nav-link{background:#fff!important;color:#222!important}.dropdown-menu.menu-dropdown-panel>li:hover{background:#f5f5f5!important}.dropdown-menu .menu-dropdown-panel>li:hover,.settings-menu .menu-dropdown-panel>li:hover,.menu-dropdown-panel .settings-menu>li:hover{background:#f5f5f5!important}.about-backdrop{position:fixed;inset:0;background:#00000073;z-index:2000;display:flex;align-items:center;justify-content:center;animation:about-fade-in .2s ease}@keyframes about-fade-in{0%{opacity:0}to{opacity:1}}.about-modal{background:#fff;border-radius:6px;width:560px;max-width:95vw;box-shadow:0 5px 30px #00000040;animation:about-slide-in .22s ease;overflow:hidden}@keyframes about-slide-in{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}.about-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #e5e5e5}.about-modal-title{font-size:1rem;font-weight:400;margin:0;color:#333}.about-close-btn{background:none;border:none;font-size:1.5rem;line-height:1;color:#999;cursor:pointer;padding:0 4px}.about-close-btn:hover{color:#333}.about-modal-body{padding:20px 20px 16px}.about-logo{max-width:175px;width:100%}.about-product-name{font-size:1.25rem;font-weight:400;margin:0 0 8px!important;color:#333}.about-version-text{font-size:.9rem;color:#555;margin-bottom:4px!important}.about-up-to-date{font-size:.85rem;margin-bottom:4px!important}.about-copyright{font-size:.82rem;color:#555;line-height:1.5}.about-modal-actions{display:flex;border-top:1px solid #e5e5e5}.about-action-btn{flex:1;background:none;border:none;border-right:1px solid #e5e5e5;padding:12px 8px;font-size:.875rem;color:var(--primary-color, #F18206);cursor:pointer;transition:background .15s}.about-action-btn:last-child{border-right:none}.about-action-btn:hover{background:var(--primary-color-light, #f4ede3)}.sidebar-content{background:#222}.sidebar{width:260px;background:#222;color:#d3d7dc;height:100vh;min-height:100vh;max-height:100vh;transition:var(--tran-03);position:fixed;left:0;top:0;z-index:1000;display:flex;flex-direction:column;box-shadow:var(--bs-xs-shadow-box, 2px 0 8px rgba(0,0,0,.04));&.collapsed{width:60px;.sidebar-content,.sidebar-footer small{display:none}.sidebar-footer{justify-content:center}.sidebar-logo img{margin:0 auto}}.nav-sidebar li ul{background-color:var(--bs-gray, #eee)}.nav-sidebar li a{border-top:1px solid rgba(255,255,255,.04);display:block;padding:10px 25px;color:#d3d7dc!important;font-size:var(--font-size-13, 13px);font-weight:300;white-space:nowrap;transition:color var(--tran-02, .15s ease)}.sidebar-logo{display:flex;align-items:center;justify-content:flex-start;padding:8px 0 10px 18px;background:#222;img{height:34px;transition:var(--tran-03)}}.sidebar-content{overflow-y:auto;flex:1 1 auto;height:100%;background:#222;scrollbar-width:thin;scrollbar-color:#4a4f58 #222222}.sidebar-content::-webkit-scrollbar{width:10px}.sidebar-content::-webkit-scrollbar-track{background:#222}.sidebar-content::-webkit-scrollbar-thumb{background:#4a4f58;border-radius:8px;border:2px solid #222222}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#5b616b}.nav-sidebar{list-style:none;padding:0;margin:0}.sidebar-footer{width:100%;padding:8px 10px;background:#222;font-size:var(--font-size-12, 12px);display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.04);position:absolute;bottom:0;left:0;a{color:var(--bs-white, #fff)}button{background:#222;border:1px solid #333;color:var(--bs-white, #fff)}a:hover{color:var(--bs-custom-light-white, #eee)!important}}}li.level-2>a{background:#ddd!important;color:#333!important}li.level-3>a{background:#eee!important;color:#333!important}.sub-menu li.level-last>a{background:#eee!important;color:#333!important}.sub-menu{background:none!important}li.level-2>a span,li.level-3>a span,.sub-menu li.level-last>a span{color:#333!important;font-size:13px}.nav-sidebar li ul li a{color:var(--dark-text-color, #333)!important}li.level-2>a:hover,li.level-2>a.active,li.level-3>a:hover,li.level-3>a.active,.sub-menu li.level-last>a:hover,.sub-menu li.level-last>a.active{background:#fff2e4!important;color:#333!important}a.has-children{display:flex;flex-wrap:nowrap}li.level-last>a.has-children:hover>fa-icon,li.level-2>a.has-children:hover>fa-icon{color:var(--dark-text-color, #333)!important}li.level-2>a>fa-icon.fa-fw:hover,li.level-2>a>fa-icon.fa-fw:focus{color:var(--dark-text-color, #333)!important}.popover-sub-menu{position:absolute;left:60px;top:0;z-index:2000;min-width:180px;background:transparent;pointer-events:none}.popover-menu{background:var(--bs-white, #fff);color:var(--dark-text-color, #232323);border-radius:6px;box-shadow:var(--bs-md-shadow-box, 0 4px 16px rgba(0,0,0,.15));margin:0;padding:8px 0;pointer-events:auto}.popover-arrow{position:absolute;left:-8px;top:16px;width:16px;height:16px;background:transparent}.popover-arrow:before{content:\"\";position:absolute;left:0;top:0;width:16px;height:16px;background:var(--bs-white, #fff);box-shadow:-2px 2px 6px #00000014;transform:rotate(45deg)}li.collapsed{position:relative}li.parent.level-2,li.level-last{padding:0!important;margin-bottom:0!important}li{&.level-2>a,&.level-last>a{transition:background var(--tran-02),color var(--tran-02)}margin-bottom:2px;&.collapsed>a{justify-content:center;span{display:none}.fa-fw{margin-right:0;display:inline-flex;justify-content:center;width:100%}}}li.parent>a{color:#999!important;background:none;border:none;outline:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;border-radius:0;gap:10px;width:100%;padding:11px 18px 11px 13px!important;text-decoration:none!important}.sidebar .nav-sidebar li>a>.d-flex{min-width:0}.sidebar .nav-sidebar li>a span{overflow:hidden;text-overflow:ellipsis}li.parent>fa-icon{color:var(--Secondary-Light-Color, #999)!important}li.parent.open>a{font-weight:400;background:#222;color:#f0f3f6;border-radius:0;display:flex!important}li.parent>a:hover{color:var(--bs-custom-light-white, #eee)!important}a.has-children{display:flex!important;flex-wrap:nowrap}.sub-menu{background:var(--bs-gray, #eee);color:var(--Secondary-Light-Color, #999);padding-left:0;margin:0;border-radius:0 0 4px 4px;box-shadow:var(--bs-xs-shadow-box, 0 2px 8px rgba(0,0,0,.04));display:none}li.open>.sub-menu{display:block}li .sub-menu li a{color:var(--dark-text-color, #333);background:none;font-weight:400;border-radius:0;justify-content:flex-start;gap:10px;padding:11px 18px 11px 30px!important;border-bottom:1px solid var(--bg-light-gray, #ddd);border-right:1px solid var(--bg-light-gray, #ddd)}li .sub-menu li a:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222)}li .sub-menu li.open>a{background:var(--bs-white, #fff);color:var(--dark-text-color, #222)}.sidebar-toggle-btn{width:32px;height:32px;border-radius:4px;background:#262626;color:var(--Secondary-Light-Color, #999);border:1px solid #48506a;display:flex;align-items:center;justify-content:center;margin:0;transition:background var(--tran-02),color var(--tran-02)}.sidebar-toggle-btn:hover{background:#48506a;color:#fff}a.navbar-brand-link,a.dropdown-item{color:var(--Secondary-Light-Color, #999);text-decoration:none;display:flex;align-items:center;border-radius:4px;transition:background var(--tran-02);justify-content:flex-start;gap:10px}a.navbar-brand-link:hover,a.dropdown-item:hover{background:var(--bs-gray, #eee);color:var(--dark-text-color, #222222)}.menu-dropdown-host>a:hover,.menu-icon-btn:hover,a.navbar-brand-link:hover{background:#222;color:var(--bs-white, #fff)!important}.fa{margin-right:8px}.sidebar-footer a:hover{background:#222!important;color:var(--bs-white, #fff)!important}.sidebar .nav-sidebar>li{margin:0}.sidebar .nav-sidebar>li>a{min-height:40px;padding:10px 16px 10px 28px!important;text-decoration:none!important;line-height:1.2;border-top:1px solid rgba(255,255,255,.05)}.sidebar .nav-sidebar>li>a .d-flex{align-items:center;gap:12px}.sidebar .nav-sidebar>li>a>.fa-fw:last-child{margin-left:10px;font-size:11px;flex-shrink:0;width:12px;text-align:center}.sidebar .nav-sidebar li>a:hover .text-secondary,.sidebar .nav-sidebar li>a:focus .text-secondary,.sidebar .nav-sidebar li.open>a .text-secondary,.sidebar .nav-sidebar li.level-1.open>a .text-secondary{color:#fff!important}.sidebar .nav-sidebar li.level-2>a:hover .text-secondary,.sidebar .nav-sidebar li.level-2>a:focus .text-secondary,.sidebar .nav-sidebar li.level-2.open>a .text-secondary,.sidebar .nav-sidebar li.level-3>a:hover .text-secondary,.sidebar .nav-sidebar li.level-3>a:focus .text-secondary,.sidebar .nav-sidebar li.level-last>a:hover .text-secondary,.sidebar .nav-sidebar li.level-last>a:focus .text-secondary{color:#222!important}.sidebar .nav-sidebar>li.level-1.open>a{background:#222!important;color:#f0f3f6!important}.sidebar .nav-sidebar .sub-menu{background:#efefef!important;margin:0;padding:0;border-radius:0;box-shadow:none}.sidebar .nav-sidebar .sub-menu>li{margin:0}.sidebar .nav-sidebar .sub-menu>li>a{min-height:38px;padding:9px 16px 9px 58px!important;background:#eee!important;color:#333!important;text-decoration:none!important;border-right:none;border-bottom:1px solid #dddddd;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-2.parent>a{padding-left:50px!important;font-weight:400}.sidebar .nav-sidebar .sub-menu>li.level-3>a,.sidebar .nav-sidebar .sub-menu>li.level-last>a{padding-left:58px!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a,.sidebar .nav-sidebar .sub-menu>li.level-3>a{background:#fff!important;color:#333!important}.sidebar .nav-sidebar .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar .sub-menu .sub-menu>li>a:hover,.sidebar .nav-sidebar .sub-menu .sub-menu>li.open>a{background:#fff2e4!important;color:#333!important}.sidebar .nav-sidebar a,.sidebar .nav-sidebar a:hover,.sidebar .nav-sidebar a:focus,.sidebar .nav-sidebar a:active{text-decoration:none!important}.sidebar .nav-sidebar li.parent>a{justify-content:space-between}.sidebar .nav-sidebar li.parent>a>.d-flex{flex:1 1 auto;min-width:0}.sidebar .nav-sidebar>li>a,.sidebar .nav-sidebar .sub-menu>li>a{display:flex;align-items:center;flex-wrap:nowrap}.sidebar .nav-sidebar .menu-label-wrap{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}.sidebar .nav-sidebar .menu-name-text{display:block;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .nav-sidebar .menu-expand-arrow{flex:0 0 14px;width:14px;min-width:14px;margin-left:10px;text-align:center;color:#999}.sidebar .nav-sidebar .sub-menu>li.parent>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a>.menu-expand-arrow{color:#6f7680!important;opacity:1!important;visibility:visible!important}.sidebar .nav-sidebar .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu>li.parent.open>a>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent>a:hover>.menu-expand-arrow,.sidebar .nav-sidebar .sub-menu .sub-menu>li.parent.open>a>.menu-expand-arrow{color:#4e5560!important}.sidebar .nav-sidebar>li.level-1.parent>a,.sidebar .nav-sidebar>li.level-1.parent>a:visited,.sidebar .nav-sidebar>li.level-1.parent>a:focus,.sidebar .nav-sidebar>li.level-1.parent>a:active{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a span{color:#999!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover,.sidebar .nav-sidebar>li.level-1.parent.open>a{color:#fff!important;text-decoration:none!important}.sidebar .nav-sidebar>li.level-1.parent>a:hover span,.sidebar .nav-sidebar>li.level-1.parent.open>a span{color:#fff!important}.sidebar .nav-sidebar>li>a span,.sidebar .nav-sidebar .sub-menu>li>a span{font-size:12px}.sidebar .sidebar-footer small{display:flex;align-items:center;gap:10px;margin:0;line-height:1}.sidebar .sidebar-footer small,.sidebar .sidebar-footer small a{color:#8f949d!important;font-size:11px}.sidebar .sidebar-footer small a:hover{color:#fff!important}.sidebar.collapsed .sidebar-footer{justify-content:center;padding:8px 0}::ng-deep .dx-popup-title.dx-toolbar .dx-closebutton{inset-inline-start:10px}::ng-deep .dx-popup-title.dx-toolbar{padding-top:10px!important}\n", ":host{display:flex;align-items:center;height:56px}\n"] }]
|
|
3087
3087
|
}], propDecorators: { searchAutoComplete: [{
|
|
3088
3088
|
type: ViewChild,
|
|
3089
3089
|
args: ['searchAutoComplete']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skysoftware-co-bayan-core-widgets-ui.mjs","sources":["../../../projects/bayan-core-ui/src/lib/shared/services/translate.service.ts","../../../projects/bayan-core-ui/src/lib/shared/pipes/translate.pipe.ts","../../../projects/bayan-core-ui/src/lib/shared/menu.service.ts","../../../projects/bayan-core-ui/src/lib/shared/property-state.service.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/global-search-widget/global-search-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/global-search-widget/global-search-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/item-widget/item-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/item-widget/item-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/notifications-widget/notifications-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/notifications-widget/notifications-widget.component.html","../../../projects/bayan-core-ui/src/lib/shared/menu.dtos.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/change-password-widget/change-password-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/change-password-widget/change-password-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/settings-widget/settings-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/settings-widget/settings-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/top-menu-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/top-menu-widget.component.html","../../../projects/bayan-core-ui/src/public-api.ts","../../../projects/bayan-core-ui/src/skysoftware-co-bayan-core-widgets-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport en from '../i18n/en.json';\r\nimport ar from '../i18n/ar.json';\r\n\r\n// Touch: 2026-05-09\r\n// Add more languages as needed\r\n\r\nconst BUILT_IN_LEXICONS: Record<string, Record<string, string>> = { en, ar };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BayanCoreTranslateService {\r\n private currentLanguage: string = 'en';\r\n private lexicon: Record<string, string> = {};\r\n\r\n setLanguage(language: string): void {\r\n this.currentLanguage = language;\r\n }\r\n\r\n getLanguage(): string {\r\n return this.currentLanguage;\r\n }\r\n\r\n setLexicon(lexicon: Record<string, string>): void {\r\n this.lexicon = lexicon;\r\n }\r\n\r\n getLexicon(): Record<string, string> {\r\n return this.lexicon;\r\n }\r\n\r\n translateBuiltIn(key: string): string {\r\n if (!key) return '';\r\n const builtIn = BUILT_IN_LEXICONS[this.currentLanguage] || {};\r\n const foundKey = Object.keys(builtIn).find(k => k.toLowerCase() === key.toLowerCase());\r\n return foundKey ? builtIn[foundKey] : key;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { BayanCoreTranslateService } from '../services/translate.service';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true\r\n})\r\nexport class BayanCoreTranslatePipe implements PipeTransform {\r\n constructor(private translateService: BayanCoreTranslateService) {}\r\n\r\n transform(key?: string): string {\r\n if (!key) return '';\r\n\r\n key = this.translateService.translateBuiltIn(key);\r\n\r\n const lexicon = this.translateService.getLexicon();\r\n let foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === key!.toLowerCase());\r\n if (foundKey) return lexicon[foundKey];\r\n\r\n if (!key) return '';\r\n const arrKey = key.split(' ');\r\n let keyValue = '';\r\n for (let i = 0; i < arrKey.length; i++) {\r\n if (i !== 0) keyValue += ' ';\r\n foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === arrKey[i].toLowerCase());\r\n if (foundKey) {\r\n keyValue += lexicon[foundKey];\r\n } else {\r\n keyValue += arrKey[i];\r\n }\r\n }\r\n\r\n return keyValue;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { catchError, map, Observable, throwError } from 'rxjs';\r\nimport {\r\n ApiEnvelope,\r\n AppFramePreferences,\r\n BlockableModule,\r\n BlockReleaseModuleRequest,\r\n ChangePasswordRequest,\r\n GlobalSearchMenu,\r\n ModuleBlockState,\r\n NotificationsSummary,\r\n SetDisplayAlternateNamesRequest,\r\n SetEmployeeNamesModeRequest,\r\n SwitchPropertyRequest,\r\n SwitchPropertyResult,\r\n SystemMenu,\r\n SystemModule,\r\n TopMenuShortcut,\r\n UserPanel,\r\n} from './menu.dtos';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BayanCoreTopMenuService {\r\n private readonly http = inject(HttpClient);\r\n\r\n private unwrap<T>(obs: Observable<ApiEnvelope<T>>): Observable<T> {\r\n return obs.pipe(\r\n map((env) => {\r\n if (!env.ResponseData) {\r\n throw new Error('No data received');\r\n }\r\n\r\n return env.ResponseData;\r\n }),\r\n catchError((error) => throwError(() => error)),\r\n );\r\n }\r\n\r\n private getBaseUrl(baseUrl: string): string {\r\n let url = baseUrl.replace('/api','');\r\n return `${url.replace(/\\/$/, '')}/api/app-frame`;\r\n }\r\n\r\n getMicroserviceMenusByProperty(\r\n baseUrl: string,\r\n propertyId: number | string,\r\n systemModule: SystemModule,\r\n ): Observable<SystemMenu[]> {\r\n const params = new HttpParams()\r\n .set('PropertyId', propertyId)\r\n .set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<SystemMenu[]>>(`${this.getBaseUrl(baseUrl)}/left-menu`, { params }),\r\n );\r\n }\r\n\r\n getMicroserviceTopMenusShortcut(\r\n baseUrl: string,\r\n propertyId: number | string,\r\n systemModule: SystemModule,\r\n ): Observable<TopMenuShortcut[]> {\r\n const params = new HttpParams()\r\n .set('PropertyId', propertyId)\r\n .set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<TopMenuShortcut[]>>(`${this.getBaseUrl(baseUrl)}/top-shortcuts`, {\r\n params,\r\n }),\r\n );\r\n }\r\n\r\n getGlobalSearchMenus(baseUrl: string, propertyId?: number): Observable<GlobalSearchMenu[]> {\r\n let params = new HttpParams();\r\n\r\n if (propertyId != null) {\r\n params = params.set('PropertyId', propertyId);\r\n }\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<GlobalSearchMenu[]>>(\r\n `${this.getBaseUrl(baseUrl)}/global-search-menus`,\r\n { params },\r\n ),\r\n );\r\n }\r\n\r\n getUserPanel(baseUrl: string): Observable<UserPanel> {\r\n return this.unwrap(this.http.get<ApiEnvelope<UserPanel>>(`${this.getBaseUrl(baseUrl)}/user-panel`));\r\n }\r\n\r\n switchProperty(baseUrl: string, request: SwitchPropertyRequest): Observable<SwitchPropertyResult> {\r\n return this.unwrap(\r\n this.http.post<ApiEnvelope<SwitchPropertyResult>>(\r\n `${this.getBaseUrl(baseUrl)}/switch-property`,\r\n request,\r\n ),\r\n );\r\n }\r\n\r\n getPreferences(baseUrl: string): Observable<AppFramePreferences> {\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<AppFramePreferences>>(`${this.getBaseUrl(baseUrl)}/preferences`),\r\n );\r\n }\r\n\r\n setDisplayAlternateNames(\r\n baseUrl: string,\r\n request: SetDisplayAlternateNamesRequest,\r\n ): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/preferences/alternate-names`, request);\r\n }\r\n\r\n setEmployeeNamesMode(baseUrl: string, request: SetEmployeeNamesModeRequest): Observable<void> {\r\n return this.http.post<void>(\r\n `${this.getBaseUrl(baseUrl)}/preferences/employee-names-mode`,\r\n request,\r\n );\r\n }\r\n\r\n getModuleBlockState(\r\n baseUrl: string,\r\n systemModule: SystemModule | BlockableModule,\r\n ): Observable<ModuleBlockState> {\r\n const params = new HttpParams().set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<ModuleBlockState>>(`${this.getBaseUrl(baseUrl)}/module-block-state`, {\r\n params,\r\n }),\r\n );\r\n }\r\n\r\n blockModule(baseUrl: string, request: BlockReleaseModuleRequest): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/block-module`, request);\r\n }\r\n\r\n releaseModule(baseUrl: string, request: BlockReleaseModuleRequest): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/release-module`, request);\r\n }\r\n\r\n getNotificationsSummary(baseUrl: string): Observable<NotificationsSummary> {\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<NotificationsSummary>>(\r\n `${this.getBaseUrl(baseUrl)}/notifications-summary`,\r\n ),\r\n );\r\n }\r\n\r\n changePassword(baseUrl: string, request: ChangePasswordRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.getBaseUrl(baseUrl)}/change-password`, request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BayanCoreConfigService {\r\n private activePropertyId$ = new BehaviorSubject<number>(0);\r\n\r\n getActivePropertyId$(): Observable<number> {\r\n return this.activePropertyId$.asObservable();\r\n }\r\n\r\n setActivePropertyId(id: number) {\r\n this.activePropertyId$.next(id);\r\n }\r\n}\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\r\nimport { Observable, isObservable } from 'rxjs';\r\nimport { BayanCoreConfigService } from '../../../shared/property-state.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport {\r\n faDollar,\r\n faGraduationCap,\r\n faGrid,\r\n faMedal,\r\n faRightLeft,\r\n faTools,\r\n faUsers,\r\n} from '@fortawesome/pro-solid-svg-icons';\r\nimport { faClock } from '@fortawesome/pro-light-svg-icons';\r\nimport { Router } from '@angular/router';\r\nimport { DxAutocompleteComponent, DxAutocompleteModule } from 'devextreme-angular';\r\nimport { GlobalSearchMenu } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { BayanCoreTranslatePipe } from '../../../../public-api';\r\n\r\n@Component({\r\n selector: 'bayan-core-global-search-widget',\r\n standalone: true,\r\n imports: [CommonModule, DxAutocompleteModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './global-search-widget.component.html',\r\n styles: [':host { display: flex; align-items: center; height: 56px; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreGlobalSearchWidgetComponent {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n private readonly propertyState = inject(BayanCoreConfigService);\r\n\r\n\r\n @ViewChild('searchAutoComplete') searchAutoComplete?: DxAutocompleteComponent;\r\n\r\n @Input() dataSource: GlobalSearchMenu[] = [];\r\n\r\n @Input() set baseUrl(url: string) {\r\n this._baseUrl = url;\r\n }\r\n private _baseUrl = '';\r\n @Input() placeholder = 'Type to search';\r\n @Input() searchMode: 'contains' | 'startswith' = 'contains';\r\n @Input() stylingMode: 'filled' | 'outlined' | 'underlined' = 'filled';\r\n @Input() searchWrapperClass = '';\r\n @Input() searchItemClass = '';\r\n @Input() searchItemTitleClass = '';\r\n @Input() searchItemSubtitleClass = '';\r\n @Input() iconClass = '';\r\n\r\n @Output() search = new EventEmitter<string>();\r\n @Output() itemNavigate = new EventEmitter<GlobalSearchMenu>();\r\n\r\n readonly toolsIcon = faTools;\r\n readonly gridIcon = faGrid;\r\n readonly creditIcon = faDollar;\r\n readonly usersIcon = faUsers;\r\n readonly clockIcon = faClock;\r\n readonly swapIcon = faRightLeft;\r\n readonly medalIcon = faMedal;\r\n readonly graduateIcon = faGraduationCap;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onInput(event: { event?: { target?: { value?: string } }; component?: { option: (name: string, value: string) => void } } | any): void {\r\n const searchTerm = event.event?.target?.value;\r\n if (typeof searchTerm === 'string' && searchTerm.startsWith(' ')) {\r\n event.component?.option('value', searchTerm.trim());\r\n }\r\n }\r\n\r\n onEnterKey(event: { event?: { target?: { value?: string } } } | any, items?: GlobalSearchMenu[]): void {\r\n const searchTerm = (event.event?.target?.value ?? '').toString().trim();\r\n if (!searchTerm) {\r\n return;\r\n }\r\n\r\n // Use latest items if provided\r\n const dataSource = items || this.dataSource;\r\n const match = dataSource.find(\r\n (item) => item.MenuSubTitle.toLowerCase().trim() === searchTerm.toLowerCase().trim(),\r\n );\r\n\r\n if (match) {\r\n window.location.href = match.MenuUrl;\r\n this.itemNavigate.emit(match);\r\n return;\r\n }\r\n\r\n this.search.emit(searchTerm);\r\n }\r\n\r\n onItemSelected(event: Event, item: GlobalSearchMenu): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (item.MenuUrl) {\r\n window.location.href = item.MenuUrl;\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.searchAutoComplete?.instance?.option('value', '');\r\n }\r\n\r\n getIconForClass(iconClass: string) {\r\n switch (iconClass) {\r\n case 'icon icon-tools':\r\n return this.toolsIcon;\r\n case 'icon icon-grid':\r\n return this.gridIcon;\r\n case 'icon icon-credit':\r\n return this.creditIcon;\r\n case 'icon icon-users':\r\n return this.usersIcon;\r\n case 'icon icon-clock':\r\n return this.clockIcon;\r\n case 'icon icon-swap':\r\n return this.swapIcon;\r\n case 'icon icon-medal':\r\n return this.medalIcon;\r\n case 'icon icon-graduation-cap':\r\n return this.graduateIcon;\r\n default:\r\n return this.toolsIcon;\r\n }\r\n }\r\n}\r\n","<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex align-items-center flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { TopMenuShortcut } from '../../../shared/menu.dtos';\r\n\r\n@Component({\r\n selector: 'bayan-core-item-widget',\r\n standalone: true,\r\n imports: [CommonModule, BayanCoreTranslatePipe], // Pipe name is now 'translate'\r\n templateUrl: './item-widget.component.html',\r\n styles: [':host { display: contents; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreItemWidgetComponent {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n\r\n @Input() baseUrl = '';\r\n @Input() ActivePropertyChanged = false;\r\n @Input({ required: true }) item!: TopMenuShortcut;\r\n\r\n @Input() navItemClass = 'nav-item';\r\n @Input() navLinkClass = 'nav-link';\r\n @Input() dropdownClass = 'nav-item dropdown';\r\n @Input() dropdownOpenClass = 'open';\r\n @Input() dropdownToggleClass = 'nav-link dropdown-toggle';\r\n @Input() caretClass = 'caret';\r\n @Input() dropdownMenuClass = 'dropdown-menu menu-dropdown-panel';\r\n\r\n @Output() itemClick = new EventEmitter<TopMenuShortcut>();\r\n\r\n\r\n open = false;\r\n\r\n onMouseEnter() {\r\n if (this.hasChildren()) {\r\n this.open = true;\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n if (this.hasChildren()) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\r\n\r\n hasChildren(): boolean {\r\n return (this.item.Children ?? []).length > 0;\r\n }\r\n\r\n onItemActivated(event: Event): void {\r\n event.preventDefault();\r\n if (this.hasChildren()) {\r\n event.stopPropagation();\r\n this.open = !this.open;\r\n return;\r\n }\r\n this.itemClick.emit(this.item);\r\n if (typeof this.item.MenuUrl === 'string' && this.item.MenuName == 'Reports') {\r\n window.open(this.item.MenuUrl, '_blank');\r\n } else if (this.item.MenuUrl) {\r\n window.location.href = this.item.MenuUrl;\r\n }\r\n }\r\n\r\n onChildItemClick(item: TopMenuShortcut): void {\r\n this.itemClick.emit(item);\r\n }\r\n}\r\n","@if (!hasChildren()) {\r\n <li [class]=\"navItemClass\">\r\n <a\r\n [class]=\"navLinkClass\"\r\n href=\"#\"\r\n (click)=\"onItemActivated($event)\">\r\n {{ item.MenuName | translate }}\r\n </a>\r\n </li>\r\n}\r\n\r\n@if (hasChildren()) {\r\n <li [class]=\"dropdownClass + (open ? ' ' + dropdownOpenClass : '')\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <a href=\"#\" [class]=\"dropdownToggleClass\" (click)=\"onItemActivated($event)\">\r\n {{ item.MenuName | translate }} <span [class]=\"caretClass\"></span>\r\n </a>\r\n\r\n <ul [class]=\"dropdownMenuClass\">\r\n @for (child of item.Children; track child.MenuName) {\r\n <bayan-core-item-widget\r\n [baseUrl]=\"baseUrl\"\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n [item]=\"child\"\r\n (itemClick)=\"onChildItemClick($event)\"\r\n [navItemClass]=\"navItemClass\"\r\n [navLinkClass]=\"navLinkClass\"\r\n [dropdownClass]=\"dropdownClass\"\r\n [dropdownOpenClass]=\"dropdownOpenClass\"\r\n [dropdownToggleClass]=\"dropdownToggleClass\"\r\n [caretClass]=\"caretClass\"\r\n [dropdownMenuClass]=\"dropdownMenuClass\"\r\n >\r\n </bayan-core-item-widget>\r\n }\r\n </ul>\r\n </li>\r\n}\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faBell } from '@fortawesome/pro-solid-svg-icons';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { NotificationsSummary } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\n\r\n@Component({\r\n selector: 'bayan-core-notifications-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './notifications-widget.component.html',\r\n styles: [':host { display: flex; align-items: center; height: 56px; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreNotificationsWidgetComponent implements OnInit, OnChanges {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly topMenuService = inject(BayanCoreTopMenuService);\r\n\r\n @Input() baseUrl = '';\r\n @Input() title = 'Notifications';\r\n @Input() wrapperClass = 'menu-dropdown-host';\r\n @Input() linkClass = 'menu-icon-btn notifications-icon-btn';\r\n @Input() iconClass = '';\r\n @Input() badgeClass = 'notifications-badge';\r\n\r\n readonly bellIcon = faBell;\r\n readonly notificationsSummary = signal<NotificationsSummary>({\r\n NotificationsUrl: '',\r\n TotalNotificationsCount: 0,\r\n });\r\n\r\n ngOnInit(): void {\r\n this.loadNotificationsSummary();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['baseUrl'] && !changes['baseUrl'].firstChange) {\r\n this.loadNotificationsSummary();\r\n }\r\n }\r\n\r\n onNotificationClick(event?: Event): void {\r\n event?.preventDefault();\r\n const rawNotificationUrl = this.notificationsSummary().NotificationsUrl;\r\n\r\n if (rawNotificationUrl) {\r\n this.document.location.href = `${window.location.origin}${rawNotificationUrl}`;\r\n }\r\n }\r\n\r\n private loadNotificationsSummary(): void {\r\n if (!this.baseUrl) {\r\n this.resetNotificationsData();\r\n return;\r\n }\r\n\r\n this.topMenuService.getNotificationsSummary(this.baseUrl).subscribe({\r\n next: (summary) => {\r\n this.notificationsSummary.set({\r\n NotificationsUrl: summary.NotificationsUrl,\r\n TotalNotificationsCount: summary.TotalNotificationsCount,\r\n });\r\n },\r\n error: () => {\r\n this.resetNotificationsData();\r\n },\r\n });\r\n }\r\n\r\n private resetNotificationsData(): void {\r\n this.notificationsSummary.set({\r\n NotificationsUrl: '',\r\n TotalNotificationsCount: 0,\r\n });\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\r\n <a [class]=\"linkClass\"\r\n [title]=\"title | translate\"\r\n (click)=\"onNotificationClick($event)\">\r\n <fa-icon [class]=\"iconClass\" [icon]=\"bellIcon\"></fa-icon>\r\n @if ((notificationsSummary().TotalNotificationsCount || 0) > 0) {\r\n <span [class]=\"badgeClass\">{{ notificationsSummary().TotalNotificationsCount }}</span>\r\n }\r\n </a>\r\n</div>\r\n","export interface ApiEnvelope<T> {\r\n ResponseData: T;\r\n ApiVersion: number;\r\n}\r\n\r\nexport interface TopMenuShortcut {\r\n MenuName: string;\r\n MenuUrl: string | null;\r\n Children: TopMenuShortcut[];\r\n}\r\n\r\nexport interface SystemMenu {\r\n MenuName: string;\r\n MenuUrl: string | null;\r\n IconClass: string | null;\r\n Expanded: boolean;\r\n Children: SystemMenu[];\r\n}\r\n\r\nexport interface GlobalSearchMenu {\r\n MenuTitle: string;\r\n MenuSubTitle: string;\r\n IconClass: string;\r\n MenuUrl: string;\r\n IsTranslatable: boolean;\r\n}\r\n\r\nexport interface PropertyOption {\r\n PropertyId: number;\r\n PropertyName: string;\r\n}\r\n\r\nexport interface UserPanel {\r\n UserDisplayName: string;\r\n ActivePropertyId: number;\r\n ActivePropertyName: string;\r\n PhotoPath: string | null;\r\n NameInitials: string;\r\n IsSSOLogin: boolean;\r\n Properties: PropertyOption[];\r\n}\r\n\r\nexport interface SwitchPropertyRequest {\r\n PropertyId: number;\r\n}\r\n\r\nexport interface SwitchPropertyResult {\r\n PropertyId: number;\r\n}\r\n\r\nexport enum EmployeeNamesModeOption {\r\n ShortNames = 1,\r\n StandardNames = 2,\r\n FullNames = 3,\r\n}\r\n\r\nexport interface AppFramePreferences {\r\n UseAlternateNames: boolean;\r\n DisplayAlternateNames: boolean;\r\n EmployeeNamesMode: EmployeeNamesModeOption;\r\n VersionNumber: string;\r\n}\r\n\r\nexport interface SetDisplayAlternateNamesRequest {\r\n DisplayAlternateNames: boolean;\r\n}\r\n\r\nexport interface SetEmployeeNamesModeRequest {\r\n EmployeeNamesMode: EmployeeNamesModeOption;\r\n}\r\n\r\nexport enum BlockableModule {\r\n HumanResources = 4,\r\n Timekeeping = 5,\r\n}\r\n\r\nexport interface ModuleBlockState {\r\n IsBlocked: boolean;\r\n UserCanBlockModule: boolean;\r\n}\r\n\r\nexport interface BlockReleaseModuleRequest {\r\n Module: BlockableModule;\r\n}\r\n\r\nexport interface NotificationsSummary {\r\n TotalNotificationsCount: number;\r\n NotificationsUrl: string;\r\n}\r\n\r\nexport interface ChangePasswordRequest {\r\n CurrentPassword: string;\r\n NewPassword: string;\r\n}\r\n\r\nexport enum SystemModule {\r\n Corporate = 1,\r\n Cluster = 2,\r\n Setup = 3,\r\n HumanResources = 4,\r\n Timekeeping = 5,\r\n Payroll = 6,\r\n Training = 7,\r\n Workflow = 8,\r\n Appraisal = 9,\r\n BusinessIntelligence = 10,\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, signal, WritableSignal, inject } from '@angular/core';\r\nimport { DxFormComponent, DxFormModule, DxPopupModule } from 'devextreme-angular';\r\nimport { SkyFooterActionsComponent } from '@skysoftware-co/sky-components-ui';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport {\r\n TopMenuWidgetChangePasswordDialogConfig,\r\n TopMenuWidgetChangePasswordPayload,\r\n} from '../../top-menu-widget.models';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { SkyAlertToastService } from '@skysoftware-co/sky-components-ui';\r\n// import { SkyAlertType } from '@skysoftware-co/sky-components-ui/lib/constants/constants';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-change-password-widget',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, DxFormModule, SkyFooterActionsComponent, BayanCoreTranslatePipe],\r\n templateUrl: './change-password-widget.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreChangePasswordWidgetComponent {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly alertToastService = inject(SkyAlertToastService);\r\n // private readonly translate = inject(TranslatePipe);\r\n\r\n @Input() baseUrl = '';\r\n @Input() visible = false;\r\n @Input({ required: true }) config!: TopMenuWidgetChangePasswordDialogConfig;\r\n @Input() isSubmitting = false;\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n @ViewChild('changePasswordForm') changePasswordForm?: DxFormComponent;\r\n\r\n readonly currentPasswordMode = signal<'password' | 'text'>('password');\r\n readonly newPasswordMode = signal<'password' | 'text'>('password');\r\n readonly confirmNewPasswordMode = signal<'password' | 'text'>('password');\r\n\r\n formData: TopMenuWidgetChangePasswordPayload = {\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n };\r\n errorMessage: WritableSignal<string> = signal('');\r\n\r\n closeDialog(): void {\r\n this.visible = false;\r\n this.visibleChange.emit(false);\r\n this.resetForm();\r\n this.errorMessage.set('');\r\n }\r\n\r\n resetForm(): void {\r\n this.formData = {\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n };\r\n this.errorMessage.set('');\r\n }\r\n\r\n onSaveButtonClick(): void {\r\n const isValid = this.changePasswordForm?.instance.validate().isValid ?? false;\r\n if (!isValid) {\r\n return;\r\n }\r\n this.isSubmitting = true;\r\n this.menuService.changePassword(this.baseUrl, {\r\n CurrentPassword: this.formData.currentPassword,\r\n NewPassword: this.formData.newPassword\r\n }).subscribe({\r\n next: () => {\r\n this.isSubmitting = false;\r\n this.closeDialog();\r\n this.showAlert('PasswordChangedSuccessfully');\r\n },\r\n error: (e: any) => {\r\n this.isSubmitting = false;\r\n this.errorMessage.set('FailedToChangePassword');\r\n // Optionally show error notification here\r\n }\r\n });\r\n }\r\n togglePasswordMode(field: 'currentPasswordMode' | 'newPasswordMode' | 'confirmNewPasswordMode'): void {\r\n const current = this[field]();\r\n this[field].set(current === 'text' ? 'password' : 'text');\r\n }\r\n\r\n updateField(field: keyof TopMenuWidgetChangePasswordPayload, value: string): void {\r\n this.formData = {\r\n ...this.formData,\r\n [field]: value,\r\n };\r\n }\r\n\r\n isChangePasswordValid(): boolean {\r\n return !!this.formData.currentPassword && !!this.formData.newPassword && !!this.formData.confirmNewPassword;\r\n }\r\n\r\n getCurrentPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.currentPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('currentPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.currentPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('currentPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n getNewPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.newPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('newPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.newPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('newPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n getConfirmPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.confirmNewPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('confirmNewPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.confirmNewPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('confirmNewPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n passwordComparison = (): string => this.formData.newPassword;\r\n\r\n showAlert(message: string, type: string = 'success') {\r\n this.alertToastService.toastInformation(message, type as any);\r\n }\r\n}\r\n","<dx-popup\r\n [visible]=\"visible\"\r\n (onHiding)=\"closeDialog()\"\r\n [title]=\"config.title | translate\"\r\n [showCloseButton]=\"true\"\r\n [width]=\"450\"\r\n [height]=\"'auto'\"\r\n [dragEnabled]=\"false\"\r\n [shading]=\"true\"\r\n shadingColor=\"rgba(0,0,0,0.4)\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <dx-form\r\n #changePasswordForm\r\n [formData]=\"formData\"\r\n labelLocation=\"top\"\r\n [showColonAfterLabel]=\"false\"\r\n class=\"mb-3 mx-2\">\r\n <dxi-item\r\n dataField=\"currentPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getCurrentPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.currentPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n </dxi-item>\r\n\r\n <dxi-item\r\n dataField=\"newPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getNewPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.newPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n </dxi-item>\r\n\r\n <dxi-item\r\n dataField=\"confirmNewPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getConfirmPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.confirmNewPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n <dxi-validation-rule\r\n type=\"compare\"\r\n [comparisonTarget]=\"passwordComparison\">\r\n </dxi-validation-rule>\r\n </dxi-item>\r\n </dx-form>\r\n\r\n <sky-footer-actions\r\n [primaryButtonText]=\"config.primaryButtonText | translate\"\r\n [showSecondaryButton]=\"false\"\r\n [isLoading]=\"isSubmitting\"\r\n [disabledPrimaryButton]=\"isSubmitting || !isChangePasswordValid()\"\r\n (PrimaryButtonClick)=\"onSaveButtonClick()\"\r\n [errorMessage]=\"errorMessage\">\r\n </sky-footer-actions>\r\n </div>\r\n</dx-popup>\r\n","import { BayanCoreTranslatePipe } from './../../../shared/pipes/translate.pipe';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons';\r\nimport { TopMenuWidgetAboutDialogConfig } from '../../top-menu-widget.models';\r\n\r\n@Component({\r\n selector: 'bayan-core-about-dialog-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './about-dialog-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreAboutDialogWidgetComponent {\r\n\r\n @Input() baseUrl = '';\r\n @Input() visible = false;\r\n @Input({ required: true }) config!: TopMenuWidgetAboutDialogConfig;\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n // CSS class attributes as @Input with defaults\r\n @Input() backdropClass: string = 'about-backdrop';\r\n @Input() modalClass: string = 'about-modal';\r\n @Input() headerClass: string = 'about-modal-header';\r\n @Input() titleClass: string = 'about-modal-title';\r\n @Input() closeBtnClass: string = 'about-close-btn';\r\n @Input() bodyClass: string = 'about-modal-body';\r\n @Input() logoClass: string = 'about-logo';\r\n @Input() productNameClass: string = 'about-product-name';\r\n @Input() versionTextClass: string = 'about-version-text';\r\n @Input() upToDateClass: string = 'about-up-to-date';\r\n @Input() copyrightClass: string = 'about-copyright';\r\n @Input() actionsClass: string = 'about-modal-actions';\r\n @Input() actionBtnClass: string = 'about-action-btn';\r\n\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n @Output() licenseClick = new EventEmitter<void>();\r\n @Output() releaseNotesClick = new EventEmitter<void>();\r\n @Output() supportClick = new EventEmitter<void>();\r\n\r\n readonly checkCircleIcon = faCheckCircle;\r\n\r\n onBackdropClick(event: MouseEvent): void {\r\n if ((event.target as HTMLElement).classList.contains('about-backdrop')) {\r\n this.closeDialog();\r\n }\r\n }\r\n\r\n closeDialog(): void {\r\n this.visibleChange.emit(false);\r\n }\r\n\r\n openLicense() {\r\n window.open(this.licenseUrl, '_blank');\r\n }\r\n\r\n openReleaseNotes() {\r\n window.open(this.releaseNotesUrl, '_blank');\r\n }\r\n\r\n openSupport() {\r\n window.open(this.supportUrl, '_blank');\r\n }\r\n}\r\n","@if (visible) {\r\n <div [class]=\"backdropClass\" (click)=\"onBackdropClick($event)\">\r\n <div [class]=\"modalClass\" role=\"dialog\" aria-labelledby=\"topMenuAboutDialogTitle\" aria-modal=\"true\">\r\n <div [class]=\"headerClass\">\r\n <h4 [class]=\"titleClass\" id=\"topMenuAboutDialogTitle\">{{ 'AboutSkyBayan' | translate }}</h4>\r\n <button type=\"button\" [class]=\"closeBtnClass\" (click)=\"closeDialog()\" [attr.aria-label]=\"(config.closeButtonLabel || 'Close') | translate\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n\r\n <div [class]=\"bodyClass\">\r\n <div class=\"row align-items-start\">\r\n <div class=\"col-4\">\r\n @if (config.logoUrl) {\r\n <img [src]=\"config.logoUrl\" alt=\"Logo\" [class]=\"logoClass\">\r\n }\r\n </div>\r\n <div class=\"col-8\">\r\n <h3 [class]=\"productNameClass\">{{ (config.title || 'AboutSkyBayan') | translate }}</h3>\r\n <p [class]=\"versionTextClass\">{{ (config.versionLabel || 'Version') | translate }} {{ config.version || '' }}</p>\r\n <p [class]=\"upToDateClass\">\r\n <fa-icon [icon]=\"checkCircleIcon\" class=\"text-info me-1\"></fa-icon>\r\n <small class=\"text-muted\">{{ (config.statusLabel || 'SkyBayanUpToDate') | translate }}</small>\r\n </p>\r\n <p [class]=\"copyrightClass\">{{ (config.copyright || '') | translate }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"actionsClass\">\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openLicense()\">{{ (config.licenseButtonLabel || 'LicenseInformation') | translate }}</button>\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openReleaseNotes()\">{{ (config.releaseNotesButtonLabel || 'ReleaseNotes') | translate }}</button>\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openSupport()\">{{ (config.supportButtonLabel || 'TechnicalSupport') | translate }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { BayanCoreTranslatePipe } from './../../../shared/pipes/translate.pipe';\r\nimport { ModuleBlockState, AppFramePreferences, EmployeeNamesModeOption, BlockableModule, SystemModule } from '../../../shared/menu.dtos';\r\nimport { SkyAlertToastService } from '@skysoftware-co/sky-components-ui';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BayanCoreChangePasswordWidgetComponent } from '../change-password-widget/change-password-widget.component';\r\nimport { BayanCoreAboutDialogWidgetComponent } from '../about-dialog-widget/about-dialog-widget.component';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, inject, signal } from '@angular/core';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faCheck, faCog, faInfoCircle } from '@fortawesome/pro-solid-svg-icons';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-settings-widget',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n BayanCoreTranslatePipe,\r\n BayanCoreChangePasswordWidgetComponent,\r\n BayanCoreAboutDialogWidgetComponent\r\n ],\r\n templateUrl: './settings-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreSettingsWidgetComponent implements OnInit, OnChanges {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly alertToastService = inject(SkyAlertToastService);\r\n @Input() baseUrl: string = '';\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n @Input() ActivePropertyChanged: boolean = false;\r\n @Input() systemModule : SystemModule | null =null;\r\n\r\n @Input() checkIcon: any = faCheck;\r\n @Input() cogIcon: any = faCog;\r\n @Input() infoIcon: any = faInfoCircle;\r\n @Input() dropdownOpen = signal(false);\r\n showChangePassword = false;\r\n showAbout = false;\r\n currentModule: SystemModule | null = null;\r\n SystemModule = SystemModule;\r\n // CSS class bindings for customization\r\n @Input() dropdownHostClass: string = 'dropdown menu-dropdown-host';\r\n @Input() toggleBtnClass: string = 'menu-icon-btn';\r\n @Input() menuPanelClass: string = 'settings-menu menu-dropdown-panel';\r\n @Input() sectionLabelClass: string = 'menu-section-label';\r\n @Input() menuRowClass: string = 'header-dropdown-item';\r\n @Input() dividerClass: string = 'dropdown-divider';\r\n @Input() indicatorClass: string = 'menu-indicator';\r\n @Input() indicatorActiveClass: string = 'menu-indicator menu-indicator-active';\r\n @Input() indicatorInvisibleClass: string = 'menu-indicator invisible';\r\n\r\n @Output() alternateNamesChange = new EventEmitter<boolean>();\r\n @Output() nameModeChange = new EventEmitter<EmployeeNamesModeOption>();\r\n\r\n preferences: AppFramePreferences | null = null;\r\n BlockableModule = BlockableModule;\r\n EmployeeNamesModeOption = EmployeeNamesModeOption;\r\n hrBlockState: ModuleBlockState | null = null;\r\n tkBlockState: ModuleBlockState | null = null;\r\n changePasswordDialog = {\r\n title: 'ChangePassword',\r\n currentPasswordLabel: 'CurrentPassword',\r\n newPasswordLabel: 'NewPassword',\r\n confirmNewPasswordLabel: 'ConfirmPassword',\r\n primaryButtonText: 'Change',\r\n };\r\n\r\n aboutDialog = {\r\n title: 'Sky Bayan Human Resources Management',\r\n logoUrl: 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-enterprise.png',\r\n version: '',\r\n versionLabel: 'Version',\r\n copyright: `Copyright 2026, Sky Software Co LLC All Rights Reserved\\nSky Bayan and Sky Bayan Logo are registered trademarks of Sky Software`,\r\n statusLabel: 'SkyBayanUpToDate',\r\n licenseButtonLabel: 'LicenseInformation',\r\n releaseNotesButtonLabel: 'ReleaseNotes',\r\n supportButtonLabel: 'TechnicalSupport',\r\n closeButtonLabel: 'Close',\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {\r\n }\r\n\r\n // ...existing methods...\r\n\r\n showAlert(message: string, type: string = 'success') {\r\n this.alertToastService.toastInformation(message, type as any);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadPreferences();\r\n this.loadModuleBlockStates();\r\n }\r\n\r\n loadModuleBlockStates() {\r\n if (this.baseUrl) {\r\n this.menuService.getModuleBlockState(this.baseUrl, BlockableModule.HumanResources).subscribe({\r\n next: state => this.hrBlockState = state,\r\n error: () => this.hrBlockState = null\r\n });\r\n this.menuService.getModuleBlockState(this.baseUrl, BlockableModule.Timekeeping).subscribe({\r\n next: state => this.tkBlockState = state,\r\n error: () => this.tkBlockState = null\r\n });\r\n }\r\n }\r\n\r\n loadPreferences() {\r\n if (this.baseUrl) {\r\n this.menuService.getPreferences(this.baseUrl).subscribe({\r\n next: prefs => {\r\n this.preferences = prefs;\r\n this.aboutDialog.version = prefs.VersionNumber;\r\n },\r\n error: () => {\r\n this.preferences = null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // No need to derive flags, use preferences directly in template and logic.\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes['ActivePropertyChanged']\r\n && !changes['ActivePropertyChanged'].firstChange\r\n && changes['ActivePropertyChanged'].previousValue !== changes['ActivePropertyChanged'].currentValue\r\n ) {\r\n this.dropdownOpen.set(false);\r\n this.loadPreferences();\r\n this.loadModuleBlockStates();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const target = event.target as Node | null;\r\n if (target && !this.elementRef.nativeElement.contains(target)) {\r\n this.dropdownOpen.set(false);\r\n }\r\n }\r\n\r\n toggleDropdown(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.update((value) => !value);\r\n }\r\n\r\n async onAlternateNamesClick(event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.preferences || !this.baseUrl) {\r\n return;\r\n }\r\n // Toggle the value\r\n this.preferences.UseAlternateNames = !this.preferences.UseAlternateNames;\r\n const newValue = !this.preferences.UseAlternateNames;\r\n try {\r\n await this.menuService.setDisplayAlternateNames(this.baseUrl, { DisplayAlternateNames: newValue }).toPromise();\r\n await this.loadPreferences();\r\n this.alternateNamesChange.emit(newValue);\r\n } catch (err) {}\r\n }\r\n\r\n async onNameModeClick(nameMode: EmployeeNamesModeOption, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n\r\n if (!this.preferences || !this.baseUrl) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.menuService.setEmployeeNamesMode(this.baseUrl, { EmployeeNamesMode: nameMode }).toPromise();\r\n // Reload preferences\r\n await this.loadPreferences();\r\n this.nameModeChange.emit(nameMode);\r\n } catch (err) {\r\n // Optionally handle error\r\n }\r\n }\r\n\r\n onChangePasswordClick(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.showChangePassword = true;\r\n }\r\n\r\n onOpenAboutClick(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.showAbout = true;\r\n }\r\n\r\n async blockModule(module: BlockableModule, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.baseUrl) return;\r\n try {\r\n await this.menuService.blockModule(this.baseUrl, { Module: module }).toPromise();\r\n await this.loadModuleBlockStates();\r\n const key = module === BlockableModule.HumanResources ? 'BlockHRSuccess' : 'BlockTKSuccess';\r\n this.showAlert(key);\r\n } catch {}\r\n }\r\n\r\n async releaseModule(module: BlockableModule, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.baseUrl) return;\r\n try {\r\n await this.menuService.releaseModule(this.baseUrl, { Module: module }).toPromise();\r\n await this.loadModuleBlockStates();\r\n const key = module === BlockableModule.HumanResources ? 'ReleaseHRSuccess' : 'ReleaseTKSuccess';\r\n this.showAlert(key);\r\n } catch {}\r\n }\r\n}\r\n","<div [class]=\"dropdownHostClass\" [class.open]=\"dropdownOpen()\">\r\n <a href=\"#\" [class]=\"toggleBtnClass\" (click)=\"toggleDropdown($event)\" [title]=\"'Settings' | translate\">\r\n <fa-icon [icon]=\"cogIcon\" class=\"fs-6\"></fa-icon>\r\n </a>\r\n\r\n @if (dropdownOpen()) {\r\n <ul [class]=\"menuPanelClass\">\r\n @if (preferences?.UseAlternateNames) {\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onAlternateNamesClick($event)\">\r\n @if (preferences?.DisplayAlternateNames) {\r\n <fa-icon [class]=\"indicatorActiveClass\" [icon]=\"checkIcon\"></fa-icon>\r\n } @else {\r\n <fa-icon [class]=\"indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n }\r\n {{ 'DisplayAlternateNames' | translate }}\r\n </a>\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n <li>\r\n <span [class]=\"sectionLabelClass + ' menu-section-label'\">{{ 'EmployeeNamesMode' | translate }}</span>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.FullNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.FullNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.FullNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'FullNames' | translate }}\r\n </a>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.ShortNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.ShortNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.ShortNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'ShortNames' | translate }}\r\n </a>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.StandardNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.StandardNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.StandardNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'StandardNames' | translate }}\r\n </a>\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n\r\n @if (hrBlockState && hrBlockState.UserCanBlockModule && systemModule == SystemModule.Payroll) {\r\n <li>\r\n @if (hrBlockState.IsBlocked) {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"releaseModule(BlockableModule.HumanResources, $event)\">\r\n {{ 'ReleaseHR' | translate }}\r\n </a>\r\n } @else {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"blockModule(BlockableModule.HumanResources, $event)\">\r\n {{ 'BlockHR' | translate }}\r\n </a>\r\n }\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n @if (tkBlockState && tkBlockState.UserCanBlockModule && systemModule == SystemModule.HumanResources) {\r\n <li>\r\n @if (tkBlockState.IsBlocked) {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"releaseModule(BlockableModule.Timekeeping, $event)\">\r\n {{ 'ReleaseTK' | translate }}\r\n </a>\r\n } @else {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"blockModule(BlockableModule.Timekeeping, $event)\">\r\n {{ 'BlockTK' | translate }}\r\n </a>\r\n }\r\n </li>\r\n <li><hr [class]=\"dividerClass\">></li>\r\n }\r\n\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onChangePasswordClick($event)\">\r\n <span [class]=\"indicatorClass\"></span>\r\n {{ 'ChangePassword' | translate }}\r\n </a>\r\n </li>\r\n\r\n <li><hr [class]=\"dividerClass\"></li>\r\n\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onOpenAboutClick($event)\">\r\n <fa-icon [class]=\"indicatorClass\" [icon]=\"infoIcon\"></fa-icon>\r\n {{ 'About' | translate }}\r\n </a>\r\n </li>\r\n </ul>\r\n }\r\n</div>\r\n\r\n<bayan-core-change-password-widget\r\n [baseUrl]=\"baseUrl\"\r\n [visible]=\"showChangePassword\"\r\n [config]=\"changePasswordDialog\"\r\n (visibleChange)=\"showChangePassword = !!$event\">\r\n </bayan-core-change-password-widget>\r\n\r\n <bayan-core-about-dialog-widget\r\n [visible]=\"showAbout\"\r\n [config]=\"aboutDialog\"\r\n [licenseUrl]=\"licenseUrl\"\r\n [releaseNotesUrl]=\"releaseNotesUrl\"\r\n [supportUrl]=\"supportUrl\"\r\n (visibleChange)=\"showAbout = !!$event\">\r\n </bayan-core-about-dialog-widget>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, computed, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faPersonRunning } from '@fortawesome/pro-solid-svg-icons';\r\nimport { BayanEmployeeBadgeComponent, BayanEmployeeBadgeDTO } from '@skysoftware-co/bayan-components-ui';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { UserPanel, PropertyOption } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\n\r\n@Component({\r\n selector: 'bayan-core-user-panel-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanEmployeeBadgeComponent, BayanCoreTranslatePipe],\r\n templateUrl: './user-panel-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreUserPanelWidgetComponent implements OnInit, OnChanges {\r\n private readonly topMenuService = inject(BayanCoreTopMenuService);\r\n\r\n @Input() baseUrl = '';\r\n @Input() wrapperClass = 'menu-dropdown-host';\r\n @Input() dropdownOpenClass = 'open';\r\n @Input() toggleButtonClass = 'employee-toggle';\r\n @Input() employeeInfoClass = 'employee-info';\r\n @Input() userNameClass = 'user-name';\r\n @Input() propertyNameClass = 'property-name';\r\n @Input() caretClass = 'employee-caret';\r\n @Input() menuClass = 'employee-menu menu-dropdown-panel';\r\n @Input() sectionLabelClass = 'menu-section-label';\r\n @Input() menuItemClass = 'menu-item';\r\n @Input() menuItemActiveClass = 'menu-item-active';\r\n @Input() indicatorClass = 'menu-indicator';\r\n @Input() invisibleIndicatorClass = 'menu-indicator invisible';\r\n @Input() dividerClass = 'menu-divider';\r\n @Input() signOutButtonClass = 'menu-item menu-item-signout';\r\n @Input() showSignOutIcon = true;\r\n @Input() signOutIconClass = 'mx-2';\r\n\r\n @Output() propertyChanged = new EventEmitter<PropertyOption>();\r\n @Output() signOutClick = new EventEmitter<void>();\r\n\r\n readonly signOutIcon = faPersonRunning;\r\n readonly dropdownOpen = signal(false);\r\n readonly userPanel = signal<UserPanel | null>(null);\r\n\r\n readonly badge = computed<BayanEmployeeBadgeDTO>(() => ({\r\n EmployeePhotoKey: this.userPanel()?.PhotoPath ?? null,\r\n EmployeePhotoFailed: false,\r\n EmployeeNameInitials: this.userPanel()?.NameInitials ?? '',\r\n }));\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\r\n\r\n ngOnInit(): void {\r\n this.loadUserPanel();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['baseUrl'] && !changes['baseUrl'].firstChange) {\r\n this.loadUserPanel();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const target = event.target as Node | null;\r\n if (target && !this.elementRef.nativeElement.contains(target)) {\r\n this.dropdownOpen.set(false);\r\n }\r\n }\r\n\r\n toggleDropdown(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.update((value) => !value);\r\n }\r\n\r\n selectProperty(event: Event, property: PropertyOption): void {\r\n event.preventDefault();\r\n if (property.PropertyId === this.userPanel()?.ActivePropertyId) {\r\n this.dropdownOpen.set(false);\r\n return;\r\n }\r\n\r\n this.dropdownOpen.set(false);\r\n\r\n this.topMenuService\r\n .switchProperty(this.baseUrl, { PropertyId: property.PropertyId })\r\n .subscribe({\r\n next: () => {\r\n this.topMenuService.getUserPanel(this.baseUrl).subscribe({\r\n next: (userPanel) => {\r\n this.userPanel.set(userPanel);\r\n this.propertyChanged.emit(property);\r\n },\r\n });\r\n },\r\n });\r\n }\r\n\r\n signOut(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.signOutClick.emit();\r\n }\r\n\r\n private loadUserPanel(): void {\r\n if (!this.baseUrl) {\r\n this.userPanel.set(null);\r\n return;\r\n }\r\n\r\n this.topMenuService.getUserPanel(this.baseUrl).subscribe({\r\n next: (userPanel) => {\r\n this.userPanel.set(userPanel);\r\n let property : PropertyOption = {\r\n PropertyId: userPanel.ActivePropertyId,\r\n PropertyName: userPanel.ActivePropertyName };\r\n this.propertyChanged.emit(property);\r\n },\r\n error: () => {\r\n this.userPanel.set(null);\r\n },\r\n });\r\n }\r\n}\r\n","<div [ngClass]=\"[wrapperClass, dropdownOpen() ? dropdownOpenClass : '']\">\r\n <a href=\"#\" [class]=\"toggleButtonClass\" (click)=\"toggleDropdown($event)\">\r\n <bayan-employee-badge [badge]=\"badge()\" width=\"34px\" height=\"34px\"></bayan-employee-badge>\r\n\r\n <div [class]=\"employeeInfoClass\">\r\n <span [class]=\"userNameClass\">{{ userPanel()?.UserDisplayName || '' }}</span>\r\n\r\n @if (userPanel()?.ActivePropertyName) {\r\n <span [class]=\"propertyNameClass\">{{ userPanel()?.ActivePropertyName }}</span>\r\n }\r\n </div>\r\n\r\n <span [class]=\"caretClass\">▼</span>\r\n </a>\r\n\r\n @if (dropdownOpen()) {\r\n <ul [class]=\"menuClass\">\r\n @if ((userPanel()?.Properties?.length || 0) > 0) {\r\n <li [class]=\"sectionLabelClass\">{{ 'Properties' | translate }}</li>\r\n\r\n @for (property of userPanel()?.Properties ?? []; track property.PropertyId) {\r\n <li>\r\n <a\r\n class=\"text-dark-gray\"\r\n [ngClass]=\"[menuItemClass, property.PropertyId === userPanel()?.ActivePropertyId ? menuItemActiveClass : '']\"\r\n (click)=\"selectProperty($event, property)\">\r\n @if (property.PropertyId === userPanel()?.ActivePropertyId) {\r\n <span [class]=\"indicatorClass\">►</span>\r\n } @else {\r\n <span [class]=\"indicatorClass + ' ' + invisibleIndicatorClass\"></span>\r\n }\r\n\r\n {{ property.PropertyName }}\r\n </a>\r\n </li>\r\n }\r\n\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n @if (!userPanel()?.IsSSOLogin) {\r\n <li>\r\n <a class=\"text-dark-gray\" [class]=\"signOutButtonClass\"\r\n [ngClass]=\"{'ms-3': !showSignOutIcon}\" (click)=\"signOut($event)\">\r\n @if (showSignOutIcon) {\r\n <fa-icon [class]=\"signOutIconClass\" [icon]=\"signOutIcon\"></fa-icon>\r\n }\r\n {{ 'SignOut' | translate }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n</div>\r\n","import { TranslatePipe } from '@skysoftware-co/sky-components-ui';\r\nimport { BayanCoreTranslateService } from './../shared/services/translate.service';\r\nimport { BayanCoreTranslatePipe } from './../shared/pipes/translate.pipe';\r\nimport { GlobalSearchMenu } from '../shared/menu.dtos';\r\nimport { ElementRef } from '@angular/core';\r\nimport { BayanCoreTopMenuService } from '../shared/menu.service';\r\nimport { TopMenuShortcut, PropertyOption, SystemModule, EmployeeNamesModeOption } from '../shared/menu.dtos';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons';\r\nimport { Router } from '@angular/router';\r\nimport { DxToolbarModule } from 'devextreme-angular';\r\nimport { BayanCoreGlobalSearchWidgetComponent } from './components/global-search-widget/global-search-widget.component';\r\nimport { BayanCoreItemWidgetComponent } from './components/item-widget/item-widget.component';\r\nimport { BayanCoreNotificationsWidgetComponent } from './components/notifications-widget/notifications-widget.component';\r\nimport { BayanCoreSettingsWidgetComponent } from './components/settings-widget/settings-widget.component';\r\nimport { BayanCoreUserPanelWidgetComponent } from './components/user-panel-widget/user-panel-widget.component';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-top-menu-widget',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DxToolbarModule,\r\n FontAwesomeModule,\r\n BayanCoreItemWidgetComponent,\r\n BayanCoreGlobalSearchWidgetComponent,\r\n BayanCoreUserPanelWidgetComponent,\r\n BayanCoreSettingsWidgetComponent,\r\n BayanCoreNotificationsWidgetComponent,\r\n BayanCoreTranslatePipe\r\n ],\r\n templateUrl: './top-menu-widget.component.html',\r\n styleUrls: ['./top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreTopMenuWidgetComponent implements OnInit {\r\n constructor(private elementRef: ElementRef) {}\r\n private TranslateService = inject(BayanCoreTranslateService);\r\n globalSearchWidget?: BayanCoreGlobalSearchWidgetComponent;\r\n\r\n globalSearchResults: GlobalSearchMenu[] = [];\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n openDropdownIndex: number | null = null;\r\n\r\n @Input() baseUrl = '';\r\n @Input() systemModule : SystemModule | null =null;\r\n menuItems: TopMenuShortcut[] = [];\r\n\r\n @Input() sidebarCollapsed = false;\r\n @Input() homeUrl: string | null = null;\r\n @Input() logoUrl = 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-enterprise-dark.png';\r\n @Input() collapsedLogoUrl = 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-collapsed.png';\r\n @Output() logoClick = new EventEmitter<void>();\r\n\r\n @Input() isSsoLogin = false;\r\n\r\n // Removed useInternalDialogs and all related logic\r\n\r\n @Input() showGlobalSearch = true;\r\n @Input() showUserPanel = true;\r\n @Input() showSettings = true;\r\n @Input() showShortcutMenus = true;\r\n @Input() showNotifications = true;\r\n @Input() notificationsTitle = 'Notifications';\r\n\r\n @Input() showHelp = true;\r\n @Input() helpTitle = 'Help';\r\n @Input() helpUrl: string | null = 'https://docs.bayan.solutions/Bayan/index.html';\r\n @Input() helpIcon: IconDefinition = faQuestionCircle;\r\n @Input() helpAnchorClass = 'menu-icon-btn';\r\n @Input() helpUrlTarget: '_self' | '_blank' | string = '_blank';\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n @Output() helpClick = new EventEmitter<void>();\r\n @Output() menuItemClick = new EventEmitter<TopMenuShortcut>();\r\n @Output() searchSubmit = new EventEmitter<string>();\r\n @Output() propertyChanged = new EventEmitter<PropertyOption>();\r\n @Output() signOutClick = new EventEmitter<void>();\r\n @Output() alternateNamesChange = new EventEmitter<boolean>();\r\n @Output() employeeNameModeChange = new EventEmitter<EmployeeNamesModeOption>();\r\n\r\n readonly aboutVisible = signal(false);\r\n readonly changePasswordVisible = signal(false);\r\n\r\n ActivePropertyChanged = false;\r\n ActivePropertyId: number = 0;\r\n\r\n ngOnInit(): void {\r\n this.loadShortcutMenus();\r\n this.loadGlobalSearchResults();\r\n }\r\n\r\n private loadGlobalSearchResults(): void {\r\n if (this.baseUrl && this.ActivePropertyId > 0) {\r\n this.menuService.getGlobalSearchMenus(this.baseUrl, this.ActivePropertyId).subscribe({\r\n next: (menus: any) => this.globalSearchResults = menus ?? [],\r\n error: () => this.globalSearchResults = []\r\n });\r\n } else {\r\n this.globalSearchResults = [];\r\n }\r\n }\r\n\r\n onEmployeeNameModeChange(event: any): void {\r\n this.employeeNameModeChange.emit(event);\r\n }\r\n\r\n getLogoSrc(): string | null {\r\n if (this.sidebarCollapsed) {\r\n return this.collapsedLogoUrl || null;\r\n }\r\n\r\n return this.logoUrl || null;\r\n }\r\n\r\n onLogoClicked(event?: Event): void {\r\n event?.preventDefault();\r\n if(this.homeUrl){\r\n window.location.href = this.homeUrl;\r\n return;\r\n }\r\n\r\n this.logoClick.emit();\r\n }\r\n\r\n onHelpClicked(event?: Event): void {\r\n event?.preventDefault();\r\n if(this.helpUrl){\r\n window.open(this.helpUrl, this.helpUrlTarget);\r\n return;\r\n }\r\n this.helpClick.emit();\r\n }\r\n\r\n onPropertyChanged(property: PropertyOption): void {\r\n this.ActivePropertyChanged = !this.ActivePropertyChanged;\r\n this.ActivePropertyId = property.PropertyId;\r\n this.loadShortcutMenus();\r\n this.loadGlobalSearchResults();\r\n this.propertyChanged.emit(property);\r\n }\r\n\r\n private loadShortcutMenus(): void {\r\n this.menuItems=[];\r\n if(!this.showShortcutMenus) return;\r\n if(!this.baseUrl) return;\r\n if(!this.systemModule) return;\r\n\r\n if (this.ActivePropertyId > 0) {\r\n this.menuService.getMicroserviceTopMenusShortcut(this.baseUrl, this.ActivePropertyId, this.systemModule)\r\n .subscribe({\r\n next: (menus: any) => this.menuItems = menus ?? [],\r\n error: () => this.menuItems = []\r\n });\r\n } else {\r\n this.menuItems = [];\r\n }\r\n }\r\n}\r\n","<header class=\"top-bar-header shadow-sm w-100 sticky-top\">\r\n <dx-toolbar class=\"header-toolbar px-4\">\r\n <dxi-item location=\"before\">\r\n <div *dxTemplate>\r\n <a\r\n class=\"navbar-brand-link\" href=\"#\"\r\n [class.collapsed]=\"sidebarCollapsed\"\r\n (click)=\"onLogoClicked($event)\">\r\n <img\r\n [src]=\"getLogoSrc()\"\r\n alt=\"\"\r\n [class.header-logo]=\"!sidebarCollapsed\"\r\n [class.header-logo-collapsed]=\"sidebarCollapsed && !!collapsedLogoUrl\">\r\n </a>\r\n </div>\r\n </dxi-item>\r\n\r\n @if (showShortcutMenus) {\r\n <dxi-item location=\"before\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <ul class=\"nav navbar-nav d-flex flex-row align-items-center mb-0 gap-1\">\r\n @for (item of menuItems; track item.MenuName) {\r\n <bayan-core-item-widget [item]=\"item\"\r\n [baseUrl]=\"baseUrl\"\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n (itemClick)=\"menuItemClick.emit($event)\">\r\n </bayan-core-item-widget>\r\n }\r\n </ul>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-global-search-widget\r\n #globalSearchWidget\r\n [baseUrl]=\"baseUrl\"\r\n [dataSource]=\"globalSearchResults\"\r\n (search)=\"searchSubmit.emit($event)\">\r\n </bayan-core-global-search-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showUserPanel) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-user-panel-widget\r\n [baseUrl]=\"baseUrl\"\r\n [showSignOutIcon]=\"false\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n (signOutClick)=\"signOutClick.emit()\">\r\n </bayan-core-user-panel-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showSettings) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-settings-widget\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n [baseUrl]=\"baseUrl\"\r\n [licenseUrl]=\"licenseUrl\"\r\n [releaseNotesUrl]=\"releaseNotesUrl\"\r\n [supportUrl]=\"supportUrl\"\r\n [systemModule]=\"systemModule\"\r\n (alternateNamesChange)=\"alternateNamesChange.emit($event)\"\r\n (employeeNameModeChange)=\"onEmployeeNameModeChange($event)\">\r\n </bayan-core-settings-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showNotifications) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-notifications-widget [baseUrl]=\"baseUrl\"\r\n [title]=\"notificationsTitle | translate\" >\r\n </bayan-core-notifications-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showHelp) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <a\r\n [class]=\"helpAnchorClass\"\r\n [title]=\"helpTitle | translate\"\r\n [target]=\"helpUrlTarget\"\r\n href=\"#\"\r\n (click)=\"onHelpClicked($event)\">\r\n <fa-icon [icon]=\"helpIcon\" class=\"fs-6\"></fa-icon>\r\n </a>\r\n </div>\r\n </dxi-item>\r\n }\r\n </dx-toolbar>\r\n</header>\r\n\r\n<!-- Dialogs are now rendered inside settings-widget, not here -->\r\n","/*\r\n * Public API Surface of bayan-core-ui\r\n */\r\n\r\nexport * from './lib/top-menu-widget/top-menu-widget.component';\r\nexport * from './lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component';\r\nexport * from './lib/top-menu-widget/components/change-password-widget/change-password-widget.component';\r\nexport * from './lib/top-menu-widget/components/global-search-widget/global-search-widget.component';\r\nexport * from './lib/top-menu-widget/components/item-widget/item-widget.component';\r\nexport * from './lib/top-menu-widget/components/notifications-widget/notifications-widget.component';\r\nexport * from './lib/top-menu-widget/components/settings-widget/settings-widget.component';\r\nexport * from './lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component';\r\nexport * from './lib/shared/menu.dtos';\r\nexport * from './lib/shared/menu.service';\r\nexport * from './lib/shared/pipes/translate.pipe';\r\nexport * from './lib/shared/services/translate.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BayanCoreTranslateService","i3","i1","i2","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"skysoftware-co-bayan-core-widgets-ui.mjs","sources":["../../../projects/bayan-core-ui/src/lib/shared/services/translate.service.ts","../../../projects/bayan-core-ui/src/lib/shared/pipes/translate.pipe.ts","../../../projects/bayan-core-ui/src/lib/shared/menu.service.ts","../../../projects/bayan-core-ui/src/lib/shared/property-state.service.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/global-search-widget/global-search-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/global-search-widget/global-search-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/item-widget/item-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/item-widget/item-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/notifications-widget/notifications-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/notifications-widget/notifications-widget.component.html","../../../projects/bayan-core-ui/src/lib/shared/menu.dtos.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/change-password-widget/change-password-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/change-password-widget/change-password-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/settings-widget/settings-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/settings-widget/settings-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component.html","../../../projects/bayan-core-ui/src/lib/top-menu-widget/top-menu-widget.component.ts","../../../projects/bayan-core-ui/src/lib/top-menu-widget/top-menu-widget.component.html","../../../projects/bayan-core-ui/src/public-api.ts","../../../projects/bayan-core-ui/src/skysoftware-co-bayan-core-widgets-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport en from '../i18n/en.json';\r\nimport ar from '../i18n/ar.json';\r\n\r\n// Touch: 2026-05-09\r\n// Add more languages as needed\r\n\r\nconst BUILT_IN_LEXICONS: Record<string, Record<string, string>> = { en, ar };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BayanCoreTranslateService {\r\n private currentLanguage: string = 'en';\r\n private lexicon: Record<string, string> = {};\r\n\r\n setLanguage(language: string): void {\r\n this.currentLanguage = language;\r\n }\r\n\r\n getLanguage(): string {\r\n return this.currentLanguage;\r\n }\r\n\r\n setLexicon(lexicon: Record<string, string>): void {\r\n this.lexicon = lexicon;\r\n }\r\n\r\n getLexicon(): Record<string, string> {\r\n return this.lexicon;\r\n }\r\n\r\n translateBuiltIn(key: string): string {\r\n if (!key) return '';\r\n const builtIn = BUILT_IN_LEXICONS[this.currentLanguage] || {};\r\n const foundKey = Object.keys(builtIn).find(k => k.toLowerCase() === key.toLowerCase());\r\n return foundKey ? builtIn[foundKey] : key;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { BayanCoreTranslateService } from '../services/translate.service';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true\r\n})\r\nexport class BayanCoreTranslatePipe implements PipeTransform {\r\n constructor(private translateService: BayanCoreTranslateService) {}\r\n\r\n transform(key?: string): string {\r\n if (!key) return '';\r\n\r\n key = this.translateService.translateBuiltIn(key);\r\n\r\n const lexicon = this.translateService.getLexicon();\r\n let foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === key!.toLowerCase());\r\n if (foundKey) return lexicon[foundKey];\r\n\r\n if (!key) return '';\r\n const arrKey = key.split(' ');\r\n let keyValue = '';\r\n for (let i = 0; i < arrKey.length; i++) {\r\n if (i !== 0) keyValue += ' ';\r\n foundKey = Object.keys(lexicon).find(k => k.toLowerCase() === arrKey[i].toLowerCase());\r\n if (foundKey) {\r\n keyValue += lexicon[foundKey];\r\n } else {\r\n keyValue += arrKey[i];\r\n }\r\n }\r\n\r\n return keyValue;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { catchError, map, Observable, throwError } from 'rxjs';\r\nimport {\r\n ApiEnvelope,\r\n AppFramePreferences,\r\n BlockableModule,\r\n BlockReleaseModuleRequest,\r\n ChangePasswordRequest,\r\n GlobalSearchMenu,\r\n ModuleBlockState,\r\n NotificationsSummary,\r\n SetDisplayAlternateNamesRequest,\r\n SetEmployeeNamesModeRequest,\r\n SwitchPropertyRequest,\r\n SwitchPropertyResult,\r\n SystemMenu,\r\n SystemModule,\r\n TopMenuShortcut,\r\n UserPanel,\r\n} from './menu.dtos';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BayanCoreTopMenuService {\r\n private readonly http = inject(HttpClient);\r\n\r\n private unwrap<T>(obs: Observable<ApiEnvelope<T>>): Observable<T> {\r\n return obs.pipe(\r\n map((env) => {\r\n if (!env.ResponseData) {\r\n throw new Error('No data received');\r\n }\r\n\r\n return env.ResponseData;\r\n }),\r\n catchError((error) => throwError(() => error)),\r\n );\r\n }\r\n\r\n private getBaseUrl(baseUrl: string): string {\r\n let url = baseUrl.replace('/api','');\r\n return `${url.replace(/\\/$/, '')}/api/app-frame`;\r\n }\r\n\r\n getMicroserviceMenusByProperty(\r\n baseUrl: string,\r\n propertyId: number | string,\r\n systemModule: SystemModule,\r\n ): Observable<SystemMenu[]> {\r\n const params = new HttpParams()\r\n .set('PropertyId', propertyId)\r\n .set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<SystemMenu[]>>(`${this.getBaseUrl(baseUrl)}/left-menu`, { params }),\r\n );\r\n }\r\n\r\n getMicroserviceTopMenusShortcut(\r\n baseUrl: string,\r\n propertyId: number | string,\r\n systemModule: SystemModule,\r\n ): Observable<TopMenuShortcut[]> {\r\n const params = new HttpParams()\r\n .set('PropertyId', propertyId)\r\n .set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<TopMenuShortcut[]>>(`${this.getBaseUrl(baseUrl)}/top-shortcuts`, {\r\n params,\r\n }),\r\n );\r\n }\r\n\r\n getGlobalSearchMenus(baseUrl: string, propertyId?: number): Observable<GlobalSearchMenu[]> {\r\n let params = new HttpParams();\r\n\r\n if (propertyId != null) {\r\n params = params.set('PropertyId', propertyId);\r\n }\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<GlobalSearchMenu[]>>(\r\n `${this.getBaseUrl(baseUrl)}/global-search-menus`,\r\n { params },\r\n ),\r\n );\r\n }\r\n\r\n getUserPanel(baseUrl: string): Observable<UserPanel> {\r\n return this.unwrap(this.http.get<ApiEnvelope<UserPanel>>(`${this.getBaseUrl(baseUrl)}/user-panel`));\r\n }\r\n\r\n switchProperty(baseUrl: string, request: SwitchPropertyRequest): Observable<SwitchPropertyResult> {\r\n return this.unwrap(\r\n this.http.post<ApiEnvelope<SwitchPropertyResult>>(\r\n `${this.getBaseUrl(baseUrl)}/switch-property`,\r\n request,\r\n ),\r\n );\r\n }\r\n\r\n getPreferences(baseUrl: string): Observable<AppFramePreferences> {\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<AppFramePreferences>>(`${this.getBaseUrl(baseUrl)}/preferences`),\r\n );\r\n }\r\n\r\n setDisplayAlternateNames(\r\n baseUrl: string,\r\n request: SetDisplayAlternateNamesRequest,\r\n ): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/preferences/alternate-names`, request);\r\n }\r\n\r\n setEmployeeNamesMode(baseUrl: string, request: SetEmployeeNamesModeRequest): Observable<void> {\r\n return this.http.post<void>(\r\n `${this.getBaseUrl(baseUrl)}/preferences/employee-names-mode`,\r\n request,\r\n );\r\n }\r\n\r\n getModuleBlockState(\r\n baseUrl: string,\r\n systemModule: SystemModule | BlockableModule,\r\n ): Observable<ModuleBlockState> {\r\n const params = new HttpParams().set('SystemModule', systemModule);\r\n\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<ModuleBlockState>>(`${this.getBaseUrl(baseUrl)}/module-block-state`, {\r\n params,\r\n }),\r\n );\r\n }\r\n\r\n blockModule(baseUrl: string, request: BlockReleaseModuleRequest): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/block-module`, request);\r\n }\r\n\r\n releaseModule(baseUrl: string, request: BlockReleaseModuleRequest): Observable<void> {\r\n return this.http.post<void>(`${this.getBaseUrl(baseUrl)}/release-module`, request);\r\n }\r\n\r\n getNotificationsSummary(baseUrl: string): Observable<NotificationsSummary> {\r\n return this.unwrap(\r\n this.http.get<ApiEnvelope<NotificationsSummary>>(\r\n `${this.getBaseUrl(baseUrl)}/notifications-summary`,\r\n ),\r\n );\r\n }\r\n\r\n changePassword(baseUrl: string, request: ChangePasswordRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.getBaseUrl(baseUrl)}/change-password`, request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BayanCoreConfigService {\r\n private activePropertyId$ = new BehaviorSubject<number>(0);\r\n\r\n getActivePropertyId$(): Observable<number> {\r\n return this.activePropertyId$.asObservable();\r\n }\r\n\r\n setActivePropertyId(id: number) {\r\n this.activePropertyId$.next(id);\r\n }\r\n}\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\r\nimport { Observable, isObservable } from 'rxjs';\r\nimport { BayanCoreConfigService } from '../../../shared/property-state.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport {\r\n faDollar,\r\n faGraduationCap,\r\n faGrid,\r\n faMedal,\r\n faRightLeft,\r\n faTools,\r\n faUsers,\r\n} from '@fortawesome/pro-solid-svg-icons';\r\nimport { faClock } from '@fortawesome/pro-light-svg-icons';\r\nimport { Router } from '@angular/router';\r\nimport { DxAutocompleteComponent, DxAutocompleteModule } from 'devextreme-angular';\r\nimport { GlobalSearchMenu } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { BayanCoreTranslatePipe } from '../../../../public-api';\r\n\r\n@Component({\r\n selector: 'bayan-core-global-search-widget',\r\n standalone: true,\r\n imports: [CommonModule, DxAutocompleteModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './global-search-widget.component.html',\r\n styles: [':host { display: flex; align-items: center; height: 56px; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreGlobalSearchWidgetComponent {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n private readonly propertyState = inject(BayanCoreConfigService);\r\n\r\n\r\n @ViewChild('searchAutoComplete') searchAutoComplete?: DxAutocompleteComponent;\r\n\r\n @Input() dataSource: GlobalSearchMenu[] = [];\r\n\r\n @Input() set baseUrl(url: string) {\r\n this._baseUrl = url;\r\n }\r\n private _baseUrl = '';\r\n @Input() placeholder = 'Type to search';\r\n @Input() searchMode: 'contains' | 'startswith' = 'contains';\r\n @Input() stylingMode: 'filled' | 'outlined' | 'underlined' = 'filled';\r\n @Input() searchWrapperClass = '';\r\n @Input() searchItemClass = '';\r\n @Input() searchItemTitleClass = '';\r\n @Input() searchItemSubtitleClass = '';\r\n @Input() iconClass = '';\r\n\r\n @Output() search = new EventEmitter<string>();\r\n @Output() itemNavigate = new EventEmitter<GlobalSearchMenu>();\r\n\r\n readonly toolsIcon = faTools;\r\n readonly gridIcon = faGrid;\r\n readonly creditIcon = faDollar;\r\n readonly usersIcon = faUsers;\r\n readonly clockIcon = faClock;\r\n readonly swapIcon = faRightLeft;\r\n readonly medalIcon = faMedal;\r\n readonly graduateIcon = faGraduationCap;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onInput(event: { event?: { target?: { value?: string } }; component?: { option: (name: string, value: string) => void } } | any): void {\r\n const searchTerm = event.event?.target?.value;\r\n if (typeof searchTerm === 'string' && searchTerm.startsWith(' ')) {\r\n event.component?.option('value', searchTerm.trim());\r\n }\r\n }\r\n\r\n onEnterKey(event: { event?: { target?: { value?: string } } } | any, items?: GlobalSearchMenu[]): void {\r\n const searchTerm = (event.event?.target?.value ?? '').toString().trim();\r\n if (!searchTerm) {\r\n return;\r\n }\r\n\r\n // Use latest items if provided\r\n const dataSource = items || this.dataSource;\r\n const match = dataSource.find(\r\n (item) => item.MenuSubTitle.toLowerCase().trim() === searchTerm.toLowerCase().trim(),\r\n );\r\n\r\n if (match) {\r\n window.location.href = match.MenuUrl;\r\n this.itemNavigate.emit(match);\r\n return;\r\n }\r\n\r\n this.search.emit(searchTerm);\r\n }\r\n\r\n onItemSelected(event: Event, item: GlobalSearchMenu): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (item.MenuUrl) {\r\n window.location.href = item.MenuUrl;\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.searchAutoComplete?.instance?.option('value', '');\r\n }\r\n\r\n getIconForClass(iconClass: string) {\r\n switch (iconClass) {\r\n case 'icon icon-tools':\r\n return this.toolsIcon;\r\n case 'icon icon-grid':\r\n return this.gridIcon;\r\n case 'icon icon-credit':\r\n return this.creditIcon;\r\n case 'icon icon-users':\r\n return this.usersIcon;\r\n case 'icon icon-clock':\r\n return this.clockIcon;\r\n case 'icon icon-swap':\r\n return this.swapIcon;\r\n case 'icon icon-medal':\r\n return this.medalIcon;\r\n case 'icon icon-graduation-cap':\r\n return this.graduateIcon;\r\n default:\r\n return this.toolsIcon;\r\n }\r\n }\r\n}\r\n","<div class=\"global-search-wrapper\">\r\n <dx-autocomplete\r\n #searchAutoComplete\r\n [placeholder]=\"placeholder | translate\"\r\n [dataSource]=\"dataSource\"\r\n valueExpr=\"MenuSubTitle\"\r\n [searchExpr]=\"['MenuSubTitle']\"\r\n [showClearButton]=\"false\"\r\n [showDropDownButton]=\"false\"\r\n [searchMode]=\"searchMode\"\r\n [width]=\"'100%'\"\r\n [stylingMode]=\"stylingMode\"\r\n [wrapItemText]=\"true\"\r\n [searchTimeout]=\"100\"\r\n (onInput)=\"onInput($event)\"\r\n (onEnterKey)=\"onEnterKey($event)\">\r\n <div class=\"global-search-dropdown-item\" *dxTemplate=\"let item of 'item'\">\r\n <a class=\"global-search-link compact-search-item\" href=\"{{item.MenuUrl}}\">\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <div class=\"d-flex flex-grow-1 align-items-center\">\r\n <fa-icon [icon]=\"getIconForClass(item.IconClass)\" class=\"global-search-icon mx-1\"></fa-icon>\r\n <div class=\"search-title\">@if (item.IsTranslatable) { {{ item.MenuTitle | translate }} } @else { {{ item.MenuTitle }} }</div>\r\n </div>\r\n <div class=\"search-subtitle mx-4\">@if (item.IsTranslatable) { {{ item.MenuSubTitle | translate }} } @else { {{ item.MenuSubTitle }} }</div>\r\n </div>\r\n </a>\r\n </div>\r\n </dx-autocomplete>\r\n</div>\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { TopMenuShortcut } from '../../../shared/menu.dtos';\r\n\r\n@Component({\r\n selector: 'bayan-core-item-widget',\r\n standalone: true,\r\n imports: [CommonModule, BayanCoreTranslatePipe], // Pipe name is now 'translate'\r\n templateUrl: './item-widget.component.html',\r\n styles: [':host { display: contents; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreItemWidgetComponent {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n\r\n @Input() baseUrl = '';\r\n @Input() ActivePropertyChanged = false;\r\n @Input({ required: true }) item!: TopMenuShortcut;\r\n\r\n @Input() navItemClass = 'nav-item';\r\n @Input() navLinkClass = 'nav-link';\r\n @Input() dropdownClass = 'nav-item dropdown';\r\n @Input() dropdownOpenClass = 'open';\r\n @Input() dropdownToggleClass = 'nav-link dropdown-toggle';\r\n @Input() caretClass = 'caret';\r\n @Input() dropdownMenuClass = 'dropdown-menu menu-dropdown-panel';\r\n\r\n @Output() itemClick = new EventEmitter<TopMenuShortcut>();\r\n\r\n\r\n open = false;\r\n\r\n onMouseEnter() {\r\n if (this.hasChildren()) {\r\n this.open = true;\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n if (this.hasChildren()) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\r\n\r\n hasChildren(): boolean {\r\n return (this.item.Children ?? []).length > 0;\r\n }\r\n\r\n onItemActivated(event: Event): void {\r\n event.preventDefault();\r\n if (this.hasChildren()) {\r\n event.stopPropagation();\r\n this.open = !this.open;\r\n return;\r\n }\r\n this.itemClick.emit(this.item);\r\n if (typeof this.item.MenuUrl === 'string' && this.item.MenuName == 'Reports') {\r\n window.open(this.item.MenuUrl, '_blank');\r\n } else if (this.item.MenuUrl) {\r\n window.location.href = this.item.MenuUrl;\r\n }\r\n }\r\n\r\n onChildItemClick(item: TopMenuShortcut): void {\r\n this.itemClick.emit(item);\r\n }\r\n}\r\n","@if (!hasChildren()) {\r\n <li [class]=\"navItemClass\">\r\n <a\r\n [class]=\"navLinkClass\"\r\n href=\"#\"\r\n (click)=\"onItemActivated($event)\">\r\n {{ item.MenuName | translate }}\r\n </a>\r\n </li>\r\n}\r\n\r\n@if (hasChildren()) {\r\n <li [class]=\"dropdownClass + (open ? ' ' + dropdownOpenClass : '')\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <a href=\"#\" [class]=\"dropdownToggleClass\" (click)=\"onItemActivated($event)\">\r\n {{ item.MenuName | translate }} <span [class]=\"caretClass\"></span>\r\n </a>\r\n\r\n <ul [class]=\"dropdownMenuClass\">\r\n @for (child of item.Children; track child.MenuName) {\r\n <bayan-core-item-widget\r\n [baseUrl]=\"baseUrl\"\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n [item]=\"child\"\r\n (itemClick)=\"onChildItemClick($event)\"\r\n [navItemClass]=\"navItemClass\"\r\n [navLinkClass]=\"navLinkClass\"\r\n [dropdownClass]=\"dropdownClass\"\r\n [dropdownOpenClass]=\"dropdownOpenClass\"\r\n [dropdownToggleClass]=\"dropdownToggleClass\"\r\n [caretClass]=\"caretClass\"\r\n [dropdownMenuClass]=\"dropdownMenuClass\"\r\n >\r\n </bayan-core-item-widget>\r\n }\r\n </ul>\r\n </li>\r\n}\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faBell } from '@fortawesome/pro-solid-svg-icons';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { NotificationsSummary } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\n\r\n@Component({\r\n selector: 'bayan-core-notifications-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './notifications-widget.component.html',\r\n styles: [':host { display: flex; align-items: center; height: 56px; }'],\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreNotificationsWidgetComponent implements OnInit, OnChanges {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly topMenuService = inject(BayanCoreTopMenuService);\r\n\r\n @Input() baseUrl = '';\r\n @Input() title = 'Notifications';\r\n @Input() wrapperClass = 'menu-dropdown-host';\r\n @Input() linkClass = 'menu-icon-btn notifications-icon-btn';\r\n @Input() iconClass = '';\r\n @Input() badgeClass = 'notifications-badge';\r\n\r\n readonly bellIcon = faBell;\r\n readonly notificationsSummary = signal<NotificationsSummary>({\r\n NotificationsUrl: '',\r\n TotalNotificationsCount: 0,\r\n });\r\n\r\n ngOnInit(): void {\r\n this.loadNotificationsSummary();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['baseUrl'] && !changes['baseUrl'].firstChange) {\r\n this.loadNotificationsSummary();\r\n }\r\n }\r\n\r\n onNotificationClick(event?: Event): void {\r\n event?.preventDefault();\r\n const rawNotificationUrl = this.notificationsSummary().NotificationsUrl;\r\n\r\n if (rawNotificationUrl) {\r\n this.document.location.href = `${window.location.origin}${rawNotificationUrl}`;\r\n }\r\n }\r\n\r\n private loadNotificationsSummary(): void {\r\n if (!this.baseUrl) {\r\n this.resetNotificationsData();\r\n return;\r\n }\r\n\r\n this.topMenuService.getNotificationsSummary(this.baseUrl).subscribe({\r\n next: (summary) => {\r\n this.notificationsSummary.set({\r\n NotificationsUrl: summary.NotificationsUrl,\r\n TotalNotificationsCount: summary.TotalNotificationsCount,\r\n });\r\n },\r\n error: () => {\r\n this.resetNotificationsData();\r\n },\r\n });\r\n }\r\n\r\n private resetNotificationsData(): void {\r\n this.notificationsSummary.set({\r\n NotificationsUrl: '',\r\n TotalNotificationsCount: 0,\r\n });\r\n }\r\n}\r\n","<div [class]=\"wrapperClass\">\r\n <a [class]=\"linkClass\"\r\n [title]=\"title | translate\"\r\n (click)=\"onNotificationClick($event)\">\r\n <fa-icon [class]=\"iconClass\" [icon]=\"bellIcon\"></fa-icon>\r\n @if ((notificationsSummary().TotalNotificationsCount || 0) > 0) {\r\n <span [class]=\"badgeClass\">{{ notificationsSummary().TotalNotificationsCount }}</span>\r\n }\r\n </a>\r\n</div>\r\n","export interface ApiEnvelope<T> {\r\n ResponseData: T;\r\n ApiVersion: number;\r\n}\r\n\r\nexport interface TopMenuShortcut {\r\n MenuName: string;\r\n MenuUrl: string | null;\r\n Children: TopMenuShortcut[];\r\n}\r\n\r\nexport interface SystemMenu {\r\n MenuName: string;\r\n MenuUrl: string | null;\r\n IconClass: string | null;\r\n Expanded: boolean;\r\n Children: SystemMenu[];\r\n}\r\n\r\nexport interface GlobalSearchMenu {\r\n MenuTitle: string;\r\n MenuSubTitle: string;\r\n IconClass: string;\r\n MenuUrl: string;\r\n IsTranslatable: boolean;\r\n}\r\n\r\nexport interface PropertyOption {\r\n PropertyId: number;\r\n PropertyName: string;\r\n}\r\n\r\nexport interface UserPanel {\r\n UserDisplayName: string;\r\n ActivePropertyId: number;\r\n ActivePropertyName: string;\r\n PhotoPath: string | null;\r\n NameInitials: string;\r\n IsSSOLogin: boolean;\r\n Properties: PropertyOption[];\r\n}\r\n\r\nexport interface SwitchPropertyRequest {\r\n PropertyId: number;\r\n}\r\n\r\nexport interface SwitchPropertyResult {\r\n PropertyId: number;\r\n}\r\n\r\nexport enum EmployeeNamesModeOption {\r\n ShortNames = 1,\r\n StandardNames = 2,\r\n FullNames = 3,\r\n}\r\n\r\nexport interface AppFramePreferences {\r\n UseAlternateNames: boolean;\r\n DisplayAlternateNames: boolean;\r\n EmployeeNamesMode: EmployeeNamesModeOption;\r\n VersionNumber: string;\r\n}\r\n\r\nexport interface SetDisplayAlternateNamesRequest {\r\n DisplayAlternateNames: boolean;\r\n}\r\n\r\nexport interface SetEmployeeNamesModeRequest {\r\n EmployeeNamesMode: EmployeeNamesModeOption;\r\n}\r\n\r\nexport enum BlockableModule {\r\n HumanResources = 4,\r\n Timekeeping = 5,\r\n}\r\n\r\nexport interface ModuleBlockState {\r\n IsBlocked: boolean;\r\n UserCanBlockModule: boolean;\r\n}\r\n\r\nexport interface BlockReleaseModuleRequest {\r\n Module: BlockableModule;\r\n}\r\n\r\nexport interface NotificationsSummary {\r\n TotalNotificationsCount: number;\r\n NotificationsUrl: string;\r\n}\r\n\r\nexport interface ChangePasswordRequest {\r\n CurrentPassword: string;\r\n NewPassword: string;\r\n}\r\n\r\nexport enum SystemModule {\r\n Corporate = 1,\r\n Cluster = 2,\r\n Setup = 3,\r\n HumanResources = 4,\r\n Timekeeping = 5,\r\n Payroll = 6,\r\n Training = 7,\r\n Workflow = 8,\r\n Appraisal = 9,\r\n BusinessIntelligence = 10,\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, signal, WritableSignal, inject } from '@angular/core';\r\nimport { DxFormComponent, DxFormModule, DxPopupModule } from 'devextreme-angular';\r\nimport { SkyFooterActionsComponent } from '@skysoftware-co/sky-components-ui';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport {\r\n TopMenuWidgetChangePasswordDialogConfig,\r\n TopMenuWidgetChangePasswordPayload,\r\n} from '../../top-menu-widget.models';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { SkyAlertToastService } from '@skysoftware-co/sky-components-ui';\r\n// import { SkyAlertType } from '@skysoftware-co/sky-components-ui/lib/constants/constants';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-change-password-widget',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, DxFormModule, SkyFooterActionsComponent, BayanCoreTranslatePipe],\r\n templateUrl: './change-password-widget.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreChangePasswordWidgetComponent {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly alertToastService = inject(SkyAlertToastService);\r\n // private readonly translate = inject(TranslatePipe);\r\n\r\n @Input() baseUrl = '';\r\n @Input() visible = false;\r\n @Input({ required: true }) config!: TopMenuWidgetChangePasswordDialogConfig;\r\n @Input() isSubmitting = false;\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n @ViewChild('changePasswordForm') changePasswordForm?: DxFormComponent;\r\n\r\n readonly currentPasswordMode = signal<'password' | 'text'>('password');\r\n readonly newPasswordMode = signal<'password' | 'text'>('password');\r\n readonly confirmNewPasswordMode = signal<'password' | 'text'>('password');\r\n\r\n formData: TopMenuWidgetChangePasswordPayload = {\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n };\r\n errorMessage: WritableSignal<string> = signal('');\r\n\r\n closeDialog(): void {\r\n this.visible = false;\r\n this.visibleChange.emit(false);\r\n this.resetForm();\r\n this.errorMessage.set('');\r\n }\r\n\r\n resetForm(): void {\r\n this.formData = {\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n };\r\n this.errorMessage.set('');\r\n }\r\n\r\n onSaveButtonClick(): void {\r\n const isValid = this.changePasswordForm?.instance.validate().isValid ?? false;\r\n if (!isValid) {\r\n return;\r\n }\r\n this.isSubmitting = true;\r\n this.menuService.changePassword(this.baseUrl, {\r\n CurrentPassword: this.formData.currentPassword,\r\n NewPassword: this.formData.newPassword\r\n }).subscribe({\r\n next: () => {\r\n this.isSubmitting = false;\r\n this.closeDialog();\r\n this.showAlert('PasswordChangedSuccessfully');\r\n },\r\n error: (e: any) => {\r\n this.isSubmitting = false;\r\n this.errorMessage.set('FailedToChangePassword');\r\n // Optionally show error notification here\r\n }\r\n });\r\n }\r\n togglePasswordMode(field: 'currentPasswordMode' | 'newPasswordMode' | 'confirmNewPasswordMode'): void {\r\n const current = this[field]();\r\n this[field].set(current === 'text' ? 'password' : 'text');\r\n }\r\n\r\n updateField(field: keyof TopMenuWidgetChangePasswordPayload, value: string): void {\r\n this.formData = {\r\n ...this.formData,\r\n [field]: value,\r\n };\r\n }\r\n\r\n isChangePasswordValid(): boolean {\r\n return !!this.formData.currentPassword && !!this.formData.newPassword && !!this.formData.confirmNewPassword;\r\n }\r\n\r\n getCurrentPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.currentPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('currentPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.currentPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('currentPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n getNewPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.newPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('newPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.newPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('newPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n getConfirmPasswordEditorOptions(): object {\r\n return {\r\n maxLength: 256,\r\n disabled: this.isSubmitting,\r\n mode: this.confirmNewPasswordMode(),\r\n onValueChanged: (event: { value?: string }) => this.updateField('confirmNewPassword', event.value ?? ''),\r\n buttons: [{\r\n name: 'password',\r\n location: 'after',\r\n options: {\r\n stylingMode: 'text',\r\n icon: this.confirmNewPasswordMode() === 'text' ? 'eyeopen' : 'eyeclose',\r\n onClick: () => this.togglePasswordMode('confirmNewPasswordMode'),\r\n },\r\n }],\r\n };\r\n }\r\n\r\n passwordComparison = (): string => this.formData.newPassword;\r\n\r\n showAlert(message: string, type: string = 'success') {\r\n this.alertToastService.toastInformation(message, type as any);\r\n }\r\n}\r\n","<dx-popup\r\n [visible]=\"visible\"\r\n (onHiding)=\"closeDialog()\"\r\n [title]=\"config.title | translate\"\r\n [showCloseButton]=\"true\"\r\n [width]=\"450\"\r\n [height]=\"'auto'\"\r\n [dragEnabled]=\"false\"\r\n [shading]=\"true\"\r\n shadingColor=\"rgba(0,0,0,0.4)\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <dx-form\r\n #changePasswordForm\r\n [formData]=\"formData\"\r\n labelLocation=\"top\"\r\n [showColonAfterLabel]=\"false\"\r\n class=\"mb-3 mx-2\">\r\n <dxi-item\r\n dataField=\"currentPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getCurrentPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.currentPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n </dxi-item>\r\n\r\n <dxi-item\r\n dataField=\"newPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getNewPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.newPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n </dxi-item>\r\n\r\n <dxi-item\r\n dataField=\"confirmNewPassword\"\r\n editorType=\"dxTextBox\"\r\n [editorOptions]=\"getConfirmPasswordEditorOptions()\">\r\n <dxo-label [text]=\"config.confirmNewPasswordLabel | translate\"></dxo-label>\r\n <dxi-validation-rule type=\"required\"></dxi-validation-rule>\r\n <dxi-validation-rule\r\n type=\"compare\"\r\n [comparisonTarget]=\"passwordComparison\">\r\n </dxi-validation-rule>\r\n </dxi-item>\r\n </dx-form>\r\n\r\n <sky-footer-actions\r\n [primaryButtonText]=\"config.primaryButtonText | translate\"\r\n [showSecondaryButton]=\"false\"\r\n [isLoading]=\"isSubmitting\"\r\n [disabledPrimaryButton]=\"isSubmitting || !isChangePasswordValid()\"\r\n (PrimaryButtonClick)=\"onSaveButtonClick()\"\r\n [errorMessage]=\"errorMessage\">\r\n </sky-footer-actions>\r\n </div>\r\n</dx-popup>\r\n","import { BayanCoreTranslatePipe } from './../../../shared/pipes/translate.pipe';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons';\r\nimport { TopMenuWidgetAboutDialogConfig } from '../../top-menu-widget.models';\r\n\r\n@Component({\r\n selector: 'bayan-core-about-dialog-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanCoreTranslatePipe],\r\n templateUrl: './about-dialog-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreAboutDialogWidgetComponent {\r\n\r\n @Input() baseUrl = '';\r\n @Input() visible = false;\r\n @Input({ required: true }) config!: TopMenuWidgetAboutDialogConfig;\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n // CSS class attributes as @Input with defaults\r\n @Input() backdropClass: string = 'about-backdrop';\r\n @Input() modalClass: string = 'about-modal';\r\n @Input() headerClass: string = 'about-modal-header';\r\n @Input() titleClass: string = 'about-modal-title';\r\n @Input() closeBtnClass: string = 'about-close-btn';\r\n @Input() bodyClass: string = 'about-modal-body';\r\n @Input() logoClass: string = 'about-logo';\r\n @Input() productNameClass: string = 'about-product-name';\r\n @Input() versionTextClass: string = 'about-version-text';\r\n @Input() upToDateClass: string = 'about-up-to-date';\r\n @Input() copyrightClass: string = 'about-copyright';\r\n @Input() actionsClass: string = 'about-modal-actions';\r\n @Input() actionBtnClass: string = 'about-action-btn';\r\n\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n @Output() licenseClick = new EventEmitter<void>();\r\n @Output() releaseNotesClick = new EventEmitter<void>();\r\n @Output() supportClick = new EventEmitter<void>();\r\n\r\n readonly checkCircleIcon = faCheckCircle;\r\n\r\n onBackdropClick(event: MouseEvent): void {\r\n if ((event.target as HTMLElement).classList.contains('about-backdrop')) {\r\n this.closeDialog();\r\n }\r\n }\r\n\r\n closeDialog(): void {\r\n this.visibleChange.emit(false);\r\n }\r\n\r\n openLicense() {\r\n window.open(this.licenseUrl, '_blank');\r\n }\r\n\r\n openReleaseNotes() {\r\n window.open(this.releaseNotesUrl, '_blank');\r\n }\r\n\r\n openSupport() {\r\n window.open(this.supportUrl, '_blank');\r\n }\r\n}\r\n","@if (visible) {\r\n <div [class]=\"backdropClass\" (click)=\"onBackdropClick($event)\">\r\n <div [class]=\"modalClass\" role=\"dialog\" aria-labelledby=\"topMenuAboutDialogTitle\" aria-modal=\"true\">\r\n <div [class]=\"headerClass\">\r\n <h4 [class]=\"titleClass\" id=\"topMenuAboutDialogTitle\">{{ 'AboutSkyBayan' | translate }}</h4>\r\n <button type=\"button\" [class]=\"closeBtnClass\" (click)=\"closeDialog()\" [attr.aria-label]=\"(config.closeButtonLabel || 'Close') | translate\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n\r\n <div [class]=\"bodyClass\">\r\n <div class=\"row align-items-start\">\r\n <div class=\"col-4\">\r\n @if (config.logoUrl) {\r\n <img [src]=\"config.logoUrl\" alt=\"Logo\" [class]=\"logoClass\">\r\n }\r\n </div>\r\n <div class=\"col-8\">\r\n <h3 [class]=\"productNameClass\">{{ (config.title || 'AboutSkyBayan') | translate }}</h3>\r\n <p [class]=\"versionTextClass\">{{ (config.versionLabel || 'Version') | translate }} {{ config.version || '' }}</p>\r\n <p [class]=\"upToDateClass\">\r\n <fa-icon [icon]=\"checkCircleIcon\" class=\"text-info me-1\"></fa-icon>\r\n <small class=\"text-muted\">{{ (config.statusLabel || 'SkyBayanUpToDate') | translate }}</small>\r\n </p>\r\n <p [class]=\"copyrightClass\">{{ (config.copyright || '') | translate }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"actionsClass\">\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openLicense()\">{{ (config.licenseButtonLabel || 'LicenseInformation') | translate }}</button>\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openReleaseNotes()\">{{ (config.releaseNotesButtonLabel || 'ReleaseNotes') | translate }}</button>\r\n <button type=\"button\" [class]=\"actionBtnClass\" (click)=\"openSupport()\">{{ (config.supportButtonLabel || 'TechnicalSupport') | translate }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { BayanCoreTranslatePipe } from './../../../shared/pipes/translate.pipe';\r\nimport { ModuleBlockState, AppFramePreferences, EmployeeNamesModeOption, BlockableModule, SystemModule } from '../../../shared/menu.dtos';\r\nimport { SkyAlertToastService } from '@skysoftware-co/sky-components-ui';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BayanCoreChangePasswordWidgetComponent } from '../change-password-widget/change-password-widget.component';\r\nimport { BayanCoreAboutDialogWidgetComponent } from '../about-dialog-widget/about-dialog-widget.component';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, inject, signal } from '@angular/core';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faCheck, faCog, faInfoCircle } from '@fortawesome/pro-solid-svg-icons';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-settings-widget',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n BayanCoreTranslatePipe,\r\n BayanCoreChangePasswordWidgetComponent,\r\n BayanCoreAboutDialogWidgetComponent\r\n ],\r\n templateUrl: './settings-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreSettingsWidgetComponent implements OnInit, OnChanges {\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n private readonly alertToastService = inject(SkyAlertToastService);\r\n @Input() baseUrl: string = '';\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n @Input() ActivePropertyChanged: boolean = false;\r\n @Input() systemModule : SystemModule | null =null;\r\n\r\n @Input() checkIcon: any = faCheck;\r\n @Input() cogIcon: any = faCog;\r\n @Input() infoIcon: any = faInfoCircle;\r\n @Input() dropdownOpen = signal(false);\r\n showChangePassword = false;\r\n showAbout = false;\r\n currentModule: SystemModule | null = null;\r\n SystemModule = SystemModule;\r\n // CSS class bindings for customization\r\n @Input() dropdownHostClass: string = 'dropdown menu-dropdown-host';\r\n @Input() toggleBtnClass: string = 'menu-icon-btn';\r\n @Input() menuPanelClass: string = 'settings-menu menu-dropdown-panel';\r\n @Input() sectionLabelClass: string = 'menu-section-label';\r\n @Input() menuRowClass: string = 'header-dropdown-item';\r\n @Input() dividerClass: string = 'dropdown-divider';\r\n @Input() indicatorClass: string = 'menu-indicator';\r\n @Input() indicatorActiveClass: string = 'menu-indicator menu-indicator-active';\r\n @Input() indicatorInvisibleClass: string = 'menu-indicator invisible';\r\n\r\n @Output() alternateNamesChange = new EventEmitter<boolean>();\r\n @Output() nameModeChange = new EventEmitter<EmployeeNamesModeOption>();\r\n\r\n preferences: AppFramePreferences | null = null;\r\n BlockableModule = BlockableModule;\r\n EmployeeNamesModeOption = EmployeeNamesModeOption;\r\n hrBlockState: ModuleBlockState | null = null;\r\n tkBlockState: ModuleBlockState | null = null;\r\n changePasswordDialog = {\r\n title: 'ChangePassword',\r\n currentPasswordLabel: 'CurrentPassword',\r\n newPasswordLabel: 'NewPassword',\r\n confirmNewPasswordLabel: 'ConfirmPassword',\r\n primaryButtonText: 'Change',\r\n };\r\n\r\n aboutDialog = {\r\n title: 'Sky Bayan Human Resources Management',\r\n logoUrl: 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-enterprise.png',\r\n version: '',\r\n versionLabel: 'Version',\r\n copyright: `Copyright 2026, Sky Software Co LLC All Rights Reserved\\nSky Bayan and Sky Bayan Logo are registered trademarks of Sky Software`,\r\n statusLabel: 'SkyBayanUpToDate',\r\n licenseButtonLabel: 'LicenseInformation',\r\n releaseNotesButtonLabel: 'ReleaseNotes',\r\n supportButtonLabel: 'TechnicalSupport',\r\n closeButtonLabel: 'Close',\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {\r\n }\r\n\r\n // ...existing methods...\r\n\r\n showAlert(message: string, type: string = 'success') {\r\n this.alertToastService.toastInformation(message, type as any);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadPreferences();\r\n this.loadModuleBlockStates();\r\n }\r\n\r\n loadModuleBlockStates() {\r\n if (this.baseUrl) {\r\n this.menuService.getModuleBlockState(this.baseUrl, BlockableModule.HumanResources).subscribe({\r\n next: state => this.hrBlockState = state,\r\n error: () => this.hrBlockState = null\r\n });\r\n this.menuService.getModuleBlockState(this.baseUrl, BlockableModule.Timekeeping).subscribe({\r\n next: state => this.tkBlockState = state,\r\n error: () => this.tkBlockState = null\r\n });\r\n }\r\n }\r\n\r\n loadPreferences() {\r\n if (this.baseUrl) {\r\n this.menuService.getPreferences(this.baseUrl).subscribe({\r\n next: prefs => {\r\n this.preferences = prefs;\r\n this.aboutDialog.version = prefs.VersionNumber;\r\n },\r\n error: () => {\r\n this.preferences = null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // No need to derive flags, use preferences directly in template and logic.\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n changes['ActivePropertyChanged']\r\n && !changes['ActivePropertyChanged'].firstChange\r\n && changes['ActivePropertyChanged'].previousValue !== changes['ActivePropertyChanged'].currentValue\r\n ) {\r\n this.dropdownOpen.set(false);\r\n this.loadPreferences();\r\n this.loadModuleBlockStates();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const target = event.target as Node | null;\r\n if (target && !this.elementRef.nativeElement.contains(target)) {\r\n this.dropdownOpen.set(false);\r\n }\r\n }\r\n\r\n toggleDropdown(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.update((value) => !value);\r\n }\r\n\r\n async onAlternateNamesClick(event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.preferences || !this.baseUrl) {\r\n return;\r\n }\r\n // Toggle the value\r\n this.preferences.UseAlternateNames = !this.preferences.UseAlternateNames;\r\n const newValue = !this.preferences.UseAlternateNames;\r\n try {\r\n await this.menuService.setDisplayAlternateNames(this.baseUrl, { DisplayAlternateNames: newValue }).toPromise();\r\n await this.loadPreferences();\r\n this.alternateNamesChange.emit(newValue);\r\n } catch (err) {}\r\n }\r\n\r\n async onNameModeClick(nameMode: EmployeeNamesModeOption, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n\r\n if (!this.preferences || !this.baseUrl) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.menuService.setEmployeeNamesMode(this.baseUrl, { EmployeeNamesMode: nameMode }).toPromise();\r\n // Reload preferences\r\n await this.loadPreferences();\r\n this.nameModeChange.emit(nameMode);\r\n } catch (err) {\r\n // Optionally handle error\r\n }\r\n }\r\n\r\n onChangePasswordClick(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.showChangePassword = true;\r\n }\r\n\r\n onOpenAboutClick(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.showAbout = true;\r\n }\r\n\r\n async blockModule(module: BlockableModule, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.baseUrl) return;\r\n try {\r\n await this.menuService.blockModule(this.baseUrl, { Module: module }).toPromise();\r\n await this.loadModuleBlockStates();\r\n const key = module === BlockableModule.HumanResources ? 'BlockHRSuccess' : 'BlockTKSuccess';\r\n this.showAlert(key);\r\n } catch {}\r\n }\r\n\r\n async releaseModule(module: BlockableModule, event: Event): Promise<void> {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n if (!this.baseUrl) return;\r\n try {\r\n await this.menuService.releaseModule(this.baseUrl, { Module: module }).toPromise();\r\n await this.loadModuleBlockStates();\r\n const key = module === BlockableModule.HumanResources ? 'ReleaseHRSuccess' : 'ReleaseTKSuccess';\r\n this.showAlert(key);\r\n } catch {}\r\n }\r\n}\r\n","<div [class]=\"dropdownHostClass\" [class.open]=\"dropdownOpen()\">\r\n <a href=\"#\" [class]=\"toggleBtnClass\" (click)=\"toggleDropdown($event)\" [title]=\"'Settings' | translate\">\r\n <fa-icon [icon]=\"cogIcon\" class=\"fs-6\"></fa-icon>\r\n </a>\r\n\r\n @if (dropdownOpen()) {\r\n <ul [class]=\"menuPanelClass\">\r\n @if (preferences?.UseAlternateNames) {\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onAlternateNamesClick($event)\">\r\n @if (preferences?.DisplayAlternateNames) {\r\n <fa-icon [class]=\"indicatorActiveClass\" [icon]=\"checkIcon\"></fa-icon>\r\n } @else {\r\n <fa-icon [class]=\"indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n }\r\n {{ 'DisplayAlternateNames' | translate }}\r\n </a>\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n <li>\r\n <span [class]=\"sectionLabelClass + ' menu-section-label'\">{{ 'EmployeeNamesMode' | translate }}</span>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.FullNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.FullNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.FullNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'FullNames' | translate }}\r\n </a>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.ShortNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.ShortNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.ShortNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'ShortNames' | translate }}\r\n </a>\r\n </li>\r\n <li>\r\n <a [class]=\"menuRowClass + (preferences?.EmployeeNamesMode === EmployeeNamesModeOption.StandardNames ? ' menu-item-active' : '')\"\r\n (click)=\"onNameModeClick(EmployeeNamesModeOption.StandardNames, $event); $event.stopPropagation()\">\r\n <fa-icon [class]=\"preferences?.EmployeeNamesMode === EmployeeNamesModeOption.StandardNames ? indicatorActiveClass : indicatorInvisibleClass\" [icon]=\"checkIcon\"></fa-icon>\r\n {{ 'StandardNames' | translate }}\r\n </a>\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n\r\n @if (hrBlockState && hrBlockState.UserCanBlockModule && systemModule == SystemModule.Payroll) {\r\n <li>\r\n @if (hrBlockState.IsBlocked) {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"releaseModule(BlockableModule.HumanResources, $event)\">\r\n {{ 'ReleaseHR' | translate }}\r\n </a>\r\n } @else {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"blockModule(BlockableModule.HumanResources, $event)\">\r\n {{ 'BlockHR' | translate }}\r\n </a>\r\n }\r\n </li>\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n @if (tkBlockState && tkBlockState.UserCanBlockModule && systemModule == SystemModule.HumanResources) {\r\n <li>\r\n @if (tkBlockState.IsBlocked) {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"releaseModule(BlockableModule.Timekeeping, $event)\">\r\n {{ 'ReleaseTK' | translate }}\r\n </a>\r\n } @else {\r\n <a class='header-dropdown-item ms-3 ps-3' (click)=\"blockModule(BlockableModule.Timekeeping, $event)\">\r\n {{ 'BlockTK' | translate }}\r\n </a>\r\n }\r\n </li>\r\n <li><hr [class]=\"dividerClass\">></li>\r\n }\r\n\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onChangePasswordClick($event)\">\r\n <span [class]=\"indicatorClass\"></span>\r\n {{ 'ChangePassword' | translate }}\r\n </a>\r\n </li>\r\n\r\n <li><hr [class]=\"dividerClass\"></li>\r\n\r\n <li>\r\n <a [class]=\"menuRowClass\" (click)=\"onOpenAboutClick($event)\">\r\n <fa-icon [class]=\"indicatorClass\" [icon]=\"infoIcon\"></fa-icon>\r\n {{ 'About' | translate }}\r\n </a>\r\n </li>\r\n </ul>\r\n }\r\n</div>\r\n\r\n<bayan-core-change-password-widget\r\n [baseUrl]=\"baseUrl\"\r\n [visible]=\"showChangePassword\"\r\n [config]=\"changePasswordDialog\"\r\n (visibleChange)=\"showChangePassword = !!$event\">\r\n </bayan-core-change-password-widget>\r\n\r\n <bayan-core-about-dialog-widget\r\n [visible]=\"showAbout\"\r\n [config]=\"aboutDialog\"\r\n [licenseUrl]=\"licenseUrl\"\r\n [releaseNotesUrl]=\"releaseNotesUrl\"\r\n [supportUrl]=\"supportUrl\"\r\n (visibleChange)=\"showAbout = !!$event\">\r\n </bayan-core-about-dialog-widget>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, computed, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faPersonRunning } from '@fortawesome/pro-solid-svg-icons';\r\nimport { BayanEmployeeBadgeComponent, BayanEmployeeBadgeDTO } from '@skysoftware-co/bayan-components-ui';\r\nimport { BayanCoreTranslatePipe } from '../../../shared/pipes/translate.pipe';\r\nimport { UserPanel, PropertyOption } from '../../../shared/menu.dtos';\r\nimport { BayanCoreTopMenuService } from '../../../shared/menu.service';\r\n\r\n@Component({\r\n selector: 'bayan-core-user-panel-widget',\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, BayanEmployeeBadgeComponent, BayanCoreTranslatePipe],\r\n templateUrl: './user-panel-widget.component.html',\r\n styleUrls: ['../../top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreUserPanelWidgetComponent implements OnInit, OnChanges {\r\n private readonly topMenuService = inject(BayanCoreTopMenuService);\r\n\r\n @Input() baseUrl = '';\r\n @Input() wrapperClass = 'menu-dropdown-host';\r\n @Input() dropdownOpenClass = 'open';\r\n @Input() toggleButtonClass = 'employee-toggle';\r\n @Input() employeeInfoClass = 'employee-info';\r\n @Input() userNameClass = 'user-name';\r\n @Input() propertyNameClass = 'property-name';\r\n @Input() caretClass = 'employee-caret';\r\n @Input() menuClass = 'employee-menu menu-dropdown-panel';\r\n @Input() sectionLabelClass = 'menu-section-label';\r\n @Input() menuItemClass = 'menu-item';\r\n @Input() menuItemActiveClass = 'menu-item-active';\r\n @Input() indicatorClass = 'menu-indicator';\r\n @Input() invisibleIndicatorClass = 'menu-indicator invisible';\r\n @Input() dividerClass = 'menu-divider';\r\n @Input() signOutButtonClass = 'menu-item menu-item-signout';\r\n @Input() showSignOutIcon = true;\r\n @Input() signOutIconClass = 'mx-2';\r\n\r\n @Output() propertyChanged = new EventEmitter<PropertyOption>();\r\n @Output() signOutClick = new EventEmitter<void>();\r\n\r\n readonly signOutIcon = faPersonRunning;\r\n readonly dropdownOpen = signal(false);\r\n readonly userPanel = signal<UserPanel | null>(null);\r\n\r\n readonly badge = computed<BayanEmployeeBadgeDTO>(() => ({\r\n EmployeePhotoKey: this.userPanel()?.PhotoPath ?? null,\r\n EmployeePhotoFailed: false,\r\n EmployeeNameInitials: this.userPanel()?.NameInitials ?? '',\r\n }));\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\r\n\r\n ngOnInit(): void {\r\n this.loadUserPanel();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['baseUrl'] && !changes['baseUrl'].firstChange) {\r\n this.loadUserPanel();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n const target = event.target as Node | null;\r\n if (target && !this.elementRef.nativeElement.contains(target)) {\r\n this.dropdownOpen.set(false);\r\n }\r\n }\r\n\r\n toggleDropdown(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.update((value) => !value);\r\n }\r\n\r\n selectProperty(event: Event, property: PropertyOption): void {\r\n event.preventDefault();\r\n if (property.PropertyId === this.userPanel()?.ActivePropertyId) {\r\n this.dropdownOpen.set(false);\r\n return;\r\n }\r\n\r\n this.dropdownOpen.set(false);\r\n\r\n this.topMenuService\r\n .switchProperty(this.baseUrl, { PropertyId: property.PropertyId })\r\n .subscribe({\r\n next: () => {\r\n this.topMenuService.getUserPanel(this.baseUrl).subscribe({\r\n next: (userPanel) => {\r\n this.userPanel.set(userPanel);\r\n this.propertyChanged.emit(property);\r\n },\r\n });\r\n },\r\n });\r\n }\r\n\r\n signOut(event: Event): void {\r\n event.preventDefault();\r\n this.dropdownOpen.set(false);\r\n this.signOutClick.emit();\r\n }\r\n\r\n private loadUserPanel(): void {\r\n if (!this.baseUrl) {\r\n this.userPanel.set(null);\r\n return;\r\n }\r\n\r\n this.topMenuService.getUserPanel(this.baseUrl).subscribe({\r\n next: (userPanel) => {\r\n this.userPanel.set(userPanel);\r\n let property : PropertyOption = {\r\n PropertyId: userPanel.ActivePropertyId,\r\n PropertyName: userPanel.ActivePropertyName };\r\n this.propertyChanged.emit(property);\r\n },\r\n error: () => {\r\n this.userPanel.set(null);\r\n },\r\n });\r\n }\r\n}\r\n","<div [ngClass]=\"[wrapperClass, dropdownOpen() ? dropdownOpenClass : '']\">\r\n <a href=\"#\" [class]=\"toggleButtonClass\" (click)=\"toggleDropdown($event)\">\r\n <bayan-employee-badge [badge]=\"badge()\" width=\"34px\" height=\"34px\"></bayan-employee-badge>\r\n\r\n <div [class]=\"employeeInfoClass\">\r\n <span [class]=\"userNameClass\">{{ userPanel()?.UserDisplayName || '' }}</span>\r\n\r\n @if (userPanel()?.ActivePropertyName) {\r\n <span [class]=\"propertyNameClass\">{{ userPanel()?.ActivePropertyName }}</span>\r\n }\r\n </div>\r\n\r\n <span [class]=\"caretClass\">▼</span>\r\n </a>\r\n\r\n @if (dropdownOpen()) {\r\n <ul [class]=\"menuClass\">\r\n @if ((userPanel()?.Properties?.length || 0) > 0) {\r\n <li [class]=\"sectionLabelClass\">{{ 'Properties' | translate }}</li>\r\n\r\n @for (property of userPanel()?.Properties ?? []; track property.PropertyId) {\r\n <li>\r\n <a\r\n class=\"text-dark-gray\"\r\n [ngClass]=\"[menuItemClass, property.PropertyId === userPanel()?.ActivePropertyId ? menuItemActiveClass : '']\"\r\n (click)=\"selectProperty($event, property)\">\r\n @if (property.PropertyId === userPanel()?.ActivePropertyId) {\r\n <span [class]=\"indicatorClass\">►</span>\r\n } @else {\r\n <span [class]=\"indicatorClass + ' ' + invisibleIndicatorClass\"></span>\r\n }\r\n\r\n {{ property.PropertyName }}\r\n </a>\r\n </li>\r\n }\r\n\r\n <li><hr [class]=\"dividerClass\"></li>\r\n }\r\n\r\n @if (!userPanel()?.IsSSOLogin) {\r\n <li>\r\n <a class=\"text-dark-gray\" [class]=\"signOutButtonClass\"\r\n [ngClass]=\"{'ms-3': !showSignOutIcon}\" (click)=\"signOut($event)\">\r\n @if (showSignOutIcon) {\r\n <fa-icon [class]=\"signOutIconClass\" [icon]=\"signOutIcon\"></fa-icon>\r\n }\r\n {{ 'SignOut' | translate }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n</div>\r\n","import { TranslatePipe } from '@skysoftware-co/sky-components-ui';\r\nimport { BayanCoreTranslateService } from './../shared/services/translate.service';\r\nimport { BayanCoreTranslatePipe } from './../shared/pipes/translate.pipe';\r\nimport { GlobalSearchMenu } from '../shared/menu.dtos';\r\nimport { ElementRef } from '@angular/core';\r\nimport { BayanCoreTopMenuService } from '../shared/menu.service';\r\nimport { TopMenuShortcut, PropertyOption, SystemModule, EmployeeNamesModeOption } from '../shared/menu.dtos';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, inject, signal } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { faQuestionCircle } from '@fortawesome/pro-solid-svg-icons';\r\nimport { Router } from '@angular/router';\r\nimport { DxToolbarModule } from 'devextreme-angular';\r\nimport { BayanCoreGlobalSearchWidgetComponent } from './components/global-search-widget/global-search-widget.component';\r\nimport { BayanCoreItemWidgetComponent } from './components/item-widget/item-widget.component';\r\nimport { BayanCoreNotificationsWidgetComponent } from './components/notifications-widget/notifications-widget.component';\r\nimport { BayanCoreSettingsWidgetComponent } from './components/settings-widget/settings-widget.component';\r\nimport { BayanCoreUserPanelWidgetComponent } from './components/user-panel-widget/user-panel-widget.component';\r\n\r\n\r\n@Component({\r\n selector: 'bayan-core-top-menu-widget',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DxToolbarModule,\r\n FontAwesomeModule,\r\n BayanCoreItemWidgetComponent,\r\n BayanCoreGlobalSearchWidgetComponent,\r\n BayanCoreUserPanelWidgetComponent,\r\n BayanCoreSettingsWidgetComponent,\r\n BayanCoreNotificationsWidgetComponent,\r\n BayanCoreTranslatePipe\r\n ],\r\n templateUrl: './top-menu-widget.component.html',\r\n styleUrls: ['./top-menu-widget.styles.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BayanCoreTopMenuWidgetComponent implements OnInit {\r\n constructor(private elementRef: ElementRef) {}\r\n private TranslateService = inject(BayanCoreTranslateService);\r\n globalSearchWidget?: BayanCoreGlobalSearchWidgetComponent;\r\n\r\n globalSearchResults: GlobalSearchMenu[] = [];\r\n private readonly document = inject(DOCUMENT);\r\n private readonly router = inject(Router);\r\n private readonly menuService = inject(BayanCoreTopMenuService);\r\n openDropdownIndex: number | null = null;\r\n\r\n @Input() baseUrl = '';\r\n @Input() systemModule : SystemModule | null =null;\r\n menuItems: TopMenuShortcut[] = [];\r\n\r\n @Input() sidebarCollapsed = false;\r\n @Input() homeUrl: string | null = null;\r\n @Input() logoUrl = 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-enterprise-dark.png';\r\n @Input() collapsedLogoUrl = 'https://cdn-dev.skysoftware.cloud/bayan/images/logo-collapsed.png';\r\n @Output() logoClick = new EventEmitter<void>();\r\n\r\n @Input() isSsoLogin = false;\r\n\r\n // Removed useInternalDialogs and all related logic\r\n\r\n @Input() showGlobalSearch = true;\r\n @Input() showUserPanel = true;\r\n @Input() showSettings = true;\r\n @Input() showShortcutMenus = true;\r\n @Input() showNotifications = true;\r\n @Input() notificationsTitle = 'Notifications';\r\n\r\n @Input() showHelp = true;\r\n @Input() helpTitle = 'Help';\r\n @Input() helpUrl: string | null = 'https://docs.bayan.solutions/Bayan/index.html';\r\n @Input() helpIcon: IconDefinition = faQuestionCircle;\r\n @Input() helpAnchorClass = 'menu-icon-btn';\r\n @Input() helpUrlTarget: '_self' | '_blank' | string = '_blank';\r\n @Input() licenseUrl = '';\r\n @Input() releaseNotesUrl = '';\r\n @Input() supportUrl = 'https://skyits.com/contact';\r\n\r\n @Output() helpClick = new EventEmitter<void>();\r\n @Output() menuItemClick = new EventEmitter<TopMenuShortcut>();\r\n @Output() searchSubmit = new EventEmitter<string>();\r\n @Output() propertyChanged = new EventEmitter<PropertyOption>();\r\n @Output() signOutClick = new EventEmitter<void>();\r\n @Output() alternateNamesChange = new EventEmitter<boolean>();\r\n @Output() employeeNameModeChange = new EventEmitter<EmployeeNamesModeOption>();\r\n\r\n readonly aboutVisible = signal(false);\r\n readonly changePasswordVisible = signal(false);\r\n\r\n ActivePropertyChanged = false;\r\n ActivePropertyId: number = 0;\r\n\r\n ngOnInit(): void {\r\n this.loadShortcutMenus();\r\n this.loadGlobalSearchResults();\r\n }\r\n\r\n private loadGlobalSearchResults(): void {\r\n if (this.baseUrl && this.ActivePropertyId > 0) {\r\n this.menuService.getGlobalSearchMenus(this.baseUrl, this.ActivePropertyId).subscribe({\r\n next: (menus: any) => this.globalSearchResults = menus ?? [],\r\n error: () => this.globalSearchResults = []\r\n });\r\n } else {\r\n this.globalSearchResults = [];\r\n }\r\n }\r\n\r\n onEmployeeNameModeChange(event: any): void {\r\n this.employeeNameModeChange.emit(event);\r\n }\r\n\r\n getLogoSrc(): string | null {\r\n if (this.sidebarCollapsed) {\r\n return this.collapsedLogoUrl || null;\r\n }\r\n\r\n return this.logoUrl || null;\r\n }\r\n\r\n onLogoClicked(event?: Event): void {\r\n event?.preventDefault();\r\n if(this.homeUrl){\r\n window.location.href = this.homeUrl;\r\n return;\r\n }\r\n\r\n this.logoClick.emit();\r\n }\r\n\r\n onHelpClicked(event?: Event): void {\r\n event?.preventDefault();\r\n if(this.helpUrl){\r\n window.open(this.helpUrl, this.helpUrlTarget);\r\n return;\r\n }\r\n this.helpClick.emit();\r\n }\r\n\r\n onPropertyChanged(property: PropertyOption): void {\r\n this.ActivePropertyChanged = !this.ActivePropertyChanged;\r\n this.ActivePropertyId = property.PropertyId;\r\n this.loadShortcutMenus();\r\n this.loadGlobalSearchResults();\r\n this.propertyChanged.emit(property);\r\n }\r\n\r\n private loadShortcutMenus(): void {\r\n this.menuItems=[];\r\n if(!this.showShortcutMenus) return;\r\n if(!this.baseUrl) return;\r\n if(!this.systemModule) return;\r\n\r\n if (this.ActivePropertyId > 0) {\r\n this.menuService.getMicroserviceTopMenusShortcut(this.baseUrl, this.ActivePropertyId, this.systemModule)\r\n .subscribe({\r\n next: (menus: any) => this.menuItems = menus ?? [],\r\n error: () => this.menuItems = []\r\n });\r\n } else {\r\n this.menuItems = [];\r\n }\r\n }\r\n}\r\n","<header class=\"top-bar-header shadow-sm w-100 sticky-top\">\r\n <dx-toolbar class=\"header-toolbar px-4\">\r\n <dxi-item location=\"before\">\r\n <div *dxTemplate>\r\n <a\r\n class=\"navbar-brand-link\" href=\"#\"\r\n [class.collapsed]=\"sidebarCollapsed\"\r\n (click)=\"onLogoClicked($event)\">\r\n <img\r\n [src]=\"getLogoSrc()\"\r\n alt=\"\"\r\n [class.header-logo]=\"!sidebarCollapsed\"\r\n [class.header-logo-collapsed]=\"sidebarCollapsed && !!collapsedLogoUrl\">\r\n </a>\r\n </div>\r\n </dxi-item>\r\n\r\n @if (showShortcutMenus) {\r\n <dxi-item location=\"before\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <ul class=\"nav navbar-nav d-flex flex-row align-items-center mb-0 gap-1\">\r\n @for (item of menuItems; track item.MenuName) {\r\n <bayan-core-item-widget [item]=\"item\"\r\n [baseUrl]=\"baseUrl\"\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n (itemClick)=\"menuItemClick.emit($event)\">\r\n </bayan-core-item-widget>\r\n }\r\n </ul>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showGlobalSearch) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-global-search-widget\r\n #globalSearchWidget\r\n [baseUrl]=\"baseUrl\"\r\n [dataSource]=\"globalSearchResults\"\r\n (search)=\"searchSubmit.emit($event)\">\r\n </bayan-core-global-search-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showUserPanel) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-user-panel-widget\r\n [baseUrl]=\"baseUrl\"\r\n [showSignOutIcon]=\"false\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n (signOutClick)=\"signOutClick.emit()\">\r\n </bayan-core-user-panel-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showSettings) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-settings-widget\r\n [ActivePropertyChanged]=\"ActivePropertyChanged\"\r\n [baseUrl]=\"baseUrl\"\r\n [licenseUrl]=\"licenseUrl\"\r\n [releaseNotesUrl]=\"releaseNotesUrl\"\r\n [supportUrl]=\"supportUrl\"\r\n [systemModule]=\"systemModule\"\r\n (alternateNamesChange)=\"alternateNamesChange.emit($event)\"\r\n (employeeNameModeChange)=\"onEmployeeNameModeChange($event)\">\r\n </bayan-core-settings-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showNotifications) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <bayan-core-notifications-widget [baseUrl]=\"baseUrl\"\r\n [title]=\"notificationsTitle | translate\" >\r\n </bayan-core-notifications-widget>\r\n </div>\r\n </dxi-item>\r\n }\r\n\r\n @if (showHelp) {\r\n <dxi-item location=\"after\" locateInMenu=\"never\">\r\n <div *dxTemplate>\r\n <a\r\n [class]=\"helpAnchorClass\"\r\n [title]=\"helpTitle | translate\"\r\n [target]=\"helpUrlTarget\"\r\n href=\"#\"\r\n (click)=\"onHelpClicked($event)\">\r\n <fa-icon [icon]=\"helpIcon\" class=\"fs-6\"></fa-icon>\r\n </a>\r\n </div>\r\n </dxi-item>\r\n }\r\n </dx-toolbar>\r\n</header>\r\n\r\n<!-- Dialogs are now rendered inside settings-widget, not here -->\r\n","/*\r\n * Public API Surface of bayan-core-ui\r\n */\r\n\r\nexport * from './lib/top-menu-widget/top-menu-widget.component';\r\nexport * from './lib/top-menu-widget/components/about-dialog-widget/about-dialog-widget.component';\r\nexport * from './lib/top-menu-widget/components/change-password-widget/change-password-widget.component';\r\nexport * from './lib/top-menu-widget/components/global-search-widget/global-search-widget.component';\r\nexport * from './lib/top-menu-widget/components/item-widget/item-widget.component';\r\nexport * from './lib/top-menu-widget/components/notifications-widget/notifications-widget.component';\r\nexport * from './lib/top-menu-widget/components/settings-widget/settings-widget.component';\r\nexport * from './lib/top-menu-widget/components/user-panel-widget/user-panel-widget.component';\r\nexport * from './lib/shared/menu.dtos';\r\nexport * from './lib/shared/menu.service';\r\nexport * from './lib/shared/pipes/translate.pipe';\r\nexport * from './lib/shared/services/translate.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BayanCoreTranslateService","i3","i1","i2","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|