cloud-ide-layout 1.0.49 → 1.0.50
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/fesm2022/{cloud-ide-layout-cloud-ide-layout-Dp5qc3C5.mjs → cloud-ide-layout-cloud-ide-layout-BT6krb0-.mjs} +14 -43
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-BT6krb0-.mjs.map +1 -0
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-BkX1xh6A.mjs → cloud-ide-layout-drawer-theme.component-DQxKNHV2.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-BkX1xh6A.mjs.map → cloud-ide-layout-drawer-theme.component-DQxKNHV2.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-floating-entity-selection.component-BwrKdQB4.mjs → cloud-ide-layout-floating-entity-selection.component-Bk1F1fD4.mjs} +3 -3
- package/fesm2022/cloud-ide-layout-floating-entity-selection.component-Bk1F1fD4.mjs.map +1 -0
- package/fesm2022/{cloud-ide-layout-home-wrapper.component-DE5lpCxu.mjs → cloud-ide-layout-home-wrapper.component-nOJs_t7D.mjs} +3 -3
- package/fesm2022/cloud-ide-layout-home-wrapper.component-nOJs_t7D.mjs.map +1 -0
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-CDIHnAIJ.mjs → cloud-ide-layout-sidedrawer-notes.component-CpXybU-I.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-CDIHnAIJ.mjs.map → cloud-ide-layout-sidedrawer-notes.component-CpXybU-I.mjs.map} +1 -1
- package/fesm2022/cloud-ide-layout.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-Dp5qc3C5.mjs.map +0 -1
- package/fesm2022/cloud-ide-layout-floating-entity-selection.component-BwrKdQB4.mjs.map +0 -1
- package/fesm2022/cloud-ide-layout-home-wrapper.component-DE5lpCxu.mjs.map +0 -1
|
@@ -10,13 +10,12 @@ import { Title } from '@angular/platform-browser';
|
|
|
10
10
|
import { CideEleFileManagerService, CideElementsService, CideEleFloatingContainerService, CideInputComponent, CideIconComponent, CideEleDropdownComponent, CideEleFileImageDirective, CideEleResizerDirective, TooltipDirective, CideSpinnerComponent, CideEleSkeletonLoaderComponent, CideEleFloatingContainerManagerComponent, CideEleGlobalNotificationsComponent, CideEleBreadcrumbComponent, CideEleButtonComponent } from 'cloud-ide-element';
|
|
11
11
|
import * as i1 from '@angular/common';
|
|
12
12
|
import { CommonModule, NgClass, NgFor, NgIf, isPlatformBrowser } from '@angular/common';
|
|
13
|
-
import { FINANCIAL_YEAR_SERVICE_TOKEN, ACADEMIC_YEAR_SERVICE_TOKEN, AUTH_SERVICE_TOKEN, authGuard } from 'cloud-ide-shared';
|
|
13
|
+
import { FINANCIAL_YEAR_SERVICE_TOKEN, ACADEMIC_YEAR_SERVICE_TOKEN, AUTH_SERVICE_TOKEN, authGuard, ENTITY_SERVICE_TOKEN } from 'cloud-ide-shared';
|
|
14
14
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
15
|
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
16
16
|
import { merge } from 'lodash';
|
|
17
17
|
import * as i2$1 from '@angular/forms';
|
|
18
18
|
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
|
|
19
|
-
import { CideCoreEntityManagementService } from 'cloud-ide-core';
|
|
20
19
|
|
|
21
20
|
class CloudIdeLayoutService {
|
|
22
21
|
constructor() { }
|
|
@@ -1267,7 +1266,7 @@ class CideLytFloatingEntitySelectionService {
|
|
|
1267
1266
|
}
|
|
1268
1267
|
try {
|
|
1269
1268
|
// Use relative import to avoid circular dependency
|
|
1270
|
-
const module = await import('./cloud-ide-layout-floating-entity-selection.component-
|
|
1269
|
+
const module = await import('./cloud-ide-layout-floating-entity-selection.component-Bk1F1fD4.mjs');
|
|
1271
1270
|
if (module.CideLytFloatingEntitySelectionComponent) {
|
|
1272
1271
|
this.containerService.registerComponent('entity-selection-header', module.CideLytFloatingEntitySelectionComponent);
|
|
1273
1272
|
console.log('✅ Entity selection component registered successfully');
|
|
@@ -1480,7 +1479,6 @@ class CideLytHeaderWrapperComponent {
|
|
|
1480
1479
|
}
|
|
1481
1480
|
ngAfterViewInit() {
|
|
1482
1481
|
// No need to manually load file details - cideEleFileImage directive will handle it
|
|
1483
|
-
console.log('Header component initialized - using cideEleFileImage directive for entity logo');
|
|
1484
1482
|
}
|
|
1485
1483
|
ngOnDestroy() {
|
|
1486
1484
|
// Cleanup handled by takeUntilDestroyed
|
|
@@ -1496,11 +1494,10 @@ class CideLytHeaderWrapperComponent {
|
|
|
1496
1494
|
*/
|
|
1497
1495
|
async onEntityNameClick() {
|
|
1498
1496
|
try {
|
|
1499
|
-
console.log('🏢 Opening entity selection floating container...');
|
|
1500
1497
|
await this.floatingEntitySelectionService.show();
|
|
1501
1498
|
}
|
|
1502
1499
|
catch (error) {
|
|
1503
|
-
|
|
1500
|
+
// Error handling
|
|
1504
1501
|
}
|
|
1505
1502
|
}
|
|
1506
1503
|
/**
|
|
@@ -1553,15 +1550,12 @@ class CideLytHeaderWrapperComponent {
|
|
|
1553
1550
|
if (response?.success && response.data) {
|
|
1554
1551
|
this.financialYears.set(response.data);
|
|
1555
1552
|
this.updateFinancialYearDropdown();
|
|
1556
|
-
console.log('📊 Financial years loaded:', response.data);
|
|
1557
1553
|
}
|
|
1558
1554
|
else {
|
|
1559
|
-
console.warn('⚠️ No financial year data received');
|
|
1560
1555
|
this.financialYears.set([]);
|
|
1561
1556
|
}
|
|
1562
1557
|
},
|
|
1563
1558
|
error: (error) => {
|
|
1564
|
-
console.error('❌ Error loading financial years:', error);
|
|
1565
1559
|
this.financialYears.set([]);
|
|
1566
1560
|
}
|
|
1567
1561
|
});
|
|
@@ -1577,15 +1571,12 @@ class CideLytHeaderWrapperComponent {
|
|
|
1577
1571
|
if (response?.success && response.data) {
|
|
1578
1572
|
this.academicYears.set(response.data);
|
|
1579
1573
|
this.updateAcademicYearDropdown();
|
|
1580
|
-
console.log('📚 Academic years loaded:', response.data);
|
|
1581
1574
|
}
|
|
1582
1575
|
else {
|
|
1583
|
-
console.warn('⚠️ No academic year data received');
|
|
1584
1576
|
this.academicYears.set([]);
|
|
1585
1577
|
}
|
|
1586
1578
|
},
|
|
1587
1579
|
error: (error) => {
|
|
1588
|
-
console.error('❌ Error loading academic years:', error);
|
|
1589
1580
|
this.academicYears.set([]);
|
|
1590
1581
|
}
|
|
1591
1582
|
});
|
|
@@ -1631,13 +1622,11 @@ class CideLytHeaderWrapperComponent {
|
|
|
1631
1622
|
* @param item The clicked dropdown item
|
|
1632
1623
|
*/
|
|
1633
1624
|
onFinancialYearClick(item) {
|
|
1634
|
-
console.log('📊 Financial year selected:', item);
|
|
1635
1625
|
const selectedYear = this.financialYears().find(year => year._id === item.id);
|
|
1636
1626
|
if (selectedYear) {
|
|
1637
1627
|
this.currentFinancialYear.set(selectedYear);
|
|
1638
1628
|
this.currentFinancialYearName.set(selectedYear.financial_year_name || 'FY');
|
|
1639
1629
|
// TODO: Update app state or notify other components about the change
|
|
1640
|
-
console.log('✅ Financial year changed to:', selectedYear);
|
|
1641
1630
|
}
|
|
1642
1631
|
}
|
|
1643
1632
|
/**
|
|
@@ -1645,13 +1634,11 @@ class CideLytHeaderWrapperComponent {
|
|
|
1645
1634
|
* @param item The clicked dropdown item
|
|
1646
1635
|
*/
|
|
1647
1636
|
onAcademicYearClick(item) {
|
|
1648
|
-
console.log('📚 Academic year selected:', item);
|
|
1649
1637
|
const selectedYear = this.academicYears().find(year => year._id === item.id);
|
|
1650
1638
|
if (selectedYear) {
|
|
1651
1639
|
this.currentAcademicYear.set(selectedYear);
|
|
1652
1640
|
this.currentAcademicYearName.set(selectedYear.academic_year_name || 'AY');
|
|
1653
1641
|
// TODO: Update app state or notify other components about the change
|
|
1654
|
-
console.log('✅ Academic year changed to:', selectedYear);
|
|
1655
1642
|
}
|
|
1656
1643
|
}
|
|
1657
1644
|
/**
|
|
@@ -1659,7 +1646,6 @@ class CideLytHeaderWrapperComponent {
|
|
|
1659
1646
|
* @param item The clicked dropdown item
|
|
1660
1647
|
*/
|
|
1661
1648
|
onProfileClick(item) {
|
|
1662
|
-
console.log('👤 Profile option clicked:', item);
|
|
1663
1649
|
switch (item.id) {
|
|
1664
1650
|
case 'profile':
|
|
1665
1651
|
this.navigateToProfile();
|
|
@@ -1673,15 +1659,12 @@ class CideLytHeaderWrapperComponent {
|
|
|
1673
1659
|
case 'logout':
|
|
1674
1660
|
this.handleLogout();
|
|
1675
1661
|
break;
|
|
1676
|
-
default:
|
|
1677
|
-
console.log('🔍 [HeaderComponent] Unknown profile option:', item.id);
|
|
1678
1662
|
}
|
|
1679
1663
|
}
|
|
1680
1664
|
/**
|
|
1681
1665
|
* Navigate to user profile page
|
|
1682
1666
|
*/
|
|
1683
1667
|
navigateToProfile() {
|
|
1684
|
-
console.log('🔍 [HeaderComponent] Navigating to profile...');
|
|
1685
1668
|
// TODO: Implement profile navigation
|
|
1686
1669
|
// this.router.navigate(['/profile']);
|
|
1687
1670
|
}
|
|
@@ -1690,7 +1673,6 @@ class CideLytHeaderWrapperComponent {
|
|
|
1690
1673
|
* @param item The clicked dropdown item
|
|
1691
1674
|
*/
|
|
1692
1675
|
onMoreOptionsClick(item) {
|
|
1693
|
-
console.log('🔍 [HeaderComponent] More options clicked:', item);
|
|
1694
1676
|
switch (item.id) {
|
|
1695
1677
|
case 'settings':
|
|
1696
1678
|
this.navigateToSettings();
|
|
@@ -1701,15 +1683,12 @@ class CideLytHeaderWrapperComponent {
|
|
|
1701
1683
|
case 'logout':
|
|
1702
1684
|
this.handleLogout();
|
|
1703
1685
|
break;
|
|
1704
|
-
default:
|
|
1705
|
-
console.log('🔍 [HeaderComponent] Unknown option:', item.id);
|
|
1706
1686
|
}
|
|
1707
1687
|
}
|
|
1708
1688
|
/**
|
|
1709
1689
|
* Navigate to settings page
|
|
1710
1690
|
*/
|
|
1711
1691
|
navigateToSettings() {
|
|
1712
|
-
console.log('🔍 [HeaderComponent] Navigating to settings...');
|
|
1713
1692
|
// TODO: Implement settings navigation
|
|
1714
1693
|
// this.router.navigate(['/settings']);
|
|
1715
1694
|
}
|
|
@@ -1717,7 +1696,6 @@ class CideLytHeaderWrapperComponent {
|
|
|
1717
1696
|
* Navigate to help and support page
|
|
1718
1697
|
*/
|
|
1719
1698
|
navigateToHelp() {
|
|
1720
|
-
console.log('🔍 [HeaderComponent] Navigating to help...');
|
|
1721
1699
|
// TODO: Implement help navigation
|
|
1722
1700
|
// this.router.navigate(['/help']);
|
|
1723
1701
|
}
|
|
@@ -1726,7 +1704,6 @@ class CideLytHeaderWrapperComponent {
|
|
|
1726
1704
|
* Uses the auth service to sign out and navigate to login page
|
|
1727
1705
|
*/
|
|
1728
1706
|
handleLogout() {
|
|
1729
|
-
console.log('🔍 [HeaderComponent] Logging out user...');
|
|
1730
1707
|
// Show confirmation dialog
|
|
1731
1708
|
if (confirm('Are you sure you want to logout?')) {
|
|
1732
1709
|
try {
|
|
@@ -1734,22 +1711,16 @@ class CideLytHeaderWrapperComponent {
|
|
|
1734
1711
|
this.authService.signOut();
|
|
1735
1712
|
// Navigate to login page
|
|
1736
1713
|
this.router.navigate(['/auth/sign-in']).then(success => {
|
|
1737
|
-
if (success) {
|
|
1738
|
-
console.log('✅ [HeaderComponent] Successfully logged out and navigated to login page');
|
|
1739
|
-
}
|
|
1740
|
-
else {
|
|
1741
|
-
console.error('❌ [HeaderComponent] Failed to navigate to login page');
|
|
1714
|
+
if (!success) {
|
|
1742
1715
|
// Fallback: reload the page to force navigation
|
|
1743
1716
|
window.location.href = '/auth/sign-in';
|
|
1744
1717
|
}
|
|
1745
1718
|
}).catch(error => {
|
|
1746
|
-
console.error('❌ [HeaderComponent] Navigation error:', error);
|
|
1747
1719
|
// Fallback: reload the page to force navigation
|
|
1748
1720
|
window.location.href = '/auth/sign-in';
|
|
1749
1721
|
});
|
|
1750
1722
|
}
|
|
1751
1723
|
catch (error) {
|
|
1752
|
-
console.error('❌ [HeaderComponent] Logout error:', error);
|
|
1753
1724
|
// Still try to navigate to login page even if logout fails
|
|
1754
1725
|
this.router.navigate(['/auth/sign-in']);
|
|
1755
1726
|
}
|
|
@@ -1760,7 +1731,7 @@ class CideLytHeaderWrapperComponent {
|
|
|
1760
1731
|
}
|
|
1761
1732
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytHeaderWrapperComponent, decorators: [{
|
|
1762
1733
|
type: Component,
|
|
1763
|
-
args: [{ selector: 'cide-lyt-header-wrapper', standalone: true, imports: [CideInputComponent, CommonModule, CideIconComponent, CideEleDropdownComponent, CideEleFileImageDirective], template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\n <!-- Logo Section -->\n <div class=\"tw-flex tw-items-center tw-gap-3\">\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\n } @else {\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\n }\n\n </div>\n @if (appStateService.activeEntity()?.syen_name) {\n <span\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\n {{ appStateService.activeEntity()?.syen_name }}\n </span>\n }\n </div>\n <!-- Search Section -->\n <div class=\"header-search-container\">\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\n size=\"md\"></cide-ele-input>\n </div>\n\n <!-- Icons Section -->\n <div class=\"header-icons-container\">\n <!-- Financial Year Dropdown -->\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\n (itemClick)=\"onFinancialYearClick($event)\">\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">Financial Year</div>\n </div>\n\n <!-- Academic Year Dropdown -->\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\n (itemClick)=\"onAcademicYearClick($event)\">\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">Academic Year</div>\n </div>\n\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\n <cide-ele-icon>notifications</cide-ele-icon>\n <div class=\"header-badge\">3</div>\n <div class=\"header-tooltip\">Notifications</div>\n </div>\n\n <div class=\"header-divider\"></div>\n\n <!-- Profile with Dropdown -->\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\n [triggerTemplate]=\"triggerTemplate\"\n (itemClick)=\"onProfileClick($event)\">\n <ng-template #triggerTemplate>\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\n <div class=\"profile-avatar\">\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\n </div>\n } @else {\n <div class=\"profile-avatar\">\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\n </div>\n }\n </ng-template>\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">My Account</div>\n </div>\n </div>\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"] }]
|
|
1734
|
+
args: [{ selector: 'cide-lyt-header-wrapper', imports: [CideInputComponent, CommonModule, CideIconComponent, CideEleDropdownComponent, CideEleFileImageDirective], template: "<header id=\"cide-lyt-header-wrapper\" class=\"cide-lyt-header tw-w-full tw-select-none cide-lyt-header-wrapper-hide\">\n <!-- Logo Section -->\n <div class=\"tw-flex tw-items-center tw-gap-3\">\n <div class=\"header-logo-container tw-flex tw-items-center tw-gap-3 tw-cursor-pointer\" (click)=\"onLogoClick()\"\n (keydown.enter)=\"onLogoClick()\" (keydown.space)=\"onLogoClick()\" tabindex=\"0\" role=\"button\"\n aria-label=\"Navigate to home\" title=\"Click to go to control panel home\">\n @if (appStateService.activeEntity()?.syen_photo_id_cyfm) {\n <img cideEleFileImage [fileId]=\"(appStateService.activeEntity()?.syen_photo_id_cyfm || '')\"\n [altText]=\"'Entity Logo'\" class=\"tw-w-8 tw-h-8 tw-object-contain\">\n } @else {\n <cide-ele-icon name=\"business\" class=\"tw-w-8 tw-h-8 tw-text-blue-600\"></cide-ele-icon>\n }\n\n </div>\n @if (appStateService.activeEntity()?.syen_name) {\n <span\n class=\"tw-text-md tw-font-semibold tw-text-blue-600 hover:tw-text-blue-800 tw-cursor-pointer sm:block tw-transition-colors tw-duration-200 hover:tw-underline\"\n (click)=\"onEntityNameClick()\" title=\"Click to switch entity\">\n {{ appStateService.activeEntity()?.syen_name }}\n </span>\n }\n </div>\n <!-- Search Section -->\n <div class=\"header-search-container\">\n <cide-ele-input id=\"cide_lyt_header_search\" placeholder=\"Search...\" leadingIcon=\"search\"\n size=\"md\"></cide-ele-input>\n </div>\n\n <!-- Icons Section -->\n <div class=\"header-icons-container\">\n <!-- Financial Year Dropdown -->\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentFinancialYearName() }}</span>\n <cide-ele-dropdown [items]=\"financialYearItems\" [config]=\"financialYearConfig\"\n (itemClick)=\"onFinancialYearClick($event)\">\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">Financial Year</div>\n </div>\n\n <!-- Academic Year Dropdown -->\n <div class=\"header-dropdown-container\" (mouseenter)=\"updateTooltipPosition($event)\">\n <span class=\"tw-text-xs tw-font-semibold tw-mr-1\">{{ currentAcademicYearName() }}</span>\n <cide-ele-dropdown [items]=\"academicYearItems\" [config]=\"academicYearConfig\"\n (itemClick)=\"onAcademicYearClick($event)\">\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">Academic Year</div>\n </div>\n\n <div class=\"header-icon\" (mouseenter)=\"updateTooltipPosition($event)\">\n <cide-ele-icon>notifications</cide-ele-icon>\n <div class=\"header-badge\">3</div>\n <div class=\"header-tooltip\">Notifications</div>\n </div>\n\n <div class=\"header-divider\"></div>\n\n <!-- Profile with Dropdown -->\n <div class=\"header-icon user-profile\" (mouseenter)=\"updateTooltipPosition($event)\">\n <cide-ele-dropdown [items]=\"profileItems\" [config]=\"profileConfig\"\n [triggerTemplate]=\"triggerTemplate\"\n (itemClick)=\"onProfileClick($event)\">\n <ng-template #triggerTemplate>\n @if (appStateService.currentUser()?.user_photo_id_cyfm) {\n <div class=\"profile-avatar\">\n <img cideEleFileImage [fileId]=\"(appStateService.currentUser()?.user_photo_id_cyfm || '')\"\n [altText]=\"'User Profile Photo'\" class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-full\">\n </div>\n } @else {\n <div class=\"profile-avatar\">\n <cide-ele-icon name=\"person\" class=\"tw-w-6 tw-h-6 tw-text-white\"></cide-ele-icon>\n </div>\n }\n </ng-template>\n </cide-ele-dropdown>\n <div class=\"header-tooltip\">My Account</div>\n </div>\n </div>\n</header>", styles: [".cide-lyt-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to right,#fffffff2,#f9fafbf2);box-shadow:0 2px 8px #00000008;padding:0 1rem;position:relative;z-index:20;transition:all .3s cubic-bezier(.4,0,.2,1);will-change:transform;border-bottom:1px solid rgba(229,231,235,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.header-logo-container{height:100%;display:flex;align-items:center;padding:.5rem 0;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:8px;outline:none}.header-logo-container img{height:30px;max-height:100%;transition:all .3s ease;border-radius:5px;overflow:hidden;box-shadow:0 1px 4px #0000000d}.header-logo-container:hover img{transform:scale(1.03);filter:brightness(1.05);box-shadow:0 2px 6px #00000014}.header-logo-container:after{content:\"\";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(to bottom right,#fff0,#ffffff4d,#fff0);transform:rotate(30deg);opacity:0;transition:transform .6s ease,opacity .6s ease;pointer-events:none}.header-logo-container:hover:after,.header-logo-container:focus:after{opacity:1;transform:rotate(30deg) translate(50%,50%)}.header-search-container{flex-grow:1;max-width:600px;margin:0 2rem;position:relative;transition:all .3s ease}::ng-deep .header-search-container #cide_lyt_header_search{width:100%;background-color:#f9fafbcc;border-radius:20px!important;transition:all .3s ease;overflow:visible;transform:translateZ(0)}::ng-deep .header-search-container #cide_lyt_header_search:hover{box-shadow:0 3px 12px #00000014;background-color:#fff;transform:translateY(-1px)}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-input{background-color:transparent;font-size:.85rem!important;letter-spacing:.01em}::ng-deep .header-search-container #cide_lyt_header_search .cide-input-leading-icon{color:#6b7280b3!important;font-size:1.1rem!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within{transform:translateY(-1px) scale(1.01)}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-input{border-color:#3b82f6!important}::ng-deep .header-search-container #cide_lyt_header_search:focus-within .cide-input-leading-icon{color:#3b82f6!important}.header-icons-container{display:flex;align-items:center;gap:1rem}.header-icon{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}.header-dropdown-container{position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px;padding:.25rem .5rem;background-color:#f9fafb99;border:1px solid rgba(229,231,235,.5);font-size:.75rem;font-weight:600;min-width:40px;height:28px}.header-dropdown-container:hover{background-color:#3b82f61a;border-color:#3b82f64d;color:#3b82f6;transform:translateY(-1px);box-shadow:0 2px 4px #3b82f61a}.header-dropdown-container:active{transform:scale(.98)}.header-icon:before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}.header-icon:hover:before{opacity:1;transform:scale(1)}.header-icon:hover{color:#3b82f6}.header-icon:active{transform:scale(.95)}.header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}.header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}.header-icon:hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.header-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:8px;background-color:#ef4444;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 1px 3px #ef44444d;font-weight:600;z-index:2;transition:all .2s ease}.header-icon:hover .header-badge{transform:scale(1.1)}.header-divider{height:20px;width:1px;background-color:#e5e7ebcc;margin:0 6px}.profile-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-size:.75rem;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #2563eb33;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:-.5px;cursor:pointer;border:2px solid transparent}.profile-avatar:hover,.header-icon:hover .profile-avatar{transform:scale(1.08);box-shadow:0 3px 8px #2563eb4d;border-color:#3b82f64d}::ng-deep .user-profile .dropdown-trigger{background:transparent!important;border:none!important;padding:0!important;width:auto!important;height:auto!important;border-radius:0!important}::ng-deep .user-profile .dropdown-trigger:hover{background:transparent!important}::ng-deep .user-profile .dropdown-trigger:focus,::ng-deep .user-profile .dropdown-trigger:focus-visible,::ng-deep .user-profile .dropdown-trigger:active{outline:none!important;box-shadow:none!important}.header-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;transition:all .2s cubic-bezier(.4,0,.2,1);border:2px solid transparent;box-shadow:0 2px 4px #0000001a}.header-avatar:hover{border-color:#3b82f6;transform:scale(1.05);box-shadow:0 3px 6px #3b82f64d}@media (max-width: 768px){.header-search-container{margin:0 1rem}.header-icons-container{gap:.5rem}}@media (max-width: 640px){.header-search-container{max-width:200px;margin:0 .5rem}}\n"] }]
|
|
1764
1735
|
}], ctorParameters: () => [], propDecorators: { triggerTemplate: [{
|
|
1765
1736
|
type: ViewChild,
|
|
1766
1737
|
args: ['triggerTemplate']
|
|
@@ -2364,7 +2335,7 @@ class CideLytSidebarWrapperComponent {
|
|
|
2364
2335
|
}
|
|
2365
2336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytSidebarWrapperComponent, decorators: [{
|
|
2366
2337
|
type: Component,
|
|
2367
|
-
args: [{ selector: 'cide-lyt-sidebar-wrapper',
|
|
2338
|
+
args: [{ selector: 'cide-lyt-sidebar-wrapper', imports: [CideIconComponent, CideInputComponent, CommonModule, CideEleResizerDirective, TooltipDirective, CideSpinnerComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
2368
2339
|
trigger('slideInOut', [
|
|
2369
2340
|
state('in', style({
|
|
2370
2341
|
opacity: 1,
|
|
@@ -2966,8 +2937,8 @@ class CideLytSidedrawerWrapperComponent {
|
|
|
2966
2937
|
}
|
|
2967
2938
|
ngOnInit() {
|
|
2968
2939
|
// Initialize the component map (You'd likely populate this from a config or service)
|
|
2969
|
-
this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-
|
|
2970
|
-
this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-
|
|
2940
|
+
this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-CpXybU-I.mjs').then(m => m.CideLytSidedrawerNotesComponent);
|
|
2941
|
+
this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-DQxKNHV2.mjs').then(m => m.CideLytDrawerThemeComponent);
|
|
2971
2942
|
}
|
|
2972
2943
|
async loadComponent(configFor) {
|
|
2973
2944
|
console.log('🔍 SIDEDRAWER - Loading component:', configFor, 'Current tab:', this.currentTabId);
|
|
@@ -3323,7 +3294,7 @@ class CloudIdeLayoutComponent {
|
|
|
3323
3294
|
}
|
|
3324
3295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CloudIdeLayoutComponent, decorators: [{
|
|
3325
3296
|
type: Component,
|
|
3326
|
-
args: [{ selector: 'cide-lyt-wrapper',
|
|
3297
|
+
args: [{ selector: 'cide-lyt-wrapper', template: `
|
|
3327
3298
|
<cide-lyt-layout-wrapper></cide-lyt-layout-wrapper>
|
|
3328
3299
|
|
|
3329
3300
|
<!-- Floating Container Manager -->
|
|
@@ -3475,7 +3446,7 @@ class CideLytSharedWrapperComponent {
|
|
|
3475
3446
|
}
|
|
3476
3447
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytSharedWrapperComponent, decorators: [{
|
|
3477
3448
|
type: Component,
|
|
3478
|
-
args: [{ selector: 'cide-lyt-shared-wrapper',
|
|
3449
|
+
args: [{ selector: 'cide-lyt-shared-wrapper', imports: [CideEleBreadcrumbComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tw-w-full tw-h-full tw-table\">\n <div\n class=\"tw-sticky tw-table-row tw-w-full tw-top-0 tw-z-50 tw-bg-white tw-border-b tw-border-gray-200 tw-shadow-sm\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-px-4 tw-py-0.5\">\n <div class=\"tw-flex-1\">\n <cide-ele-breadcrumb style=\"modern\" [compact]=\"true\" (homeClick)=\"onBreadcrumbHomeClick()\"></cide-ele-breadcrumb>\n </div>\n <div class=\"tw-flex-shrink-0 tw-ml-4\">\n <ng-content select=\"[breadcrumb-actions]\"></ng-content>\n </div>\n </div>\n </div>\n\n <div class=\"tw-table-row tw-h-full tw-w-full tw-overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [":host{display:block;height:100%}:host>div{display:flex;flex-direction:column}::ng-deep cide-lyt-shared-wrapper{height:100%!important;display:block!important;width:100%!important}\n"] }]
|
|
3479
3450
|
}], ctorParameters: () => [] });
|
|
3480
3451
|
|
|
3481
3452
|
const layoutRoutes = {
|
|
@@ -3490,7 +3461,7 @@ const layoutControlPannelChildRoutes = [{
|
|
|
3490
3461
|
},
|
|
3491
3462
|
{
|
|
3492
3463
|
path: "home",
|
|
3493
|
-
loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-
|
|
3464
|
+
loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-nOJs_t7D.mjs').then(c => c.CideLytHomeWrapperComponent),
|
|
3494
3465
|
canActivate: [authGuard],
|
|
3495
3466
|
data: {
|
|
3496
3467
|
reuseTab: true, // For CustomRouteReuseStrategy
|
|
@@ -4003,7 +3974,7 @@ class CideLytFloatingEntityRightsSharingComponent {
|
|
|
4003
3974
|
entityDataCache = new Map();
|
|
4004
3975
|
CACHE_DURATION = 5 * 60 * 1000; // 5 minutes cache duration
|
|
4005
3976
|
fb = inject(FormBuilder);
|
|
4006
|
-
entityService = inject(
|
|
3977
|
+
entityService = inject(ENTITY_SERVICE_TOKEN);
|
|
4007
3978
|
// Inject the merged service that now includes entity access pass management
|
|
4008
3979
|
entityAccessPassService = inject(CideLytFloatingEntityRightsSharingService);
|
|
4009
3980
|
appState = inject(AppStateService);
|
|
@@ -4803,7 +4774,7 @@ class CideLytFloatingEntityRightsSharingComponent {
|
|
|
4803
4774
|
}
|
|
4804
4775
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytFloatingEntityRightsSharingComponent, decorators: [{
|
|
4805
4776
|
type: Component,
|
|
4806
|
-
args: [{ selector: 'cide-lyt-floating-entity-rights-sharing',
|
|
4777
|
+
args: [{ selector: 'cide-lyt-floating-entity-rights-sharing', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
4807
4778
|
CommonModule,
|
|
4808
4779
|
ReactiveFormsModule,
|
|
4809
4780
|
CideEleButtonComponent,
|
|
@@ -5058,4 +5029,4 @@ var floatingEntityRightsSharing_component = /*#__PURE__*/Object.freeze({
|
|
|
5058
5029
|
*/
|
|
5059
5030
|
|
|
5060
5031
|
export { AppStateHelperService as A, CideLytSharedWrapperComponent as C, ENVIRONMENT_CONFIG as E, CideLytSidebarService as a, CideLytRequestService as b, CideLytSidedrawerService as c, CideLytThemeService as d, AppStateService as e, CloudIdeLayoutService as f, CloudIdeLayoutComponent as g, CideLytSharedService as h, layoutControlPannelChildRoutes as i, CustomRouteReuseStrategy as j, CideLytUserStatusService as k, layoutRoutes as l, CacheManagerService as m, CideLytFileManagerService as n, CideLytFloatingEntityRightsSharingComponent as o, processThemeVariable as p, CideLytFloatingEntityRightsSharingService as q, setCSSVariable as s, themeFactory as t };
|
|
5061
|
-
//# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-
|
|
5032
|
+
//# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-BT6krb0-.mjs.map
|