cloud-ide-layout 0.0.1 → 1.0.1
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 +466 -13
- package/esm2022/lib/cloud-ide-layout.routes.mjs +24 -10
- package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +6 -6
- package/esm2022/lib/layout/console/console.service.mjs +28 -0
- package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +16 -8
- package/esm2022/lib/layout/footer/footer.service.mjs +28 -0
- package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +69 -18
- package/esm2022/lib/layout/header/header.service.mjs +17 -6
- package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +194 -7
- package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +18 -9
- package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +54 -6
- package/esm2022/lib/layout/request/request.service.mjs +235 -0
- package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +84 -0
- package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +32 -20
- package/esm2022/lib/layout/shared/shared.service.mjs +490 -14
- package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +480 -15
- package/esm2022/lib/layout/sidebar/sidebar.service.mjs +20 -7
- package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +40 -0
- package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +296 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +175 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +51 -0
- package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +254 -9
- package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +70 -0
- package/esm2022/lib/services/app-state/app-state-helper.service.mjs +222 -0
- package/esm2022/lib/services/app-state/app-state.service.mjs +256 -0
- package/esm2022/lib/services/app-state/index.mjs +3 -0
- package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +112 -0
- package/esm2022/lib/services/file-manager/file-manager.service.mjs +7 -7
- package/esm2022/lib/services/tab-state.service.mjs +128 -0
- package/esm2022/lib/services/theme/theme.service.mjs +151 -0
- package/esm2022/lib/services/user-status/user-status.service.mjs +135 -0
- package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +61 -0
- package/esm2022/lib/utils/index.mjs +2 -0
- package/esm2022/public-api.mjs +7 -1
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-DqL3A73V.mjs +2914 -0
- package/fesm2022/cloud-ide-layout-cloud-ide-layout-DqL3A73V.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-drawer-theme.component-xd8IG3WP.mjs +443 -0
- package/fesm2022/cloud-ide-layout-drawer-theme.component-xd8IG3WP.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-DEdsEiaq.mjs +197 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-DEdsEiaq.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-ds12wZbh.mjs +260 -0
- package/fesm2022/cloud-ide-layout-sidedrawer-notes.component-ds12wZbh.mjs.map +1 -0
- package/fesm2022/cloud-ide-layout.mjs +1 -261
- package/fesm2022/cloud-ide-layout.mjs.map +1 -1
- package/lib/cloud-ide-layout.routes.d.ts +1 -0
- package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +3 -3
- package/lib/layout/console/console.service.d.ts +9 -0
- package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +7 -3
- package/lib/layout/footer/footer.service.d.ts +9 -0
- package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +17 -9
- package/lib/layout/header/header.service.d.ts +4 -3
- package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +90 -1
- package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +10 -1
- package/lib/layout/request/request.service.d.ts +60 -0
- package/lib/layout/request/tab-content/tab-content.component.d.ts +19 -0
- package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +4 -5
- package/lib/layout/shared/shared.service.d.ts +104 -6
- package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +135 -6
- package/lib/layout/sidebar/sidebar.service.d.ts +3 -2
- package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +16 -0
- package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +71 -0
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +48 -0
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +13 -0
- package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +28 -3
- package/lib/layout/sidedrawer/sidedrawer.service.d.ts +30 -0
- package/lib/services/app-state/app-state-helper.service.d.ts +150 -0
- package/lib/services/app-state/app-state.service.d.ts +85 -0
- package/lib/services/app-state/index.d.ts +3 -0
- package/lib/services/cache-manager/cache-manager.service.d.ts +64 -0
- package/lib/services/file-manager/file-manager.service.d.ts +0 -2
- package/lib/services/tab-state.service.d.ts +79 -0
- package/lib/services/theme/theme.service.d.ts +71 -0
- package/lib/services/user-status/user-status.service.d.ts +57 -0
- package/lib/utils/custom-route-reuse-strategy.d.ts +15 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +2 -2
- package/public-api.d.ts +4 -0
- package/src/lib/assets/css/cide-lyt-style.scss +182 -0
- package/src/lib/assets/css/cide-lyt-variable.scss +119 -0
- package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs +0 -14
- package/fesm2022/cloud-ide-layout-home-wrapper.component-BV7ptL0Y.mjs.map +0 -1
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import { ElementRef, QueryList, AfterViewInit } from '@angular/core';
|
|
2
|
+
import { CideLytRequestService } from '../request.service';
|
|
1
3
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class CideLytRequestWrapperComponent {
|
|
4
|
+
export declare class CideLytRequestWrapperComponent implements AfterViewInit {
|
|
5
|
+
requestService: CideLytRequestService;
|
|
6
|
+
requestItemElements: QueryList<ElementRef>;
|
|
7
|
+
requestItems: import("@angular/core").Signal<import("../request.service").TabInfo[]>;
|
|
8
|
+
constructor(requestService: CideLytRequestService);
|
|
9
|
+
ngAfterViewInit(): void;
|
|
10
|
+
private applyAnimations;
|
|
11
|
+
applyFlickerEffect(event: Event): void;
|
|
3
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytRequestWrapperComponent, never>;
|
|
4
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytRequestWrapperComponent, "cide-lyt-request-wrapper", never, {}, {}, never, never, true, never>;
|
|
5
14
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { WritableSignal, Signal } from '@angular/core';
|
|
2
|
+
import { ISytmLayout } from 'cloud-ide-lms-model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export interface TabInfo {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
route: string;
|
|
8
|
+
params?: Record<string, unknown>;
|
|
9
|
+
active: boolean;
|
|
10
|
+
sytm_page_id_sypg: string;
|
|
11
|
+
themeId: string;
|
|
12
|
+
loadedComponent?: unknown;
|
|
13
|
+
scrollTop?: number;
|
|
14
|
+
scrollLeft?: number;
|
|
15
|
+
layout?: ISytmLayout;
|
|
16
|
+
}
|
|
17
|
+
interface PageDataResponse {
|
|
18
|
+
data?: {
|
|
19
|
+
page?: {
|
|
20
|
+
sypg_title?: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare class CideLytRequestService {
|
|
25
|
+
requestVisible: boolean;
|
|
26
|
+
tabsSignal: WritableSignal<TabInfo[]>;
|
|
27
|
+
activeTabIdSignal: WritableSignal<string | null>;
|
|
28
|
+
tabs: Signal<TabInfo[]>;
|
|
29
|
+
activeTabId: Signal<string | null>;
|
|
30
|
+
activeTab: Signal<TabInfo | undefined>;
|
|
31
|
+
private router;
|
|
32
|
+
private routeReuseStrategy;
|
|
33
|
+
private tabStateService;
|
|
34
|
+
private sidedrawerService;
|
|
35
|
+
private sharedService;
|
|
36
|
+
constructor();
|
|
37
|
+
/**
|
|
38
|
+
* Handle request visibility changes from shared service
|
|
39
|
+
*/
|
|
40
|
+
private handleRequestVisibility;
|
|
41
|
+
/**
|
|
42
|
+
* Handle sidebar sync when tab becomes active
|
|
43
|
+
*/
|
|
44
|
+
private handleSidebarSync;
|
|
45
|
+
/**
|
|
46
|
+
* Handle route-based tab management - called by shared service
|
|
47
|
+
* This method checks for existing tabs and creates/activates as needed
|
|
48
|
+
*/
|
|
49
|
+
handleRouteBasedTabManagement(currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: PageDataResponse, pageCode: string): void;
|
|
50
|
+
addTab(title: string, route: string, params?: Record<string, unknown>, layout?: ISytmLayout): string;
|
|
51
|
+
activateTab(tabId: string): void;
|
|
52
|
+
closeTab(id: string): void;
|
|
53
|
+
hideRequest(): void;
|
|
54
|
+
showRequest(): void;
|
|
55
|
+
private generateId;
|
|
56
|
+
updateTabScrollPosition(tabId: string, scrollTop: number, scrollLeft: number): void;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytRequestService, never>;
|
|
58
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CideLytRequestService>;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { CideLytRequestService } from '../request.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TabContentComponent implements AfterViewInit {
|
|
6
|
+
private requestService;
|
|
7
|
+
private router;
|
|
8
|
+
private cdr;
|
|
9
|
+
scrollContainerRef: ElementRef<HTMLDivElement>;
|
|
10
|
+
private currentActiveTabId;
|
|
11
|
+
private isRestoringScroll;
|
|
12
|
+
constructor(requestService: CideLytRequestService, router: Router, // Inject Router to listen for NavigationEnd
|
|
13
|
+
cdr: ChangeDetectorRef);
|
|
14
|
+
ngAfterViewInit(): void;
|
|
15
|
+
onScroll(): void;
|
|
16
|
+
private restoreScrollPosition;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TabContentComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TabContentComponent, "cide-lyt-tab-content", never, {}, {}, never, never, true, never>;
|
|
19
|
+
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
|
-
import { CideLytSharedService } from '../shared.service';
|
|
3
2
|
import { designConfigResponseData } from 'cloud-ide-lms-model';
|
|
3
|
+
import { AppStateHelperService } from '../../../services/app-state/app-state-helper.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class CideLytSharedWrapperComponent implements OnInit {
|
|
6
|
-
private sharedService;
|
|
7
6
|
shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam>;
|
|
8
7
|
page_data: designConfigResponseData;
|
|
9
|
-
|
|
8
|
+
private sharedService;
|
|
9
|
+
private sidedrawerService;
|
|
10
|
+
protected appState: AppStateHelperService;
|
|
10
11
|
ngOnInit(): void;
|
|
11
|
-
loadPageData(): void;
|
|
12
|
-
setTitle(title: string): void;
|
|
13
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSharedWrapperComponent, never>;
|
|
14
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, {}, {}, never, never, true, never>;
|
|
15
14
|
}
|
|
@@ -1,16 +1,114 @@
|
|
|
1
|
-
import { designConfigControllerResponse, MDesignConfig } from 'cloud-ide-lms-model';
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
1
|
+
import { designConfigControllerResponse, ISytmLayout, MDesignConfig } from 'cloud-ide-lms-model';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
4
3
|
import { Title } from '@angular/platform-browser';
|
|
5
|
-
import {
|
|
4
|
+
import { CideLytSharedWrapperSetupParam } from './shared-wrapper/shared-wrapper.component';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
interface CachedPageData {
|
|
7
|
+
request: Partial<CideLytSharedWrapperSetupParam>;
|
|
8
|
+
response: designConfigControllerResponse;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
ttl: number;
|
|
11
|
+
}
|
|
7
12
|
export declare class CideLytSharedService {
|
|
13
|
+
private pageDataCacheSignal;
|
|
14
|
+
private loadingStateSignal;
|
|
15
|
+
readonly pageDataCache: import("@angular/core").Signal<{
|
|
16
|
+
[key: string]: CachedPageData;
|
|
17
|
+
}>;
|
|
18
|
+
readonly loadingStates: import("@angular/core").Signal<{
|
|
19
|
+
[key: string]: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
readonly cacheInfo: import("@angular/core").Signal<{
|
|
22
|
+
totalCached: number;
|
|
23
|
+
validCached: number;
|
|
24
|
+
expiredCached: number;
|
|
25
|
+
}>;
|
|
26
|
+
private inflightRequests;
|
|
27
|
+
private readonly DEFAULT_CACHE_TTL;
|
|
8
28
|
private elementService;
|
|
9
29
|
private http;
|
|
10
30
|
titleService: Title;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
31
|
+
private sidebarService;
|
|
32
|
+
private headerService;
|
|
33
|
+
private footerService;
|
|
34
|
+
private consoleService;
|
|
35
|
+
private sidedrawerService;
|
|
36
|
+
private router;
|
|
37
|
+
private appState;
|
|
38
|
+
private routeSubscription?;
|
|
39
|
+
private pageDataSubscription?;
|
|
40
|
+
private tabManagementCallback?;
|
|
41
|
+
private requestVisibilityCallback?;
|
|
42
|
+
constructor();
|
|
43
|
+
/**
|
|
44
|
+
* Register tab management callback from request service
|
|
45
|
+
* This allows shared service to call request service without circular dependency
|
|
46
|
+
*/
|
|
47
|
+
registerTabManagement(callback: (currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: designConfigControllerResponse, pageCode: string) => void): void;
|
|
48
|
+
/**
|
|
49
|
+
* Register request visibility callback from request service
|
|
50
|
+
* This allows shared service to control request wrapper visibility
|
|
51
|
+
*/
|
|
52
|
+
registerRequestVisibility(callback: (show: boolean) => void): void;
|
|
53
|
+
/**
|
|
54
|
+
* Enhanced loadPageData with caching and deduplication
|
|
55
|
+
* @param body - Request payload
|
|
56
|
+
* @param forceRefresh - Force API call even if cached data exists
|
|
57
|
+
* @param customTTL - Custom cache TTL in milliseconds
|
|
58
|
+
*/
|
|
59
|
+
loadPageData(body: MDesignConfig, forceRefresh?: boolean, customTTL?: number): Observable<designConfigControllerResponse>;
|
|
60
|
+
/**
|
|
61
|
+
* Consolidated method to load and process page data
|
|
62
|
+
* This replaces the separate calls in request service and shared wrapper
|
|
63
|
+
*/
|
|
64
|
+
loadAndProcessPageData(body: MDesignConfig, options?: {
|
|
65
|
+
forceRefresh?: boolean;
|
|
66
|
+
customTTL?: number;
|
|
67
|
+
setTitle?: boolean;
|
|
68
|
+
setSidebarContext?: boolean;
|
|
69
|
+
updateLayout?: boolean;
|
|
70
|
+
}): Observable<designConfigControllerResponse>;
|
|
71
|
+
/**
|
|
72
|
+
* Get cached page data without making API call
|
|
73
|
+
*/
|
|
74
|
+
getCachedPageData(pageCode: string): designConfigControllerResponse | null;
|
|
75
|
+
/**
|
|
76
|
+
* Check if loading for a specific page code
|
|
77
|
+
*/
|
|
78
|
+
isLoading(pageCode: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Invalidate cache for specific page code
|
|
81
|
+
*/
|
|
82
|
+
invalidateCache(pageCode: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* Clear all cached data
|
|
85
|
+
*/
|
|
86
|
+
clearAllCache(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Preload page data for better performance
|
|
89
|
+
*/
|
|
90
|
+
preloadPageData(pageCodes: string[]): void;
|
|
91
|
+
private hasValidCache;
|
|
92
|
+
private isCacheValid;
|
|
93
|
+
private cachePageData;
|
|
94
|
+
private setLoadingState;
|
|
95
|
+
private cleanExpiredCache;
|
|
96
|
+
setPageData(page_data_response: designConfigControllerResponse, page_data_payload: Partial<CideLytSharedWrapperSetupParam>): void;
|
|
97
|
+
/**
|
|
98
|
+
* Handle route changes - moved from request service for better architecture
|
|
99
|
+
* This method loads page data and calls request service to manage tabs
|
|
100
|
+
*/
|
|
101
|
+
private handleRouteChange;
|
|
102
|
+
/**
|
|
103
|
+
* Handle tab request by calling request service
|
|
104
|
+
*/
|
|
105
|
+
private handleTabRequest;
|
|
106
|
+
/**
|
|
107
|
+
* Sync the active menu in the sidebar based on the loaded page data.
|
|
108
|
+
* This ensures the correct module is highlighted in the sidebar.
|
|
109
|
+
*/
|
|
110
|
+
private syncSidebarActiveMenu;
|
|
14
111
|
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSharedService, never>;
|
|
15
112
|
static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSharedService>;
|
|
16
113
|
}
|
|
114
|
+
export {};
|
|
@@ -1,11 +1,140 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
1
2
|
import { menuResponseData } from 'cloud-ide-lms-model';
|
|
2
|
-
import {
|
|
3
|
+
import { AppStateHelperService } from '../../../services/app-state';
|
|
4
|
+
import { CideLytUserStatusService, type UserStatus } from '../../../services/user-status/user-status.service';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class
|
|
5
|
-
|
|
6
|
+
export declare class CideLytSidebarWrapperComponent implements OnInit {
|
|
7
|
+
sidebarSetupData: {
|
|
8
|
+
cide_lyt_sidebar_width: number;
|
|
9
|
+
};
|
|
10
|
+
isCollapsed: boolean;
|
|
11
|
+
darkMode: boolean;
|
|
12
|
+
showUserMenu: boolean;
|
|
13
|
+
showOptions: boolean;
|
|
14
|
+
showNotifications: boolean;
|
|
15
|
+
showNotificationsPanel: boolean;
|
|
16
|
+
searchText: string;
|
|
17
|
+
isExpanded: boolean;
|
|
18
|
+
searchResults: {
|
|
19
|
+
icon: string;
|
|
20
|
+
title: string;
|
|
21
|
+
}[];
|
|
22
|
+
collapsedSections: {
|
|
23
|
+
[key: string]: boolean;
|
|
24
|
+
};
|
|
25
|
+
expandedSections: {
|
|
26
|
+
[key: string]: boolean;
|
|
27
|
+
};
|
|
28
|
+
animateSections: boolean[];
|
|
29
|
+
lastScrollTop: number;
|
|
30
|
+
scrolledPast: boolean[];
|
|
6
31
|
core_system_menu: menuResponseData[];
|
|
7
32
|
core_system_module: menuResponseData[];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
33
|
+
activeModuleId: string;
|
|
34
|
+
hoverModuleId: string;
|
|
35
|
+
animateItems: boolean;
|
|
36
|
+
moduleLoadComplete: boolean;
|
|
37
|
+
menuLoadComplete: boolean;
|
|
38
|
+
loadingMenus: boolean;
|
|
39
|
+
get selectedModuleMenus(): menuResponseData[];
|
|
40
|
+
/**
|
|
41
|
+
* Gets the CSS classes for the user status indicator
|
|
42
|
+
* Uses the injected user status service
|
|
43
|
+
*/
|
|
44
|
+
getUserStatusClass(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Gets the tooltip text for the user status
|
|
47
|
+
* Uses the injected user status service
|
|
48
|
+
*/
|
|
49
|
+
getUserStatusText(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Sets the user status (delegates to service)
|
|
52
|
+
* @param status The new status to set
|
|
53
|
+
* @param message Optional custom status message
|
|
54
|
+
*/
|
|
55
|
+
setUserStatus(status: UserStatus, message?: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Gets the current user status data
|
|
58
|
+
*/
|
|
59
|
+
get currentUserStatus(): import("../../../services/user-status/user-status.service").UserStatusData;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the icon for the currently active module
|
|
62
|
+
* @returns The icon name for the active module or a default icon
|
|
63
|
+
*/
|
|
64
|
+
getActiveModuleIcon(): string;
|
|
65
|
+
onMenuClick(menu: menuResponseData): void;
|
|
66
|
+
/**
|
|
67
|
+
* Toggle section expand/collapse state
|
|
68
|
+
*/
|
|
69
|
+
toggleSection(sectionId: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Check if section is expanded
|
|
72
|
+
*/
|
|
73
|
+
isSectionExpanded(sectionId: string): boolean;
|
|
74
|
+
private sidebarService;
|
|
75
|
+
private elementRef;
|
|
76
|
+
appState: AppStateHelperService;
|
|
77
|
+
private router;
|
|
78
|
+
protected userStatusService: CideLytUserStatusService;
|
|
79
|
+
constructor();
|
|
80
|
+
ngOnInit(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Load menus for a specific module
|
|
83
|
+
* @param module The module to load menus for
|
|
84
|
+
*/
|
|
85
|
+
loadMenusForModule(module: menuResponseData): void;
|
|
86
|
+
toggleSidebar(): void;
|
|
87
|
+
toggleUserMenu(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Sets the active menu item with animation
|
|
90
|
+
* @param moduleId The ID of the module to set as active
|
|
91
|
+
*/
|
|
92
|
+
setActiveMenu(moduleId: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Sets the active menu item by index with animation
|
|
95
|
+
* @param index The index of the menu item
|
|
96
|
+
*/
|
|
97
|
+
setActiveMenuByIndex(index: number): void;
|
|
98
|
+
/**
|
|
99
|
+
* Public method to set active module by ID from external components
|
|
100
|
+
* This is useful when you want to programmatically set the active module
|
|
101
|
+
* @param moduleId The ID of the module to set as active
|
|
102
|
+
* @returns boolean indicating if the module was found and set as active
|
|
103
|
+
*/
|
|
104
|
+
setActiveModuleById(moduleId: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Public method to get the currently active module ID
|
|
107
|
+
* @returns The ID of the currently active module, or empty string if none
|
|
108
|
+
*/
|
|
109
|
+
getActiveModuleId(): string;
|
|
110
|
+
/**
|
|
111
|
+
* Tracks hover state for enhanced visual feedback
|
|
112
|
+
* @param moduleId The ID of the hovered module, or empty string for none
|
|
113
|
+
*/
|
|
114
|
+
onItemHover(moduleId: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Adds subtle animations when opening dropdown menus
|
|
117
|
+
* @param menuId The ID of the menu element
|
|
118
|
+
*/
|
|
119
|
+
animateMenuOpen(menuId: string): void;
|
|
120
|
+
/**
|
|
121
|
+
* Updates tooltip position for more accurate placement
|
|
122
|
+
* @param event MouseEvent from hovering
|
|
123
|
+
* @param tooltip The tooltip element
|
|
124
|
+
*/
|
|
125
|
+
updateTooltipPosition(event: MouseEvent, tooltipIndex: number): void;
|
|
126
|
+
toggleNotificationsPanel(): void;
|
|
127
|
+
toggleTheme(): void;
|
|
128
|
+
toggleOptions(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Toggle old-style collapsed sections (for backwards compatibility)
|
|
131
|
+
*/
|
|
132
|
+
toggleCollapsedSection(section: string): void;
|
|
133
|
+
isSectionCollapsed(section: string): boolean;
|
|
134
|
+
onSearch(): void;
|
|
135
|
+
onScroll(event: Event): void;
|
|
136
|
+
resetAnimations(): void;
|
|
137
|
+
onDocumentClick(event: MouseEvent): void;
|
|
138
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidebarWrapperComponent, never>;
|
|
139
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidebarWrapperComponent, "cide-lyt-sidebar-wrapper", never, {}, {}, never, never, true, never>;
|
|
11
140
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
1
|
import { menuControllerResponse, MMenu } from 'cloud-ide-lms-model';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class CideLytSidebarService {
|
|
5
|
+
sidebarMenueVisible: boolean;
|
|
6
6
|
private http;
|
|
7
|
-
constructor(http: HttpClient);
|
|
8
7
|
getSidebarMenues(body: MMenu): Observable<menuControllerResponse>;
|
|
8
|
+
hideSidebar(): void;
|
|
9
|
+
showSidebar(): void;
|
|
9
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidebarService, never>;
|
|
10
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSidebarService>;
|
|
11
12
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { CideLytSidedrawerService } from './sidedrawer.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare abstract class CideLytDrawerBase implements OnInit {
|
|
5
|
+
private _pageId;
|
|
6
|
+
private _themeId;
|
|
7
|
+
protected sidedrawerService: CideLytSidedrawerService;
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
protected afterContextInit(): void;
|
|
10
|
+
setContext(pageId: string, themeId: string): void;
|
|
11
|
+
get pageId(): string | null;
|
|
12
|
+
get themeId(): string | null;
|
|
13
|
+
protected getStorageKey(suffix: string): string;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerBase, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CideLytDrawerBase, never, never, {}, {}, never, never, false, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { SelectOption } from 'cloud-ide-element';
|
|
3
|
+
import { CideLytThemeService } from '../../../services/theme/theme.service';
|
|
4
|
+
import type { ICoreSyth } from 'cloud-ide-lms-model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
interface ThemeColor {
|
|
7
|
+
label: string;
|
|
8
|
+
varName: string;
|
|
9
|
+
value: string;
|
|
10
|
+
}
|
|
11
|
+
interface TypographySetting {
|
|
12
|
+
label: string;
|
|
13
|
+
varName: string;
|
|
14
|
+
value: string;
|
|
15
|
+
type: 'number' | 'text';
|
|
16
|
+
min?: number;
|
|
17
|
+
max?: number;
|
|
18
|
+
}
|
|
19
|
+
type ThemeGroup = {
|
|
20
|
+
label: string;
|
|
21
|
+
items: Array<{
|
|
22
|
+
label: string;
|
|
23
|
+
varName: string;
|
|
24
|
+
value: string;
|
|
25
|
+
type: 'number' | 'text';
|
|
26
|
+
min?: number;
|
|
27
|
+
max?: number;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
export declare class CideLytDrawerThemeComponent implements OnInit {
|
|
31
|
+
private themeService;
|
|
32
|
+
private platformId;
|
|
33
|
+
private readonly appState;
|
|
34
|
+
presetThemes: {
|
|
35
|
+
value: string;
|
|
36
|
+
label: string;
|
|
37
|
+
theme: ICoreSyth;
|
|
38
|
+
}[];
|
|
39
|
+
selectedTheme: string;
|
|
40
|
+
isLoadingThemes: boolean;
|
|
41
|
+
themeLoadError: string;
|
|
42
|
+
mergedTheme: {
|
|
43
|
+
[key: string]: string;
|
|
44
|
+
};
|
|
45
|
+
isRTL: boolean;
|
|
46
|
+
originalThemeGroupValues: ThemeGroup[];
|
|
47
|
+
originalApiThemeValues: {
|
|
48
|
+
[key: string]: string;
|
|
49
|
+
};
|
|
50
|
+
themeGroups: ThemeGroup[];
|
|
51
|
+
constructor(themeService: CideLytThemeService, platformId: object);
|
|
52
|
+
ngOnInit(): void;
|
|
53
|
+
loadAndApplyUserTheme(): void;
|
|
54
|
+
updateVar(varName: string, value: string): void;
|
|
55
|
+
onThemeChange(event: SelectOption): void;
|
|
56
|
+
onReset(): void;
|
|
57
|
+
onSave(): void;
|
|
58
|
+
hasUnsavedChanges(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Check if current values differ from the original API values
|
|
61
|
+
* This is useful for determining if reset should be enabled
|
|
62
|
+
*/
|
|
63
|
+
hasChangesFromOriginal(): boolean;
|
|
64
|
+
onColorChange(event: Event, color: ThemeColor): void;
|
|
65
|
+
onTypographyChange(event: Event, setting: TypographySetting): void;
|
|
66
|
+
onLayoutChange(event: Event, setting: TypographySetting): void;
|
|
67
|
+
onDirectionToggle(event: Event): void;
|
|
68
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerThemeComponent, never>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytDrawerThemeComponent, "cide-lyt-drawer-theme", never, {}, {}, never, never, true, never>;
|
|
70
|
+
}
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { ICoreSypn } from 'cloud-ide-lms-model';
|
|
4
|
+
import { CideLytDrawerBase } from '../cide-lyt-drawer-base.class';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export interface NewNoteModel {
|
|
7
|
+
title: string;
|
|
8
|
+
description: string;
|
|
9
|
+
isPageSpecific: boolean;
|
|
10
|
+
isUserSpecific: boolean;
|
|
11
|
+
isEntitySpecific: boolean;
|
|
12
|
+
isThemeSpecific: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface NotesComponentState {
|
|
15
|
+
newNoteModel: NewNoteModel;
|
|
16
|
+
isFormVisible: boolean;
|
|
17
|
+
scrollTop: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class CideLytSidedrawerNotesComponent extends CideLytDrawerBase implements OnInit {
|
|
20
|
+
private notesSignal;
|
|
21
|
+
notes: import("@angular/core").Signal<ICoreSypn[]>;
|
|
22
|
+
isFormVisible: boolean;
|
|
23
|
+
isEditing: boolean;
|
|
24
|
+
editingNoteId: string | null;
|
|
25
|
+
hoveredNoteIndex: number | null;
|
|
26
|
+
noteForm: FormGroup;
|
|
27
|
+
private notesService;
|
|
28
|
+
private fb;
|
|
29
|
+
private appState;
|
|
30
|
+
ngOnInit(): void;
|
|
31
|
+
protected afterContextInit(): void;
|
|
32
|
+
private initForm;
|
|
33
|
+
showAddForm(): void;
|
|
34
|
+
hideAddForm(): void;
|
|
35
|
+
startEdit(note: ICoreSypn): void;
|
|
36
|
+
cancelEdit(): void;
|
|
37
|
+
onNoteHover(index: number): void;
|
|
38
|
+
onNoteLeave(): void;
|
|
39
|
+
onSubmit(): void;
|
|
40
|
+
private resetForm;
|
|
41
|
+
getState(): {
|
|
42
|
+
newNoteModel: any;
|
|
43
|
+
isFormVisible: boolean;
|
|
44
|
+
};
|
|
45
|
+
setState(state: NotesComponentState): void;
|
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerNotesComponent, never>;
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidedrawerNotesComponent, "cide-lyt-sidedrawer-notes", never, {}, {}, never, never, true, never>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ICoreSypn } from 'cloud-ide-lms-model';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CideLytDrawerNotesService {
|
|
5
|
+
private http;
|
|
6
|
+
constructor();
|
|
7
|
+
getNotes(): Observable<ICoreSypn[]>;
|
|
8
|
+
addNote(note: ICoreSypn): Observable<unknown>;
|
|
9
|
+
updateNote(note: ICoreSypn): Observable<unknown>;
|
|
10
|
+
deleteNote(noteId: string): Observable<unknown>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytDrawerNotesService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CideLytDrawerNotesService>;
|
|
13
|
+
}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
|
+
import { OnInit, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { CideLytSidedrawerService, SidedrawerItem } from '../sidedrawer.service';
|
|
1
3
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
export declare class CideLytSidedrawerWrapperComponent implements OnInit {
|
|
5
|
+
sidedrawerSetupData: {
|
|
6
|
+
cide_lyt_sidedrawer_width: number;
|
|
7
|
+
};
|
|
8
|
+
get drawerItems(): import("@angular/core").Signal<SidedrawerItem[]>;
|
|
9
|
+
get notesVisible(): import("@angular/core").Signal<boolean>;
|
|
10
|
+
isExpanded: boolean;
|
|
11
|
+
get shouldShowSidedrawer(): import("@angular/core").Signal<boolean>;
|
|
12
|
+
notesContainer: ViewContainerRef;
|
|
13
|
+
private currentComponentRef;
|
|
14
|
+
private componentMap;
|
|
15
|
+
private currentTabId;
|
|
16
|
+
private currentActiveComponent;
|
|
17
|
+
sidedrawerService: CideLytSidedrawerService;
|
|
18
|
+
private requestService;
|
|
19
|
+
private tabStateService;
|
|
20
|
+
constructor();
|
|
21
|
+
ngOnInit(): void;
|
|
22
|
+
loadComponent(configFor: string | null): Promise<void>;
|
|
23
|
+
private clearComponent;
|
|
24
|
+
private saveSidedrawerState;
|
|
25
|
+
private setComponentContext;
|
|
26
|
+
private getNotesContext;
|
|
27
|
+
onItemClick(item: SidedrawerItem): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerWrapperComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CideLytSidedrawerWrapperComponent, "cide-lyt-sidedrawer-wrapper", never, {}, {}, never, never, true, never>;
|
|
5
30
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ISytmLayout } from 'cloud-ide-lms-model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface SidedrawerItem {
|
|
4
|
+
status: boolean;
|
|
5
|
+
configFor: string;
|
|
6
|
+
title: string;
|
|
7
|
+
icon: string;
|
|
8
|
+
description: string;
|
|
9
|
+
isActive: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class CideLytSidedrawerService {
|
|
12
|
+
sidedrawerVisible: boolean;
|
|
13
|
+
private drawerItemsSignal;
|
|
14
|
+
drawerItems: import("@angular/core").Signal<SidedrawerItem[]>;
|
|
15
|
+
private notesVisibleSignal;
|
|
16
|
+
notesVisible: import("@angular/core").Signal<boolean>;
|
|
17
|
+
private activeComponentSignal;
|
|
18
|
+
activeComponent: import("@angular/core").Signal<string | null>;
|
|
19
|
+
private _pageId;
|
|
20
|
+
private _themeId;
|
|
21
|
+
setContext(pageId: string, themeId: string): void;
|
|
22
|
+
get pageId(): string | null;
|
|
23
|
+
get themeId(): string | null;
|
|
24
|
+
hideSidedrawer(): void;
|
|
25
|
+
showSidedrawer(): void;
|
|
26
|
+
updateDrawerItems(layout: ISytmLayout | undefined): void;
|
|
27
|
+
setActiveComponent(configFor: string | null): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CideLytSidedrawerService, never>;
|
|
29
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CideLytSidedrawerService>;
|
|
30
|
+
}
|