@unopsitg/ux 21.0.19 → 21.0.20

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.
@@ -35,27 +35,25 @@ import * as i4$2 from 'primeng/ripple';
35
35
  import { RippleModule } from 'primeng/ripple';
36
36
  import * as i3$3 from 'primeng/tooltip';
37
37
  import { TooltipModule } from 'primeng/tooltip';
38
- import * as i10 from 'primeng/avatar';
38
+ import * as i9 from 'primeng/avatar';
39
39
  import { AvatarModule } from 'primeng/avatar';
40
- import * as i8 from 'primeng/badge';
40
+ import * as i7 from 'primeng/badge';
41
41
  import { BadgeModule } from 'primeng/badge';
42
- import * as i5$1 from 'primeng/iconfield';
42
+ import * as i4$3 from 'primeng/iconfield';
43
43
  import { IconFieldModule } from 'primeng/iconfield';
44
- import * as i6 from 'primeng/inputicon';
44
+ import * as i5$1 from 'primeng/inputicon';
45
45
  import { InputIconModule } from 'primeng/inputicon';
46
- import * as i9 from 'primeng/overlaybadge';
46
+ import * as i8 from 'primeng/overlaybadge';
47
47
  import { OverlayBadgeModule } from 'primeng/overlaybadge';
48
- import * as i3$4 from 'primeng/styleclass';
49
- import { StyleClassModule } from 'primeng/styleclass';
50
48
  import * as i2$2 from 'primeng/paginator';
51
49
  import { PaginatorModule } from 'primeng/paginator';
52
- import * as i4$3 from 'primeng/tabs';
50
+ import * as i4$4 from 'primeng/tabs';
53
51
  import { TabsModule } from 'primeng/tabs';
54
- import * as i3$5 from 'primeng/fileupload';
52
+ import * as i3$4 from 'primeng/fileupload';
55
53
  import { FileUploadModule } from 'primeng/fileupload';
56
- import * as i7 from 'primeng/menu';
54
+ import * as i7$1 from 'primeng/menu';
57
55
  import { MenuModule } from 'primeng/menu';
58
- import * as i10$1 from 'primeng/panel';
56
+ import * as i10 from 'primeng/panel';
59
57
  import { PanelModule } from 'primeng/panel';
60
58
  import * as i8$1 from 'primeng/table';
61
59
  import { TableModule } from 'primeng/table';
@@ -63,7 +61,7 @@ import * as i9$1 from 'primeng/tag';
63
61
  import { TagModule } from 'primeng/tag';
64
62
  import * as i8$2 from 'primeng/autocomplete';
65
63
  import { AutoCompleteModule } from 'primeng/autocomplete';
66
- import * as i7$1 from 'primeng/datepicker';
64
+ import * as i7$2 from 'primeng/datepicker';
67
65
  import { DatePickerModule } from 'primeng/datepicker';
68
66
  import * as i5$2 from 'primeng/textarea';
69
67
  import { TextareaModule } from 'primeng/textarea';
