@flusys/ng-layout 1.1.0 → 1.2.0-rc.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 +51 -664
- package/assets/layout/_core.scss +19 -0
- package/assets/layout/_footer.scss +18 -1
- package/assets/layout/_forms.scss +12 -32
- package/assets/layout/_menu.scss +5 -5
- package/assets/layout/_responsive.scss +18 -0
- package/assets/layout/_rtl.scss +482 -0
- package/assets/layout/_topbar.scss +177 -124
- package/assets/layout/_topbar_nav.scss +345 -0
- package/assets/layout/_typography.scss +25 -30
- package/assets/layout/_utils.scss +12 -16
- package/assets/layout/layout.scss +3 -1
- package/assets/layout/variables/_common.scss +17 -17
- package/assets/layout/variables/_dark.scss +3 -3
- package/assets/layout/variables/_light.scss +3 -3
- package/assets/style.scss +3 -3
- package/fesm2022/flusys-ng-layout.mjs +1703 -1155
- package/fesm2022/flusys-ng-layout.mjs.map +1 -1
- package/package.json +9 -10
- package/types/flusys-ng-layout.d.ts +118 -132
package/package.json
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flusys/ng-layout",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-rc.1",
|
|
4
4
|
"description": "Layout components for FLUSYS Angular applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@angular/common": ">=
|
|
8
|
-
"@angular/core": ">=
|
|
9
|
-
"@angular/router": ">=
|
|
10
|
-
"@flusys/ng-core": ">=1.
|
|
11
|
-
"@flusys/ng-shared": ">=1.
|
|
12
|
-
"@
|
|
13
|
-
"primeicons": ">=7.0.0",
|
|
14
|
-
"primeng": ">=21.0.0",
|
|
7
|
+
"@angular/common": ">=22.0.0",
|
|
8
|
+
"@angular/core": ">=22.0.0",
|
|
9
|
+
"@angular/router": ">=22.0.0",
|
|
10
|
+
"@flusys/ng-core": ">=1.2.0-rc.1",
|
|
11
|
+
"@flusys/ng-shared": ">=1.2.0-rc.1",
|
|
12
|
+
"@flusys/ng-ui": ">=1.2.0-rc.1",
|
|
15
13
|
"tailwindcss": ">=4.0.0",
|
|
16
|
-
"
|
|
14
|
+
"rxjs": "^7.8.0"
|
|
17
15
|
},
|
|
18
16
|
"sideEffects": false,
|
|
19
17
|
"module": "fesm2022/flusys-ng-layout.mjs",
|
|
@@ -27,6 +25,7 @@
|
|
|
27
25
|
"default": "./fesm2022/flusys-ng-layout.mjs"
|
|
28
26
|
}
|
|
29
27
|
},
|
|
28
|
+
"type": "module",
|
|
30
29
|
"dependencies": {
|
|
31
30
|
"tslib": "^2.3.0"
|
|
32
31
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, InjectionToken } from '@angular/core';
|
|
2
|
+
import { Signal, InjectionToken, Type } from '@angular/core';
|
|
3
|
+
import { PresetName, ApplyThemeOptions } from '@flusys/ng-ui';
|
|
4
|
+
export { ApplyThemeOptions, applyTheme, buildBootstrapPreset } from '@flusys/ng-ui';
|
|
3
5
|
import * as rxjs from 'rxjs';
|
|
4
6
|
import { Observable } from 'rxjs';
|
|
7
|
+
import { LayoutConfig } from '@flusys/ng-core';
|
|
5
8
|
import { ILogicNode, IconTypeEnum } from '@flusys/ng-shared';
|
|
6
9
|
import * as _flusys_ng_layout from '@flusys/ng-layout';
|
|
7
|
-
import * as _primeuix_themes_types from '@primeuix/themes/types';
|
|
8
10
|
|
|
9
11
|
declare class AppFooter {
|
|
10
12
|
private readonly layoutService;
|
|
11
13
|
readonly appName: string;
|
|
14
|
+
readonly displayLogo: string;
|
|
15
|
+
readonly isLogoSvg: boolean;
|
|
12
16
|
readonly authorName: string;
|
|
13
17
|
readonly authorUrl: string;
|
|
14
18
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFooter, never>;
|
|
@@ -17,8 +21,11 @@ declare class AppFooter {
|
|
|
17
21
|
|
|
18
22
|
interface ILauncherApp {
|
|
19
23
|
id: string;
|
|
20
|
-
name
|
|
21
|
-
|
|
24
|
+
/** Display name (use nameKey for localization instead) */
|
|
25
|
+
name?: string;
|
|
26
|
+
/** Translation key for the name - preferred over name for localization */
|
|
27
|
+
nameKey?: string;
|
|
28
|
+
iconType?: IconTypeEnum;
|
|
22
29
|
icon: string;
|
|
23
30
|
url: string;
|
|
24
31
|
/** Optional permission logic - if set, app only visible when logic passes */
|
|
@@ -46,7 +53,10 @@ interface IUserInfo {
|
|
|
46
53
|
}
|
|
47
54
|
interface IMenuItem {
|
|
48
55
|
id?: string;
|
|
56
|
+
/** Display label (use labelKey for localization instead) */
|
|
49
57
|
label?: string;
|
|
58
|
+
/** Translation key for the label - preferred over label for localization */
|
|
59
|
+
labelKey?: string;
|
|
50
60
|
icon?: string;
|
|
51
61
|
iconType?: number;
|
|
52
62
|
routerLink?: string[];
|
|
@@ -64,28 +74,38 @@ interface ILayoutAuthState {
|
|
|
64
74
|
loginUserData: Signal<IUserInfo | null>;
|
|
65
75
|
}
|
|
66
76
|
interface ILayoutAuthApi {
|
|
67
|
-
logOut(): Observable<
|
|
77
|
+
logOut(): Observable<unknown>;
|
|
68
78
|
navigateLogin(withUrl?: boolean): void;
|
|
69
|
-
switchCompany(companyId: string, branchId: string): Observable<
|
|
79
|
+
switchCompany(companyId: string, branchId: string): Observable<unknown>;
|
|
70
80
|
getUserCompanies(): Observable<ICompanyInfo[]>;
|
|
71
81
|
getCompanyBranches(companyId: string): Observable<IBranchInfo[]>;
|
|
72
82
|
}
|
|
73
83
|
declare const LAYOUT_AUTH_STATE: InjectionToken<ILayoutAuthState>;
|
|
74
84
|
declare const LAYOUT_AUTH_API: InjectionToken<ILayoutAuthApi>;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
declare const LAYOUT_NOTIFICATION_BELL: InjectionToken<Type<unknown>>;
|
|
86
|
+
declare const LAYOUT_LANGUAGE_SELECTOR: InjectionToken<Type<unknown>>;
|
|
87
|
+
declare const LAYOUT_LANGUAGE_SELECTOR_PANEL: InjectionToken<Type<unknown>>;
|
|
88
|
+
declare const LAYOUT_SEARCHBAR: InjectionToken<Type<unknown>>;
|
|
89
|
+
declare const LAYOUT_IS_RTL: InjectionToken<Signal<boolean>>;
|
|
90
|
+
interface ISearchSuggestion {
|
|
91
|
+
label: string;
|
|
92
|
+
icon?: string;
|
|
93
|
+
routerLink?: string[];
|
|
94
|
+
data?: unknown;
|
|
95
|
+
}
|
|
96
|
+
interface ISearchAdapter {
|
|
97
|
+
getSuggestions(query: string): Observable<ISearchSuggestion[]>;
|
|
98
|
+
onSearch?(query: string): void;
|
|
82
99
|
}
|
|
100
|
+
declare const LAYOUT_SEARCH_ADAPTER: InjectionToken<ISearchAdapter>;
|
|
101
|
+
|
|
83
102
|
interface LayoutState {
|
|
84
103
|
staticMenuDesktopInactive?: boolean;
|
|
85
104
|
overlayMenuActive?: boolean;
|
|
86
105
|
configSidebarVisible?: boolean;
|
|
87
106
|
staticMenuMobileActive?: boolean;
|
|
88
107
|
menuHoverActive?: boolean;
|
|
108
|
+
topbarMenuVisible?: boolean;
|
|
89
109
|
}
|
|
90
110
|
interface MenuChangeEvent {
|
|
91
111
|
key: string;
|
|
@@ -103,7 +123,6 @@ interface CompanyProfile {
|
|
|
103
123
|
slug: string;
|
|
104
124
|
logoUrl?: string | null;
|
|
105
125
|
}
|
|
106
|
-
/** Layout configuration and state management service */
|
|
107
126
|
declare class LayoutService {
|
|
108
127
|
private readonly document;
|
|
109
128
|
private readonly platformId;
|
|
@@ -112,6 +131,7 @@ declare class LayoutService {
|
|
|
112
131
|
private readonly appConfig;
|
|
113
132
|
private readonly DEFAULT_CONFIG;
|
|
114
133
|
private readonly DEFAULT_STATE;
|
|
134
|
+
private readonly memorable;
|
|
115
135
|
private readonly _layoutConfig;
|
|
116
136
|
private readonly _layoutState;
|
|
117
137
|
private readonly _transitionComplete;
|
|
@@ -123,32 +143,37 @@ declare class LayoutService {
|
|
|
123
143
|
private readonly _rawMenu;
|
|
124
144
|
private readonly _rawApps;
|
|
125
145
|
private readonly permissionValidator;
|
|
146
|
+
private readonly destroyRef;
|
|
147
|
+
private readonly _windowWidth;
|
|
126
148
|
readonly userProfile: _angular_core.Signal<UserProfile | null>;
|
|
127
149
|
readonly companyProfile: _angular_core.Signal<CompanyProfile | null>;
|
|
128
150
|
readonly appName: string;
|
|
151
|
+
readonly appLogo: string;
|
|
152
|
+
readonly isAppLogoSvg: boolean;
|
|
129
153
|
readonly authorName: string;
|
|
130
154
|
readonly authorUrl: string;
|
|
131
155
|
readonly menu: _angular_core.Signal<IMenuItem[]>;
|
|
132
156
|
readonly apps: _angular_core.Signal<ILauncherApp[]>;
|
|
133
157
|
readonly hasApps: _angular_core.Signal<boolean>;
|
|
134
158
|
readonly isSidebarActive: _angular_core.Signal<boolean | undefined>;
|
|
159
|
+
readonly isDesktop: _angular_core.Signal<boolean>;
|
|
160
|
+
readonly isMobile: _angular_core.Signal<boolean>;
|
|
135
161
|
readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
|
|
136
|
-
readonly getPrimary: _angular_core.Signal<string | undefined>;
|
|
137
|
-
readonly getSurface: _angular_core.Signal<string | null | undefined>;
|
|
138
162
|
readonly isOverlay: _angular_core.Signal<boolean>;
|
|
163
|
+
readonly isTopbar: _angular_core.Signal<boolean>;
|
|
139
164
|
readonly userName: _angular_core.Signal<string>;
|
|
140
165
|
readonly userEmail: _angular_core.Signal<string>;
|
|
141
166
|
readonly userProfilePictureUrl: _angular_core.Signal<string | null>;
|
|
142
167
|
readonly companyLogoUrl: _angular_core.Signal<string | null>;
|
|
143
168
|
readonly isAuthenticated: _angular_core.Signal<boolean>;
|
|
144
169
|
readonly companyName: _angular_core.Signal<string>;
|
|
145
|
-
|
|
170
|
+
readonly displayLogo: _angular_core.Signal<string>;
|
|
171
|
+
readonly isDisplayLogoSvg: _angular_core.Signal<boolean>;
|
|
146
172
|
private readonly overlayOpen;
|
|
147
173
|
private readonly menuSource;
|
|
148
174
|
private readonly resetSource;
|
|
149
175
|
readonly menuSource$: rxjs.Observable<MenuChangeEvent>;
|
|
150
176
|
readonly resetSource$: rxjs.Observable<boolean>;
|
|
151
|
-
readonly configUpdate$: rxjs.Observable<LayoutConfig>;
|
|
152
177
|
readonly overlayOpen$: rxjs.Observable<void>;
|
|
153
178
|
private initialized;
|
|
154
179
|
constructor();
|
|
@@ -156,8 +181,6 @@ declare class LayoutService {
|
|
|
156
181
|
private handleDarkModeTransition;
|
|
157
182
|
private onTransitionEnd;
|
|
158
183
|
onMenuToggle(): void;
|
|
159
|
-
isDesktop(): boolean;
|
|
160
|
-
isMobile(): boolean;
|
|
161
184
|
onMenuStateChange(event: MenuChangeEvent): void;
|
|
162
185
|
reset(): void;
|
|
163
186
|
updateLayoutConfig(config: Partial<LayoutConfig>): void;
|
|
@@ -172,56 +195,14 @@ declare class LayoutService {
|
|
|
172
195
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
|
|
173
196
|
}
|
|
174
197
|
|
|
175
|
-
/**
|
|
176
|
-
* Service for persisting layout configuration to localStorage.
|
|
177
|
-
* Handles loading, saving, and validation of layout preferences with SSR-safe checks.
|
|
178
|
-
*
|
|
179
|
-
* @example
|
|
180
|
-
* ```typescript
|
|
181
|
-
* const persistence = inject(LayoutPersistenceService);
|
|
182
|
-
*
|
|
183
|
-
* // Load saved config
|
|
184
|
-
* const config = persistence.load();
|
|
185
|
-
*
|
|
186
|
-
* // Save config
|
|
187
|
-
* persistence.save({ darkTheme: true, preset: 'Aura' });
|
|
188
|
-
*
|
|
189
|
-
* // Clear saved config
|
|
190
|
-
* persistence.clear();
|
|
191
|
-
* ```
|
|
192
|
-
*/
|
|
193
198
|
declare class LayoutPersistenceService {
|
|
194
199
|
private readonly platformId;
|
|
195
200
|
private readonly isBrowser;
|
|
196
201
|
private readonly validPresets;
|
|
197
202
|
private readonly validMenuModes;
|
|
198
|
-
/**
|
|
199
|
-
* Load configuration from localStorage.
|
|
200
|
-
* Returns null if no saved config or invalid data.
|
|
201
|
-
* SSR-safe (returns null on server).
|
|
202
|
-
*
|
|
203
|
-
* @returns Validated layout configuration or null
|
|
204
|
-
*/
|
|
205
203
|
load(): LayoutConfig | null;
|
|
206
|
-
/**
|
|
207
|
-
* Save configuration to localStorage.
|
|
208
|
-
* SSR-safe (no-op on server).
|
|
209
|
-
*
|
|
210
|
-
* @param config Layout configuration to save
|
|
211
|
-
*/
|
|
212
204
|
save(config: LayoutConfig): void;
|
|
213
|
-
/**
|
|
214
|
-
* Clear stored configuration.
|
|
215
|
-
* SSR-safe (no-op on server).
|
|
216
|
-
*/
|
|
217
205
|
clear(): void;
|
|
218
|
-
/**
|
|
219
|
-
* Validate and sanitize configuration.
|
|
220
|
-
* Returns null if version mismatch.
|
|
221
|
-
*
|
|
222
|
-
* @param config Configuration to validate
|
|
223
|
-
* @returns Validated configuration or null
|
|
224
|
-
*/
|
|
225
206
|
private validateConfig;
|
|
226
207
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutPersistenceService, never>;
|
|
227
208
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutPersistenceService>;
|
|
@@ -246,78 +227,35 @@ declare type SurfacesType = {
|
|
|
246
227
|
};
|
|
247
228
|
declare class AppConfigurator {
|
|
248
229
|
private readonly router;
|
|
230
|
+
private readonly translateAdapter;
|
|
231
|
+
private readonly platformId;
|
|
249
232
|
readonly layoutService: LayoutService;
|
|
250
|
-
readonly presets:
|
|
233
|
+
readonly presets: PresetName[];
|
|
251
234
|
readonly showMenuModeButton: _angular_core.WritableSignal<boolean>;
|
|
252
|
-
readonly menuModeOptions: {
|
|
235
|
+
readonly menuModeOptions: _angular_core.Signal<{
|
|
253
236
|
label: string;
|
|
254
|
-
value:
|
|
255
|
-
}[]
|
|
237
|
+
value: "static" | "overlay" | "topbar";
|
|
238
|
+
}[]>;
|
|
256
239
|
constructor();
|
|
257
240
|
readonly surfaces: SurfacesType[];
|
|
258
241
|
readonly selectedPrimaryColor: _angular_core.Signal<string | undefined>;
|
|
259
242
|
readonly selectedSurfaceColor: _angular_core.Signal<string | null | undefined>;
|
|
243
|
+
isSurfaceSelected(surfaceName: string | undefined): boolean;
|
|
260
244
|
readonly selectedPreset: _angular_core.Signal<string | undefined>;
|
|
261
|
-
readonly menuMode: _angular_core.Signal<"static" | "overlay" | undefined>;
|
|
245
|
+
readonly menuMode: _angular_core.Signal<"static" | "overlay" | "topbar" | undefined>;
|
|
262
246
|
readonly primaryColors: _angular_core.Signal<SurfacesType[]>;
|
|
263
|
-
getPresetExt(): {
|
|
264
|
-
semantic: {
|
|
265
|
-
primary: {
|
|
266
|
-
0?: string;
|
|
267
|
-
50?: string;
|
|
268
|
-
100?: string;
|
|
269
|
-
200?: string;
|
|
270
|
-
300?: string;
|
|
271
|
-
400?: string;
|
|
272
|
-
500?: string;
|
|
273
|
-
600?: string;
|
|
274
|
-
700?: string;
|
|
275
|
-
800?: string;
|
|
276
|
-
900?: string;
|
|
277
|
-
950?: string;
|
|
278
|
-
} | undefined;
|
|
279
|
-
colorScheme: {
|
|
280
|
-
light: {
|
|
281
|
-
primary: {
|
|
282
|
-
color: string;
|
|
283
|
-
contrastColor: string;
|
|
284
|
-
hoverColor: string;
|
|
285
|
-
activeColor: string;
|
|
286
|
-
};
|
|
287
|
-
highlight: {
|
|
288
|
-
background: string;
|
|
289
|
-
focusBackground: string;
|
|
290
|
-
color: string;
|
|
291
|
-
focusColor: string;
|
|
292
|
-
};
|
|
293
|
-
};
|
|
294
|
-
dark: {
|
|
295
|
-
primary: {
|
|
296
|
-
color: string;
|
|
297
|
-
contrastColor: string;
|
|
298
|
-
hoverColor: string;
|
|
299
|
-
activeColor: string;
|
|
300
|
-
};
|
|
301
|
-
highlight: {
|
|
302
|
-
background: string;
|
|
303
|
-
focusBackground: string;
|
|
304
|
-
color: string;
|
|
305
|
-
focusColor: string;
|
|
306
|
-
};
|
|
307
|
-
};
|
|
308
|
-
};
|
|
309
|
-
};
|
|
310
|
-
};
|
|
311
247
|
updateColors(event: MouseEvent, type: string, color: SurfacesType): void;
|
|
312
|
-
|
|
248
|
+
private _applyColorChange;
|
|
313
249
|
onPresetChange(event: string): void;
|
|
314
|
-
onMenuModeChange(event: 'static' | 'overlay'): void;
|
|
250
|
+
onMenuModeChange(event: 'static' | 'overlay' | 'topbar'): void;
|
|
251
|
+
private translate;
|
|
315
252
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppConfigurator, never>;
|
|
316
253
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppConfigurator, "app-configurator", never, {}, {}, never, never, true, never>;
|
|
317
254
|
}
|
|
318
255
|
|
|
319
256
|
declare class AppFloatingConfigurator {
|
|
320
257
|
private readonly layoutService;
|
|
258
|
+
readonly languageSelectorPanel: _angular_core.Type<unknown> | null;
|
|
321
259
|
readonly isDarkTheme: _angular_core.Signal<boolean | undefined>;
|
|
322
260
|
toggleDarkMode(): void;
|
|
323
261
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppFloatingConfigurator, never>;
|
|
@@ -336,13 +274,13 @@ declare class AppLayout {
|
|
|
336
274
|
hideMenu(): void;
|
|
337
275
|
blockBodyScroll(): void;
|
|
338
276
|
unblockBodyScroll(): void;
|
|
339
|
-
readonly
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
277
|
+
readonly isOverlay: _angular_core.Signal<boolean>;
|
|
278
|
+
readonly isStatic: _angular_core.Signal<boolean>;
|
|
279
|
+
readonly isTopbarMode: _angular_core.Signal<boolean>;
|
|
280
|
+
readonly isStaticInactive: _angular_core.Signal<boolean | undefined>;
|
|
281
|
+
readonly isOverlayActive: _angular_core.Signal<boolean | undefined>;
|
|
282
|
+
readonly isMobileActive: _angular_core.Signal<boolean | undefined>;
|
|
283
|
+
readonly isTopbarNavHidden: _angular_core.Signal<boolean>;
|
|
346
284
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLayout, never>;
|
|
347
285
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLayout, "app-layout", never, {}, {}, never, never, true, never>;
|
|
348
286
|
}
|
|
@@ -391,8 +329,9 @@ declare class AppMenuitem {
|
|
|
391
329
|
readonly index: _angular_core.InputSignal<number>;
|
|
392
330
|
readonly parentKey: _angular_core.InputSignal<string>;
|
|
393
331
|
private readonly router;
|
|
394
|
-
|
|
332
|
+
readonly layoutService: LayoutService;
|
|
395
333
|
private readonly destroyRef;
|
|
334
|
+
private readonly parentLink;
|
|
396
335
|
private readonly _active;
|
|
397
336
|
readonly active: _angular_core.Signal<boolean>;
|
|
398
337
|
readonly key: _angular_core.Signal<string>;
|
|
@@ -404,6 +343,8 @@ declare class AppMenuitem {
|
|
|
404
343
|
readonly fragment: "ignored";
|
|
405
344
|
}>;
|
|
406
345
|
constructor();
|
|
346
|
+
onMouseEnter(): void;
|
|
347
|
+
private updateSubmenuPosition;
|
|
407
348
|
private updateActiveStateFromRoute;
|
|
408
349
|
itemClick(): void;
|
|
409
350
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppMenuitem, never>;
|
|
@@ -421,14 +362,21 @@ declare class AppTopbar {
|
|
|
421
362
|
private readonly document;
|
|
422
363
|
private readonly destroyRef;
|
|
423
364
|
readonly layoutService: LayoutService;
|
|
365
|
+
readonly notificationBellComponent: _angular_core.Type<unknown> | null;
|
|
366
|
+
readonly languageSelectorComponent: _angular_core.Type<unknown> | null;
|
|
367
|
+
private readonly searchAdapter;
|
|
368
|
+
readonly hasSearchAdapter: _angular_core.Signal<boolean>;
|
|
424
369
|
private readonly configContainer;
|
|
370
|
+
private readonly navContainer;
|
|
425
371
|
readonly activePanel: _angular_core.WritableSignal<ActivePanel>;
|
|
426
372
|
constructor();
|
|
427
373
|
readonly companyName: _angular_core.Signal<string>;
|
|
428
|
-
readonly
|
|
374
|
+
readonly displayLogo: _angular_core.Signal<string>;
|
|
375
|
+
readonly enableCompanyFeature: boolean;
|
|
429
376
|
toggleDarkMode(): void;
|
|
430
377
|
togglePanel(panel: ActivePanel): void;
|
|
431
378
|
private handleOutsideClick;
|
|
379
|
+
private recalculateHoveredSubmenu;
|
|
432
380
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppTopbar, never>;
|
|
433
381
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppTopbar, "app-topbar", never, {}, {}, never, never, true, never>;
|
|
434
382
|
}
|
|
@@ -439,6 +387,7 @@ declare class AppCompanyBranchSelector {
|
|
|
439
387
|
private readonly authState;
|
|
440
388
|
private readonly authApi;
|
|
441
389
|
private readonly messageService;
|
|
390
|
+
private readonly translateAdapter;
|
|
442
391
|
private readonly document;
|
|
443
392
|
private readonly elementRef;
|
|
444
393
|
private readonly _isActive;
|
|
@@ -467,19 +416,20 @@ declare class AppCompanyBranchSelector {
|
|
|
467
416
|
onBranchChange(branchId: string | null): void;
|
|
468
417
|
private loadBranches;
|
|
469
418
|
onSwitch(): void;
|
|
419
|
+
private translate;
|
|
470
420
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppCompanyBranchSelector, never>;
|
|
471
421
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppCompanyBranchSelector, "app-company-branch-selector", never, {}, {}, never, never, true, never>;
|
|
472
422
|
}
|
|
473
423
|
|
|
474
424
|
declare class AppLauncher {
|
|
425
|
+
readonly layoutService: LayoutService;
|
|
475
426
|
private readonly destroyRef;
|
|
476
427
|
private readonly document;
|
|
477
428
|
private readonly elementRef;
|
|
478
|
-
readonly layoutService: LayoutService;
|
|
479
429
|
private readonly _isActive;
|
|
480
430
|
readonly isActive: _angular_core.Signal<boolean>;
|
|
481
431
|
constructor();
|
|
482
|
-
|
|
432
|
+
toggleActive(): void;
|
|
483
433
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLauncher, never>;
|
|
484
434
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLauncher, "app-launcher", never, {}, {}, never, never, true, never>;
|
|
485
435
|
}
|
|
@@ -490,6 +440,8 @@ declare class AppProfile {
|
|
|
490
440
|
private readonly authApi;
|
|
491
441
|
private readonly layoutService;
|
|
492
442
|
private readonly messageService;
|
|
443
|
+
private readonly translateAdapter;
|
|
444
|
+
private readonly appConfig;
|
|
493
445
|
private readonly document;
|
|
494
446
|
private readonly elementRef;
|
|
495
447
|
private readonly _isActive;
|
|
@@ -499,12 +451,42 @@ declare class AppProfile {
|
|
|
499
451
|
readonly userName: _angular_core.Signal<string>;
|
|
500
452
|
readonly userEmail: _angular_core.Signal<string>;
|
|
501
453
|
readonly profilePicture: _angular_core.Signal<string>;
|
|
454
|
+
readonly signUpEnabled: _angular_core.Signal<boolean>;
|
|
502
455
|
logout(): void;
|
|
503
456
|
copySignUpLink(): void;
|
|
457
|
+
private translate;
|
|
504
458
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppProfile, never>;
|
|
505
459
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppProfile, "app-profile", never, {}, {}, never, never, true, never>;
|
|
506
460
|
}
|
|
507
461
|
|
|
462
|
+
declare class AppSearchbar {
|
|
463
|
+
readonly layoutService: LayoutService;
|
|
464
|
+
private readonly router;
|
|
465
|
+
private readonly searchAdapter;
|
|
466
|
+
private readonly destroyRef;
|
|
467
|
+
private readonly document;
|
|
468
|
+
readonly searchTerm: _angular_core.WritableSignal<string>;
|
|
469
|
+
readonly suggestionsOpen: _angular_core.WritableSignal<boolean>;
|
|
470
|
+
readonly suggestions: _angular_core.WritableSignal<ISearchSuggestion[]>;
|
|
471
|
+
readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
472
|
+
readonly isSearchExpanded: _angular_core.WritableSignal<boolean>;
|
|
473
|
+
readonly isResponsive: _angular_core.WritableSignal<boolean>;
|
|
474
|
+
private readonly searchWrapper;
|
|
475
|
+
private readonly searchInput;
|
|
476
|
+
private searchTimeout?;
|
|
477
|
+
constructor();
|
|
478
|
+
onFocus(): void;
|
|
479
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
480
|
+
handleEnter(): void;
|
|
481
|
+
selectSuggestion(item: ISearchSuggestion): void;
|
|
482
|
+
private closeSuggestions;
|
|
483
|
+
toggleSearch(): void;
|
|
484
|
+
private closeSearch;
|
|
485
|
+
onSearch(): void;
|
|
486
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppSearchbar, never>;
|
|
487
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppSearchbar, "app-searchbar", never, {}, {}, never, never, true, never>;
|
|
488
|
+
}
|
|
489
|
+
|
|
508
490
|
/** Filter launcher apps based on user permission codes */
|
|
509
491
|
declare function filterAppsByPermissions(apps: ILauncherApp[], permissionCodes: string[]): ILauncherApp[];
|
|
510
492
|
|
|
@@ -526,9 +508,13 @@ declare function filterAppsByPermissions(apps: ILauncherApp[], permissionCodes:
|
|
|
526
508
|
*/
|
|
527
509
|
declare function filterMenuByPermissions(items: IMenuItem[], permissionCode: string[]): IMenuItem[];
|
|
528
510
|
|
|
529
|
-
declare
|
|
511
|
+
declare function buildPreset(presetName: string, primary: string): ApplyThemeOptions;
|
|
512
|
+
|
|
513
|
+
declare const NavyBlueTheme: ApplyThemeOptions;
|
|
514
|
+
|
|
515
|
+
declare const GreenTheme: ApplyThemeOptions;
|
|
530
516
|
|
|
531
|
-
declare const
|
|
517
|
+
declare const LAYOUT_MESSAGES: Record<string, string>;
|
|
532
518
|
|
|
533
|
-
export { AppCompanyBranchSelector, AppConfigurator, AppFloatingConfigurator, AppFooter, AppLauncher, AppLayout, AppMenu, AppMenuitem, AppProfile, AppSidebar, AppTopbar, GreenTheme, LAYOUT_AUTH_API, LAYOUT_AUTH_STATE, LayoutPersistenceService, LayoutService, NavyBlueTheme, filterAppsByPermissions, filterMenuByPermissions };
|
|
534
|
-
export type { CompanyProfile, DocumentWithViewTransition, IBranchInfo, ICompanyInfo, ILauncherApp, ILayoutAuthApi, ILayoutAuthState, IMenuItem,
|
|
519
|
+
export { AppCompanyBranchSelector, AppConfigurator, AppFloatingConfigurator, AppFooter, AppLauncher, AppLayout, AppMenu, AppMenuitem, AppProfile, AppSearchbar, AppSidebar, AppTopbar, GreenTheme, LAYOUT_AUTH_API, LAYOUT_AUTH_STATE, LAYOUT_IS_RTL, LAYOUT_LANGUAGE_SELECTOR, LAYOUT_LANGUAGE_SELECTOR_PANEL, LAYOUT_MESSAGES, LAYOUT_NOTIFICATION_BELL, LAYOUT_SEARCHBAR, LAYOUT_SEARCH_ADAPTER, LayoutPersistenceService, LayoutService, NavyBlueTheme, buildPreset, filterAppsByPermissions, filterMenuByPermissions };
|
|
520
|
+
export type { CompanyProfile, DocumentWithViewTransition, IBranchInfo, ICompanyInfo, ILauncherApp, ILayoutAuthApi, ILayoutAuthState, IMenuItem, ISearchAdapter, ISearchSuggestion, IUserInfo, LayoutState, MenuChangeEvent, UserProfile, ViewTransition };
|