@flusys/ng-layout 0.1.0-beta.3 → 1.0.0-rc
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 +59 -5
- package/fesm2022/flusys-ng-layout.mjs +297 -281
- package/fesm2022/flusys-ng-layout.mjs.map +1 -1
- package/package.json +4 -4
- package/types/flusys-ng-layout.d.ts +100 -76
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flusys/ng-layout",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0-rc",
|
|
4
4
|
"description": "Layout components for FLUSYS Angular applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@angular/common": "^21.0.0",
|
|
8
8
|
"@angular/core": "^21.0.0",
|
|
9
9
|
"@angular/router": "^21.0.0",
|
|
10
|
-
"@flusys/ng-core": "^
|
|
11
|
-
"@flusys/ng-shared": "^
|
|
10
|
+
"@flusys/ng-core": "^1.1.1-beta",
|
|
11
|
+
"@flusys/ng-shared": "^1.1.1-beta",
|
|
12
12
|
"@primeuix/themes": "^1.0.0",
|
|
13
13
|
"primeicons": "^7.0.0",
|
|
14
14
|
"primeng": "^21.0.0",
|
|
@@ -30,4 +30,4 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"tslib": "^2.3.0"
|
|
32
32
|
}
|
|
33
|
-
}
|
|
33
|
+
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, InjectionToken
|
|
3
|
-
import { Router } from '@angular/router';
|
|
4
|
-
import { PrimeNG } from 'primeng/config';
|
|
2
|
+
import { Signal, InjectionToken } from '@angular/core';
|
|
5
3
|
import * as rxjs from 'rxjs';
|
|
6
4
|
import { Observable } from 'rxjs';
|
|
7
|
-
import { IconTypeEnum, ILogicNode
|
|
5
|
+
import { IconTypeEnum, ILogicNode } from '@flusys/ng-shared';
|
|
8
6
|
import * as _flusys_ng_layout from '@flusys/ng-layout';
|
|
9
7
|
import * as _primeuix_themes_types from '@primeuix/themes/types';
|
|
10
8
|
|
|
@@ -111,15 +109,26 @@ declare class LayoutService {
|
|
|
111
109
|
private readonly platformId;
|
|
112
110
|
private readonly isBrowser;
|
|
113
111
|
private readonly persistence;
|
|
112
|
+
private readonly appConfig;
|
|
114
113
|
private readonly defaultConfig;
|
|
115
114
|
private readonly initialConfig;
|
|
116
115
|
private readonly defaultState;
|
|
117
|
-
readonly
|
|
118
|
-
readonly
|
|
119
|
-
readonly
|
|
120
|
-
readonly
|
|
121
|
-
readonly
|
|
122
|
-
readonly
|
|
116
|
+
private readonly _layoutConfig;
|
|
117
|
+
private readonly _layoutState;
|
|
118
|
+
private readonly _transitionComplete;
|
|
119
|
+
readonly layoutConfig: _angular_core.Signal<LayoutConfig>;
|
|
120
|
+
readonly layoutState: _angular_core.Signal<LayoutState>;
|
|
121
|
+
readonly transitionComplete: _angular_core.Signal<boolean>;
|
|
122
|
+
private readonly _userProfile;
|
|
123
|
+
private readonly _companyProfile;
|
|
124
|
+
private readonly _appName;
|
|
125
|
+
readonly userProfile: _angular_core.Signal<UserProfile | null>;
|
|
126
|
+
readonly companyProfile: _angular_core.Signal<CompanyProfile | null>;
|
|
127
|
+
readonly appName: _angular_core.Signal<string>;
|
|
128
|
+
private readonly _authorName;
|
|
129
|
+
private readonly _authorUrl;
|
|
130
|
+
readonly authorName: _angular_core.Signal<string>;
|
|
131
|
+
readonly authorUrl: _angular_core.Signal<string>;
|
|
123
132
|
private readonly _rawApps;
|
|
124
133
|
/**
|
|
125
134
|
* Filtered launcher apps based on user permissions.
|
|
@@ -134,7 +143,6 @@ declare class LayoutService {
|
|
|
134
143
|
* Role checker is optional - if not set, role-based permissions will be denied.
|
|
135
144
|
*/
|
|
136
145
|
readonly menu: _angular_core.Signal<IMenuItem[]>;
|
|
137
|
-
readonly theme: _angular_core.Signal<"light" | "dark">;
|
|
138
146
|
readonly isSidebarActive: _angular_core.Signal<boolean | undefined>;
|
|
139
147
|
readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
|
|
140
148
|
readonly getPrimary: _angular_core.Signal<string | undefined>;
|
|
@@ -167,6 +175,16 @@ declare class LayoutService {
|
|
|
167
175
|
onConfigUpdate(): void;
|
|
168
176
|
onMenuStateChange(event: MenuChangeEvent): void;
|
|
169
177
|
reset(): void;
|
|
178
|
+
/**
|
|
179
|
+
* Update layout configuration.
|
|
180
|
+
* Called by configurator component.
|
|
181
|
+
*/
|
|
182
|
+
updateLayoutConfig(config: Partial<LayoutConfig>): void;
|
|
183
|
+
/**
|
|
184
|
+
* Update layout state.
|
|
185
|
+
* Called internally and by layout components.
|
|
186
|
+
*/
|
|
187
|
+
updateLayoutState(state: Partial<LayoutState>): void;
|
|
170
188
|
/**
|
|
171
189
|
* Set the current user profile for display in layout.
|
|
172
190
|
* Called by auth integration to sync user data.
|
|
@@ -276,24 +294,21 @@ declare type SurfacesType = {
|
|
|
276
294
|
};
|
|
277
295
|
};
|
|
278
296
|
declare class AppConfigurator {
|
|
279
|
-
router
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
presets: string[];
|
|
285
|
-
showMenuModeButton: _angular_core.WritableSignal<boolean>;
|
|
286
|
-
menuModeOptions: {
|
|
297
|
+
private readonly router;
|
|
298
|
+
readonly layoutService: LayoutService;
|
|
299
|
+
readonly presets: string[];
|
|
300
|
+
readonly showMenuModeButton: _angular_core.WritableSignal<boolean>;
|
|
301
|
+
readonly menuModeOptions: {
|
|
287
302
|
label: string;
|
|
288
303
|
value: string;
|
|
289
304
|
}[];
|
|
290
|
-
|
|
291
|
-
surfaces: SurfacesType[];
|
|
292
|
-
selectedPrimaryColor: _angular_core.Signal<string | undefined>;
|
|
293
|
-
selectedSurfaceColor: _angular_core.Signal<string | null | undefined>;
|
|
294
|
-
selectedPreset: _angular_core.Signal<string | undefined>;
|
|
295
|
-
menuMode: _angular_core.Signal<"static" | "overlay" | undefined>;
|
|
296
|
-
primaryColors: _angular_core.Signal<SurfacesType[]>;
|
|
305
|
+
constructor();
|
|
306
|
+
readonly surfaces: SurfacesType[];
|
|
307
|
+
readonly selectedPrimaryColor: _angular_core.Signal<string | undefined>;
|
|
308
|
+
readonly selectedSurfaceColor: _angular_core.Signal<string | null | undefined>;
|
|
309
|
+
readonly selectedPreset: _angular_core.Signal<string | undefined>;
|
|
310
|
+
readonly menuMode: _angular_core.Signal<"static" | "overlay" | undefined>;
|
|
311
|
+
readonly primaryColors: _angular_core.Signal<SurfacesType[]>;
|
|
297
312
|
getPresetExt(): {
|
|
298
313
|
semantic: {
|
|
299
314
|
primary: {
|
|
@@ -342,17 +357,17 @@ declare class AppConfigurator {
|
|
|
342
357
|
};
|
|
343
358
|
};
|
|
344
359
|
};
|
|
345
|
-
updateColors(event:
|
|
346
|
-
applyTheme(type: string, color:
|
|
347
|
-
onPresetChange(event:
|
|
360
|
+
updateColors(event: MouseEvent, type: string, color: SurfacesType): void;
|
|
361
|
+
applyTheme(type: string, color: SurfacesType): void;
|
|
362
|
+
onPresetChange(event: string): void;
|
|
348
363
|
onMenuModeChange(event: 'static' | 'overlay'): void;
|
|
349
364
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppConfigurator, never>;
|
|
350
365
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppConfigurator, "app-configurator", never, {}, {}, never, never, true, never>;
|
|
351
366
|
}
|
|
352
367
|
|
|
353
368
|
declare class AppFloatingConfigurator {
|
|
354
|
-
|
|
355
|
-
isDarkTheme: _angular_core.Signal<boolean | undefined>;
|
|
369
|
+
private readonly layoutService;
|
|
370
|
+
readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
|
|
356
371
|
toggleDarkMode(): void;
|
|
357
372
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFloatingConfigurator, never>;
|
|
358
373
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppFloatingConfigurator, "app-floating-configurator", never, {}, {}, never, never, true, never>;
|
|
@@ -360,36 +375,13 @@ declare class AppFloatingConfigurator {
|
|
|
360
375
|
|
|
361
376
|
declare class AppFooter {
|
|
362
377
|
private readonly layoutService;
|
|
363
|
-
readonly
|
|
378
|
+
readonly appName: _angular_core.Signal<string>;
|
|
379
|
+
readonly authorName: _angular_core.Signal<string>;
|
|
380
|
+
readonly authorUrl: _angular_core.Signal<string>;
|
|
364
381
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFooter, never>;
|
|
365
382
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppFooter, "app-footer", never, {}, {}, never, never, true, never>;
|
|
366
383
|
}
|
|
367
384
|
|
|
368
|
-
type ActivePanel = 'config' | null;
|
|
369
|
-
declare class AppTopbar {
|
|
370
|
-
private readonly appConfig;
|
|
371
|
-
private readonly document;
|
|
372
|
-
private readonly destroyRef;
|
|
373
|
-
readonly layoutService: LayoutService;
|
|
374
|
-
private readonly configContainer;
|
|
375
|
-
readonly activePanel: _angular_core.WritableSignal<ActivePanel>;
|
|
376
|
-
constructor();
|
|
377
|
-
readonly companyName: _angular_core.Signal<string>;
|
|
378
|
-
enableCompanyFeature: _angular_core.Signal<boolean>;
|
|
379
|
-
toggleDarkMode(): void;
|
|
380
|
-
togglePanel(panel: ActivePanel): void;
|
|
381
|
-
private handleOutsideClick;
|
|
382
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppTopbar, never>;
|
|
383
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppTopbar, "app-topbar", never, {}, {}, never, never, true, never>;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
declare class AppSidebar {
|
|
387
|
-
el: ElementRef;
|
|
388
|
-
constructor(el: ElementRef);
|
|
389
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppSidebar, never>;
|
|
390
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSidebar, "app-sidebar", never, {}, {}, never, never, true, never>;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
385
|
declare class AppLayout {
|
|
394
386
|
private readonly destroyRef;
|
|
395
387
|
private readonly document;
|
|
@@ -397,20 +389,18 @@ declare class AppLayout {
|
|
|
397
389
|
private readonly renderer;
|
|
398
390
|
private readonly router;
|
|
399
391
|
private menuOutsideClickListener;
|
|
400
|
-
appSidebar: AppSidebar;
|
|
401
|
-
appTopBar: AppTopbar;
|
|
402
392
|
constructor();
|
|
403
393
|
isOutsideClicked(event: MouseEvent): boolean;
|
|
404
394
|
hideMenu(): void;
|
|
405
395
|
blockBodyScroll(): void;
|
|
406
396
|
unblockBodyScroll(): void;
|
|
407
|
-
|
|
397
|
+
readonly containerClass: _angular_core.Signal<{
|
|
408
398
|
'layout-overlay': boolean;
|
|
409
399
|
'layout-static': boolean;
|
|
410
400
|
'layout-static-inactive': boolean | undefined;
|
|
411
401
|
'layout-overlay-active': boolean | undefined;
|
|
412
402
|
'layout-mobile-active': boolean | undefined;
|
|
413
|
-
}
|
|
403
|
+
}>;
|
|
414
404
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLayout, never>;
|
|
415
405
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLayout, "app-layout", never, {}, {}, never, never, true, never>;
|
|
416
406
|
}
|
|
@@ -439,9 +429,9 @@ declare class AppMenuitem {
|
|
|
439
429
|
readonly parentKey: _angular_core.InputSignal<string>;
|
|
440
430
|
private readonly router;
|
|
441
431
|
private readonly layoutService;
|
|
442
|
-
private readonly authState;
|
|
443
432
|
private readonly destroyRef;
|
|
444
|
-
readonly
|
|
433
|
+
private readonly _active;
|
|
434
|
+
readonly active: _angular_core.Signal<boolean>;
|
|
445
435
|
readonly key: _angular_core.Signal<string>;
|
|
446
436
|
readonly routerLink: _angular_core.Signal<string[]>;
|
|
447
437
|
readonly routerLinkActiveOptions: _angular_core.Signal<{
|
|
@@ -457,6 +447,29 @@ declare class AppMenuitem {
|
|
|
457
447
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppMenuitem, "[app-menuitem]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "parentKey": { "alias": "parentKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
458
448
|
}
|
|
459
449
|
|
|
450
|
+
declare class AppSidebar {
|
|
451
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppSidebar, never>;
|
|
452
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSidebar, "app-sidebar", never, {}, {}, never, never, true, never>;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
type ActivePanel = 'config' | null;
|
|
456
|
+
declare class AppTopbar {
|
|
457
|
+
private readonly appConfig;
|
|
458
|
+
private readonly document;
|
|
459
|
+
private readonly destroyRef;
|
|
460
|
+
readonly layoutService: LayoutService;
|
|
461
|
+
private readonly configContainer;
|
|
462
|
+
readonly activePanel: _angular_core.WritableSignal<ActivePanel>;
|
|
463
|
+
constructor();
|
|
464
|
+
readonly companyName: _angular_core.Signal<string>;
|
|
465
|
+
readonly enableCompanyFeature: _angular_core.Signal<boolean>;
|
|
466
|
+
toggleDarkMode(): void;
|
|
467
|
+
togglePanel(panel: ActivePanel): void;
|
|
468
|
+
private handleOutsideClick;
|
|
469
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppTopbar, never>;
|
|
470
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppTopbar, "app-topbar", never, {}, {}, never, never, true, never>;
|
|
471
|
+
}
|
|
472
|
+
|
|
460
473
|
/** Company/branch switcher displayed in top bar */
|
|
461
474
|
declare class AppCompanyBranchSelector {
|
|
462
475
|
private readonly destroyRef;
|
|
@@ -465,17 +478,25 @@ declare class AppCompanyBranchSelector {
|
|
|
465
478
|
private readonly messageService;
|
|
466
479
|
private readonly document;
|
|
467
480
|
private readonly elementRef;
|
|
468
|
-
readonly
|
|
481
|
+
private readonly _isActive;
|
|
482
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
469
483
|
constructor();
|
|
470
484
|
readonly currentCompanyName: _angular_core.Signal<string>;
|
|
471
485
|
readonly currentBranchName: _angular_core.Signal<string | null>;
|
|
472
|
-
readonly
|
|
473
|
-
readonly
|
|
474
|
-
readonly
|
|
475
|
-
readonly
|
|
476
|
-
readonly
|
|
477
|
-
readonly
|
|
478
|
-
readonly
|
|
486
|
+
private readonly _companies;
|
|
487
|
+
readonly companies: _angular_core.Signal<ICompanyInfo[]>;
|
|
488
|
+
private readonly _branches;
|
|
489
|
+
readonly branches: _angular_core.Signal<IBranchInfo[]>;
|
|
490
|
+
private readonly _selectedCompanyId;
|
|
491
|
+
readonly selectedCompanyId: _angular_core.Signal<string | null>;
|
|
492
|
+
private readonly _selectedBranchId;
|
|
493
|
+
readonly selectedBranchId: _angular_core.Signal<string | null>;
|
|
494
|
+
private readonly _isLoadingCompanies;
|
|
495
|
+
readonly isLoadingCompanies: _angular_core.Signal<boolean>;
|
|
496
|
+
private readonly _isLoadingBranches;
|
|
497
|
+
readonly isLoadingBranches: _angular_core.Signal<boolean>;
|
|
498
|
+
private readonly _isSwitching;
|
|
499
|
+
readonly isSwitching: _angular_core.Signal<boolean>;
|
|
479
500
|
readonly canSwitch: _angular_core.Signal<boolean>;
|
|
480
501
|
onPanelToggle(): void;
|
|
481
502
|
private loadCompanies;
|
|
@@ -492,7 +513,8 @@ declare class AppLauncher {
|
|
|
492
513
|
private readonly document;
|
|
493
514
|
private readonly elementRef;
|
|
494
515
|
readonly layoutService: LayoutService;
|
|
495
|
-
readonly
|
|
516
|
+
private readonly _isActive;
|
|
517
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
496
518
|
constructor();
|
|
497
519
|
togglePanel(): void;
|
|
498
520
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLauncher, never>;
|
|
@@ -503,15 +525,17 @@ declare class AppProfile {
|
|
|
503
525
|
private readonly destroyRef;
|
|
504
526
|
private readonly authState;
|
|
505
527
|
private readonly authApi;
|
|
528
|
+
private readonly layoutService;
|
|
506
529
|
private readonly messageService;
|
|
507
530
|
private readonly document;
|
|
508
531
|
private readonly elementRef;
|
|
509
|
-
readonly
|
|
532
|
+
private readonly _isActive;
|
|
533
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
510
534
|
constructor();
|
|
511
535
|
togglePanel(): void;
|
|
512
|
-
userName: _angular_core.Signal<string>;
|
|
513
|
-
userEmail: _angular_core.Signal<string>;
|
|
514
|
-
profilePicture: _angular_core.Signal<string>;
|
|
536
|
+
readonly userName: _angular_core.Signal<string>;
|
|
537
|
+
readonly userEmail: _angular_core.Signal<string>;
|
|
538
|
+
readonly profilePicture: _angular_core.Signal<string>;
|
|
515
539
|
logout(): void;
|
|
516
540
|
copySignUpLink(): void;
|
|
517
541
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppProfile, never>;
|