@unopsitg/ux 21.0.19 → 21.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unopsitg/ux",
3
- "version": "21.0.19",
3
+ "version": "21.0.21",
4
4
  "description": "UNOPS Angular 21 layout shell, brand theme (PrimeNG / PrimeUIX), and shared types",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,6 +1,6 @@
1
1
  import * as _primeuix_themes_types from '@primeuix/themes/types';
2
2
  import * as _angular_core from '@angular/core';
3
- import { InjectionToken, TemplateRef, OnInit, OnDestroy, ElementRef, AfterViewChecked, AfterViewInit, QueryList, OnChanges, SimpleChanges } from '@angular/core';
3
+ import { InjectionToken, Signal, TemplateRef, OnInit, OnDestroy, ElementRef, AfterViewChecked, AfterViewInit, QueryList, OnChanges, SimpleChanges } from '@angular/core';
4
4
  import { QueryParamsHandling, IsActiveMatchOptions, Router } from '@angular/router';
5
5
  import * as _unopsitg_ux from '@unopsitg/ux';
6
6
  import * as rxjs from 'rxjs';
@@ -294,6 +294,55 @@ interface TopbarMobileLogoConfig {
294
294
  alt: string;
295
295
  }
296
296
  declare const TOPBAR_MOBILE_LOGO: InjectionToken<TopbarMobileLogoConfig>;
297
+ interface TopbarLanguageItem {
298
+ code: string;
299
+ label: string;
300
+ flag: string;
301
+ }
302
+ interface TopbarLanguageConfig {
303
+ languages: TopbarLanguageItem[];
304
+ defaultLanguage?: string;
305
+ onLanguageChange?: (code: string) => void;
306
+ }
307
+ declare const TOPBAR_LANGUAGE_CONFIG: InjectionToken<TopbarLanguageConfig>;
308
+ interface TopbarProfileMenuItem {
309
+ id: string;
310
+ label: string;
311
+ icon: string;
312
+ separator?: boolean;
313
+ command: () => void;
314
+ }
315
+ interface TopbarProfileMenuConfig {
316
+ items: TopbarProfileMenuItem[];
317
+ }
318
+ declare const TOPBAR_PROFILE_MENU_CONFIG: InjectionToken<TopbarProfileMenuConfig>;
319
+ interface TopbarNotificationItem {
320
+ id: number;
321
+ message: string;
322
+ category: string;
323
+ time: string;
324
+ isRead: boolean;
325
+ entity?: string;
326
+ entityId?: number;
327
+ icon?: string;
328
+ }
329
+ interface TopbarNotificationTab {
330
+ id: string;
331
+ label: string;
332
+ badge?: string;
333
+ }
334
+ interface TopbarNotificationConfig {
335
+ tabs: Signal<TopbarNotificationTab[]>;
336
+ items: Signal<TopbarNotificationItem[]>;
337
+ selectedTab: Signal<string>;
338
+ unreadCount: Signal<number>;
339
+ onTabChange: (tabId: string) => void;
340
+ onItemClick: (item: TopbarNotificationItem) => void;
341
+ onMarkAsRead: (item: TopbarNotificationItem) => void;
342
+ onMarkAllAsRead: () => void;
343
+ onPanelOpen?: () => void;
344
+ }
345
+ declare const TOPBAR_NOTIFICATION_CONFIG: InjectionToken<TopbarNotificationConfig>;
297
346
 