@@ -1630,12 +1628,13 @@ class AppTopbar {
1630
1628
  isDarkTheme = computed(() => this.layoutService.isDarkTheme(), ...(ngDevMode ? [{ debugName: "isDarkTheme" }] : []));
1631
1629
  isSidebarPinned = computed(() => this.layoutService.isSidebarPinned(), ...(ngDevMode ? [{ debugName: "isSidebarPinned" }] : []));
1632
1630
  searchActive = signal(false, ...(ngDevMode ? [{ debugName: "searchActive" }] : []));
1633
- profileMenuOpen = signal(false, ...(ngDevMode ? [{ debugName: "profileMenuOpen" }] : []));
1631
+ activeDropdown = signal(null, ...(ngDevMode ? [{ debugName: "activeDropdown" }] : []));
1634
1632
  shouldFocusSearch = false;
1635
1633
  menuButton;
1636
1634
  searchInput;
1635
+ notificationsItem;
1636
+ languageItem;
1637
1637
  profileItem;
1638
- profilePanel;
1639
1638
  notificationsBars = signal([
1640
1639
  {
1641
1640
  id: 'inbox',
@@ -1656,21 +1655,21 @@ class AppTopbar {
1656
1655
  id: 'inbox',
1657
1656
  data: [
1658
1657
  {
1659
- image: 'demo/images/avatar/avatar-square-m-2.jpg',
1658
+ initials: 'ML',
1660
1659
  name: 'Michael Lee',
1661
1660
  description: 'You have a new message from the support team regarding your recent inquiry.',
1662
1661
  time: '1 hour ago',
1663
1662
  new: true
1664
1663
  },
1665
1664
  {
1666
- image: 'demo/images/avatar/avatar-square-f-1.jpg',
1665
+ initials: 'AJ',
1667
1666
  name: 'Alice Johnson',
1668
1667
  description: 'Your report has been successfully submitted and is under review.',
1669
1668
  time: '10 minutes ago',
1670
1669
  new: true
1671
1670
  },
1672
1671
  {
1673
- image: 'demo/images/avatar/avatar-square-f-2.jpg',
1672
+ initials: 'ED',
1674
1673
  name: 'Emily Davis',
1675
1674
  description: 'The project deadline has been updated to September 30th. Please check the details.',
1676
1675
  time: 'Yesterday at 4:35 PM',
@@ -1682,14 +1681,14 @@ class AppTopbar {
1682
1681
  id: 'general',
1683
1682
  data: [
1684
1683
  {
1685
- image: 'demo/images/avatar/avatar-square-f-1.jpg',
1684
+ initials: 'AJ',
1686
1685
  name: 'Alice Johnson',
1687
1686
  description: 'Reminder: Your subscription is about to expire in 3 days. Renew now to avoid interruption.',
1688
1687
  time: '30 minutes ago',
1689
1688
  new: true
1690
1689
  },
1691
1690
  {
1692
- image: 'demo/images/avatar/avatar-square-m-2.jpg',
1691
+ initials: 'ML',
1693
1692
  name: 'Michael Lee',
1694
1693
  description: 'The server maintenance has been completed successfully. No further downtime is expected.',
1695
1694
  time: 'Yesterday at 2:15 PM',
@@ -1701,14 +1700,14 @@ class AppTopbar {
1701
1700
  id: 'archived',
1702
1701
  data: [
1703
1702
  {
1704
- image: 'demo/images/avatar/avatar-square-m-1.jpg',
1703
+ initials: 'LB',
1705
1704
  name: 'Lucas Brown',
1706
1705
  description: 'Your appointment with Dr. Anderson has been confirmed for October 12th at 10:00 AM.',
1707
1706
  time: '1 week ago',
1708
1707
  new: true
1709
1708
  },
1710
1709
  {
1711
- image: 'demo/images/avatar/avatar-square-f-2.jpg',
1710
+ initials: 'ED',
1712
1711
  name: 'Emily Davis',
1713
1712
  description: 'The document you uploaded has been successfully archived for future reference.',
1714
1713
  time: '2 weeks ago',
@@ -1718,9 +1717,9 @@ class AppTopbar {
1718
1717
  }
1719
1718
  ], ...(ngDevMode ? [{ debugName: "notifications" }] : []));
1720
1719
  languages = signal([
1721
- { code: 'en', label: 'English', flag: '🇬🇧' },
1722
- { code: 'fr', label: 'French', flag: '🇫🇷' },
1723
- { code: 'es', label: 'Spanish', flag: '🇪🇸' }
1720
+ { code: 'en', label: 'English', flag: '\u{1F1EC}\u{1F1E7}' },
1721
+ { code: 'fr', label: 'French', flag: '\u{1F1EB}\u{1F1F7}' },
1722
+ { code: 'es', label: 'Spanish', flag: '\u{1F1EA}\u{1F1F8}' }
1724
1723
  ], ...(ngDevMode ? [{ debugName: "languages" }] : []));
1725
1724
  selectedLanguage = signal('en', ...(ngDevMode ? [{ debugName: "selectedLanguage" }] : []));
1726
1725
  selectedNotificationBar = model(this.notificationsBars()[0].id ?? 'inbox', ...(ngDevMode ? [{ debugName: "selectedNotificationBar" }] : []));
@@ -1745,18 +1744,27 @@ class AppTopbar {
1745
1744
  }
1746
1745
  selectLanguage(code) {
1747
1746
  this.selectedLanguage.set(code);
1747
+ this.closeDropdown();
1748
1748
  }
1749
- toggleProfileMenu(event) {
1749
+ toggleDropdown(id, event) {
1750
1750
  event.stopPropagation();
1751
- this.profileMenuOpen.update((open) => !open);
1751
+ this.activeDropdown.update((current) => (current === id ? null : id));
1752
+ }
1753
+ closeDropdown() {
1754
+ this.activeDropdown.set(null);
1752
1755
  }
1753
1756
  onDocumentClick(event) {
1754
- if (!this.profileMenuOpen())
1757
+ if (!this.activeDropdown())
1755
1758
  return;
1756
1759
  const target = event.target;
1757
- const insideProfile = this.profileItem?.nativeElement?.contains(target);
1758
- if (!insideProfile) {
1759
- this.profileMenuOpen.set(false);
1760
+ const containers = [
1761
+ this.notificationsItem?.nativeElement,
1762
+ this.languageItem?.nativeElement,
1763
+ this.profileItem?.nativeElement
1764
+ ];
1765
+ const insideAny = containers.some((el) => el?.contains(target));
1766
+ if (!insideAny) {
1767
+ this.closeDropdown();
1760
1768
  }
1761
1769
  }
1762
1770
  openSearch() {
@@ -1776,7 +1784,7 @@ class AppTopbar {
1776
1784
  this.layoutService.toggleSearchBar();
1777
1785
  }
1778
1786
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AppTopbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
1779
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AppTopbar, isStandalone: true, selector: "[app-topbar]", inputs: { selectedNotificationBar: { classPropertyName: "selectedNotificationBar", publicName: "selectedNotificationBar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedNotificationBar: "selectedNotificationBarChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "profileItem", first: true, predicate: ["profileItem"], descendants: true }, { propertyName: "profilePanel", first: true, predicate: ["profilePanel"], descendants: true }], ngImport: i0, template: `<div class="layout-topbar">
1787
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AppTopbar, isStandalone: true, selector: "[app-topbar]", inputs: { selectedNotificationBar: { classPropertyName: "selectedNotificationBar", publicName: "selectedNotificationBar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedNotificationBar: "selectedNotificationBarChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "notificationsItem", first: true, predicate: ["notificationsItem"], descendants: true }, { propertyName: "languageItem", first: true, predicate: ["languageItem"], descendants: true }, { propertyName: "profileItem", first: true, predicate: ["profileItem"], descendants: true }], ngImport: i0, template: `<div class="layout-topbar">
1780
1788
  <button type="button" class="mobile-menu-button" aria-label="Toggle navigation menu" (click)="onMenuButtonClick()">
1781
1789
  <i class="pi pi-bars"></i>
1782
1790
  </button>
@@ -1827,56 +1835,56 @@ class AppTopbar {
1827
1835
  <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
1828
1836
  </a>
1829
1837
  </li>
1830
- <li class="right-sidebar-item static sm:relative z-50">
1831
- <a class="right-sidebar-button" aria-label="Notifications" pStyleClass="@next" enterFromClass="hidden" enterActiveClass="animate-scalein" leaveActiveClass="animate-fadeout" leaveToClass="hidden" [hideOnOutsideClick]="true">
1838
+ <li class="right-sidebar-item static sm:relative z-50" #notificationsItem>
1839
+ <a class="right-sidebar-button" aria-label="Notifications" (click)="toggleDropdown('notifications', $event)">
1832
1840
  <span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
1833
1841
  <i class="pi pi-bell"></i>
1834
1842
  </a>
1835
- <div
1836
- class="list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout"
1837
- >
1838
- <div class="p-4 flex items-center justify-between border-b border-surface">
1839
- <span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
1840
- <button pRipple class="py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all">Mark all as read</button>
1841
- </div>
1842
- <div class="flex items-center border-b border-surface">
1843
- @for (item of notificationsBars(); track item.id; let i = $index) {
1844
- <button
1845
- [ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
1846
- class="px-3.5 py-2 inline-flex items-center border-b gap-2"
1847
- (click)="selectedNotificationBar.set(item.id)"
1848
- >
1849
- <span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
1850
- <p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
1851
- </button>
1852
- }
1853
- </div>
1854
- <ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
1855
- @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
1856
- <li>
1857
- <div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
1858
- <p-overlay-badge value="" severity="danger" class="inline-flex">
1859
- <p-avatar size="large">
1860
- <img [src]="item.image" [alt]="item.name" class="rounded-lg" />
1861
- </p-avatar>
1862
- </p-overlay-badge>
1863
- <div class="flex items-center gap-3">
1864
- <div class="flex flex-col">
1865
- <span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
1866
- <span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
1867
- <span class="label-xsmall text-left">{{ item.time }}</span>
1843
+ @if (activeDropdown() === 'notifications') {
1844
+ <div
1845
+ class="list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout animate-scalein"
1846
+ >
1847
+ <div class="p-4 flex items-center justify-between border-b border-surface">
1848
+ <span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
1849
+ <button pRipple class="py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all">Mark all as read</button>
1850
+ </div>
1851
+ <div class="flex items-center border-b border-surface">
1852
+ @for (item of notificationsBars(); track item.id; let i = $index) {
1853
+ <button
1854
+ [ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
1855
+ class="px-3.5 py-2 inline-flex items-center border-b gap-2"
1856
+ (click)="selectedNotificationBar.set(item.id)"
1857
+ >
1858
+ <span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
1859
+ <p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
1860
+ </button>
1861
+ }
1862
+ </div>
1863
+ <ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
1864
+ @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
1865
+ <li>
1866
+ <div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
1867
+ <p-overlay-badge value="" severity="danger" class="inline-flex">
1868
+ <p-avatar [label]="item.initials" size="large" styleClass="rounded-lg" />
1869
+ </p-overlay-badge>
1870
+ <div class="flex items-center gap-3">
1871
+ <div class="flex flex-col">
1872
+ <span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
1873
+ <span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
1874
+ <span class="label-xsmall text-left">{{ item.time }}</span>
1875
+ </div>
1876
+ <p-badge *ngIf="item.new" value="" severity="success" />
1868
1877
  </div>
1869
- <p-badge *ngIf="item.new" value="" severity="success" />
1870
1878
  </div>
1871
- </div>
1872
- <span *ngIf="i !== notifications().length - 1"></span>
1873
- </li>
1874
- }
1875
- </ul>
1876
- </div>
1879
+ <span *ngIf="i !== notifications().length - 1"></span>
1880
+ </li>
1881
+ }
1882
+ </ul>
1883
+ </div>
1884
+ }
1877
1885
  </li>
1878
- <li class="right-sidebar-item static sm:relative">
1879
- <a class="right-sidebar-button relative z-50" aria-label="Change language" pStyleClass="@next" enterFromClass="hidden" enterActiveClass="animate-scalein" leaveActiveClass="animate-fadeout" leaveToClass="hidden" [hideOnOutsideClick]="true">
1886
+ <li class="right-sidebar-item static sm:relative" #languageItem>
1887
+ <a class="right-sidebar-button relative z-50" aria-label="Change language" (click)="toggleDropdown('language', $event)">
1880
1888
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
1881
1889
  <path d="m5 8 6 6"/>
1882
1890
  <path d="m4 14 6-6 2-3"/>
@@ -1886,109 +1894,111 @@ class AppTopbar {
1886
1894
  <path d="M14 18h6"/>
1887
1895
  </svg>
1888
1896
  </a>
1889
- <div
1890
- class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 hidden origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout"
1891
- >
1892
- <ul class="flex flex-col gap-1">
1893
- @for (lang of languages(); track lang.code) {
1894
- <li>
1895
- <a
1896
- class="label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
1897
- [class.text-surface-950]="selectedLanguage() === lang.code"
1898
- [class.dark:text-surface-0]="selectedLanguage() === lang.code"
1899
- [class.font-semibold]="selectedLanguage() === lang.code"
1900
- (click)="selectLanguage(lang.code)"
1901
- >
1902
- <span class="text-lg">{{ lang.flag }}</span>
1903
- <span>{{ lang.label }}</span>
1904
- </a>
1905
- </li>
1906
- }
1907
- </ul>
1908
- </div>
1897
+ @if (activeDropdown() === 'language') {
1898
+ <div
1899
+ class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein"
1900
+ >
1901
+ <ul class="flex flex-col gap-1">
1902
+ @for (lang of languages(); track lang.code) {
1903
+ <li>
1904
+ <a
1905
+ class="label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
1906
+ [class.text-surface-950]="selectedLanguage() === lang.code"
1907
+ [class.dark:text-surface-0]="selectedLanguage() === lang.code"
1908
+ [class.font-semibold]="selectedLanguage() === lang.code"
1909
+ (click)="selectLanguage(lang.code)"
1910
+ >
1911
+ <span class="text-lg">{{ lang.flag }}</span>
1912
+ <span>{{ lang.label }}</span>
1913
+ </a>
1914
+ </li>
1915
+ }
1916
+ </ul>
1917
+ </div>
1918
+ }
1909
1919
  </li>
1910
1920
  <li class="profile-item static sm:relative" #profileItem>
1911
- <a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleProfileMenu($event)">
1921
+ <a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleDropdown('profile', $event)">
1912
1922
  <p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
1913
1923
  </a>
1914
- <div
1915
- #profilePanel
1916
- class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout"
1917
- [class.hidden]="!profileMenuOpen()"
1918
- [class.animate-scalein]="profileMenuOpen()"
1919
- >
1920
- <ul class="flex flex-col gap-1">
1921
- <div class="mobile-profile-actions">
1924
+ @if (activeDropdown() === 'profile') {
1925
+ <div
1926
+ #profilePanel
1927
+ class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein"
1928
+ >
1929
+ <ul class="flex flex-col gap-1">
1930
+ <div class="mobile-profile-actions">
1931
+ <li>
1932
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); openSearch()">
1933
+ <i class="pi pi-search"></i>
1934
+ <span>Search</span>
1935
+ </a>
1936
+ </li>
1937
+ <li>
1938
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); toggleDarkMode()">
1939
+ <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
1940
+ <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
1941
+ </a>
1942
+ </li>
1943
+ <li>
1944
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative" (click)="closeDropdown()">
1945
+ <i class="pi pi-bell"></i>
1946
+ <span>Notifications</span>
1947
+ <span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
1948
+ </a>
1949
+ </li>
1950
+ <li class="border-b border-surface pb-1 mb-1">
1951
+ <span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
1952
+ @for (lang of languages(); track lang.code) {
1953
+ <a
1954
+ class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
1955
+ [class.text-surface-950]="selectedLanguage() === lang.code"
1956
+ [class.dark:text-surface-0]="selectedLanguage() === lang.code"
1957
+ [class.font-semibold]="selectedLanguage() === lang.code"
1958
+ (click)="closeDropdown(); selectLanguage(lang.code)"
1959
+ >
1960
+ <span class="text-lg">{{ lang.flag }}</span>
1961
+ <span>{{ lang.label }}</span>
1962
+ @if (selectedLanguage() === lang.code) {
1963
+ <i class="pi pi-check ml-auto text-xs"></i>
1964
+ }
1965
+ </a>
1966
+ }
1967
+ </li>
1968
+ </div>
1922
1969
  <li>
1923
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); openSearch()">
1924
- <i class="pi pi-search"></i>
1925
- <span>Search</span>
1970
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
1971
+ <i class="pi pi-user"></i>
1972
+ <span>Profile</span>
1926
1973
  </a>
1927
1974
  </li>
1928
1975
  <li>
1929
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); toggleDarkMode()">
1930
- <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
1931
- <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
1976
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); onConfigButtonClick()">
1977
+ <i class="pi pi-cog"></i>
1978
+ <span>Settings</span>
1932
1979
  </a>
1933
1980
  </li>
1934
1981
  <li>
1935
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative" (click)="profileMenuOpen.set(false)">
1936
- <i class="pi pi-bell"></i>
1937
- <span>Notifications</span>
1938
- <span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
1982
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
1983
+ <i class="pi pi-calendar"></i>
1984
+ <span>Calendar</span>
1939
1985
  </a>
1940
1986
  </li>
1941
- <li class="border-b border-surface pb-1 mb-1">
1942
- <span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
1943
- @for (lang of languages(); track lang.code) {
1944
- <a
1945
- class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
1946
- [class.text-surface-950]="selectedLanguage() === lang.code"
1947
- [class.dark:text-surface-0]="selectedLanguage() === lang.code"
1948
- [class.font-semibold]="selectedLanguage() === lang.code"
1949
- (click)="profileMenuOpen.set(false); selectLanguage(lang.code)"
1950
- >
1951
- <span class="text-lg">{{ lang.flag }}</span>
1952
- <span>{{ lang.label }}</span>
1953
- @if (selectedLanguage() === lang.code) {
1954
- <i class="pi pi-check ml-auto text-xs"></i>
1955
- }
1956
- </a>
1957
- }
1987
+ <li>
1988
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
1989
+ <i class="pi pi-inbox"></i>
1990
+ <span>Inbox</span>
1991
+ </a>
1958
1992
  </li>
1959
- </div>
1960
- <li>
1961
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
1962
- <i class="pi pi-user"></i>
1963
- <span>Profile</span>
1964
- </a>
1965
- </li>
1966
- <li>
1967
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); onConfigButtonClick()">
1968
- <i class="pi pi-cog"></i>
1969
- <span>Settings</span>
1970
- </a>
1971
- </li>
1972
- <li>
1973
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
1974
- <i class="pi pi-calendar"></i>
1975
- <span>Calendar</span>
1976
- </a>
1977
- </li>
1978
- <li>
1979
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
1980
- <i class="pi pi-inbox"></i>
1981
- <span>Inbox</span>
1982
- </a>
1983
- </li>
1984
- <li class="border-t border-surface mt-1 pt-1">
1985
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
1986
- <i class="pi pi-power-off"></i>
1987
- <span>Log out</span>
1988
- </a>
1989
- </li>
1990
- </ul>
1991
- </div>
1993
+ <li class="border-t border-surface mt-1 pt-1">
1994
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
1995
+ <i class="pi pi-power-off"></i>
1996
+ <span>Log out</span>
1997
+ </a>
1998
+ </li>
1999
+ </ul>
2000
+ </div>
2001
+ }
1992
2002
  </li>
1993
2003
  </ul>
1994
2004
  </div>
@@ -1997,13 +2007,13 @@ class AppTopbar {
1997
2007
  <a class="mobile-logo" [routerLink]="['/']">
1998
2008
  <img [src]="mobileLogo()" [attr.alt]="mobileLogoConfig.alt" />
1999
2009
  </a>
2000
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$4.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppBreadcrumb, selector: "[app-breadcrumb]" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5$1.IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i4$2.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i8.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: OverlayBadgeModule }, { kind: "component", type: i9.OverlayBadge, selector: "p-overlayBadge, p-overlay-badge, p-overlaybadge", inputs: ["styleClass", "style", "badgeSize", "severity", "value", "badgeDisabled", "size"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i10.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
2010
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AppBreadcrumb, selector: "[app-breadcrumb]" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i4$3.IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i5$1.InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i4$2.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i7.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: OverlayBadgeModule }, { kind: "component", type: i8.OverlayBadge, selector: "p-overlayBadge, p-overlay-badge, p-overlaybadge", inputs: ["styleClass", "style", "badgeSize", "severity", "value", "badgeDisabled", "size"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i9.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
2001
2011
  }
2002
2012
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AppTopbar, decorators: [{
2003
2013
  type: Component,
2004
2014
  args: [{
2005
2015
  selector: '[app-topbar]',
2006
- imports: [RouterModule, CommonModule, StyleClassModule, AppBreadcrumb, InputTextModule, ButtonModule, IconFieldModule, InputIconModule, RippleModule, BadgeModule, OverlayBadgeModule, AvatarModule],
2016
+ imports: [RouterModule, CommonModule, AppBreadcrumb, InputTextModule, ButtonModule, IconFieldModule, InputIconModule, RippleModule, BadgeModule, OverlayBadgeModule, AvatarModule],
2007
2017
  template: `<div class="layout-topbar">
2008
2018
  <button type="button" class="mobile-menu-button" aria-label="Toggle navigation menu" (click)="onMenuButtonClick()">
2009
2019
  <i class="pi pi-bars"></i>
@@ -2055,56 +2065,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
2055
2065
  <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
2056
2066
  </a>
2057
2067
  </li>
2058
- <li class="right-sidebar-item static sm:relative z-50">
2059
- <a class="right-sidebar-button" aria-label="Notifications" pStyleClass="@next" enterFromClass="hidden" enterActiveClass="animate-scalein" leaveActiveClass="animate-fadeout" leaveToClass="hidden" [hideOnOutsideClick]="true">
2068
+ <li class="right-sidebar-item static sm:relative z-50" #notificationsItem>
2069
+ <a class="right-sidebar-button" aria-label="Notifications" (click)="toggleDropdown('notifications', $event)">
2060
2070
  <span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
2061
2071
  <i class="pi pi-bell"></i>
2062
2072
  </a>
2063
- <div
2064
- class="list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout"
2065
- >
2066
- <div class="p-4 flex items-center justify-between border-b border-surface">
2067
- <span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
2068
- <button pRipple class="py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all">Mark all as read</button>
2069
- </div>
2070
- <div class="flex items-center border-b border-surface">
2071
- @for (item of notificationsBars(); track item.id; let i = $index) {
2072
- <button
2073
- [ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
2074
- class="px-3.5 py-2 inline-flex items-center border-b gap-2"
2075
- (click)="selectedNotificationBar.set(item.id)"
2076
- >
2077
- <span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
2078
- <p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
2079
- </button>
2080
- }
2081
- </div>
2082
- <ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
2083
- @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
2084
- <li>
2085
- <div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
2086
- <p-overlay-badge value="" severity="danger" class="inline-flex">
2087
- <p-avatar size="large">
2088
- <img [src]="item.image" [alt]="item.name" class="rounded-lg" />
2089
- </p-avatar>
2090
- </p-overlay-badge>
2091
- <div class="flex items-center gap-3">
2092
- <div class="flex flex-col">
2093
- <span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
2094
- <span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
2095
- <span class="label-xsmall text-left">{{ item.time }}</span>
2073
+ @if (activeDropdown() === 'notifications') {
2074
+ <div
2075
+ class="list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout animate-scalein"
2076
+ >
2077
+ <div class="p-4 flex items-center justify-between border-b border-surface">
2078
+ <span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
2079
+ <button pRipple class="py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all">Mark all as read</button>
2080
+ </div>
2081
+ <div class="flex items-center border-b border-surface">
2082
+ @for (item of notificationsBars(); track item.id; let i = $index) {
2083
+ <button
2084
+ [ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
2085
+ class="px-3.5 py-2 inline-flex items-center border-b gap-2"
2086
+ (click)="selectedNotificationBar.set(item.id)"
2087
+ >
2088
+ <span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
2089
+ <p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
2090
+ </button>
2091
+ }
2092
+ </div>
2093
+ <ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
2094
+ @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
2095
+ <li>
2096
+ <div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
2097
+ <p-overlay-badge value="" severity="danger" class="inline-flex">
2098
+ <p-avatar [label]="item.initials" size="large" styleClass="rounded-lg" />
2099
+ </p-overlay-badge>
2100
+ <div class="flex items-center gap-3">
2101
+ <div class="flex flex-col">
2102
+ <span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
2103
+ <span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
2104
+ <span class="label-xsmall text-left">{{ item.time }}</span>
2105
+ </div>
2106
+ <p-badge *ngIf="item.new" value="" severity="success" />
2096
2107
  </div>
2097
- <p-badge *ngIf="item.new" value="" severity="success" />
2098
2108
  </div>
2099
- </div>
2100
- <span *ngIf="i !== notifications().length - 1"></span>
2101
- </li>
2102
- }
2103
- </ul>
2104
- </div>
2109
+ <span *ngIf="i !== notifications().length - 1"></span>
2110
+ </li>
2111
+ }
2112
+ </ul>
2113
+ </div>
2114
+ }
2105
2115
  </li>
2106
- <li class="right-sidebar-item static sm:relative">
2107
- <a class="right-sidebar-button relative z-50" aria-label="Change language" pStyleClass="@next" enterFromClass="hidden" enterActiveClass="animate-scalein" leaveActiveClass="animate-fadeout" leaveToClass="hidden" [hideOnOutsideClick]="true">
2116
+ <li class="right-sidebar-item static sm:relative" #languageItem>
2117
+ <a class="right-sidebar-button relative z-50" aria-label="Change language" (click)="toggleDropdown('language', $event)">
2108
2118
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2109
2119
  <path d="m5 8 6 6"/>
2110
2120
  <path d="m4 14 6-6 2-3"/>
@@ -2114,109 +2124,111 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
2114
2124
  <path d="M14 18h6"/>
2115
2125
  </svg>
2116
2126
  </a>
2117
- <div
2118
- class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 hidden origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout"
2119
- >
2120
- <ul class="flex flex-col gap-1">
2121
- @for (lang of languages(); track lang.code) {
2122
- <li>
2123
- <a
2124
- class="label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
2125
- [class.text-surface-950]="selectedLanguage() === lang.code"
2126
- [class.dark:text-surface-0]="selectedLanguage() === lang.code"
2127
- [class.font-semibold]="selectedLanguage() === lang.code"
2128
- (click)="selectLanguage(lang.code)"
2129
- >
2130
- <span class="text-lg">{{ lang.flag }}</span>
2131
- <span>{{ lang.label }}</span>
2132
- </a>
2133
- </li>
2134
- }
2135
- </ul>
2136
- </div>
2127
+ @if (activeDropdown() === 'language') {
2128
+ <div
2129
+ class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein"
2130
+ >
2131
+ <ul class="flex flex-col gap-1">
2132
+ @for (lang of languages(); track lang.code) {
2133
+ <li>
2134
+ <a
2135
+ class="label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
2136
+ [class.text-surface-950]="selectedLanguage() === lang.code"
2137
+ [class.dark:text-surface-0]="selectedLanguage() === lang.code"
2138
+ [class.font-semibold]="selectedLanguage() === lang.code"
2139
+ (click)="selectLanguage(lang.code)"
2140
+ >
2141
+ <span class="text-lg">{{ lang.flag }}</span>
2142
+ <span>{{ lang.label }}</span>
2143
+ </a>
2144
+ </li>
2145
+ }
2146
+ </ul>
2147
+ </div>
2148
+ }
2137
2149
  </li>
2138
2150
  <li class="profile-item static sm:relative" #profileItem>
2139
- <a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleProfileMenu($event)">
2151
+ <a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleDropdown('profile', $event)">
2140
2152
  <p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
2141
2153
  </a>
2142
- <div
2143
- #profilePanel
2144
- class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout"
2145
- [class.hidden]="!profileMenuOpen()"
2146
- [class.animate-scalein]="profileMenuOpen()"
2147
- >
2148
- <ul class="flex flex-col gap-1">
2149
- <div class="mobile-profile-actions">
2154
+ @if (activeDropdown() === 'profile') {
2155
+ <div
2156
+ #profilePanel
2157
+ class="list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein"
2158
+ >
2159
+ <ul class="flex flex-col gap-1">
2160
+ <div class="mobile-profile-actions">
2161
+ <li>
2162
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); openSearch()">
2163
+ <i class="pi pi-search"></i>
2164
+ <span>Search</span>
2165
+ </a>
2166
+ </li>
2167
+ <li>
2168
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); toggleDarkMode()">
2169
+ <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
2170
+ <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
2171
+ </a>
2172
+ </li>
2173
+ <li>
2174
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative" (click)="closeDropdown()">
2175
+ <i class="pi pi-bell"></i>
2176
+ <span>Notifications</span>
2177
+ <span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
2178
+ </a>
2179
+ </li>
2180
+ <li class="border-b border-surface pb-1 mb-1">
2181
+ <span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
2182
+ @for (lang of languages(); track lang.code) {
2183
+ <a
2184
+ class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
2185
+ [class.text-surface-950]="selectedLanguage() === lang.code"
2186
+ [class.dark:text-surface-0]="selectedLanguage() === lang.code"
2187
+ [class.font-semibold]="selectedLanguage() === lang.code"
2188
+ (click)="closeDropdown(); selectLanguage(lang.code)"
2189
+ >
2190
+ <span class="text-lg">{{ lang.flag }}</span>
2191
+ <span>{{ lang.label }}</span>
2192
+ @if (selectedLanguage() === lang.code) {
2193
+ <i class="pi pi-check ml-auto text-xs"></i>
2194
+ }
2195
+ </a>
2196
+ }
2197
+ </li>
2198
+ </div>
2150
2199
  <li>
2151
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); openSearch()">
2152
- <i class="pi pi-search"></i>
2153
- <span>Search</span>
2200
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
2201
+ <i class="pi pi-user"></i>
2202
+ <span>Profile</span>
2154
2203
  </a>
2155
2204
  </li>
2156
2205
  <li>
2157
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); toggleDarkMode()">
2158
- <i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
2159
- <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
2206
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown(); onConfigButtonClick()">
2207
+ <i class="pi pi-cog"></i>
2208
+ <span>Settings</span>
2160
2209
  </a>
2161
2210
  </li>
2162
2211
  <li>
2163
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative" (click)="profileMenuOpen.set(false)">
2164
- <i class="pi pi-bell"></i>
2165
- <span>Notifications</span>
2166
- <span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
2212
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
2213
+ <i class="pi pi-calendar"></i>
2214
+ <span>Calendar</span>
2167
2215
  </a>
2168
2216
  </li>
2169
- <li class="border-b border-surface pb-1 mb-1">
2170
- <span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
2171
- @for (lang of languages(); track lang.code) {
2172
- <a
2173
- class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer"
2174
- [class.text-surface-950]="selectedLanguage() === lang.code"
2175
- [class.dark:text-surface-0]="selectedLanguage() === lang.code"
2176
- [class.font-semibold]="selectedLanguage() === lang.code"
2177
- (click)="profileMenuOpen.set(false); selectLanguage(lang.code)"
2178
- >
2179
- <span class="text-lg">{{ lang.flag }}</span>
2180
- <span>{{ lang.label }}</span>
2181
- @if (selectedLanguage() === lang.code) {
2182
- <i class="pi pi-check ml-auto text-xs"></i>
2183
- }
2184
- </a>
2185
- }
2217
+ <li>
2218
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
2219
+ <i class="pi pi-inbox"></i>
2220
+ <span>Inbox</span>
2221
+ </a>
2186
2222
  </li>
2187
- </div>
2188
- <li>
2189
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
2190
- <i class="pi pi-user"></i>
2191
- <span>Profile</span>
2192
- </a>
2193
- </li>
2194
- <li>
2195
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false); onConfigButtonClick()">
2196
- <i class="pi pi-cog"></i>
2197
- <span>Settings</span>
2198
- </a>
2199
- </li>
2200
- <li>
2201
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
2202
- <i class="pi pi-calendar"></i>
2203
- <span>Calendar</span>
2204
- </a>
2205
- </li>
2206
- <li>
2207
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
2208
- <i class="pi pi-inbox"></i>
2209
- <span>Inbox</span>
2210
- </a>
2211
- </li>
2212
- <li class="border-t border-surface mt-1 pt-1">
2213
- <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="profileMenuOpen.set(false)">
2214
- <i class="pi pi-power-off"></i>
2215
- <span>Log out</span>
2216
- </a>
2217
- </li>
2218
- </ul>
2219
- </div>
2223
+ <li class="border-t border-surface mt-1 pt-1">
2224
+ <a class="label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer" (click)="closeDropdown()">
2225
+ <i class="pi pi-power-off"></i>
2226
+ <span>Log out</span>
2227
+ </a>
2228
+ </li>
2229
+ </ul>
2230
+ </div>
2231
+ }
2220
2232
  </li>
2221
2233
  </ul>
2222
2234
  </div>
@@ -2233,12 +2245,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
2233
2245
  }], searchInput: [{
2234
2246
  type: ViewChild,
2235
2247
  args: ['searchInput']
2248
+ }], notificationsItem: [{
2249
+ type: ViewChild,
2250
+ args: ['notificationsItem']
2251
+ }], languageItem: [{
2252
+ type: ViewChild,
2253
+ args: ['languageItem']
2236
2254
  }], profileItem: [{
2237
2255
  type: ViewChild,
2238
2256
  args: ['profileItem']
2239
- }], profilePanel: [{
2240
- type: ViewChild,
2241
- args: ['profilePanel']
2242
2257
  }], selectedNotificationBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedNotificationBar", required: false }] }, { type: i0.Output, args: ["selectedNotificationBarChange"] }], onDocumentClick: [{
2243
2258
  type: HostListener,
2244
2259
  args: ['document:click', ['$event']]
@@ -3173,10 +3188,10 @@ class DetailLayoutComponent {
3173
3188
  <p-tablist
3174
3189
  class="flex-shrink-0 ux-dl__tablist"
3175
3190
  [style.display]="isMobile() ? 'none' : null"
3176
- [pt]="{ content: { class: 'w-full' }, tabList: { class: 'w-full pl-8 p-0' } }"
3191
+ [pt]="{ tabList: { class: 'p-0' } }"
3177
3192
  >
3178
3193
  @for (tab of tabs(); track tab.value) {
3179
- <p-tab [value]="tab.value" [pt]="{ root: { class: 'flex-1 justify-center' } }">
3194
+ <p-tab [value]="tab.value">
3180
3195
  @if (tab.icon) {
3181
3196
  <i [class]="tab.icon" class="mr-2 text-sm"></i>
3182
3197
  }
@@ -3221,7 +3236,7 @@ class DetailLayoutComponent {
3221
3236
  </p-tabs>
3222
3237
 
3223
3238
  </div>
3224
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0;font-family:var(--p-font-family, \"Noto Sans\", sans-serif);background:transparent;color:var(--p-text-color)}.ux-dl__header{background:transparent}.ux-dl__scroll{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-primary-color) 25%,transparent) color-mix(in srgb,var(--p-surface-500) 8%,transparent)}.ux-dl__scroll::-webkit-scrollbar{width:10px;height:10px}.ux-dl__scroll::-webkit-scrollbar-track{background:color-mix(in srgb,var(--p-surface-500) 8%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--p-primary-color) 25%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--p-primary-color) 45%,transparent)}.ux-dl__sidebar-inner{display:flex;flex-direction:column;gap:1.5rem}.ux-dl__header-meta{overflow:hidden;max-height:80px;opacity:1;transition:max-height .25s ease-out,opacity .2s ease-out}.ux-dl__header-meta--hidden{max-height:0;opacity:0}.ux-dl__tablist{display:flex;overflow:hidden;background:var(--p-surface-950);padding-inline:.75rem}@media screen and (min-width:640px){.ux-dl__tablist{padding-inline:1rem}}@media screen and (min-width:1024px){.ux-dl__tablist{padding-inline:1.5rem}}.ux-dl__mobile-tabs{position:sticky;top:0;z-index:5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i4$3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i4$3.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i4$3.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i4$3.TabList, selector: "p-tablist" }, { kind: "component", type: i4$3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3239
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0;font-family:var(--p-font-family, \"Noto Sans\", sans-serif);background:transparent;color:var(--p-text-color)}.ux-dl__header{background:transparent}.ux-dl__scroll{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-primary-color) 25%,transparent) color-mix(in srgb,var(--p-surface-500) 8%,transparent)}.ux-dl__scroll::-webkit-scrollbar{width:10px;height:10px}.ux-dl__scroll::-webkit-scrollbar-track{background:color-mix(in srgb,var(--p-surface-500) 8%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--p-primary-color) 25%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--p-primary-color) 45%,transparent)}.ux-dl__sidebar-inner{display:flex;flex-direction:column;gap:1.5rem}.ux-dl__header-meta{overflow:hidden;max-height:80px;opacity:1;transition:max-height .25s ease-out,opacity .2s ease-out}.ux-dl__header-meta--hidden{max-height:0;opacity:0}.ux-dl__tablist{display:flex;overflow:hidden}.ux-dl__mobile-tabs{position:sticky;top:0;z-index:5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i4$4.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i4$4.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i4$4.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i4$4.TabList, selector: "p-tablist" }, { kind: "component", type: i4$4.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3225
3240
  }
3226
3241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: DetailLayoutComponent, decorators: [{
3227
3242
  type: Component,
@@ -3260,10 +3275,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
3260
3275
  <p-tablist
3261
3276
  class="flex-shrink-0 ux-dl__tablist"
3262
3277
  [style.display]="isMobile() ? 'none' : null"
3263
- [pt]="{ content: { class: 'w-full' }, tabList: { class: 'w-full pl-8 p-0' } }"
3278
+ [pt]="{ tabList: { class: 'p-0' } }"
3264
3279
  >
3265
3280
  @for (tab of tabs(); track tab.value) {
3266
- <p-tab [value]="tab.value" [pt]="{ root: { class: 'flex-1 justify-center' } }">
3281
+ <p-tab [value]="tab.value">
3267
3282
  @if (tab.icon) {
3268
3283
  <i [class]="tab.icon" class="mr-2 text-sm"></i>
3269
3284
  }
@@ -3308,7 +3323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
3308
3323
  </p-tabs>
3309
3324
 
3310
3325
  </div>
3311
- `, styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0;font-family:var(--p-font-family, \"Noto Sans\", sans-serif);background:transparent;color:var(--p-text-color)}.ux-dl__header{background:transparent}.ux-dl__scroll{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-primary-color) 25%,transparent) color-mix(in srgb,var(--p-surface-500) 8%,transparent)}.ux-dl__scroll::-webkit-scrollbar{width:10px;height:10px}.ux-dl__scroll::-webkit-scrollbar-track{background:color-mix(in srgb,var(--p-surface-500) 8%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--p-primary-color) 25%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--p-primary-color) 45%,transparent)}.ux-dl__sidebar-inner{display:flex;flex-direction:column;gap:1.5rem}.ux-dl__header-meta{overflow:hidden;max-height:80px;opacity:1;transition:max-height .25s ease-out,opacity .2s ease-out}.ux-dl__header-meta--hidden{max-height:0;opacity:0}.ux-dl__tablist{display:flex;overflow:hidden;background:var(--p-surface-950);padding-inline:.75rem}@media screen and (min-width:640px){.ux-dl__tablist{padding-inline:1rem}}@media screen and (min-width:1024px){.ux-dl__tablist{padding-inline:1.5rem}}.ux-dl__mobile-tabs{position:sticky;top:0;z-index:5}\n"] }]
3326
+ `, styles: [":host{display:flex;flex-direction:column;flex:1;min-height:0;font-family:var(--p-font-family, \"Noto Sans\", sans-serif);background:transparent;color:var(--p-text-color)}.ux-dl__header{background:transparent}.ux-dl__scroll{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-primary-color) 25%,transparent) color-mix(in srgb,var(--p-surface-500) 8%,transparent)}.ux-dl__scroll::-webkit-scrollbar{width:10px;height:10px}.ux-dl__scroll::-webkit-scrollbar-track{background:color-mix(in srgb,var(--p-surface-500) 8%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--p-primary-color) 25%,transparent);border-radius:var(--p-content-border-radius, .375rem)}.ux-dl__scroll::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--p-primary-color) 45%,transparent)}.ux-dl__sidebar-inner{display:flex;flex-direction:column;gap:1.5rem}.ux-dl__header-meta{overflow:hidden;max-height:80px;opacity:1;transition:max-height .25s ease-out,opacity .2s ease-out}.ux-dl__header-meta--hidden{max-height:0;opacity:0}.ux-dl__tablist{display:flex;overflow:hidden}.ux-dl__mobile-tabs{position:sticky;top:0;z-index:5}\n"] }]
3312
3327
  }], ctorParameters: () => [], propDecorators: { tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: true }] }], activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }, { type: i0.Output, args: ["activeTabChange"] }], tabTemplates: [{
3313
3328
  type: ContentChildren,
3314
3329
  args: [DetailTabDirective]
@@ -3507,7 +3522,7 @@ class DocumentsCardComponent {
3507
3522
  </div>
3508
3523
  </p-panel>
3509
3524
  </div>
3510
- `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i3$5.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5$1.IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo", "motionOptions"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i8$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8$1.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i8$1.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i9$1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "component", type: PillTabsComponent, selector: "ux-pill-tabs", inputs: ["items", "activeValue"], outputs: ["activeValueChange"] }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i10$1.Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps", "motionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3525
+ `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i3$4.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i4$3.IconField, selector: "p-iconfield, p-iconField, p-icon-field", inputs: ["hostName", "iconPosition", "styleClass"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i5$1.InputIcon, selector: "p-inputicon, p-inputIcon", inputs: ["hostName", "styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i7$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo", "motionOptions"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i8$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8$1.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i8$1.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i9$1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "component", type: PillTabsComponent, selector: "ux-pill-tabs", inputs: ["items", "activeValue"], outputs: ["activeValueChange"] }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i10.Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps", "motionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3511
3526
  }
3512
3527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: DocumentsCardComponent, decorators: [{
3513
3528
  type: Component,
@@ -3859,7 +3874,7 @@ class TaskDrawerComponent {
3859
3874
  </div>
3860
3875
  </ng-template>
3861
3876
  </p-drawer>
3862
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i4.Drawer, selector: "p-drawer", inputs: ["appendTo", "motionOptions", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: TextareaModule }, { kind: "directive", type: i5$2.Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["pTextareaPT", "pTextareaUnstyled", "autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i7$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo", "motionOptions"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i8$2.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo", "motionOptions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i10.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3877
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i4.Drawer, selector: "p-drawer", inputs: ["appendTo", "motionOptions", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: TextareaModule }, { kind: "directive", type: i5$2.Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["pTextareaPT", "pTextareaUnstyled", "autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i7$2.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo", "motionOptions"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i8$2.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo", "motionOptions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i9.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3863
3878
  }
3864
3879
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: TaskDrawerComponent, decorators: [{
3865
3880
  type: Component,