@elderbyte/ngx-starter 20.5.0-alpha.2 → 20.5.0-alpha.4

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/index.d.ts CHANGED
@@ -65,12 +65,12 @@ import * as i5$1 from '@angular/material/select';
65
65
  import * as i10$2 from '@angular/cdk/scrolling';
66
66
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
67
67
  import * as i12$1 from '@angular/material/progress-spinner';
68
+ import * as i2$6 from '@angular/cdk/overlay';
69
+ import { ConnectedPosition, Overlay, OverlayPositionBuilder, FlexibleConnectedPositionStrategyOrigin, PositionStrategy, OverlaySizeConfig } from '@angular/cdk/overlay';
68
70
  import * as i3$4 from '@angular/material/sidenav';
69
71
  import { MatDrawer, MatSidenav } from '@angular/material/sidenav';
70
72
  import * as i5$2 from '@angular/material/datepicker';
71
73
  import { MatDatepicker, MatDatepickerInputEvent, DateRange, MatCalendarCellClassFunction, MatCalendar } from '@angular/material/datepicker';
72
- import * as i2$6 from '@angular/cdk/overlay';
73
- import { Overlay, OverlayPositionBuilder, FlexibleConnectedPositionStrategyOrigin, PositionStrategy, OverlaySizeConfig } from '@angular/cdk/overlay';
74
74
  import * as i2$8 from '@angular/material/expansion';
75
75
  import { MatTab, MatTabGroup } from '@angular/material/tabs';
76
76
 