298
347
  interface LayoutConfig {
299
348
  preset: string;
@@ -413,6 +462,7 @@ declare class AppSidebar implements OnInit, OnDestroy {
413
462
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSidebar, "[app-sidebar]", never, {}, {}, never, never, true, never>;
414
463
  }
415
464
 
465
+ type DropdownId = 'notifications' | 'language' | 'profile' | null;
416
466
  interface NotificationsBars {
417
467
  id: string;
418
468
  label: string;
@@ -426,19 +476,19 @@ declare class AppTopbar implements AfterViewChecked {
426
476
  isDarkTheme: _angular_core.Signal<boolean>;
427
477
  isSidebarPinned: _angular_core.Signal<boolean>;
428
478
  searchActive: _angular_core.WritableSignal<boolean>;
429
- profileMenuOpen: _angular_core.WritableSignal<boolean>;
479
+ activeDropdown: _angular_core.WritableSignal<DropdownId>;
430
480
  private shouldFocusSearch;
431
481
  menuButton: ElementRef;
432
482
  searchInput?: ElementRef<HTMLInputElement>;
483
+ notificationsItem: ElementRef;
484
+ languageItem: ElementRef;
433
485
  profileItem: ElementRef;
434
- profilePanel: ElementRef;
435
486
  notificationsBars: _angular_core.WritableSignal<NotificationsBars[]>;
436
487
  notifications: _angular_core.WritableSignal<any[]>;
437
- languages: _angular_core.WritableSignal<{
438
- code: string;
439
- label: string;
440
- flag: string;
441
- }[]>;
488
+ private readonly langConfig;
489
+ readonly profileMenuConfig: _unopsitg_ux.TopbarProfileMenuConfig | null;
490
+ readonly notifConfig: _unopsitg_ux.TopbarNotificationConfig | null;
491
+ languages: _angular_core.WritableSignal<_unopsitg_ux.TopbarLanguageItem[]>;
442
492
  selectedLanguage: _angular_core.WritableSignal<string>;
443
493
  selectedNotificationBar: _angular_core.ModelSignal<string>;
444
494
  selectedNotificationsBarData: _angular_core.Signal<any>;
@@ -448,7 +498,9 @@ declare class AppTopbar implements AfterViewChecked {
448
498
  showRightMenu(): void;
449
499
  onConfigButtonClick(): void;
450
500
  selectLanguage(code: string): void;
451
- toggleProfileMenu(event: Event): void;
501
+ onNotificationBellClick(): void;
502
+ toggleDropdown(id: DropdownId, event: Event): void;
503
+ closeDropdown(): void;
452
504
  onDocumentClick(event: MouseEvent): void;
453
505
  openSearch(): void;
454
506
  closeSearch(): void;
@@ -966,5 +1018,5 @@ interface Partner {
966
1018
  lastModifiedDate?: Date | null;
967
1019
  }
968
1020
 
969
- export { AiCardBgComponent, AiInsightsCardComponent, AppBreadcrumb, AppConfigurator, AppFooter, AppLayout, AppMenu, AppMenuitem, AppRightMenu, AppSearch, AppSidebar, AppTopbar, AuthLayout, BrandContrast, BrandCrisp, BrandSoft, CompletionStepsComponent, DetailLayoutComponent, DetailTabDirective, DocumentsCardComponent, FooterMainComponent, FooterService, LayoutService, MENU_MODEL, PillTabsComponent, SIDEBAR_LOGO, TOPBAR_MOBILE_LOGO, TaskDrawerComponent, UxSelectComponent, brandPresets, brandPrimitives };
970
- export type { AiInsight, CompletionCategory, CompletionStep, DetailTab, DocumentItem, LayoutConfig, Member, MenuItem, Partner, PillTabItem, SidebarLogoConfig, TaskDrawerMember, TaskDrawerTask, TopbarMobileLogoConfig };
1021
+ export { AiCardBgComponent, AiInsightsCardComponent, AppBreadcrumb, AppConfigurator, AppFooter, AppLayout, AppMenu, AppMenuitem, AppRightMenu, AppSearch, AppSidebar, AppTopbar, AuthLayout, BrandContrast, BrandCrisp, BrandSoft, CompletionStepsComponent, DetailLayoutComponent, DetailTabDirective, DocumentsCardComponent, FooterMainComponent, FooterService, LayoutService, MENU_MODEL, PillTabsComponent, SIDEBAR_LOGO, TOPBAR_LANGUAGE_CONFIG, TOPBAR_MOBILE_LOGO, TOPBAR_NOTIFICATION_CONFIG, TOPBAR_PROFILE_MENU_CONFIG, TaskDrawerComponent, UxSelectComponent, brandPresets, brandPrimitives };
1022
+ export type { AiInsight, CompletionCategory, CompletionStep, DetailTab, DocumentItem, LayoutConfig, Member, MenuItem, Partner, PillTabItem, SidebarLogoConfig, TaskDrawerMember, TaskDrawerTask, TopbarLanguageConfig, TopbarLanguageItem, TopbarMobileLogoConfig, TopbarNotificationConfig, TopbarNotificationItem, TopbarNotificationTab, TopbarProfileMenuConfig, TopbarProfileMenuItem };