@flusys/ng-layout 4.0.2 → 4.1.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.
@@ -2,7 +2,7 @@
2
2
  display: flex;
3
3
  align-items: center;
4
4
  justify-content: center;
5
- padding: 1rem 0 1rem 0;
5
+ padding: 1rem 0;
6
6
  gap: 0.5rem;
7
7
  border-top: 1px solid var(--surface-border);
8
8
 
@@ -13,3 +13,13 @@
13
13
  object-fit: contain;
14
14
  }
15
15
  }
16
+
17
+ @media (max-width: 639px) {
18
+ .layout-footer {
19
+ padding: 0.75rem 0;
20
+
21
+ .logo-image {
22
+ height: 1.5rem;
23
+ }
24
+ }
25
+ }
@@ -190,3 +190,27 @@
190
190
  }
191
191
  }
192
192
  }
193
+
194
+ @media (max-width: 639px) {
195
+ .layout-topbar {
196
+ padding: 0 0.75rem;
197
+ gap: 0.5rem;
198
+
199
+ .layout-topbar-actions {
200
+ gap: 0.25rem;
201
+ }
202
+
203
+ .layout-config-menu {
204
+ gap: 0.25rem;
205
+ }
206
+
207
+ .layout-topbar-action {
208
+ width: 2.25rem;
209
+ height: 2.25rem;
210
+ }
211
+
212
+ .layout-topbar-menu {
213
+ right: 0.75rem;
214
+ }
215
+ }
216
+ }
@@ -66,10 +66,6 @@ $submenu-icon-margin: 0.5rem;
66
66
  flex: 1;
67
67
  }
68
68
 
69
- &:hover {
70
- background-color: var(--surface-hover);
71
- }
72
-
73
69
  &.active-route {
74
70
  background-color: var(--p-primary-color);
75
71
  color: var(--p-primary-contrast-color);
@@ -332,9 +328,8 @@ $submenu-icon-margin: 0.5rem;
332
328
  }
333
329
  }
334
330
 
335
- // Show Level 1 submenu on hover or active state
331
+ // Show Level 1 submenu on hover only (not active state - prevents submenu staying open)
336
332
  &:hover > ul,
337
- &.active-menuitem > ul,
338
333
  > ul:hover {
339
334
  @include show-submenu;
340
335
  }
@@ -405,14 +405,16 @@ class AppFooter {
405
405
  @if (displayLogo) {
406
406
  <img [src]="displayLogo" [alt]="appName" class="logo-image" />
407
407
  }
408
- {{ appName }} {{ 'layout.footer.by' | translate }}
409
- <a
410
- [href]="authorUrl"
411
- target="_blank"
412
- rel="noopener noreferrer"
413
- class="text-primary font-bold hover:underline"
414
- >{{ authorName }}</a
415
- >
408
+ <span class="hidden sm:inline">
409
+ {{ appName }} {{ 'layout.footer.by' | translate }}
410
+ <a
411
+ [href]="authorUrl"
412
+ target="_blank"
413
+ rel="noopener noreferrer"
414
+ class="text-primary font-bold hover:underline"
415
+ >{{ authorName }}</a
416
+ >
417
+ </span>
416
418
  </div>`, isInline: true, dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
417
419
  }
418
420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: AppFooter, decorators: [{
@@ -424,14 +426,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
424
426
  @if (displayLogo) {
425
427
  <img [src]="displayLogo" [alt]="appName" class="logo-image" />
426
428
  }
427
- {{ appName }} {{ 'layout.footer.by' | translate }}
428
- <a
429
- [href]="authorUrl"
430
- target="_blank"
431
- rel="noopener noreferrer"
432
- class="text-primary font-bold hover:underline"
433
- >{{ authorName }}</a
434
- >
429
+ <span class="hidden sm:inline">
430
+ {{ appName }} {{ 'layout.footer.by' | translate }}
431
+ <a
432
+ [href]="authorUrl"
433
+ target="_blank"
434
+ rel="noopener noreferrer"
435
+ class="text-primary font-bold hover:underline"
436
+ >{{ authorName }}</a
437
+ >
438
+ </span>
435
439
  </div>`,
436
440
  }]
437
441
  }] });
@@ -1135,7 +1139,7 @@ class AppMenuitem {
1135
1139
  }
1136
1140
  updateSubmenuPosition() {
1137
1141
  const linkEl = this.parentLink()?.nativeElement;
1138
- if (!linkEl)
1142
+ if (!linkEl || typeof linkEl.getBoundingClientRect !== 'function')
1139
1143
  return;
1140
1144
  const rect = linkEl.getBoundingClientRect();
1141
1145
  const hostEl = linkEl.closest('[app-menuitem]');
@@ -1183,7 +1187,6 @@ class AppMenuitem {
1183
1187
  #parentLink
1184
1188
  tabindex="0"
1185
1189
  pRipple
1186
- [style.cursor]="layoutService.isTopbar() ? 'default' : 'pointer'"
1187
1190
  >
1188
1191
  @if (item().icon) {
1189
1192
  <lib-icon
@@ -1259,7 +1262,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
1259
1262
  #parentLink
1260
1263
  tabindex="0"
1261
1264
  pRipple
1262
- [style.cursor]="layoutService.isTopbar() ? 'default' : 'pointer'"
1263
1265
  >
1264
1266
  @if (item().icon) {
1265
1267
  <lib-icon
@@ -2454,7 +2456,7 @@ class AppTopbar {
2454
2456
  @if (displayLogo()) {
2455
2457
  <img [src]="displayLogo()" [alt]="companyName()" class="logo-image" />
2456
2458
  }
2457
- <span>{{ companyName() }}</span>
2459
+ <span class="hidden sm:inline">{{ companyName() }}</span>
2458
2460
  </a>
2459
2461
  @if (!layoutService.isTopbar() && layoutService.isDesktop()) {
2460
2462
  <button
@@ -2582,7 +2584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
2582
2584
  @if (displayLogo()) {
2583
2585
  <img [src]="displayLogo()" [alt]="companyName()" class="logo-image" />
2584
2586
  }
2585
- <span>{{ companyName() }}</span>
2587
+ <span class="hidden sm:inline">{{ companyName() }}</span>
2586
2588
  </a>
2587
2589
  @if (!layoutService.isTopbar() && layoutService.isDesktop()) {
2588
2590
  <button