@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/README.md +15 -0
- package/fesm2022/unopsitg-ux.mjs +448 -325
- package/fesm2022/unopsitg-ux.mjs.map +1 -1
- package/package.json +1 -1
- package/types/unopsitg-ux.d.ts +63 -11
package/fesm2022/unopsitg-ux.mjs
CHANGED
|
@@ -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
|
|
38
|
+
import * as i9 from 'primeng/avatar';
|
|
39
39
|
import { AvatarModule } from 'primeng/avatar';
|
|
40
|
-
import * as
|
|
40
|
+
import * as i7 from 'primeng/badge';
|
|
41
41
|
import { BadgeModule } from 'primeng/badge';
|
|
42
|
-
import * as
|
|
42
|
+
import * as i4$3 from 'primeng/iconfield';
|
|
43
43
|
import { IconFieldModule } from 'primeng/iconfield';
|
|
44
|
-
import * as
|
|
44
|
+
import * as i5$1 from 'primeng/inputicon';
|
|
45
45
|
import { InputIconModule } from 'primeng/inputicon';
|
|
46
|
-
import * as
|
|
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$
|
|
50
|
+
import * as i4$4 from 'primeng/tabs';
|
|
53
51
|
import { TabsModule } from 'primeng/tabs';
|
|
54
|
-
import * as i3$
|
|
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
|
|
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$
|
|
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';
|
|
@@ -379,6 +377,9 @@ const TOPBAR_MOBILE_LOGO = new InjectionToken('UNOPS_UX_TOPBAR_MOBILE_LOGO', {
|
|
|
379
377
|
alt: 'UNOPS'
|
|
380
378
|
})
|
|
381
379
|
});
|
|
380
|
+
const TOPBAR_LANGUAGE_CONFIG = new InjectionToken('UNOPS_UX_TOPBAR_LANGUAGE_CONFIG');
|
|
381
|
+
const TOPBAR_PROFILE_MENU_CONFIG = new InjectionToken('UNOPS_UX_TOPBAR_PROFILE_MENU_CONFIG');
|
|
382
|
+
const TOPBAR_NOTIFICATION_CONFIG = new InjectionToken('UNOPS_UX_TOPBAR_NOTIFICATION_CONFIG');
|
|
382
383
|
|
|
383
384
|
class LayoutService {
|
|
384
385
|
layoutConfig = signal({
|
|
@@ -1630,12 +1631,13 @@ class AppTopbar {
|
|
|
1630
1631
|
isDarkTheme = computed(() => this.layoutService.isDarkTheme(), ...(ngDevMode ? [{ debugName: "isDarkTheme" }] : []));
|
|
1631
1632
|
isSidebarPinned = computed(() => this.layoutService.isSidebarPinned(), ...(ngDevMode ? [{ debugName: "isSidebarPinned" }] : []));
|
|
1632
1633
|
searchActive = signal(false, ...(ngDevMode ? [{ debugName: "searchActive" }] : []));
|
|
1633
|
-
|
|
1634
|
+
activeDropdown = signal(null, ...(ngDevMode ? [{ debugName: "activeDropdown" }] : []));
|
|
1634
1635
|
shouldFocusSearch = false;
|
|
1635
1636
|
menuButton;
|
|
1636
1637
|
searchInput;
|
|
1638
|
+
notificationsItem;
|
|
1639
|
+
languageItem;
|
|
1637
1640
|
profileItem;
|
|
1638
|
-
profilePanel;
|
|
1639
1641
|
notificationsBars = signal([
|
|
1640
1642
|
{
|
|
1641
1643
|
id: 'inbox',
|
|
@@ -1656,21 +1658,21 @@ class AppTopbar {
|
|
|
1656
1658
|
id: 'inbox',
|
|
1657
1659
|
data: [
|
|
1658
1660
|
{
|
|
1659
|
-
|
|
1661
|
+
initials: 'ML',
|
|
1660
1662
|
name: 'Michael Lee',
|
|
1661
1663
|
description: 'You have a new message from the support team regarding your recent inquiry.',
|
|
1662
1664
|
time: '1 hour ago',
|
|
1663
1665
|
new: true
|
|
1664
1666
|
},
|
|
1665
1667
|
{
|
|
1666
|
-
|
|
1668
|
+
initials: 'AJ',
|
|
1667
1669
|
name: 'Alice Johnson',
|
|
1668
1670
|
description: 'Your report has been successfully submitted and is under review.',
|
|
1669
1671
|
time: '10 minutes ago',
|
|
1670
1672
|
new: true
|
|
1671
1673
|
},
|
|
1672
1674
|
{
|
|
1673
|
-
|
|
1675
|
+
initials: 'ED',
|
|
1674
1676
|
name: 'Emily Davis',
|
|
1675
1677
|
description: 'The project deadline has been updated to September 30th. Please check the details.',
|
|
1676
1678
|
time: 'Yesterday at 4:35 PM',
|
|
@@ -1682,14 +1684,14 @@ class AppTopbar {
|
|
|
1682
1684
|
id: 'general',
|
|
1683
1685
|
data: [
|
|
1684
1686
|
{
|
|
1685
|
-
|
|
1687
|
+
initials: 'AJ',
|
|
1686
1688
|
name: 'Alice Johnson',
|
|
1687
1689
|
description: 'Reminder: Your subscription is about to expire in 3 days. Renew now to avoid interruption.',
|
|
1688
1690
|
time: '30 minutes ago',
|
|
1689
1691
|
new: true
|
|
1690
1692
|
},
|
|
1691
1693
|
{
|
|
1692
|
-
|
|
1694
|
+
initials: 'ML',
|
|
1693
1695
|
name: 'Michael Lee',
|
|
1694
1696
|
description: 'The server maintenance has been completed successfully. No further downtime is expected.',
|
|
1695
1697
|
time: 'Yesterday at 2:15 PM',
|
|
@@ -1701,14 +1703,14 @@ class AppTopbar {
|
|
|
1701
1703
|
id: 'archived',
|
|
1702
1704
|
data: [
|
|
1703
1705
|
{
|
|
1704
|
-
|
|
1706
|
+
initials: 'LB',
|
|
1705
1707
|
name: 'Lucas Brown',
|
|
1706
1708
|
description: 'Your appointment with Dr. Anderson has been confirmed for October 12th at 10:00 AM.',
|
|
1707
1709
|
time: '1 week ago',
|
|
1708
1710
|
new: true
|
|
1709
1711
|
},
|
|
1710
1712
|
{
|
|
1711
|
-
|
|
1713
|
+
initials: 'ED',
|
|
1712
1714
|
name: 'Emily Davis',
|
|
1713
1715
|
description: 'The document you uploaded has been successfully archived for future reference.',
|
|
1714
1716
|
time: '2 weeks ago',
|
|
@@ -1717,12 +1719,15 @@ class AppTopbar {
|
|
|
1717
1719
|
]
|
|
1718
1720
|
}
|
|
1719
1721
|
], ...(ngDevMode ? [{ debugName: "notifications" }] : []));
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1722
|
+
langConfig = inject(TOPBAR_LANGUAGE_CONFIG, { optional: true });
|
|
1723
|
+
profileMenuConfig = inject(TOPBAR_PROFILE_MENU_CONFIG, { optional: true });
|
|
1724
|
+
notifConfig = inject(TOPBAR_NOTIFICATION_CONFIG, { optional: true });
|
|
1725
|
+
languages = signal(this.langConfig?.languages ?? [
|
|
1726
|
+
{ code: 'en', label: 'English', flag: '\u{1F1EC}\u{1F1E7}' },
|
|
1727
|
+
{ code: 'fr', label: 'French', flag: '\u{1F1EB}\u{1F1F7}' },
|
|
1728
|
+
{ code: 'es', label: 'Spanish', flag: '\u{1F1EA}\u{1F1F8}' }
|
|
1724
1729
|
], ...(ngDevMode ? [{ debugName: "languages" }] : []));
|
|
1725
|
-
selectedLanguage = signal('en', ...(ngDevMode ? [{ debugName: "selectedLanguage" }] : []));
|
|
1730
|
+
selectedLanguage = signal(this.langConfig?.defaultLanguage ?? 'en', ...(ngDevMode ? [{ debugName: "selectedLanguage" }] : []));
|
|
1726
1731
|
selectedNotificationBar = model(this.notificationsBars()[0].id ?? 'inbox', ...(ngDevMode ? [{ debugName: "selectedNotificationBar" }] : []));
|
|
1727
1732
|
selectedNotificationsBarData = computed(() => this.notifications().find((f) => f.id === this.selectedNotificationBar()).data, ...(ngDevMode ? [{ debugName: "selectedNotificationsBarData" }] : []));
|
|
1728
1733
|
onMenuButtonClick() {
|
|
@@ -1745,18 +1750,31 @@ class AppTopbar {
|
|
|
1745
1750
|
}
|
|
1746
1751
|
selectLanguage(code) {
|
|
1747
1752
|
this.selectedLanguage.set(code);
|
|
1753
|
+
this.langConfig?.onLanguageChange?.(code);
|
|
1754
|
+
this.closeDropdown();
|
|
1748
1755
|
}
|
|
1749
|
-
|
|
1756
|
+
onNotificationBellClick() {
|
|
1757
|
+
this.notifConfig?.onPanelOpen?.();
|
|
1758
|
+
}
|
|
1759
|
+
toggleDropdown(id, event) {
|
|
1750
1760
|
event.stopPropagation();
|
|
1751
|
-
this.
|
|
1761
|
+
this.activeDropdown.update((current) => (current === id ? null : id));
|
|
1762
|
+
}
|
|
1763
|
+
closeDropdown() {
|
|
1764
|
+
this.activeDropdown.set(null);
|
|
1752
1765
|
}
|
|
1753
1766
|
onDocumentClick(event) {
|
|
1754
|
-
if (!this.
|
|
1767
|
+
if (!this.activeDropdown())
|
|
1755
1768
|
return;
|
|
1756
1769
|
const target = event.target;
|
|
1757
|
-
const
|
|
1758
|
-
|
|
1759
|
-
this.
|
|
1770
|
+
const containers = [
|
|
1771
|
+
this.notificationsItem?.nativeElement,
|
|
1772
|
+
this.languageItem?.nativeElement,
|
|
1773
|
+
this.profileItem?.nativeElement
|
|
1774
|
+
];
|
|
1775
|
+
const insideAny = containers.some((el) => el?.contains(target));
|
|
1776
|
+
if (!insideAny) {
|
|
1777
|
+
this.closeDropdown();
|
|
1760
1778
|
}
|
|
1761
1779
|
}
|
|
1762
1780
|
openSearch() {
|
|
@@ -1776,7 +1794,7 @@ class AppTopbar {
|
|
|
1776
1794
|
this.layoutService.toggleSearchBar();
|
|
1777
1795
|
}
|
|
1778
1796
|
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: "
|
|
1797
|
+
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
1798
|
<button type="button" class="mobile-menu-button" aria-label="Toggle navigation menu" (click)="onMenuButtonClick()">
|
|
1781
1799
|
<i class="pi pi-bars"></i>
|
|
1782
1800
|
</button>
|
|
@@ -1827,56 +1845,106 @@ class AppTopbar {
|
|
|
1827
1845
|
<i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
|
|
1828
1846
|
</a>
|
|
1829
1847
|
</li>
|
|
1830
|
-
<li class="right-sidebar-item static sm:relative z-50">
|
|
1831
|
-
<a class="right-sidebar-button" aria-label="Notifications"
|
|
1832
|
-
|
|
1848
|
+
<li class="right-sidebar-item static sm:relative z-50" #notificationsItem>
|
|
1849
|
+
<a class="right-sidebar-button" aria-label="Notifications" (click)="toggleDropdown('notifications', $event); onNotificationBellClick()">
|
|
1850
|
+
@if (notifConfig && notifConfig.unreadCount() > 0) {
|
|
1851
|
+
<span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
|
|
1852
|
+
} @else if (!notifConfig) {
|
|
1853
|
+
<span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
|
|
1854
|
+
}
|
|
1833
1855
|
<i class="pi pi-bell"></i>
|
|
1834
1856
|
</a>
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
<
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
<
|
|
1857
|
-
|
|
1858
|
-
<
|
|
1859
|
-
<
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
<
|
|
1865
|
-
<
|
|
1866
|
-
|
|
1867
|
-
|
|
1857
|
+
@if (activeDropdown() === 'notifications') {
|
|
1858
|
+
<div
|
|
1859
|
+
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"
|
|
1860
|
+
>
|
|
1861
|
+
@if (notifConfig) {
|
|
1862
|
+
<div class="p-4 flex items-center justify-between border-b border-surface">
|
|
1863
|
+
<span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
|
|
1864
|
+
<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" (click)="notifConfig.onMarkAllAsRead()">Mark all as read</button>
|
|
1865
|
+
</div>
|
|
1866
|
+
<div class="flex items-center border-b border-surface">
|
|
1867
|
+
@for (tab of notifConfig.tabs(); track tab.id) {
|
|
1868
|
+
<button
|
|
1869
|
+
[ngClass]="{ 'border-surface-950 dark:border-surface-0': notifConfig.selectedTab() === tab.id, 'border-transparent': notifConfig.selectedTab() !== tab.id }"
|
|
1870
|
+
class="px-3.5 py-2 inline-flex items-center border-b gap-2"
|
|
1871
|
+
(click)="notifConfig.onTabChange(tab.id)"
|
|
1872
|
+
>
|
|
1873
|
+
<span [ngClass]="{ 'text-surface-950 dark:text-surface-0': notifConfig.selectedTab() === tab.id }" class="label-small">{{ tab.label }}</span>
|
|
1874
|
+
<p-badge *ngIf="tab.badge" [value]="tab.badge" severity="success" size="small" class="rounded-md!" />
|
|
1875
|
+
</button>
|
|
1876
|
+
}
|
|
1877
|
+
</div>
|
|
1878
|
+
<ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
|
|
1879
|
+
@if (notifConfig.items().length === 0) {
|
|
1880
|
+
<li class="px-4 sm:px-6 py-8 text-center">
|
|
1881
|
+
<i class="pi pi-bell-slash text-2xl text-surface-400 mb-2"></i>
|
|
1882
|
+
<p class="label-small text-surface-400">No {{ notifConfig.selectedTab() === 'unread' ? 'unread ' : '' }}notifications</p>
|
|
1883
|
+
</li>
|
|
1884
|
+
} @else {
|
|
1885
|
+
@for (item of notifConfig.items(); track item.id) {
|
|
1886
|
+
<li>
|
|
1887
|
+
<div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all" (click)="notifConfig.onItemClick(item)">
|
|
1888
|
+
<div class="flex items-center justify-center w-10 h-10 rounded-lg flex-shrink-0" [ngClass]="item.isRead ? 'bg-surface-100 dark:bg-surface-800' : 'bg-primary/10'">
|
|
1889
|
+
<i [class]="item.icon || 'pi pi-bell'" [ngClass]="item.isRead ? 'text-surface-500' : 'text-primary'"></i>
|
|
1890
|
+
</div>
|
|
1891
|
+
<div class="flex items-center gap-3 flex-1 min-w-0">
|
|
1892
|
+
<div class="flex flex-col flex-1 min-w-0">
|
|
1893
|
+
<span class="label-small text-left line-clamp-2" [ngClass]="item.isRead ? '' : 'text-surface-950 dark:text-surface-0 font-semibold'">{{ item.message }}</span>
|
|
1894
|
+
<span class="label-xsmall text-left">{{ item.time }}</span>
|
|
1895
|
+
</div>
|
|
1896
|
+
@if (!item.isRead) {
|
|
1897
|
+
<span class="w-2 h-2 rounded-full bg-primary flex-shrink-0"></span>
|
|
1898
|
+
}
|
|
1899
|
+
</div>
|
|
1900
|
+
</div>
|
|
1901
|
+
</li>
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
</ul>
|
|
1905
|
+
} @else {
|
|
1906
|
+
<div class="p-4 flex items-center justify-between border-b border-surface">
|
|
1907
|
+
<span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
|
|
1908
|
+
<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>
|
|
1909
|
+
</div>
|
|
1910
|
+
<div class="flex items-center border-b border-surface">
|
|
1911
|
+
@for (item of notificationsBars(); track item.id; let i = $index) {
|
|
1912
|
+
<button
|
|
1913
|
+
[ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
|
|
1914
|
+
class="px-3.5 py-2 inline-flex items-center border-b gap-2"
|
|
1915
|
+
(click)="selectedNotificationBar.set(item.id)"
|
|
1916
|
+
>
|
|
1917
|
+
<span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
|
|
1918
|
+
<p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
|
|
1919
|
+
</button>
|
|
1920
|
+
}
|
|
1921
|
+
</div>
|
|
1922
|
+
<ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
|
|
1923
|
+
@for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
|
|
1924
|
+
<li>
|
|
1925
|
+
<div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
|
|
1926
|
+
<p-overlay-badge value="" severity="danger" class="inline-flex">
|
|
1927
|
+
<p-avatar [label]="item.initials" size="large" styleClass="rounded-lg" />
|
|
1928
|
+
</p-overlay-badge>
|
|
1929
|
+
<div class="flex items-center gap-3">
|
|
1930
|
+
<div class="flex flex-col">
|
|
1931
|
+
<span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
|
|
1932
|
+
<span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
|
|
1933
|
+
<span class="label-xsmall text-left">{{ item.time }}</span>
|
|
1934
|
+
</div>
|
|
1935
|
+
<p-badge *ngIf="item.new" value="" severity="success" />
|
|
1936
|
+
</div>
|
|
1868
1937
|
</div>
|
|
1869
|
-
<
|
|
1870
|
-
</
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
</li>
|
|
1938
|
+
<span *ngIf="i !== notifications().length - 1"></span>
|
|
1939
|
+
</li>
|
|
1940
|
+
}
|
|
1941
|
+
</ul>
|
|
1874
1942
|
}
|
|
1875
|
-
</
|
|
1876
|
-
|
|
1943
|
+
</div>
|
|
1944
|
+
}
|
|
1877
1945
|
</li>
|
|
1878
|
-
<li class="right-sidebar-item static sm:relative">
|
|
1879
|
-
<a class="right-sidebar-button relative z-50" aria-label="Change language"
|
|
1946
|
+
<li class="right-sidebar-item static sm:relative" #languageItem>
|
|
1947
|
+
<a class="right-sidebar-button relative z-50" aria-label="Change language" (click)="toggleDropdown('language', $event)">
|
|
1880
1948
|
<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
1949
|
<path d="m5 8 6 6"/>
|
|
1882
1950
|
<path d="m4 14 6-6 2-3"/>
|
|
@@ -1886,109 +1954,110 @@ class AppTopbar {
|
|
|
1886
1954
|
<path d="M14 18h6"/>
|
|
1887
1955
|
</svg>
|
|
1888
1956
|
</a>
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
<
|
|
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>
|
|
1909
|
-
</li>
|
|
1910
|
-
<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)">
|
|
1912
|
-
<p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
|
|
1913
|
-
</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">
|
|
1922
|
-
<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>
|
|
1926
|
-
</a>
|
|
1927
|
-
</li>
|
|
1928
|
-
<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>
|
|
1932
|
-
</a>
|
|
1933
|
-
</li>
|
|
1934
|
-
<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>
|
|
1939
|
-
</a>
|
|
1940
|
-
</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) {
|
|
1957
|
+
@if (activeDropdown() === 'language') {
|
|
1958
|
+
<div
|
|
1959
|
+
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"
|
|
1960
|
+
>
|
|
1961
|
+
<ul class="flex flex-col gap-1">
|
|
1962
|
+
@for (lang of languages(); track lang.code) {
|
|
1963
|
+
<li>
|
|
1944
1964
|
<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"
|
|
1965
|
+
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"
|
|
1946
1966
|
[class.text-surface-950]="selectedLanguage() === lang.code"
|
|
1947
1967
|
[class.dark:text-surface-0]="selectedLanguage() === lang.code"
|
|
1948
1968
|
[class.font-semibold]="selectedLanguage() === lang.code"
|
|
1949
|
-
(click)="
|
|
1969
|
+
(click)="selectLanguage(lang.code)"
|
|
1950
1970
|
>
|
|
1951
1971
|
<span class="text-lg">{{ lang.flag }}</span>
|
|
1952
1972
|
<span>{{ lang.label }}</span>
|
|
1953
|
-
@if (selectedLanguage() === lang.code) {
|
|
1954
|
-
<i class="pi pi-check ml-auto text-xs"></i>
|
|
1955
|
-
}
|
|
1956
1973
|
</a>
|
|
1974
|
+
</li>
|
|
1975
|
+
}
|
|
1976
|
+
</ul>
|
|
1977
|
+
</div>
|
|
1978
|
+
}
|
|
1979
|
+
</li>
|
|
1980
|
+
<li class="profile-item static sm:relative" #profileItem>
|
|
1981
|
+
<a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleDropdown('profile', $event)">
|
|
1982
|
+
<p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
|
|
1983
|
+
</a>
|
|
1984
|
+
@if (activeDropdown() === 'profile') {
|
|
1985
|
+
<div
|
|
1986
|
+
#profilePanel
|
|
1987
|
+
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"
|
|
1988
|
+
>
|
|
1989
|
+
<ul class="flex flex-col gap-1">
|
|
1990
|
+
<div class="mobile-profile-actions">
|
|
1991
|
+
<li>
|
|
1992
|
+
<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()">
|
|
1993
|
+
<i class="pi pi-search"></i>
|
|
1994
|
+
<span>Search</span>
|
|
1995
|
+
</a>
|
|
1996
|
+
</li>
|
|
1997
|
+
<li>
|
|
1998
|
+
<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()">
|
|
1999
|
+
<i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
|
|
2000
|
+
<span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
|
|
2001
|
+
</a>
|
|
2002
|
+
</li>
|
|
2003
|
+
<li>
|
|
2004
|
+
<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()">
|
|
2005
|
+
<i class="pi pi-bell"></i>
|
|
2006
|
+
<span>Notifications</span>
|
|
2007
|
+
<span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
|
|
2008
|
+
</a>
|
|
2009
|
+
</li>
|
|
2010
|
+
<li class="border-b border-surface pb-1 mb-1">
|
|
2011
|
+
<span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
|
|
2012
|
+
@for (lang of languages(); track lang.code) {
|
|
2013
|
+
<a
|
|
2014
|
+
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"
|
|
2015
|
+
[class.text-surface-950]="selectedLanguage() === lang.code"
|
|
2016
|
+
[class.dark:text-surface-0]="selectedLanguage() === lang.code"
|
|
2017
|
+
[class.font-semibold]="selectedLanguage() === lang.code"
|
|
2018
|
+
(click)="closeDropdown(); selectLanguage(lang.code)"
|
|
2019
|
+
>
|
|
2020
|
+
<span class="text-lg">{{ lang.flag }}</span>
|
|
2021
|
+
<span>{{ lang.label }}</span>
|
|
2022
|
+
@if (selectedLanguage() === lang.code) {
|
|
2023
|
+
<i class="pi pi-check ml-auto text-xs"></i>
|
|
2024
|
+
}
|
|
2025
|
+
</a>
|
|
2026
|
+
}
|
|
2027
|
+
</li>
|
|
2028
|
+
</div>
|
|
2029
|
+
@if (profileMenuConfig) {
|
|
2030
|
+
@for (item of profileMenuConfig.items; track item.id) {
|
|
2031
|
+
<li [class.border-t]="item.separator" [class.border-surface]="item.separator" [class.mt-1]="item.separator" [class.pt-1]="item.separator">
|
|
2032
|
+
<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(); item.command()">
|
|
2033
|
+
<i [class]="item.icon"></i>
|
|
2034
|
+
<span>{{ item.label }}</span>
|
|
2035
|
+
</a>
|
|
2036
|
+
</li>
|
|
1957
2037
|
}
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
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>
|
|
2038
|
+
} @else {
|
|
2039
|
+
<li>
|
|
2040
|
+
<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()">
|
|
2041
|
+
<i class="pi pi-user"></i>
|
|
2042
|
+
<span>Profile</span>
|
|
2043
|
+
</a>
|
|
2044
|
+
</li>
|
|
2045
|
+
<li>
|
|
2046
|
+
<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()">
|
|
2047
|
+
<i class="pi pi-cog"></i>
|
|
2048
|
+
<span>Settings</span>
|
|
2049
|
+
</a>
|
|
2050
|
+
</li>
|
|
2051
|
+
<li class="border-t border-surface mt-1 pt-1">
|
|
2052
|
+
<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()">
|
|
2053
|
+
<i class="pi pi-power-off"></i>
|
|
2054
|
+
<span>Log out</span>
|
|
2055
|
+
</a>
|
|
2056
|
+
</li>
|
|
2057
|
+
}
|
|
2058
|
+
</ul>
|
|
2059
|
+
</div>
|
|
2060
|
+
}
|
|
1992
2061
|
</li>
|
|
1993
2062
|
</ul>
|
|
1994
2063
|
</div>
|
|
@@ -1997,13 +2066,13 @@ class AppTopbar {
|
|
|
1997
2066
|
<a class="mobile-logo" [routerLink]="['/']">
|
|
1998
2067
|
<img [src]="mobileLogo()" [attr.alt]="mobileLogoConfig.alt" />
|
|
1999
2068
|
</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: "
|
|
2069
|
+
</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
2070
|
}
|
|
2002
2071
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AppTopbar, decorators: [{
|
|
2003
2072
|
type: Component,
|
|
2004
2073
|
args: [{
|
|
2005
2074
|
selector: '[app-topbar]',
|
|
2006
|
-
imports: [RouterModule, CommonModule,
|
|
2075
|
+
imports: [RouterModule, CommonModule, AppBreadcrumb, InputTextModule, ButtonModule, IconFieldModule, InputIconModule, RippleModule, BadgeModule, OverlayBadgeModule, AvatarModule],
|
|
2007
2076
|
template: `<div class="layout-topbar">
|
|
2008
2077
|
<button type="button" class="mobile-menu-button" aria-label="Toggle navigation menu" (click)="onMenuButtonClick()">
|
|
2009
2078
|
<i class="pi pi-bars"></i>
|
|
@@ -2055,56 +2124,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
2055
2124
|
<i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
|
|
2056
2125
|
</a>
|
|
2057
2126
|
</li>
|
|
2058
|
-
<li class="right-sidebar-item static sm:relative z-50">
|
|
2059
|
-
<a class="right-sidebar-button" aria-label="Notifications"
|
|
2060
|
-
|
|
2127
|
+
<li class="right-sidebar-item static sm:relative z-50" #notificationsItem>
|
|
2128
|
+
<a class="right-sidebar-button" aria-label="Notifications" (click)="toggleDropdown('notifications', $event); onNotificationBellClick()">
|
|
2129
|
+
@if (notifConfig && notifConfig.unreadCount() > 0) {
|
|
2130
|
+
<span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
|
|
2131
|
+
} @else if (!notifConfig) {
|
|
2132
|
+
<span class="w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5"></span>
|
|
2133
|
+
}
|
|
2061
2134
|
<i class="pi pi-bell"></i>
|
|
2062
2135
|
</a>
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
<
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
<
|
|
2085
|
-
|
|
2086
|
-
<
|
|
2087
|
-
<
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
<
|
|
2093
|
-
<
|
|
2094
|
-
|
|
2095
|
-
|
|
2136
|
+
@if (activeDropdown() === 'notifications') {
|
|
2137
|
+
<div
|
|
2138
|
+
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"
|
|
2139
|
+
>
|
|
2140
|
+
@if (notifConfig) {
|
|
2141
|
+
<div class="p-4 flex items-center justify-between border-b border-surface">
|
|
2142
|
+
<span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
|
|
2143
|
+
<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" (click)="notifConfig.onMarkAllAsRead()">Mark all as read</button>
|
|
2144
|
+
</div>
|
|
2145
|
+
<div class="flex items-center border-b border-surface">
|
|
2146
|
+
@for (tab of notifConfig.tabs(); track tab.id) {
|
|
2147
|
+
<button
|
|
2148
|
+
[ngClass]="{ 'border-surface-950 dark:border-surface-0': notifConfig.selectedTab() === tab.id, 'border-transparent': notifConfig.selectedTab() !== tab.id }"
|
|
2149
|
+
class="px-3.5 py-2 inline-flex items-center border-b gap-2"
|
|
2150
|
+
(click)="notifConfig.onTabChange(tab.id)"
|
|
2151
|
+
>
|
|
2152
|
+
<span [ngClass]="{ 'text-surface-950 dark:text-surface-0': notifConfig.selectedTab() === tab.id }" class="label-small">{{ tab.label }}</span>
|
|
2153
|
+
<p-badge *ngIf="tab.badge" [value]="tab.badge" severity="success" size="small" class="rounded-md!" />
|
|
2154
|
+
</button>
|
|
2155
|
+
}
|
|
2156
|
+
</div>
|
|
2157
|
+
<ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
|
|
2158
|
+
@if (notifConfig.items().length === 0) {
|
|
2159
|
+
<li class="px-4 sm:px-6 py-8 text-center">
|
|
2160
|
+
<i class="pi pi-bell-slash text-2xl text-surface-400 mb-2"></i>
|
|
2161
|
+
<p class="label-small text-surface-400">No {{ notifConfig.selectedTab() === 'unread' ? 'unread ' : '' }}notifications</p>
|
|
2162
|
+
</li>
|
|
2163
|
+
} @else {
|
|
2164
|
+
@for (item of notifConfig.items(); track item.id) {
|
|
2165
|
+
<li>
|
|
2166
|
+
<div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all" (click)="notifConfig.onItemClick(item)">
|
|
2167
|
+
<div class="flex items-center justify-center w-10 h-10 rounded-lg flex-shrink-0" [ngClass]="item.isRead ? 'bg-surface-100 dark:bg-surface-800' : 'bg-primary/10'">
|
|
2168
|
+
<i [class]="item.icon || 'pi pi-bell'" [ngClass]="item.isRead ? 'text-surface-500' : 'text-primary'"></i>
|
|
2169
|
+
</div>
|
|
2170
|
+
<div class="flex items-center gap-3 flex-1 min-w-0">
|
|
2171
|
+
<div class="flex flex-col flex-1 min-w-0">
|
|
2172
|
+
<span class="label-small text-left line-clamp-2" [ngClass]="item.isRead ? '' : 'text-surface-950 dark:text-surface-0 font-semibold'">{{ item.message }}</span>
|
|
2173
|
+
<span class="label-xsmall text-left">{{ item.time }}</span>
|
|
2174
|
+
</div>
|
|
2175
|
+
@if (!item.isRead) {
|
|
2176
|
+
<span class="w-2 h-2 rounded-full bg-primary flex-shrink-0"></span>
|
|
2177
|
+
}
|
|
2178
|
+
</div>
|
|
2179
|
+
</div>
|
|
2180
|
+
</li>
|
|
2181
|
+
}
|
|
2182
|
+
}
|
|
2183
|
+
</ul>
|
|
2184
|
+
} @else {
|
|
2185
|
+
<div class="p-4 flex items-center justify-between border-b border-surface">
|
|
2186
|
+
<span class="label-small text-surface-950 dark:text-surface-0">Notifications</span>
|
|
2187
|
+
<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>
|
|
2188
|
+
</div>
|
|
2189
|
+
<div class="flex items-center border-b border-surface">
|
|
2190
|
+
@for (item of notificationsBars(); track item.id; let i = $index) {
|
|
2191
|
+
<button
|
|
2192
|
+
[ngClass]="{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }"
|
|
2193
|
+
class="px-3.5 py-2 inline-flex items-center border-b gap-2"
|
|
2194
|
+
(click)="selectedNotificationBar.set(item.id)"
|
|
2195
|
+
>
|
|
2196
|
+
<span [ngClass]="{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }" class="label-small">{{ item.label }}</span>
|
|
2197
|
+
<p-badge *ngIf="item?.badge" [value]="item.badge" severity="success" size="small" class="rounded-md!" />
|
|
2198
|
+
</button>
|
|
2199
|
+
}
|
|
2200
|
+
</div>
|
|
2201
|
+
<ul class="flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto">
|
|
2202
|
+
@for (item of selectedNotificationsBarData(); track item.name; let i = $index) {
|
|
2203
|
+
<li>
|
|
2204
|
+
<div class="flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all">
|
|
2205
|
+
<p-overlay-badge value="" severity="danger" class="inline-flex">
|
|
2206
|
+
<p-avatar [label]="item.initials" size="large" styleClass="rounded-lg" />
|
|
2207
|
+
</p-overlay-badge>
|
|
2208
|
+
<div class="flex items-center gap-3">
|
|
2209
|
+
<div class="flex flex-col">
|
|
2210
|
+
<span class="label-small text-left text-surface-950 dark:text-surface-0">{{ item.name }}</span>
|
|
2211
|
+
<span class="label-xsmall text-left line-clamp-1">{{ item.description }}</span>
|
|
2212
|
+
<span class="label-xsmall text-left">{{ item.time }}</span>
|
|
2213
|
+
</div>
|
|
2214
|
+
<p-badge *ngIf="item.new" value="" severity="success" />
|
|
2215
|
+
</div>
|
|
2096
2216
|
</div>
|
|
2097
|
-
<
|
|
2098
|
-
</
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
</li>
|
|
2217
|
+
<span *ngIf="i !== notifications().length - 1"></span>
|
|
2218
|
+
</li>
|
|
2219
|
+
}
|
|
2220
|
+
</ul>
|
|
2102
2221
|
}
|
|
2103
|
-
</
|
|
2104
|
-
|
|
2222
|
+
</div>
|
|
2223
|
+
}
|
|
2105
2224
|
</li>
|
|
2106
|
-
<li class="right-sidebar-item static sm:relative">
|
|
2107
|
-
<a class="right-sidebar-button relative z-50" aria-label="Change language"
|
|
2225
|
+
<li class="right-sidebar-item static sm:relative" #languageItem>
|
|
2226
|
+
<a class="right-sidebar-button relative z-50" aria-label="Change language" (click)="toggleDropdown('language', $event)">
|
|
2108
2227
|
<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
2228
|
<path d="m5 8 6 6"/>
|
|
2110
2229
|
<path d="m4 14 6-6 2-3"/>
|
|
@@ -2114,109 +2233,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
2114
2233
|
<path d="M14 18h6"/>
|
|
2115
2234
|
</svg>
|
|
2116
2235
|
</a>
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
<
|
|
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>
|
|
2137
|
-
</li>
|
|
2138
|
-
<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)">
|
|
2140
|
-
<p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
|
|
2141
|
-
</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">
|
|
2150
|
-
<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>
|
|
2154
|
-
</a>
|
|
2155
|
-
</li>
|
|
2156
|
-
<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>
|
|
2160
|
-
</a>
|
|
2161
|
-
</li>
|
|
2162
|
-
<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>
|
|
2167
|
-
</a>
|
|
2168
|
-
</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) {
|
|
2236
|
+
@if (activeDropdown() === 'language') {
|
|
2237
|
+
<div
|
|
2238
|
+
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"
|
|
2239
|
+
>
|
|
2240
|
+
<ul class="flex flex-col gap-1">
|
|
2241
|
+
@for (lang of languages(); track lang.code) {
|
|
2242
|
+
<li>
|
|
2172
2243
|
<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"
|
|
2244
|
+
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"
|
|
2174
2245
|
[class.text-surface-950]="selectedLanguage() === lang.code"
|
|
2175
2246
|
[class.dark:text-surface-0]="selectedLanguage() === lang.code"
|
|
2176
2247
|
[class.font-semibold]="selectedLanguage() === lang.code"
|
|
2177
|
-
(click)="
|
|
2248
|
+
(click)="selectLanguage(lang.code)"
|
|
2178
2249
|
>
|
|
2179
2250
|
<span class="text-lg">{{ lang.flag }}</span>
|
|
2180
2251
|
<span>{{ lang.label }}</span>
|
|
2181
|
-
@if (selectedLanguage() === lang.code) {
|
|
2182
|
-
<i class="pi pi-check ml-auto text-xs"></i>
|
|
2183
|
-
}
|
|
2184
2252
|
</a>
|
|
2253
|
+
</li>
|
|
2254
|
+
}
|
|
2255
|
+
</ul>
|
|
2256
|
+
</div>
|
|
2257
|
+
}
|
|
2258
|
+
</li>
|
|
2259
|
+
<li class="profile-item static sm:relative" #profileItem>
|
|
2260
|
+
<a class="right-sidebar-button relative z-50" aria-label="User profile menu" (click)="toggleDropdown('profile', $event)">
|
|
2261
|
+
<p-avatar icon="pi pi-user" styleClass="w-10! h-10!" />
|
|
2262
|
+
</a>
|
|
2263
|
+
@if (activeDropdown() === 'profile') {
|
|
2264
|
+
<div
|
|
2265
|
+
#profilePanel
|
|
2266
|
+
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"
|
|
2267
|
+
>
|
|
2268
|
+
<ul class="flex flex-col gap-1">
|
|
2269
|
+
<div class="mobile-profile-actions">
|
|
2270
|
+
<li>
|
|
2271
|
+
<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()">
|
|
2272
|
+
<i class="pi pi-search"></i>
|
|
2273
|
+
<span>Search</span>
|
|
2274
|
+
</a>
|
|
2275
|
+
</li>
|
|
2276
|
+
<li>
|
|
2277
|
+
<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()">
|
|
2278
|
+
<i [class]="isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'"></i>
|
|
2279
|
+
<span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>
|
|
2280
|
+
</a>
|
|
2281
|
+
</li>
|
|
2282
|
+
<li>
|
|
2283
|
+
<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()">
|
|
2284
|
+
<i class="pi pi-bell"></i>
|
|
2285
|
+
<span>Notifications</span>
|
|
2286
|
+
<span class="w-2 h-2 rounded-full bg-red-500 ml-auto"></span>
|
|
2287
|
+
</a>
|
|
2288
|
+
</li>
|
|
2289
|
+
<li class="border-b border-surface pb-1 mb-1">
|
|
2290
|
+
<span class="label-xsmall px-2.5 py-1 text-surface-400">Language</span>
|
|
2291
|
+
@for (lang of languages(); track lang.code) {
|
|
2292
|
+
<a
|
|
2293
|
+
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"
|
|
2294
|
+
[class.text-surface-950]="selectedLanguage() === lang.code"
|
|
2295
|
+
[class.dark:text-surface-0]="selectedLanguage() === lang.code"
|
|
2296
|
+
[class.font-semibold]="selectedLanguage() === lang.code"
|
|
2297
|
+
(click)="closeDropdown(); selectLanguage(lang.code)"
|
|
2298
|
+
>
|
|
2299
|
+
<span class="text-lg">{{ lang.flag }}</span>
|
|
2300
|
+
<span>{{ lang.label }}</span>
|
|
2301
|
+
@if (selectedLanguage() === lang.code) {
|
|
2302
|
+
<i class="pi pi-check ml-auto text-xs"></i>
|
|
2303
|
+
}
|
|
2304
|
+
</a>
|
|
2305
|
+
}
|
|
2306
|
+
</li>
|
|
2307
|
+
</div>
|
|
2308
|
+
@if (profileMenuConfig) {
|
|
2309
|
+
@for (item of profileMenuConfig.items; track item.id) {
|
|
2310
|
+
<li [class.border-t]="item.separator" [class.border-surface]="item.separator" [class.mt-1]="item.separator" [class.pt-1]="item.separator">
|
|
2311
|
+
<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(); item.command()">
|
|
2312
|
+
<i [class]="item.icon"></i>
|
|
2313
|
+
<span>{{ item.label }}</span>
|
|
2314
|
+
</a>
|
|
2315
|
+
</li>
|
|
2185
2316
|
}
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
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>
|
|
2317
|
+
} @else {
|
|
2318
|
+
<li>
|
|
2319
|
+
<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()">
|
|
2320
|
+
<i class="pi pi-user"></i>
|
|
2321
|
+
<span>Profile</span>
|
|
2322
|
+
</a>
|
|
2323
|
+
</li>
|
|
2324
|
+
<li>
|
|
2325
|
+
<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()">
|
|
2326
|
+
<i class="pi pi-cog"></i>
|
|
2327
|
+
<span>Settings</span>
|
|
2328
|
+
</a>
|
|
2329
|
+
</li>
|
|
2330
|
+
<li class="border-t border-surface mt-1 pt-1">
|
|
2331
|
+
<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()">
|
|
2332
|
+
<i class="pi pi-power-off"></i>
|
|
2333
|
+
<span>Log out</span>
|
|
2334
|
+
</a>
|
|
2335
|
+
</li>
|
|
2336
|
+
}
|
|
2337
|
+
</ul>
|
|
2338
|
+
</div>
|
|
2339
|
+
}
|
|
2220
2340
|
</li>
|
|
2221
2341
|
</ul>
|
|
2222
2342
|
</div>
|
|
@@ -2233,12 +2353,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
2233
2353
|
}], searchInput: [{
|
|
2234
2354
|
type: ViewChild,
|
|
2235
2355
|
args: ['searchInput']
|
|
2356
|
+
}], notificationsItem: [{
|
|
2357
|
+
type: ViewChild,
|
|
2358
|
+
args: ['notificationsItem']
|
|
2359
|
+
}], languageItem: [{
|
|
2360
|
+
type: ViewChild,
|
|
2361
|
+
args: ['languageItem']
|
|
2236
2362
|
}], profileItem: [{
|
|
2237
2363
|
type: ViewChild,
|
|
2238
2364
|
args: ['profileItem']
|
|
2239
|
-
}], profilePanel: [{
|
|
2240
|
-
type: ViewChild,
|
|
2241
|
-
args: ['profilePanel']
|
|
2242
2365
|
}], selectedNotificationBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedNotificationBar", required: false }] }, { type: i0.Output, args: ["selectedNotificationBarChange"] }], onDocumentClick: [{
|
|
2243
2366
|
type: HostListener,
|
|
2244
2367
|
args: ['document:click', ['$event']]
|
|
@@ -3173,10 +3296,10 @@ class DetailLayoutComponent {
|
|
|
3173
3296
|
<p-tablist
|
|
3174
3297
|
class="flex-shrink-0 ux-dl__tablist"
|
|
3175
3298
|
[style.display]="isMobile() ? 'none' : null"
|
|
3176
|
-
[pt]="{
|
|
3299
|
+
[pt]="{ tabList: { class: 'p-0' } }"
|
|
3177
3300
|
>
|
|
3178
3301
|
@for (tab of tabs(); track tab.value) {
|
|
3179
|
-
<p-tab [value]="tab.value"
|
|
3302
|
+
<p-tab [value]="tab.value">
|
|
3180
3303
|
@if (tab.icon) {
|
|
3181
3304
|
<i [class]="tab.icon" class="mr-2 text-sm"></i>
|
|
3182
3305
|
}
|
|
@@ -3221,7 +3344,7 @@ class DetailLayoutComponent {
|
|
|
3221
3344
|
</p-tabs>
|
|
3222
3345
|
|
|
3223
3346
|
</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
|
|
3347
|
+
`, 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
3348
|
}
|
|
3226
3349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: DetailLayoutComponent, decorators: [{
|
|
3227
3350
|
type: Component,
|
|
@@ -3260,10 +3383,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
3260
3383
|
<p-tablist
|
|
3261
3384
|
class="flex-shrink-0 ux-dl__tablist"
|
|
3262
3385
|
[style.display]="isMobile() ? 'none' : null"
|
|
3263
|
-
[pt]="{
|
|
3386
|
+
[pt]="{ tabList: { class: 'p-0' } }"
|
|
3264
3387
|
>
|
|
3265
3388
|
@for (tab of tabs(); track tab.value) {
|
|
3266
|
-
<p-tab [value]="tab.value"
|
|
3389
|
+
<p-tab [value]="tab.value">
|
|
3267
3390
|
@if (tab.icon) {
|
|
3268
3391
|
<i [class]="tab.icon" class="mr-2 text-sm"></i>
|
|
3269
3392
|
}
|
|
@@ -3308,7 +3431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
3308
3431
|
</p-tabs>
|
|
3309
3432
|
|
|
3310
3433
|
</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
|
|
3434
|
+
`, 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
3435
|
}], 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
3436
|
type: ContentChildren,
|
|
3314
3437
|
args: [DetailTabDirective]
|
|
@@ -3507,7 +3630,7 @@ class DocumentsCardComponent {
|
|
|
3507
3630
|
</div>
|
|
3508
3631
|
</p-panel>
|
|
3509
3632
|
</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$
|
|
3633
|
+
`, 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
3634
|
}
|
|
3512
3635
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: DocumentsCardComponent, decorators: [{
|
|
3513
3636
|
type: Component,
|
|
@@ -3859,7 +3982,7 @@ class TaskDrawerComponent {
|
|
|
3859
3982
|
</div>
|
|
3860
3983
|
</ng-template>
|
|
3861
3984
|
</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$
|
|
3985
|
+
`, 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
3986
|
}
|
|
3864
3987
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: TaskDrawerComponent, decorators: [{
|
|
3865
3988
|
type: Component,
|
|
@@ -3953,5 +4076,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
3953
4076
|
* Generated bundle index. Do not edit.
|
|
3954
4077
|
*/
|
|
3955
4078
|
|
|
3956
|
-
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 };
|
|
4079
|
+
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 };
|
|
3957
4080
|
//# sourceMappingURL=unopsitg-ux.mjs.map
|