layout-tsi 0.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 +63 -0
- package/fesm2022/layout-tsi.mjs +1733 -0
- package/fesm2022/layout-tsi.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/models/general/app-tab.model.d.ts +9 -0
- package/lib/models/general/dashboard.model.d.ts +15 -0
- package/lib/models/general/route-info.model.d.ts +16 -0
- package/lib/models/general/session-data.model.d.ts +8 -0
- package/lib/service/detector.service.d.ts +8 -0
- package/lib/service/header-ui.service.d.ts +9 -0
- package/lib/service/menu.service.d.ts +8 -0
- package/lib/service/tabs.service.d.ts +36 -0
- package/lib/ui/bottom-navigation/bottom-navigation.component.d.ts +31 -0
- package/lib/ui/chatbot/chatbot.component.d.ts +30 -0
- package/lib/ui/chatbot/chatbot.model.d.ts +28 -0
- package/lib/ui/chatbot/chatbot.service.d.ts +19 -0
- package/lib/ui/dashboard/dashboard-chart-bars/dashboard-chart-bars.component.d.ts +45 -0
- package/lib/ui/dashboard/dashboard-chart-donut/dashboard-chart-donut.component.d.ts +21 -0
- package/lib/ui/dashboard/dashboard-view-switcher/dashboard-view-switcher.component.d.ts +14 -0
- package/lib/ui/dashboard/item-dashboard/item-dashboard.component.d.ts +26 -0
- package/lib/ui/dashboard/item-dashboard-group/item-dashboard-group.component.d.ts +28 -0
- package/lib/ui/full/full.component.d.ts +48 -0
- package/lib/ui/menu-item/menu-item.component.d.ts +70 -0
- package/lib/ui/not-found/not-found.component.d.ts +7 -0
- package/lib/ui/tab-bar/tab-bar.component.d.ts +23 -0
- package/lib/ui/vertical-header/vertical-header.component.d.ts +95 -0
- package/lib/utils/validaciones.d.ts +1 -0
- package/package.json +24 -0
- package/public-api.d.ts +21 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { AppTab } from '../models/general/app-tab.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface TabsSyncProvider {
|
|
6
|
+
getAccess(): Observable<{
|
|
7
|
+
message: string;
|
|
8
|
+
}>;
|
|
9
|
+
saveAccess(payload: string): Observable<any>;
|
|
10
|
+
}
|
|
11
|
+
export declare const TABS_SYNC_PROVIDER: InjectionToken<TabsSyncProvider>;
|
|
12
|
+
export declare class TabsService {
|
|
13
|
+
private readonly router;
|
|
14
|
+
private readonly syncProvider;
|
|
15
|
+
private readonly destroyRef;
|
|
16
|
+
private readonly injector;
|
|
17
|
+
tabs: import("@angular/core").WritableSignal<AppTab[]>;
|
|
18
|
+
activeId: import("@angular/core").WritableSignal<string>;
|
|
19
|
+
visible: import("@angular/core").WritableSignal<boolean>;
|
|
20
|
+
private readonly destroy$;
|
|
21
|
+
sortedTabs: import("@angular/core").Signal<AppTab[]>;
|
|
22
|
+
toggleVisible(): void;
|
|
23
|
+
constructor();
|
|
24
|
+
init(): void;
|
|
25
|
+
private startApiSync;
|
|
26
|
+
private parseData;
|
|
27
|
+
private loadFromStorage;
|
|
28
|
+
clear(): void;
|
|
29
|
+
addBackground(path: string, title: string, icon: string, module?: string, moduleKey?: string): void;
|
|
30
|
+
activate(id: string): void;
|
|
31
|
+
close(id: string, event: Event): void;
|
|
32
|
+
closeAll(): void;
|
|
33
|
+
togglePin(id: string, event: Event): void;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TabsService, never>;
|
|
35
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TabsService>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export interface BottomNavItem {
|
|
3
|
+
icon: string;
|
|
4
|
+
label: string;
|
|
5
|
+
action?: () => void;
|
|
6
|
+
active?: boolean;
|
|
7
|
+
type?: 'button' | 'dropdown';
|
|
8
|
+
onOpen?: () => void;
|
|
9
|
+
items?: Array<{
|
|
10
|
+
icon: string;
|
|
11
|
+
label: string;
|
|
12
|
+
action: () => void;
|
|
13
|
+
value?: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare class BottomNavigationComponent {
|
|
17
|
+
menuItems: import("@angular/core").InputSignal<BottomNavItem[]>;
|
|
18
|
+
isVisible: import("@angular/core").InputSignal<boolean>;
|
|
19
|
+
itemClick: import("@angular/core").OutputEmitterRef<{
|
|
20
|
+
index: number;
|
|
21
|
+
item: BottomNavItem;
|
|
22
|
+
}>;
|
|
23
|
+
activeDropdown: import("@angular/core").WritableSignal<number>;
|
|
24
|
+
onDocumentClick(): void;
|
|
25
|
+
toggleDropdown(index: number, event?: MouseEvent): void;
|
|
26
|
+
onItemClick(index: number, item: BottomNavItem, event?: MouseEvent): void;
|
|
27
|
+
onSubItemClick(subItem: any, event?: MouseEvent): void;
|
|
28
|
+
onDropdownClick(event: MouseEvent): void;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BottomNavigationComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BottomNavigationComponent, "app-bottom-navigation", never, { "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "isVisible": { "alias": "isVisible"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChatOption } from './chatbot.model';
|
|
2
|
+
import { ChatbotService } from './chatbot.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ChatbotComponent {
|
|
5
|
+
protected service: ChatbotService;
|
|
6
|
+
protected config: import("layout-tsi").ChatbotConfig;
|
|
7
|
+
private zone;
|
|
8
|
+
private messagesEnd;
|
|
9
|
+
private wrapper;
|
|
10
|
+
position: import("@angular/core").WritableSignal<{
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
}>;
|
|
14
|
+
isDragging: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
+
openDir: import("@angular/core").WritableSignal<"above" | "below">;
|
|
16
|
+
openHDir: import("@angular/core").WritableSignal<"left" | "right">;
|
|
17
|
+
private dragOffset;
|
|
18
|
+
private hasDragged;
|
|
19
|
+
constructor();
|
|
20
|
+
get primaryColor(): string;
|
|
21
|
+
selectOption(option: ChatOption, index: number): void;
|
|
22
|
+
onFabClick(): void;
|
|
23
|
+
private calcOpenDirection;
|
|
24
|
+
startDrag(event: MouseEvent): void;
|
|
25
|
+
private onDrag;
|
|
26
|
+
private stopDrag;
|
|
27
|
+
private scrollToBottom;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChatbotComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChatbotComponent, "app-chatbot", never, {}, {}, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export interface ChatOption {
|
|
3
|
+
label: string;
|
|
4
|
+
nextNodeId?: string;
|
|
5
|
+
response?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ChatNode {
|
|
8
|
+
id: string;
|
|
9
|
+
message: string;
|
|
10
|
+
options?: ChatOption[];
|
|
11
|
+
}
|
|
12
|
+
export interface ChatbotConfig {
|
|
13
|
+
botName: string;
|
|
14
|
+
botAvatar?: string;
|
|
15
|
+
primaryColor?: string;
|
|
16
|
+
welcomeMessage: string;
|
|
17
|
+
nodes: ChatNode[];
|
|
18
|
+
rootNodeId: string;
|
|
19
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
20
|
+
contactInfo?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ChatMessage {
|
|
23
|
+
from: 'bot' | 'user';
|
|
24
|
+
text: string;
|
|
25
|
+
options?: ChatOption[];
|
|
26
|
+
optionsDisabled?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const CHATBOT_CONFIG: InjectionToken<ChatbotConfig>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChatMessage, ChatOption } from './chatbot.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ChatbotService {
|
|
4
|
+
private config;
|
|
5
|
+
messages: import("@angular/core").WritableSignal<ChatMessage[]>;
|
|
6
|
+
isTyping: import("@angular/core").WritableSignal<boolean>;
|
|
7
|
+
isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
8
|
+
hasActiveConversation: import("@angular/core").Signal<boolean>;
|
|
9
|
+
constructor();
|
|
10
|
+
private getNode;
|
|
11
|
+
private init;
|
|
12
|
+
open(): void;
|
|
13
|
+
minimize(): void;
|
|
14
|
+
close(): void;
|
|
15
|
+
selectOption(option: ChatOption, messageIndex: number): void;
|
|
16
|
+
restart(): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChatbotService, never>;
|
|
18
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ChatbotService>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DashboardItem } from '../../../models/general/dashboard.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
interface HBarItem {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
w: number;
|
|
7
|
+
barH: number;
|
|
8
|
+
cy: number;
|
|
9
|
+
tooltipX: number;
|
|
10
|
+
tooltipY: number;
|
|
11
|
+
value: number;
|
|
12
|
+
displayValue: string;
|
|
13
|
+
percent: string;
|
|
14
|
+
label: string;
|
|
15
|
+
color: string;
|
|
16
|
+
item: any;
|
|
17
|
+
}
|
|
18
|
+
interface HBarData {
|
|
19
|
+
bars: HBarItem[];
|
|
20
|
+
xTicks: {
|
|
21
|
+
val: number;
|
|
22
|
+
x: number;
|
|
23
|
+
}[];
|
|
24
|
+
svgW: number;
|
|
25
|
+
svgH: number;
|
|
26
|
+
axisY: number;
|
|
27
|
+
axisLft: number;
|
|
28
|
+
svgRgt: number;
|
|
29
|
+
svgTop: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class DashboardChartBarsComponent {
|
|
32
|
+
data: import("@angular/core").InputSignal<any[]>;
|
|
33
|
+
maxValue: import("@angular/core").InputSignal<number>;
|
|
34
|
+
keyValue: import("@angular/core").InputSignal<string>;
|
|
35
|
+
keyDescri: import("@angular/core").InputSignal<string>;
|
|
36
|
+
palette: import("@angular/core").InputSignal<string[]>;
|
|
37
|
+
textClass: import("@angular/core").InputSignal<string>;
|
|
38
|
+
complemento: import("@angular/core").InputSignal<string>;
|
|
39
|
+
clicked: import("@angular/core").OutputEmitterRef<DashboardItem>;
|
|
40
|
+
hoveredIndex: import("@angular/core").WritableSignal<number>;
|
|
41
|
+
chartData: import("@angular/core").Signal<HBarData>;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardChartBarsComponent, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardChartBarsComponent, "app-dashboard-chart-bars", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "keyValue": { "alias": "keyValue"; "required": false; "isSignal": true; }; "keyDescri": { "alias": "keyDescri"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "textClass": { "alias": "textClass"; "required": false; "isSignal": true; }; "complemento": { "alias": "complemento"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DashboardItem, DonutSegmentItem } from '../../../models/general/dashboard.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class DashboardChartDonutComponent {
|
|
4
|
+
textClass: import("@angular/core").InputSignal<string>;
|
|
5
|
+
complemento: import("@angular/core").InputSignal<string>;
|
|
6
|
+
data: import("@angular/core").InputSignal<any[]>;
|
|
7
|
+
keyValue: import("@angular/core").InputSignal<string>;
|
|
8
|
+
keyDescri: import("@angular/core").InputSignal<string>;
|
|
9
|
+
palette: import("@angular/core").InputSignal<string[]>;
|
|
10
|
+
clicked: import("@angular/core").OutputEmitterRef<DashboardItem>;
|
|
11
|
+
hoveredIndex: import("@angular/core").WritableSignal<number>;
|
|
12
|
+
private readonly C;
|
|
13
|
+
private readonly GAP;
|
|
14
|
+
donutSegments: import("@angular/core").Signal<DonutSegmentItem[]>;
|
|
15
|
+
centerDisplay: import("@angular/core").Signal<{
|
|
16
|
+
value: string;
|
|
17
|
+
sub: string;
|
|
18
|
+
}>;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardChartDonutComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardChartDonutComponent, "app-dashboard-chart-donut", never, { "textClass": { "alias": "textClass"; "required": false; "isSignal": true; }; "complemento": { "alias": "complemento"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "keyValue": { "alias": "keyValue"; "required": false; "isSignal": true; }; "keyDescri": { "alias": "keyDescri"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ViewMode } from '../../../models/general/dashboard.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class DashboardViewSwitcherComponent {
|
|
4
|
+
viewMode: import("@angular/core").InputSignal<ViewMode>;
|
|
5
|
+
accentColor: import("@angular/core").InputSignal<string>;
|
|
6
|
+
viewModeChange: import("@angular/core").OutputEmitterRef<ViewMode>;
|
|
7
|
+
fabOpen: import("@angular/core").WritableSignal<boolean>;
|
|
8
|
+
fabRendered: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
private closeTimer;
|
|
10
|
+
constructor();
|
|
11
|
+
setView(mode: ViewMode): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardViewSwitcherComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardViewSwitcherComponent, "app-dashboard-view-switcher", never, { "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "accentColor": { "alias": "accentColor"; "required": false; "isSignal": true; }; }, { "viewModeChange": "viewModeChange"; }, never, never, true, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DashboardItem, ViewMode } from '../../../models/general/dashboard.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ItemDashboardComponent {
|
|
4
|
+
data: import("@angular/core").InputSignal<any[]>;
|
|
5
|
+
titulo: import("@angular/core").InputSignal<string>;
|
|
6
|
+
textClass: import("@angular/core").InputSignal<string>;
|
|
7
|
+
colorClass: import("@angular/core").InputSignal<string>;
|
|
8
|
+
keyValue: import("@angular/core").InputSignal<string>;
|
|
9
|
+
keyDescri: import("@angular/core").InputSignal<string>;
|
|
10
|
+
complemento: import("@angular/core").InputSignal<string>;
|
|
11
|
+
isDesplegable: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
isLoading: import("@angular/core").InputSignal<boolean>;
|
|
13
|
+
viewMode: import("@angular/core").InputSignal<ViewMode>;
|
|
14
|
+
showContent: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
+
emit: import("@angular/core").OutputEmitterRef<DashboardItem>;
|
|
16
|
+
emitContent: import("@angular/core").OutputEmitterRef<string>;
|
|
17
|
+
filteredData: import("@angular/core").Signal<any[]>;
|
|
18
|
+
totalItems: import("@angular/core").Signal<any>;
|
|
19
|
+
maxValue: import("@angular/core").Signal<number>;
|
|
20
|
+
readonly palette: string[];
|
|
21
|
+
getPercent(item: any): number;
|
|
22
|
+
toggleMostrar(): void;
|
|
23
|
+
mover(item: DashboardItem): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ItemDashboardComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ItemDashboardComponent, "app-item-dashboard", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "titulo": { "alias": "titulo"; "required": false; "isSignal": true; }; "textClass": { "alias": "textClass"; "required": false; "isSignal": true; }; "colorClass": { "alias": "colorClass"; "required": false; "isSignal": true; }; "keyValue": { "alias": "keyValue"; "required": false; "isSignal": true; }; "keyDescri": { "alias": "keyDescri"; "required": false; "isSignal": true; }; "complemento": { "alias": "complemento"; "required": false; "isSignal": true; }; "isDesplegable": { "alias": "isDesplegable"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; }, { "emit": "emit"; "emitContent": "emitContent"; }, never, never, true, never>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DashboardItem, ViewMode } from '../../../models/general/dashboard.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ItemDashboardGroupComponent {
|
|
4
|
+
data: import("@angular/core").InputSignal<DashboardItem[]>;
|
|
5
|
+
titulo: import("@angular/core").InputSignal<string>;
|
|
6
|
+
textClass: import("@angular/core").InputSignal<string>;
|
|
7
|
+
colorClass: import("@angular/core").InputSignal<string>;
|
|
8
|
+
keyValue: import("@angular/core").InputSignal<string>;
|
|
9
|
+
keyDescri: import("@angular/core").InputSignal<string>;
|
|
10
|
+
complemento: import("@angular/core").InputSignal<string>;
|
|
11
|
+
isDesplegable: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
isLoading: import("@angular/core").InputSignal<boolean>;
|
|
13
|
+
viewMode: import("@angular/core").InputSignal<ViewMode>;
|
|
14
|
+
showContent: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
+
emit: import("@angular/core").OutputEmitterRef<DashboardItem>;
|
|
16
|
+
emitContent: import("@angular/core").OutputEmitterRef<string>;
|
|
17
|
+
dataGroup: import("@angular/core").Signal<Record<string, any[]>>;
|
|
18
|
+
filteredDataGroup: import("@angular/core").Signal<Record<string, any[]>>;
|
|
19
|
+
totalItems: import("@angular/core").Signal<any>;
|
|
20
|
+
maxValue: import("@angular/core").Signal<number>;
|
|
21
|
+
hasData: import("@angular/core").Signal<boolean>;
|
|
22
|
+
getPercent(item: any): number;
|
|
23
|
+
toggleMostrar(): void;
|
|
24
|
+
mover(item: DashboardItem): void;
|
|
25
|
+
private groupBy;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ItemDashboardGroupComponent, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ItemDashboardGroupComponent, "app-item-dashboard-group", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "titulo": { "alias": "titulo"; "required": false; "isSignal": true; }; "textClass": { "alias": "textClass"; "required": false; "isSignal": true; }; "colorClass": { "alias": "colorClass"; "required": false; "isSignal": true; }; "keyValue": { "alias": "keyValue"; "required": false; "isSignal": true; }; "keyDescri": { "alias": "keyDescri"; "required": false; "isSignal": true; }; "complemento": { "alias": "complemento"; "required": false; "isSignal": true; }; "isDesplegable": { "alias": "isDesplegable"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; }, { "emit": "emit"; "emitContent": "emitContent"; }, never, never, true, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { RouteInfo } from '../../models/general/route-info.model';
|
|
3
|
+
import { SessionData } from '../../models/general/session-data.model';
|
|
4
|
+
import { BottomNavItem } from '../bottom-navigation/bottom-navigation.component';
|
|
5
|
+
import { VerticalHeaderComponent } from '../vertical-header/vertical-header.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class FullComponent {
|
|
8
|
+
private readonly detectorService;
|
|
9
|
+
private readonly contexts;
|
|
10
|
+
private readonly router;
|
|
11
|
+
private readonly tabsService;
|
|
12
|
+
menuItems: import("@angular/core").InputSignal<RouteInfo[]>;
|
|
13
|
+
nameProyecto: import("@angular/core").InputSignal<string>;
|
|
14
|
+
accentColor: import("@angular/core").InputSignal<string>;
|
|
15
|
+
showTabs: import("@angular/core").InputSignal<boolean>;
|
|
16
|
+
tabModuleColors: import("@angular/core").InputSignal<Record<string, string>>;
|
|
17
|
+
currentYear: number;
|
|
18
|
+
private verticalHeaderSignal;
|
|
19
|
+
set verticalHeaderRef(vh: VerticalHeaderComponent | undefined);
|
|
20
|
+
bottomMenuItems: import("@angular/core").Signal<BottomNavItem[]>;
|
|
21
|
+
isSidebarOpen: import("@angular/core").WritableSignal<boolean>;
|
|
22
|
+
isSidebarHovering: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
isScrolled: import("@angular/core").WritableSignal<boolean>;
|
|
24
|
+
isDesktop: boolean;
|
|
25
|
+
isMobileView: import("@angular/core").WritableSignal<boolean>;
|
|
26
|
+
sidebarWidth: import("@angular/core").WritableSignal<number>;
|
|
27
|
+
sessionData: import("@angular/core").InputSignal<SessionData>;
|
|
28
|
+
nombreSucursal: import("@angular/core").Signal<any>;
|
|
29
|
+
cambiarSucursal(): void;
|
|
30
|
+
get userInitials(): string;
|
|
31
|
+
routeAnimating: import("@angular/core").WritableSignal<boolean>;
|
|
32
|
+
onRouteActivate(): void;
|
|
33
|
+
constructor();
|
|
34
|
+
contentContainer: ElementRef;
|
|
35
|
+
sidebarRef: ElementRef<HTMLDivElement>;
|
|
36
|
+
toggleSidebar(): void;
|
|
37
|
+
closeSidebar(): void;
|
|
38
|
+
onResize(event: any): void;
|
|
39
|
+
ngAfterViewInit(): void;
|
|
40
|
+
get isSidebarActuallyOpen(): boolean;
|
|
41
|
+
updateSidebarWidth(): void;
|
|
42
|
+
onClickOutside(event: Event): void;
|
|
43
|
+
onSidebarHoverEnter(): void;
|
|
44
|
+
onSidebarHoverLeave(): void;
|
|
45
|
+
showBottomNav: import("@angular/core").Signal<boolean>;
|
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FullComponent, never>;
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FullComponent, "app-full", never, { "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "nameProyecto": { "alias": "nameProyecto"; "required": false; "isSignal": true; }; "accentColor": { "alias": "accentColor"; "required": false; "isSignal": true; }; "showTabs": { "alias": "showTabs"; "required": false; "isSignal": true; }; "tabModuleColors": { "alias": "tabModuleColors"; "required": false; "isSignal": true; }; "sessionData": { "alias": "sessionData"; "required": true; "isSignal": true; }; }, {}, ["verticalHeaderRef"], ["[header]", "[chatbot]"], true, never>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { InjectionToken, OnDestroy } from '@angular/core';
|
|
2
|
+
import { RouteInfo } from '../../models/general/route-info.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
interface TooltipState {
|
|
5
|
+
text: string;
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ExtralinkOpener {
|
|
10
|
+
open(moduloID: number, routeName?: string): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const EXTRALINK_OPENER: InjectionToken<ExtralinkOpener>;
|
|
13
|
+
export declare class MenuItemComponent implements OnDestroy {
|
|
14
|
+
private menuService;
|
|
15
|
+
private headerUiService;
|
|
16
|
+
private readonly tabsService;
|
|
17
|
+
private readonly router;
|
|
18
|
+
private readonly extralinkOpener;
|
|
19
|
+
item: import("@angular/core").InputSignal<RouteInfo>;
|
|
20
|
+
isSidebarOpen: import("@angular/core").InputSignal<boolean>;
|
|
21
|
+
isSidebarHovering: import("@angular/core").InputSignal<boolean>;
|
|
22
|
+
level: import("@angular/core").InputSignal<number>;
|
|
23
|
+
parentModuleName: import("@angular/core").InputSignal<string>;
|
|
24
|
+
accentColor: import("@angular/core").InputSignal<string>;
|
|
25
|
+
accesos: import("@angular/core").InputSignal<any[]>;
|
|
26
|
+
rolId: import("@angular/core").InputSignal<number>;
|
|
27
|
+
open: import("@angular/core").WritableSignal<boolean>;
|
|
28
|
+
flyoutY: import("@angular/core").WritableSignal<number>;
|
|
29
|
+
expandedFlyoutChild: import("@angular/core").WritableSignal<string>;
|
|
30
|
+
flyoutTimer: ReturnType<typeof setTimeout> | null;
|
|
31
|
+
tooltip: import("@angular/core").WritableSignal<TooltipState>;
|
|
32
|
+
showFlyout: import("@angular/core").Signal<boolean>;
|
|
33
|
+
flyoutRendered: import("@angular/core").WritableSignal<boolean>;
|
|
34
|
+
private flyoutExitTimer;
|
|
35
|
+
private currentUrl;
|
|
36
|
+
esRutaActiva(path?: string | null): boolean;
|
|
37
|
+
submenuRendered: import("@angular/core").WritableSignal<boolean>;
|
|
38
|
+
private submenuLeaveTimer;
|
|
39
|
+
constructor();
|
|
40
|
+
ngOnDestroy(): void;
|
|
41
|
+
hasAccess(menuItem?: RouteInfo): boolean;
|
|
42
|
+
get isSidebarActuallyOpen(): boolean;
|
|
43
|
+
get isCollapsedMode(): boolean;
|
|
44
|
+
getFlyoutKey(): string;
|
|
45
|
+
onItemMouseEnter(event: MouseEvent): void;
|
|
46
|
+
onItemMouseOver(): void;
|
|
47
|
+
onItemMouseLeave(): void;
|
|
48
|
+
showChildTooltip(event: MouseEvent, item: RouteInfo): void;
|
|
49
|
+
hideChildTooltip(): void;
|
|
50
|
+
onFlyoutMouseEnter(): void;
|
|
51
|
+
onFlyoutMouseLeave(): void;
|
|
52
|
+
toggleFlyoutChild(child: RouteInfo): void;
|
|
53
|
+
isFlyoutChildExpanded(child: RouteInfo): boolean;
|
|
54
|
+
onFlyoutItemClick(child: RouteInfo, event: MouseEvent): void;
|
|
55
|
+
onFlyoutGrandchildClick(grandchild: RouteInfo): void;
|
|
56
|
+
onFlyoutItemRightClick(event: MouseEvent, child: RouteInfo): void;
|
|
57
|
+
onFlyoutItemMiddleClick(event: MouseEvent, child: RouteInfo): void;
|
|
58
|
+
toggle(): void;
|
|
59
|
+
openLink(item: RouteInfo): void;
|
|
60
|
+
onMiddleClick(event: MouseEvent): void;
|
|
61
|
+
onRightClick(event: MouseEvent): void;
|
|
62
|
+
isOpen(): boolean;
|
|
63
|
+
getItemId(): string;
|
|
64
|
+
codAcceso: () => string;
|
|
65
|
+
codAccesoItem(item: RouteInfo): string;
|
|
66
|
+
manejarRuta(item: RouteInfo): string;
|
|
67
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, never>;
|
|
68
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "app-menu-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "isSidebarOpen": { "alias": "isSidebarOpen"; "required": false; "isSignal": true; }; "isSidebarHovering": { "alias": "isSidebarHovering"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "parentModuleName": { "alias": "parentModuleName"; "required": false; "isSignal": true; }; "accentColor": { "alias": "accentColor"; "required": false; "isSignal": true; }; "accesos": { "alias": "accesos"; "required": false; "isSignal": true; }; "rolId": { "alias": "rolId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class NotFoundComponent {
|
|
3
|
+
private location;
|
|
4
|
+
onBack(): void;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotFoundComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NotFoundComponent, "app-not-found", never, {}, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TabsService } from '../../service/tabs.service';
|
|
2
|
+
import { AppTab } from '../../models/general/app-tab.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class TabBarComponent {
|
|
5
|
+
tabs: TabsService;
|
|
6
|
+
shouldShow: import("@angular/core").Signal<boolean>;
|
|
7
|
+
rendered: import("@angular/core").WritableSignal<boolean>;
|
|
8
|
+
private leaveTimer;
|
|
9
|
+
constructor();
|
|
10
|
+
moduleColors: import("@angular/core").InputSignal<Record<string, string>>;
|
|
11
|
+
hoveredTab: import("@angular/core").WritableSignal<AppTab>;
|
|
12
|
+
tipPosition: import("@angular/core").WritableSignal<{
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}>;
|
|
16
|
+
private hoverTimer;
|
|
17
|
+
getModuleColor(tab: AppTab): string;
|
|
18
|
+
onTabMouseEnter(event: MouseEvent, tab: AppTab): void;
|
|
19
|
+
onTabMouseLeave(): void;
|
|
20
|
+
onTabMouseDown(event: MouseEvent, tab: AppTab): void;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TabBarComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TabBarComponent, "app-tab-bar", never, { "moduleColors": { "alias": "moduleColors"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { TabsService } from '../../service/tabs.service';
|
|
3
|
+
import { BottomNavItem } from '../bottom-navigation/bottom-navigation.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface VerticalHeaderAction {
|
|
6
|
+
icon: string;
|
|
7
|
+
label: string;
|
|
8
|
+
badge?: number | null;
|
|
9
|
+
hidden?: boolean;
|
|
10
|
+
/** Opt-in: además de en el header, refleja esta acción en el bottom-nav (mobile). Por defecto no baja. */
|
|
11
|
+
showInBottomNav?: boolean;
|
|
12
|
+
items?: {
|
|
13
|
+
icon: string;
|
|
14
|
+
label: string;
|
|
15
|
+
accion: () => void;
|
|
16
|
+
title?: string;
|
|
17
|
+
}[];
|
|
18
|
+
accion?: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare class VerticalHeaderComponent implements AfterViewInit, OnDestroy {
|
|
21
|
+
headerContainerRef: ElementRef<HTMLDivElement>;
|
|
22
|
+
headerSideStartRef: ElementRef<HTMLDivElement>;
|
|
23
|
+
headerSideEndRef: ElementRef<HTMLDivElement>;
|
|
24
|
+
compactSearchWrapperRef: ElementRef<HTMLDivElement>;
|
|
25
|
+
private static readonly SEARCH_WIDTH;
|
|
26
|
+
private static readonly SEARCH_GAP;
|
|
27
|
+
searchCollapsed: import("@angular/core").WritableSignal<boolean>;
|
|
28
|
+
private resizeObserver?;
|
|
29
|
+
private readonly ngZone;
|
|
30
|
+
private router;
|
|
31
|
+
readonly tabsService: TabsService;
|
|
32
|
+
actions: import("@angular/core").InputSignal<VerticalHeaderAction[]>;
|
|
33
|
+
showSearch: import("@angular/core").InputSignal<boolean>;
|
|
34
|
+
themes: import("@angular/core").InputSignal<{
|
|
35
|
+
id: string;
|
|
36
|
+
icon: string;
|
|
37
|
+
label: string;
|
|
38
|
+
}[]>;
|
|
39
|
+
showThemeSwitcher: import("@angular/core").InputSignal<boolean>;
|
|
40
|
+
showTabs: import("@angular/core").InputSignal<boolean>;
|
|
41
|
+
showNotifications: import("@angular/core").InputSignal<boolean>;
|
|
42
|
+
notificationsCount: import("@angular/core").InputSignal<number>;
|
|
43
|
+
notificationsClick: import("@angular/core").OutputEmitterRef<void>;
|
|
44
|
+
/** Opt-in: además de en el header, refleja las notificaciones en el bottom-nav (mobile). Por defecto no baja (igual que en consults). */
|
|
45
|
+
notificationsInBottomNav: import("@angular/core").InputSignal<boolean>;
|
|
46
|
+
showChatbotToggle: import("@angular/core").InputSignal<boolean>;
|
|
47
|
+
chatbotVisible: import("@angular/core").InputSignal<boolean>;
|
|
48
|
+
chatbotVisibleChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
49
|
+
/** Opt-in: además de en el header, refleja el toggle de soporte en el bottom-nav (mobile). Por defecto no baja. */
|
|
50
|
+
chatbotInBottomNav: import("@angular/core").InputSignal<boolean>;
|
|
51
|
+
currentTheme: import("@angular/core").InputSignal<string>;
|
|
52
|
+
themeChange: import("@angular/core").OutputEmitterRef<string>;
|
|
53
|
+
bottomNavItems: import("@angular/core").Signal<BottomNavItem[]>;
|
|
54
|
+
readonly themeIcon: import("@angular/core").Signal<string>;
|
|
55
|
+
readonly themeLabel: import("@angular/core").Signal<string>;
|
|
56
|
+
versionApp: import("@angular/core").InputSignal<string>;
|
|
57
|
+
accentColor: import("@angular/core").InputSignal<string>;
|
|
58
|
+
envClass: import("@angular/core").InputSignal<string>;
|
|
59
|
+
produccion: import("@angular/core").InputSignal<boolean>;
|
|
60
|
+
emitirToogle: import("@angular/core").OutputEmitterRef<void>;
|
|
61
|
+
isScrolled: import("@angular/core").InputSignal<boolean>;
|
|
62
|
+
isSidebarOpen: import("@angular/core").InputSignal<boolean>;
|
|
63
|
+
nameProyecto: import("@angular/core").InputSignal<string>;
|
|
64
|
+
searchComponents: import("@angular/core").OutputEmitterRef<void>;
|
|
65
|
+
showPanelControl: import("@angular/core").InputSignal<boolean>;
|
|
66
|
+
panelControlClick: import("@angular/core").OutputEmitterRef<void>;
|
|
67
|
+
logout: import("@angular/core").OutputEmitterRef<void>;
|
|
68
|
+
userName: import("@angular/core").InputSignal<string>;
|
|
69
|
+
empresaName: import("@angular/core").InputSignal<string>;
|
|
70
|
+
tooltip: import("@angular/core").WritableSignal<{
|
|
71
|
+
text: string;
|
|
72
|
+
x: number;
|
|
73
|
+
y: number;
|
|
74
|
+
}>;
|
|
75
|
+
openActionKey: import("@angular/core").WritableSignal<string>;
|
|
76
|
+
themeMenuOpen: import("@angular/core").WritableSignal<boolean>;
|
|
77
|
+
userMenuOpen: import("@angular/core").WritableSignal<boolean>;
|
|
78
|
+
onDocumentClick(): void;
|
|
79
|
+
private closeAllMenus;
|
|
80
|
+
toggleActionMenu(event: MouseEvent, action: VerticalHeaderAction): void;
|
|
81
|
+
runAction(item: {
|
|
82
|
+
accion: () => void;
|
|
83
|
+
}): void;
|
|
84
|
+
toggleThemeMenu(event: MouseEvent): void;
|
|
85
|
+
selectTheme(id: string): void;
|
|
86
|
+
toggleUserMenu(event: MouseEvent): void;
|
|
87
|
+
showTooltip(event: MouseEvent, text: string): void;
|
|
88
|
+
hideTooltip(): void;
|
|
89
|
+
goToHome(): void;
|
|
90
|
+
ngAfterViewInit(): void;
|
|
91
|
+
ngOnDestroy(): void;
|
|
92
|
+
private updateSearchCollapse;
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VerticalHeaderComponent, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VerticalHeaderComponent, "app-vertical-header", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "themes": { "alias": "themes"; "required": false; "isSignal": true; }; "showThemeSwitcher": { "alias": "showThemeSwitcher"; "required": false; "isSignal": true; }; "showTabs": { "alias": "showTabs"; "required": false; "isSignal": true; }; "showNotifications": { "alias": "showNotifications"; "required": false; "isSignal": true; }; "notificationsCount": { "alias": "notificationsCount"; "required": false; "isSignal": true; }; "notificationsInBottomNav": { "alias": "notificationsInBottomNav"; "required": false; "isSignal": true; }; "showChatbotToggle": { "alias": "showChatbotToggle"; "required": false; "isSignal": true; }; "chatbotVisible": { "alias": "chatbotVisible"; "required": false; "isSignal": true; }; "chatbotInBottomNav": { "alias": "chatbotInBottomNav"; "required": false; "isSignal": true; }; "currentTheme": { "alias": "currentTheme"; "required": false; "isSignal": true; }; "versionApp": { "alias": "versionApp"; "required": false; "isSignal": true; }; "accentColor": { "alias": "accentColor"; "required": false; "isSignal": true; }; "envClass": { "alias": "envClass"; "required": false; "isSignal": true; }; "produccion": { "alias": "produccion"; "required": false; "isSignal": true; }; "isScrolled": { "alias": "isScrolled"; "required": false; "isSignal": true; }; "isSidebarOpen": { "alias": "isSidebarOpen"; "required": false; "isSignal": true; }; "nameProyecto": { "alias": "nameProyecto"; "required": false; "isSignal": true; }; "showPanelControl": { "alias": "showPanelControl"; "required": false; "isSignal": true; }; "userName": { "alias": "userName"; "required": false; "isSignal": true; }; "empresaName": { "alias": "empresaName"; "required": false; "isSignal": true; }; }, { "notificationsClick": "notificationsClick"; "chatbotVisibleChange": "chatbotVisibleChange"; "themeChange": "themeChange"; "emitirToogle": "emitirToogle"; "searchComponents": "searchComponents"; "panelControlClick": "panelControlClick"; "logout": "logout"; }, never, ["[extra-actions]"], true, never>;
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function validaArray(data: any): boolean;
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "layout-tsi",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^19.2.0",
|
|
6
|
+
"@angular/core": "^19.2.0",
|
|
7
|
+
"@angular/router": "^19.2.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"module": "fesm2022/layout-tsi.mjs",
|
|
14
|
+
"typings": "index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": {
|
|
17
|
+
"default": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./index.d.ts",
|
|
21
|
+
"default": "./fesm2022/layout-tsi.mjs"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export * from './lib/ui/full/full.component';
|
|
2
|
+
export * from './lib/ui/vertical-header/vertical-header.component';
|
|
3
|
+
export * from './lib/ui/menu-item/menu-item.component';
|
|
4
|
+
export * from './lib/ui/tab-bar/tab-bar.component';
|
|
5
|
+
export * from './lib/ui/bottom-navigation/bottom-navigation.component';
|
|
6
|
+
export * from './lib/ui/chatbot/chatbot.component';
|
|
7
|
+
export * from './lib/ui/chatbot/chatbot.model';
|
|
8
|
+
export * from './lib/ui/not-found/not-found.component';
|
|
9
|
+
export * from './lib/ui/dashboard/item-dashboard/item-dashboard.component';
|
|
10
|
+
export * from './lib/ui/dashboard/item-dashboard-group/item-dashboard-group.component';
|
|
11
|
+
export * from './lib/ui/dashboard/dashboard-chart-donut/dashboard-chart-donut.component';
|
|
12
|
+
export * from './lib/ui/dashboard/dashboard-chart-bars/dashboard-chart-bars.component';
|
|
13
|
+
export * from './lib/ui/dashboard/dashboard-view-switcher/dashboard-view-switcher.component';
|
|
14
|
+
export * from './lib/service/detector.service';
|
|
15
|
+
export * from './lib/service/menu.service';
|
|
16
|
+
export * from './lib/service/header-ui.service';
|
|
17
|
+
export * from './lib/service/tabs.service';
|
|
18
|
+
export * from './lib/models/general/route-info.model';
|
|
19
|
+
export * from './lib/models/general/session-data.model';
|
|
20
|
+
export * from './lib/models/general/app-tab.model';
|
|
21
|
+
export * from './lib/models/general/dashboard.model';
|