cloud-ide-layout 1.0.7 → 1.0.9
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 +34 -448
- package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs} +335 -343
- package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs.map → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs} +69 -67
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs.map → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs} +56 -51
- package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs.map → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs} +28 -32
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs.map → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs.map} +1 -1
- package/fesm2022/cloud-ide-layout.mjs +1 -1
- package/index.d.ts +579 -3
- package/package.json +4 -6
- package/esm2022/cloud-ide-layout.mjs +0 -5
- package/esm2022/lib/cloud-ide-layout.component.mjs +0 -16
- package/esm2022/lib/cloud-ide-layout.routes.mjs +0 -28
- package/esm2022/lib/cloud-ide-layout.service.mjs +0 -14
- package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +0 -11
- package/esm2022/lib/layout/console/console.service.mjs +0 -28
- package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +0 -20
- package/esm2022/lib/layout/footer/footer.service.mjs +0 -28
- package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +0 -84
- package/esm2022/lib/layout/header/header.service.mjs +0 -28
- package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +0 -198
- package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +0 -28
- package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +0 -60
- package/esm2022/lib/layout/request/request.service.mjs +0 -235
- package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +0 -84
- package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +0 -49
- package/esm2022/lib/layout/shared/shared.service.mjs +0 -508
- package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +0 -488
- package/esm2022/lib/layout/sidebar/sidebar.service.mjs +0 -35
- package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +0 -40
- package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +0 -296
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +0 -175
- package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +0 -51
- package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +0 -257
- package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +0 -70
- package/esm2022/lib/services/app-state/app-state-helper.service.mjs +0 -222
- package/esm2022/lib/services/app-state/app-state.service.mjs +0 -256
- package/esm2022/lib/services/app-state/index.mjs +0 -3
- package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +0 -112
- package/esm2022/lib/services/file-manager/file-manager.service.mjs +0 -21
- package/esm2022/lib/services/tab-state.service.mjs +0 -128
- package/esm2022/lib/services/theme/theme.service.mjs +0 -151
- package/esm2022/lib/services/user-status/user-status.service.mjs +0 -135
- package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +0 -61
- package/esm2022/lib/utils/index.mjs +0 -2
- package/esm2022/public-api.mjs +0 -18
- package/lib/cloud-ide-layout.component.d.ts +0 -5
- package/lib/cloud-ide-layout.routes.d.ts +0 -3
- package/lib/cloud-ide-layout.service.d.ts +0 -6
- package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +0 -5
- package/lib/layout/console/console.service.d.ts +0 -9
- package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +0 -9
- package/lib/layout/footer/footer.service.d.ts +0 -9
- package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +0 -25
- package/lib/layout/header/header.service.d.ts +0 -9
- package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +0 -94
- package/lib/layout/layout/layout-wrapper/layout-wrapper.component.d.ts +0 -5
- package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +0 -14
- package/lib/layout/request/request.service.d.ts +0 -60
- package/lib/layout/request/tab-content/tab-content.component.d.ts +0 -19
- package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +0 -17
- package/lib/layout/shared/shared.service.d.ts +0 -114
- package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +0 -140
- package/lib/layout/sidebar/sidebar.service.d.ts +0 -12
- package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +0 -16
- package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +0 -71
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +0 -48
- package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +0 -13
- package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +0 -30
- package/lib/layout/sidedrawer/sidedrawer.service.d.ts +0 -30
- package/lib/services/app-state/app-state-helper.service.d.ts +0 -150
- package/lib/services/app-state/app-state.service.d.ts +0 -85
- package/lib/services/app-state/index.d.ts +0 -3
- package/lib/services/cache-manager/cache-manager.service.d.ts +0 -64
- package/lib/services/file-manager/file-manager.service.d.ts +0 -9
- package/lib/services/tab-state.service.d.ts +0 -79
- package/lib/services/theme/theme.service.d.ts +0 -71
- package/lib/services/user-status/user-status.service.d.ts +0 -57
- package/lib/utils/custom-route-reuse-strategy.d.ts +0 -15
- package/lib/utils/index.d.ts +0 -1
- package/public-api.d.ts +0 -12
package/README.md
CHANGED
|
@@ -1,477 +1,63 @@
|
|
|
1
|
-
#
|
|
1
|
+
# CloudIdeLayout
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.1.0.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Code scaffolding
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Main Application Shell
|
|
9
|
-
- Responsive Sidebar
|
|
10
|
-
- Header with Navigation
|
|
11
|
-
- Footer
|
|
12
|
-
- Content Area
|
|
13
|
-
- Home Page Layout
|
|
14
|
-
- Side Drawer
|
|
15
|
-
- Console
|
|
16
|
-
- **Navigation Components**
|
|
17
|
-
- Menu System
|
|
18
|
-
- Breadcrumbs
|
|
19
|
-
- Tabs
|
|
20
|
-
- **Layout Services**
|
|
21
|
-
- Shared Layout Service
|
|
22
|
-
- Home Service
|
|
23
|
-
- Sidebar State Management
|
|
24
|
-
- Responsive Breakpoints
|
|
25
|
-
- Theme Management
|
|
26
|
-
- **Dynamic Content**
|
|
27
|
-
- Page-specific layouts based on configuration
|
|
28
|
-
- Content loading from API
|
|
29
|
-
- Title management
|
|
30
|
-
|
|
31
|
-
## Installation
|
|
7
|
+
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
|
|
32
8
|
|
|
33
9
|
```bash
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Dependencies
|
|
38
|
-
|
|
39
|
-
This library depends on:
|
|
40
|
-
- Angular 17+
|
|
41
|
-
- cloud-ide-element (for UI components)
|
|
42
|
-
- cloud-ide-lms-model (for data models)
|
|
43
|
-
|
|
44
|
-
## Usage
|
|
45
|
-
|
|
46
|
-
### Basic Layout
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
import { CloudIdeLayoutComponent } from 'cloud-ide-layout';
|
|
50
|
-
|
|
51
|
-
@Component({
|
|
52
|
-
standalone: true,
|
|
53
|
-
imports: [CloudIdeLayoutComponent],
|
|
54
|
-
template: `
|
|
55
|
-
<cide-lyt-wrapper></cide-lyt-wrapper>
|
|
56
|
-
`
|
|
57
|
-
})
|
|
58
|
-
export class AppComponent { }
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Home Page Layout
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
import { CideLytHomeWrapperComponent } from 'cloud-ide-layout';
|
|
65
|
-
|
|
66
|
-
@Component({
|
|
67
|
-
standalone: true,
|
|
68
|
-
imports: [CideLytHomeWrapperComponent],
|
|
69
|
-
template: `
|
|
70
|
-
<cide-lyt-home-wrapper></cide-lyt-home-wrapper>
|
|
71
|
-
`
|
|
72
|
-
})
|
|
73
|
-
export class HomePageComponent { }
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Component Documentation
|
|
77
|
-
|
|
78
|
-
### Main Components
|
|
79
|
-
|
|
80
|
-
- [Cloud IDE Layout Component](./src/lib/README.md) - Main wrapper and entry point
|
|
81
|
-
- [Layout Wrapper Component](./src/lib/layout/layout/layout-wrapper/README.md) - Core layout structure
|
|
82
|
-
- [Home Wrapper Component](./src/lib/layout/home/home-wrapper/README.md) - Home page layout
|
|
83
|
-
|
|
84
|
-
### Base Components
|
|
85
|
-
|
|
86
|
-
- [Shared Wrapper Component](./src/lib/layout/shared/shared-wrapper/README.md) - Base component for page layouts
|
|
87
|
-
|
|
88
|
-
### Services
|
|
89
|
-
|
|
90
|
-
- [Shared Layout Service](./src/lib/layout/shared/README.md) - Core service for layout management
|
|
91
|
-
- [Home Layout Service](./src/lib/layout/home/README.md) - Home page specific service
|
|
92
|
-
|
|
93
|
-
## Advanced Usage
|
|
94
|
-
|
|
95
|
-
### Creating a Custom Page Layout
|
|
96
|
-
|
|
97
|
-
You can extend the shared wrapper component to create custom page layouts:
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
import { Component } from '@angular/core';
|
|
101
|
-
import { CideLytSharedWrapperComponent, CideLytSharedWrapperSetupParam } from 'cloud-ide-layout';
|
|
102
|
-
import { CideLytSharedService } from 'cloud-ide-layout';
|
|
103
|
-
|
|
104
|
-
@Component({
|
|
105
|
-
selector: 'app-custom-page',
|
|
106
|
-
standalone: true,
|
|
107
|
-
imports: [],
|
|
108
|
-
templateUrl: './custom-page.component.html',
|
|
109
|
-
styleUrl: './custom-page.component.css'
|
|
110
|
-
})
|
|
111
|
-
export class CustomPageComponent extends CideLytSharedWrapperComponent {
|
|
112
|
-
public override shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam> = {
|
|
113
|
-
sypg_page_code: "custom_page_code"
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
constructor(sharedService: CideLytSharedService) {
|
|
117
|
-
super(sharedService);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Add custom functionality here
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Working with Page Data
|
|
125
|
-
|
|
126
|
-
The shared wrapper component automatically loads page data based on the configured page code:
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
// In your component that extends CideLytSharedWrapperComponent
|
|
130
|
-
ngAfterViewInit() {
|
|
131
|
-
// Access page data loaded by parent class
|
|
132
|
-
console.log('Page data:', this.page_data);
|
|
133
|
-
|
|
134
|
-
// Access specific page elements
|
|
135
|
-
const pageTitle = this.page_data?.page?.sypg_title;
|
|
136
|
-
const pageConfig = this.page_data?.config;
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Architecture
|
|
141
|
-
|
|
142
|
-
### Component Hierarchy
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
CloudIdeLayoutComponent
|
|
146
|
-
└── CideLytLayoutWrapperComponent
|
|
147
|
-
├── HeaderWrapperComponent
|
|
148
|
-
├── SidebarWrapperComponent
|
|
149
|
-
├── SidedrawerWrapperComponent
|
|
150
|
-
├── Router Outlet (Content Area)
|
|
151
|
-
│ └── CideLytHomeWrapperComponent (and other page components)
|
|
152
|
-
├── FooterWrapperComponent
|
|
153
|
-
└── ConsoleWrapperComponent
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Service Relationships
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
CloudIdeLayoutService
|
|
160
|
-
├── CideLytSharedService
|
|
161
|
-
│ ├── CideLytHomeService
|
|
162
|
-
│ ├── CideLytSidebarService
|
|
163
|
-
│ ├── CideLytHeaderService
|
|
164
|
-
│ ├── CideLytFooterService
|
|
165
|
-
│ └── CideLytConsoleService
|
|
166
|
-
└── CideElementsService (from cloud-ide-element)
|
|
10
|
+
ng generate component component-name
|
|
167
11
|
```
|
|
168
12
|
|
|
169
|
-
|
|
13
|
+
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
|
|
170
14
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
CideLytSharedWrapperComponent (Base)
|
|
175
|
-
└── CideLytHomeWrapperComponent
|
|
176
|
-
(Other specialized wrapper components)
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## API Reference
|
|
180
|
-
|
|
181
|
-
### Components
|
|
182
|
-
|
|
183
|
-
#### CloudIdeLayoutComponent
|
|
184
|
-
- **Selector**: `cide-lyt-wrapper`
|
|
185
|
-
- **Purpose**: Main entry point component
|
|
186
|
-
|
|
187
|
-
#### CideLytLayoutWrapperComponent
|
|
188
|
-
- **Selector**: `cide-lyt-layout-wrapper`
|
|
189
|
-
- **Purpose**: Layout structure component
|
|
190
|
-
|
|
191
|
-
#### CideLytHomeWrapperComponent
|
|
192
|
-
- **Selector**: `cide-lyt-home-wrapper`
|
|
193
|
-
- **Purpose**: Home page specific layout
|
|
194
|
-
- **Configuration**: `shared_wrapper_setup_param.sypg_page_code = "cide_lyt_home"`
|
|
195
|
-
|
|
196
|
-
#### CideLytSharedWrapperComponent
|
|
197
|
-
- **Selector**: `cide-lyt-shared-wrapper`
|
|
198
|
-
- **Purpose**: Base component for page layouts
|
|
199
|
-
- **Methods**:
|
|
200
|
-
- `loadPageData()`
|
|
201
|
-
- `setTitle(title: string)`
|
|
202
|
-
|
|
203
|
-
### Services
|
|
204
|
-
|
|
205
|
-
#### CloudIdeLayoutService
|
|
206
|
-
- **Purpose**: Main library service
|
|
207
|
-
|
|
208
|
-
#### CideLytSharedService
|
|
209
|
-
- **Purpose**: Shared functionality service
|
|
210
|
-
- **Methods**:
|
|
211
|
-
- `loadPageData(body: MDesignConfig): Observable<designConfigControllerResponse>`
|
|
212
|
-
- `setPageData(response: designConfigControllerResponse, payload: Partial<CideLytSharedWrapperSetupParam>): void`
|
|
213
|
-
- `getPageData(key: string): designConfigControllerResponse | undefined`
|
|
214
|
-
|
|
215
|
-
#### CideLytHomeService
|
|
216
|
-
- **Purpose**: Home page specific service
|
|
217
|
-
|
|
218
|
-
## Contributing
|
|
219
|
-
|
|
220
|
-
Guidelines for contributing to this library:
|
|
221
|
-
|
|
222
|
-
1. Follow Angular best practices and coding standards
|
|
223
|
-
2. Ensure components are standalone and properly encapsulated
|
|
224
|
-
3. Write unit tests for all components and services
|
|
225
|
-
4. Update documentation when adding new features
|
|
226
|
-
5. Follow the existing architecture patterns
|
|
227
|
-
|
|
228
|
-
## License
|
|
229
|
-
|
|
230
|
-
MIT
|
|
231
|
-
|
|
232
|
-
```typescript
|
|
233
|
-
import { Component } from '@angular/core';
|
|
234
|
-
import { CloudIdeLayoutModule } from '@cide-lms/cloud-ide-layout';
|
|
235
|
-
|
|
236
|
-
@Component({
|
|
237
|
-
selector: 'app-root',
|
|
238
|
-
template: `
|
|
239
|
-
<cloud-ide-layout>
|
|
240
|
-
<cloud-ide-header>
|
|
241
|
-
<h1>CIDE-LMS</h1>
|
|
242
|
-
<div class="user-menu">...</div>
|
|
243
|
-
</cloud-ide-header>
|
|
244
|
-
|
|
245
|
-
<cloud-ide-sidebar [items]="navigationItems">
|
|
246
|
-
<!-- Optional custom sidebar content -->
|
|
247
|
-
</cloud-ide-sidebar>
|
|
248
|
-
|
|
249
|
-
<cloud-ide-content>
|
|
250
|
-
<router-outlet></router-outlet>
|
|
251
|
-
</cloud-ide-content>
|
|
252
|
-
|
|
253
|
-
<cloud-ide-footer>
|
|
254
|
-
© 2025 CIDE-LMS
|
|
255
|
-
</cloud-ide-footer>
|
|
256
|
-
</cloud-ide-layout>
|
|
257
|
-
`
|
|
258
|
-
})
|
|
259
|
-
export class AppComponent {
|
|
260
|
-
navigationItems = [
|
|
261
|
-
{ label: 'Dashboard', icon: 'dashboard', route: '/dashboard' },
|
|
262
|
-
{ label: 'Courses', icon: 'school', route: '/courses' },
|
|
263
|
-
{ label: 'Calendar', icon: 'calendar', route: '/calendar' },
|
|
264
|
-
{ label: 'Messages', icon: 'message', route: '/messages', badge: '5' },
|
|
265
|
-
{
|
|
266
|
-
label: 'Settings',
|
|
267
|
-
icon: 'settings',
|
|
268
|
-
children: [
|
|
269
|
-
{ label: 'Profile', route: '/settings/profile' },
|
|
270
|
-
{ label: 'Account', route: '/settings/account' }
|
|
271
|
-
]
|
|
272
|
-
}
|
|
273
|
-
];
|
|
274
|
-
}
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### Sidebar Service
|
|
278
|
-
|
|
279
|
-
```typescript
|
|
280
|
-
import { Component } from '@angular/core';
|
|
281
|
-
import { CloudIdeLayoutService } from '@cide-lms/cloud-ide-layout';
|
|
282
|
-
|
|
283
|
-
@Component({
|
|
284
|
-
selector: 'app-header',
|
|
285
|
-
template: `
|
|
286
|
-
<button (click)="toggleSidebar()">
|
|
287
|
-
<cloud-ide-icon name="menu"></cloud-ide-icon>
|
|
288
|
-
</button>
|
|
289
|
-
`
|
|
290
|
-
})
|
|
291
|
-
export class HeaderComponent {
|
|
292
|
-
constructor(private layoutService: CloudIdeLayoutService) {}
|
|
293
|
-
|
|
294
|
-
toggleSidebar() {
|
|
295
|
-
this.layoutService.toggleSidebar();
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### Responsive Breakpoints
|
|
301
|
-
|
|
302
|
-
```typescript
|
|
303
|
-
import { Component, OnInit, OnDestroy } from '@angular/core';
|
|
304
|
-
import { CloudIdeLayoutService, BreakpointState } from '@cide-lms/cloud-ide-layout';
|
|
305
|
-
import { Subscription } from 'rxjs';
|
|
306
|
-
|
|
307
|
-
@Component({
|
|
308
|
-
selector: 'app-responsive-component',
|
|
309
|
-
template: `
|
|
310
|
-
<div [class.compact]="isMobile">
|
|
311
|
-
<!-- Content that adjusts based on screen size -->
|
|
312
|
-
</div>
|
|
313
|
-
`
|
|
314
|
-
})
|
|
315
|
-
export class ResponsiveComponent implements OnInit, OnDestroy {
|
|
316
|
-
isMobile = false;
|
|
317
|
-
private breakpointSubscription: Subscription;
|
|
318
|
-
|
|
319
|
-
constructor(private layoutService: CloudIdeLayoutService) {}
|
|
320
|
-
|
|
321
|
-
ngOnInit() {
|
|
322
|
-
this.breakpointSubscription = this.layoutService.breakpointState$.subscribe(
|
|
323
|
-
(state: BreakpointState) => {
|
|
324
|
-
this.isMobile = state.isMobile;
|
|
325
|
-
}
|
|
326
|
-
);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
ngOnDestroy() {
|
|
330
|
-
this.breakpointSubscription?.unsubscribe();
|
|
331
|
-
}
|
|
332
|
-
}
|
|
15
|
+
```bash
|
|
16
|
+
ng generate --help
|
|
333
17
|
```
|
|
334
18
|
|
|
335
|
-
|
|
19
|
+
## Building
|
|
336
20
|
|
|
337
|
-
|
|
338
|
-
import { Component } from '@angular/core';
|
|
339
|
-
import { CloudIdeLayoutService, ThemeMode } from '@cide-lms/cloud-ide-layout';
|
|
21
|
+
To build the library, run:
|
|
340
22
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
template: `
|
|
344
|
-
<button (click)="toggleTheme()">
|
|
345
|
-
<cloud-ide-icon [name]="isDarkMode ? 'light_mode' : 'dark_mode'"></cloud-ide-icon>
|
|
346
|
-
{{ isDarkMode ? 'Light Mode' : 'Dark Mode' }}
|
|
347
|
-
</button>
|
|
348
|
-
`
|
|
349
|
-
})
|
|
350
|
-
export class ThemeToggleComponent {
|
|
351
|
-
isDarkMode = false;
|
|
352
|
-
|
|
353
|
-
constructor(private layoutService: CloudIdeLayoutService) {
|
|
354
|
-
this.layoutService.currentTheme$.subscribe(theme => {
|
|
355
|
-
this.isDarkMode = theme === ThemeMode.DARK;
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
toggleTheme() {
|
|
360
|
-
this.layoutService.toggleTheme();
|
|
361
|
-
}
|
|
362
|
-
}
|
|
23
|
+
```bash
|
|
24
|
+
ng build cloud-ide-layout
|
|
363
25
|
```
|
|
364
26
|
|
|
365
|
-
|
|
27
|
+
This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
|
|
366
28
|
|
|
367
|
-
###
|
|
29
|
+
### Publishing the Library
|
|
368
30
|
|
|
369
|
-
|
|
370
|
-
|---------------------|-----------------------------------------------------------|
|
|
371
|
-
| CloudIdeLayout | Main layout container |
|
|
372
|
-
| CloudIdeHeader | Application header with customizable content |
|
|
373
|
-
| CloudIdeSidebar | Navigation sidebar with collapsible menu |
|
|
374
|
-
| CloudIdeContent | Main content area |
|
|
375
|
-
| CloudIdeFooter | Application footer |
|
|
376
|
-
| CloudIdeBreadcrumbs | Breadcrumb navigation component |
|
|
377
|
-
| CloudIdeTabs | Tabbed interface component |
|
|
31
|
+
Once the project is built, you can publish your library by following these steps:
|
|
378
32
|
|
|
379
|
-
|
|
33
|
+
1. Navigate to the `dist` directory:
|
|
34
|
+
```bash
|
|
35
|
+
cd dist/cloud-ide-layout
|
|
36
|
+
```
|
|
380
37
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
| toggleTheme() | method | Toggles between light and dark mode |
|
|
386
|
-
| setTheme() | method(ThemeMode) | Sets specific theme mode |
|
|
387
|
-
| sidebarVisible$ | Observable\<boolean\> | Current sidebar visibility state |
|
|
388
|
-
| currentTheme$ | Observable\<ThemeMode\> | Current theme mode |
|
|
389
|
-
| breakpointState$ | Observable\<BreakpointState\> | Current responsive breakpoint information |
|
|
38
|
+
2. Run the `npm publish` command to publish your library to the npm registry:
|
|
39
|
+
```bash
|
|
40
|
+
npm publish
|
|
41
|
+
```
|
|
390
42
|
|
|
391
|
-
##
|
|
43
|
+
## Running unit tests
|
|
392
44
|
|
|
393
|
-
|
|
45
|
+
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
|
|
394
46
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
```scss
|
|
398
|
-
:root {
|
|
399
|
-
// Layout colors
|
|
400
|
-
--cide-layout-bg: #f8fafc;
|
|
401
|
-
--cide-layout-text: #1e293b;
|
|
402
|
-
--cide-layout-sidebar-bg: #ffffff;
|
|
403
|
-
--cide-layout-sidebar-text: #475569;
|
|
404
|
-
--cide-layout-sidebar-active: #3b82f6;
|
|
405
|
-
--cide-layout-header-bg: #ffffff;
|
|
406
|
-
--cide-layout-header-text: #1e293b;
|
|
407
|
-
|
|
408
|
-
// Spacing
|
|
409
|
-
--cide-layout-header-height: 64px;
|
|
410
|
-
--cide-layout-sidebar-width: 280px;
|
|
411
|
-
--cide-layout-sidebar-collapsed-width: 72px;
|
|
412
|
-
--cide-layout-footer-height: 48px;
|
|
413
|
-
|
|
414
|
-
// Other
|
|
415
|
-
--cide-layout-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
416
|
-
--cide-layout-border-color: #e2e8f0;
|
|
417
|
-
}
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### Dark Mode Variables
|
|
421
|
-
|
|
422
|
-
```scss
|
|
423
|
-
.dark-theme {
|
|
424
|
-
--cide-layout-bg: #0f172a;
|
|
425
|
-
--cide-layout-text: #f1f5f9;
|
|
426
|
-
--cide-layout-sidebar-bg: #1e293b;
|
|
427
|
-
--cide-layout-sidebar-text: #cbd5e1;
|
|
428
|
-
--cide-layout-sidebar-active: #60a5fa;
|
|
429
|
-
--cide-layout-header-bg: #1e293b;
|
|
430
|
-
--cide-layout-header-text: #f1f5f9;
|
|
431
|
-
--cide-layout-border-color: #334155;
|
|
432
|
-
}
|
|
47
|
+
```bash
|
|
48
|
+
ng test
|
|
433
49
|
```
|
|
434
50
|
|
|
435
|
-
##
|
|
51
|
+
## Running end-to-end tests
|
|
436
52
|
|
|
437
|
-
|
|
53
|
+
For end-to-end (e2e) testing, run:
|
|
438
54
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
3. **Learning Layout** - Optimized for learning content with adjustable sidebar
|
|
442
|
-
|
|
443
|
-
To use a specific layout:
|
|
444
|
-
|
|
445
|
-
```typescript
|
|
446
|
-
import { CloudIdeLayoutModule, LayoutType } from '@cide-lms/cloud-ide-layout';
|
|
447
|
-
|
|
448
|
-
@Component({
|
|
449
|
-
template: `
|
|
450
|
-
<cloud-ide-layout [type]="LayoutType.DASHBOARD">
|
|
451
|
-
<!-- Layout content -->
|
|
452
|
-
</cloud-ide-layout>
|
|
453
|
-
`
|
|
454
|
-
})
|
|
455
|
-
export class DashboardComponent {
|
|
456
|
-
LayoutType = LayoutType; // Make enum available in template
|
|
457
|
-
}
|
|
55
|
+
```bash
|
|
56
|
+
ng e2e
|
|
458
57
|
```
|
|
459
58
|
|
|
460
|
-
|
|
461
|
-
To install the library in your project, follow these steps:
|
|
59
|
+
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
|
|
462
60
|
|
|
463
|
-
|
|
464
|
-
Run the following command to install the library:
|
|
465
|
-
```bash
|
|
466
|
-
npm install cloud-ide-layout
|
|
467
|
-
```
|
|
61
|
+
## Additional Resources
|
|
468
62
|
|
|
469
|
-
|
|
470
|
-
Update the `styles` array in the `angular.json` file to include your global CSS file. For example:
|
|
471
|
-
```json
|
|
472
|
-
"styles": [
|
|
473
|
-
"src/styles.css",
|
|
474
|
-
"node_modules/cloud-ide-layout/src/lib/assets/css/cide-lyt-style.scss"
|
|
475
|
-
]
|
|
476
|
-
```
|
|
477
|
-
```
|
|
63
|
+
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|