@@ -13429,12 +13429,11 @@ declare class ElderNavGroupComponent {
13429
13429
  * Fields *
13430
13430
  * *
13431
13431
  **************************************************************************/
13432
- readonly title: i0.InputSignal<string>;
13433
- readonly icon: i0.InputSignal<string>;
13434
13432
  readonly children: i0.Signal<readonly ElderNavLinkComponent[]>;
13435
13433
  readonly isOpen: i0.WritableSignal<boolean>;
13436
13434
  readonly clicked: i0.OutputEmitterRef<NavItemClicked>;
13437
13435
  isStaticNav: boolean;
13436
+ readonly overlayPositions: ConnectedPosition[];
13438
13437
  private readonly _childrenActiveState;
13439
13438
  /***************************************************************************
13440
13439
  * *
@@ -13456,7 +13455,7 @@ declare class ElderNavGroupComponent {
13456
13455
  itemClick(event: MouseEvent): void;
13457
13456
  toggle(): void;
13458
13457
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderNavGroupComponent, never>;
13459
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderNavGroupComponent, "elder-nav-group", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, ["children"], ["elder-nav-link"], true, never>;
13458
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderNavGroupComponent, "elder-nav-group", never, {}, { "clicked": "clicked"; }, ["children"], ["*", "elder-nav-link"], true, never>;
13460
13459
  }
13461
13460
 
13462
13461
  declare class ElderNavModule {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elderbyte/ngx-starter",
3
- "version": "20.5.0-alpha.2",
3
+ "version": "20.5.0-alpha.4",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^20.0.0 || ^21.0.0",
6
6
  "@angular/common": "^20.0.0 || ^21.0.0",
@@ -18,6 +18,8 @@
18
18
  @use '../components/elder-table-theme' as elder-table;
19
19
  @use '../components/elder-scrollbar-theme' as elder-scrollbar;
20
20
  @use '../components/mat-badge-theme' as mat-badge;
21
+ @use '../components/elder-static-nav-theme' as elder-static-nav;
22
+
21
23
  // Create a theme.
22
24
  @mixin starter-theme($theme) {
23
25
  $theme: elder-set-defaults-fn.validate-and-set-defaults($theme);
@@ -49,4 +51,5 @@
49
51
  @include elder-table.theme($theme);
50
52
  @include elder-scrollbar.theme();
51
53
  @include mat-badge.theme();
54
+ @include elder-static-nav.theme();
52
55
  }
@@ -0,0 +1,151 @@
1
+ @mixin theme {
2
+ // Local SCSS Variables
3
+ $nav-width: 82px;
4
+ $nav-icon-size: 32px;
5
+ $nav-icon-container-width: 48px;
6
+ $nav-icon-container-height: 40px;
7
+ $nav-icon-border-radius: 10px;
8
+ $nav-text-width: 66px;
9
+ $nav-padding-vertical: 12px;
10
+ $nav-gap-small: 3px;
11
+ $nav-font-size: 12px;
12
+ $light-text-color: color-mix(
13
+ in srgb,
14
+ var(--md-sys-color-outline) 50%,
15
+ var(--md-sys-color-on-surface)
16
+ );
17
+
18
+ .elder-static-nav {
19
+ // Overwrite css variables
20
+ --elder-nav-item-height: auto;
21
+ --elder-nav-link-hover-color: transparent;
22
+ --elder-nav-link-active-color: transparent;
23
+
24
+ // Main container layout
25
+ width: $nav-width;
26
+ padding: 0 0 0 var(--elder-pane-padding);
27
+ flex: 1 1 0%;
28
+ min-width: 0;
29
+ min-height: 0;
30
+
31
+ // Base styles for all elements
32
+ * {
33
+ transition: none !important;
34
+ line-height: 1 !important;
35
+ text-align: center !important;
36
+ font-weight: 500;
37
+ color: $light-text-color !important;
38
+
39
+ &:hover {
40
+ color: var(--md-sys-color-on-surface) !important;
41
+ }
42
+ }
43
+
44
+ // Typography styles
45
+ *:not(.mat-icon) {
46
+ font-size: $nav-font-size !important;
47
+ text-wrap: wrap;
48
+ white-space: normal;
49
+ word-wrap: break-word;
50
+ word-break: break-word;
51
+ overflow-wrap: break-word;
52
+ hyphens: auto;
53
+ text-align: center;
54
+ }
55
+
56
+ // Layout containers
57
+ .elder-nav-list-full {
58
+ max-width: 100%;
59
+ width: 100%;
60
+ min-width: unset;
61
+ justify-content: stretch;
62
+ align-items: stretch;
63
+ }
64
+
65
+ .mat-mdc-nav-list {
66
+ padding: 0 !important;
67
+ overflow-x: hidden !important;
68
+ overflow-y: auto !important;
69
+ align-items: stretch !important;
70
+ }
71
+
72
+ .nav-group-items-container {
73
+ padding: 0 !important;
74
+ align-items: center;
75
+ }
76
+
77
+ .layout-row {
78
+ flex-direction: column !important;
79
+ }
80
+
81
+ // Gap utilities
82
+ .gap-md,
83
+ .gap-lg {
84
+ gap: $nav-gap-small !important;
85
+ }
86
+
87
+ // Navigation group buttons
88
+ .nav-group-button,
89
+ .nav-group-button-closed {
90
+ height: auto !important;
91
+ padding: $nav-padding-vertical 0 0 0 !important;
92
+ justify-content: center !important;
93
+ align-items: center !important;
94
+ text-align: center;
95
+
96
+ * {
97
+ gap: 0 !important;
98
+ }
99
+ }
100
+
101
+ .nav-group-button-active .mat-icon {
102
+ background-color: var(--md-sys-color-primary-container) !important;
103
+ }
104
+
105
+ // Navigation links
106
+ .nav-link {
107
+ padding: 0 !important;
108
+ height: unset !important; // Override default 48px height when needed
109
+
110
+ span {
111
+ display: block;
112
+ text-align: center;
113
+ width: $nav-text-width;
114
+ }
115
+ }
116
+
117
+ .nav-link-active {
118
+ &,
119
+ * {
120
+ color: var(--md-sys-color-primary) !important;
121
+ }
122
+
123
+ .mat-icon {
124
+ background-color: var(--md-sys-color-primary-container) !important;
125
+ }
126
+ }
127
+
128
+ // Icon styling
129
+ .nav-group-button .mat-icon,
130
+ .nav-link .mat-icon {
131
+ height: $nav-icon-container-height !important;
132
+ width: $nav-icon-container-width !important;
133
+ font-size: $nav-icon-size !important;
134
+ line-height: 1 !important;
135
+ padding: 4px 8px !important;
136
+ border-radius: $nav-icon-border-radius !important;
137
+ }
138
+
139
+ // List items
140
+ .mdc-list-item {
141
+ padding-top: $nav-padding-vertical !important;
142
+ }
143
+ }
144
+
145
+ // Menu-specific styling (outside of .elder-static-nav)
146
+ .nav-group-in-menu .nav-link .mat-icon {
147
+ // Hide icons in menus to prevent text misalignment
148
+ // Icons in sub-items typically aren't used and cause layout issues
149
+ display: none;
150
+ }
151
+ }