@theseam/ui-common 0.4.22 → 0.4.24-beta.0

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.
Files changed (154) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +10 -1
  3. package/datatable/models/action-item-column-position.d.ts +13 -0
  4. package/datatable/services/columns-manager.service.d.ts +7 -0
  5. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  6. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  7. package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
  8. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  9. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  10. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  11. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  12. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  13. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  14. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  15. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  16. package/esm2020/form-field/form-field-required-indicator.component.mjs +22 -7
  17. package/esm2020/form-field/input.directive.mjs +19 -16
  18. package/esm2020/form-field/testing/form-field.harness.mjs +45 -0
  19. package/esm2020/form-field/testing/index.mjs +2 -1
  20. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  21. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  22. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  23. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  24. package/esm2020/framework/base-layout/index.mjs +2 -1
  25. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  26. package/esm2020/framework/nav/index.mjs +6 -0
  27. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  28. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  29. package/esm2020/framework/nav/nav.models.mjs +2 -0
  30. package/esm2020/framework/nav/nav.module.mjs +67 -0
  31. package/esm2020/framework/nav/nav.service.mjs +204 -0
  32. package/esm2020/framework/public-api.mjs +2 -1
  33. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
  34. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
  35. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  36. package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
  37. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  38. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  39. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  40. package/esm2020/framework/top-bar/index.mjs +3 -1
  41. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  42. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  43. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  44. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  45. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  46. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  47. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  48. package/esm2020/layout/layout.service.mjs +12 -2
  49. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  50. package/esm2020/story-helpers/story-modal-container.component.mjs +3 -3
  51. package/esm2020/tabbed/tabbed.component.mjs +25 -18
  52. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
  53. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  54. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  55. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  56. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  57. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  58. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  59. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  60. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  61. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  62. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  63. package/fesm2015/theseam-ui-common-datatable.mjs +56 -10
  64. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  65. package/fesm2015/theseam-ui-common-form-field.mjs +92 -27
  66. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  67. package/fesm2015/theseam-ui-common-framework.mjs +905 -156
  68. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  69. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  70. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  71. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  72. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  73. package/fesm2015/theseam-ui-common-menu.mjs +6 -1
  74. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  75. package/fesm2015/theseam-ui-common-story-helpers.mjs +2 -2
  76. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2015/theseam-ui-common-tabbed.mjs +26 -19
  78. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
  80. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  81. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  83. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  85. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-datatable.mjs +56 -10
  87. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-form-field.mjs +88 -27
  89. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-framework.mjs +907 -156
  91. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  93. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  94. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  95. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  96. package/fesm2020/theseam-ui-common-menu.mjs +6 -1
  97. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  98. package/fesm2020/theseam-ui-common-story-helpers.mjs +2 -2
  99. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-tabbed.mjs +24 -17
  101. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  102. package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
  103. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  104. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  105. package/form-field/form-field-required-indicator.component.d.ts +6 -1
  106. package/form-field/input.directive.d.ts +9 -15
  107. package/form-field/testing/form-field.harness.d.ts +14 -0
  108. package/form-field/testing/index.d.ts +1 -0
  109. package/framework/base-layout/base-layout.component.d.ts +4 -2
  110. package/framework/base-layout/base-layout.component.scss +18 -10
  111. package/framework/base-layout/base-layout.module.d.ts +11 -10
  112. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  113. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  114. package/framework/base-layout/index.d.ts +1 -0
  115. package/framework/base-layout/styles/_variables.scss +21 -0
  116. package/framework/nav/_nav-theme.scss +4 -0
  117. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  118. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  119. package/framework/nav/index.d.ts +5 -0
  120. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  121. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  122. package/framework/nav/nav-utils.d.ts +20 -0
  123. package/framework/nav/nav.models.d.ts +77 -0
  124. package/framework/nav/nav.module.d.ts +17 -0
  125. package/framework/nav/nav.service.d.ts +27 -0
  126. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  127. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  128. package/framework/nav/styles/_utilities.scss +3 -0
  129. package/framework/nav/styles/_variables.scss +2 -0
  130. package/framework/public-api.d.ts +1 -0
  131. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  132. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  133. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  134. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  135. package/framework/side-nav/side-nav.component.d.ts +13 -1
  136. package/framework/side-nav/side-nav.component.scss +0 -1
  137. package/framework/side-nav/side-nav.models.d.ts +7 -1
  138. package/framework/side-nav/side-nav.module.d.ts +1 -9
  139. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  140. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  141. package/framework/top-bar/index.d.ts +2 -0
  142. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  143. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  144. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  145. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  146. package/framework/top-bar/top-bar.component.d.ts +25 -3
  147. package/framework/top-bar/top-bar.component.scss +7 -2
  148. package/framework/top-bar/top-bar.module.d.ts +10 -8
  149. package/layout/layout.service.d.ts +9 -1
  150. package/menu/menu-toggle.directive.d.ts +2 -1
  151. package/package.json +2 -2
  152. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
  153. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
  154. package/tabbed/tabbed.component.d.ts +9 -4
@@ -11,8 +11,7 @@ seam-base-layout {
11
11
  top: 0;
12
12
  bottom: 0;
13
13
  left: 0;
14
- float: left;
15
- z-index: 9999;
14
+ z-index: 999;
16
15
  }
17
16
 
18
17
  .base-layout-side-bar-container {
@@ -53,6 +52,23 @@ seam-base-layout {
53
52
 
54
53
  .base-layout-content-container-header {
55
54
  flex: 0 0 auto;
55
+ background: $base-header-background;
56
+ margin: $base-header-margin;
57
+ padding: $base-header-padding;
58
+ border-radius: $base-header-border-radius;
59
+ overflow: hidden;
60
+ &-left {
61
+ background: $base-header-left-bg;
62
+ padding: $base-header-left-padding;
63
+ margin: $base-header-left-margin;
64
+ border-radius: $base-header-left-border-radius;
65
+ }
66
+ &-right {
67
+ background: $base-header-right-bg;
68
+ padding: $base-header-right-padding;
69
+ margin: $base-header-right-margin;
70
+ border-radius: $base-header-right-border-radius;
71
+ }
56
72
  }
57
73
 
58
74
  .base-layout-content-container-inner {
@@ -64,14 +80,6 @@ seam-base-layout {
64
80
  }
65
81
  }
66
82
 
67
- .base-layout-content-container-header {
68
- margin: $base-header-margin;
69
- padding: $base-header-padding;
70
- background: $base-header-background;
71
- border-radius: $base-header-border-radius;
72
- overflow: hidden;
73
- }
74
-
75
83
  .btn-baselayout-action {
76
84
  margin: $base-action-margin;
77
85
  @include button-variant(
@@ -3,17 +3,18 @@ import * as i1 from "./base-layout.component";
3
3
  import * as i2 from "./directives/base-layout-content.directive";
4
4
  import * as i3 from "./directives/base-layout-side-bar.directive";
5
5
  import * as i4 from "./directives/base-layout-side-bar-footer.directive";
6
- import * as i5 from "./directives/base-layout-top-bar.directive";
7
- import * as i6 from "./directives/base-layout-nav-toggle.directive";
8
- import * as i7 from "./directives/base-layout-content-header.directive";
9
- import * as i8 from "./directives/base-layout-content-footer.directive";
10
- import * as i9 from "@angular/common";
11
- import * as i10 from "@angular/cdk/portal";
12
- import * as i11 from "@theseam/ui-common/scrollbar";
13
- import * as i12 from "@theseam/ui-common/icon";
14
- import * as i13 from "@theseam/ui-common/buttons";
6
+ import * as i5 from "./directives/base-layout-side-bar-header.directive";
7
+ import * as i6 from "./directives/base-layout-top-bar.directive";
8
+ import * as i7 from "./directives/base-layout-nav-toggle.directive";
9
+ import * as i8 from "./directives/base-layout-content-header.directive";
10
+ import * as i9 from "./directives/base-layout-content-footer.directive";
11
+ import * as i10 from "@angular/common";
12
+ import * as i11 from "@angular/cdk/portal";
13
+ import * as i12 from "@theseam/ui-common/scrollbar";
14
+ import * as i13 from "@theseam/ui-common/icon";
15
+ import * as i14 from "@theseam/ui-common/buttons";
15
16
  export declare class TheSeamBaseLayoutModule {
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<TheSeamBaseLayoutModule, never>;
17
- static ɵmod: i0.ɵɵNgModuleDeclaration<TheSeamBaseLayoutModule, [typeof i1.TheSeamBaseLayoutComponent, typeof i2.BaseLayoutContentDirective, typeof i3.BaseLayoutSideBarDirective, typeof i4.BaseLayoutSideBarFooterDirective, typeof i5.BaseLayoutTopBarDirective, typeof i6.BaseLayoutNavToggleDirective, typeof i7.BaseLayoutContentHeaderDirective, typeof i8.BaseLayoutContentFooterDirective], [typeof i9.CommonModule, typeof i10.PortalModule, typeof i11.TheSeamScrollbarModule, typeof i12.TheSeamIconModule, typeof i13.TheSeamButtonsModule], [typeof i1.TheSeamBaseLayoutComponent, typeof i2.BaseLayoutContentDirective, typeof i3.BaseLayoutSideBarDirective, typeof i4.BaseLayoutSideBarFooterDirective, typeof i5.BaseLayoutTopBarDirective, typeof i6.BaseLayoutNavToggleDirective, typeof i7.BaseLayoutContentHeaderDirective, typeof i8.BaseLayoutContentFooterDirective]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TheSeamBaseLayoutModule, [typeof i1.TheSeamBaseLayoutComponent, typeof i2.BaseLayoutContentDirective, typeof i3.BaseLayoutSideBarDirective, typeof i4.BaseLayoutSideBarFooterDirective, typeof i5.BaseLayoutSideBarHeaderDirective, typeof i6.BaseLayoutTopBarDirective, typeof i7.BaseLayoutNavToggleDirective, typeof i8.BaseLayoutContentHeaderDirective, typeof i9.BaseLayoutContentFooterDirective], [typeof i10.CommonModule, typeof i11.PortalModule, typeof i12.TheSeamScrollbarModule, typeof i13.TheSeamIconModule, typeof i14.TheSeamButtonsModule], [typeof i1.TheSeamBaseLayoutComponent, typeof i2.BaseLayoutContentDirective, typeof i3.BaseLayoutSideBarDirective, typeof i4.BaseLayoutSideBarFooterDirective, typeof i5.BaseLayoutSideBarHeaderDirective, typeof i6.BaseLayoutTopBarDirective, typeof i7.BaseLayoutNavToggleDirective, typeof i8.BaseLayoutContentHeaderDirective, typeof i9.BaseLayoutContentFooterDirective]>;
18
19
  static ɵinj: i0.ɵɵInjectorDeclaration<TheSeamBaseLayoutModule>;
19
20
  }
@@ -1,17 +1,22 @@
1
+ import { ChangeDetectorRef, OnInit } from '@angular/core';
1
2
  import type { ITheSeamBaseLayoutRef } from '../base-layout-ref';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * Can be used to toggle the expand state of the registered nav.
5
6
  */
6
- export declare class BaseLayoutNavToggleDirective {
7
+ export declare class BaseLayoutNavToggleDirective implements OnInit {
8
+ private readonly _cdr;
7
9
  baseLayout: ITheSeamBaseLayoutRef | undefined;
8
10
  get _attrType(): string | null | undefined;
9
11
  type: string | undefined | null;
10
12
  get _attrAriaLabel(): string | null;
11
13
  /** Screenreader label for the button. */
12
14
  ariaLabel: string | undefined | null;
15
+ _toggleClass: boolean;
16
+ _expandedClass: boolean;
13
17
  _onClick(): void;
14
- constructor(_baseLayout: ITheSeamBaseLayoutRef);
15
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseLayoutNavToggleDirective, [{ optional: true; }]>;
18
+ constructor(_cdr: ChangeDetectorRef, _baseLayout: ITheSeamBaseLayoutRef);
19
+ ngOnInit(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseLayoutNavToggleDirective, [null, { optional: true; }]>;
16
21
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseLayoutNavToggleDirective, "button[seamBaseLayoutNavToggle]", ["seamBaseLayoutNavToggle"], { "type": "type"; "ariaLabel": "aria-label"; }, {}, never, never, false, never>;
17
22
  }
@@ -0,0 +1,9 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { HasElementRef } from '@theseam/ui-common/core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class BaseLayoutSideBarHeaderDirective implements HasElementRef {
5
+ _elementRef: ElementRef;
6
+ constructor(_elementRef: ElementRef);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseLayoutSideBarHeaderDirective, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseLayoutSideBarHeaderDirective, "[seamBaseLayoutSideBarHeader]", never, {}, {}, never, never, false, never>;
9
+ }
@@ -5,6 +5,7 @@ export * from './directives/base-layout-nav-toggle.directive';
5
5
  export * from './directives/base-layout-side-bar-footer.directive';
6
6
  export * from './directives/base-layout-side-bar.directive';
7
7
  export * from './directives/base-layout-top-bar.directive';
8
+ export * from './directives/base-layout-side-bar-header.directive';
8
9
  export * from './base-layout.component';
9
10
  export * from './base-layout.module';
10
11
  export * from './base-layout-nav';
@@ -1,8 +1,25 @@
1
+ // Header Bar Styles
1
2
  $base-header-margin: .25rem !default;
2
3
  $base-header-padding: 0 !default;
3
4
  $base-header-background: none !default;
4
5
  $base-header-border-radius: 0 !default;
5
6
 
7
+
8
+ // Left Side
9
+ $base-header-left-bg: none !default;
10
+ $base-header-left-padding: 0rem !default;
11
+ $base-header-left-margin: 0 !default;
12
+ $base-header-left-border-radius: 0 !default;
13
+
14
+
15
+ // Right Side
16
+ $base-header-right-bg: none !default;
17
+ $base-header-right-padding: 0rem !default;
18
+ $base-header-right-margin: 0 !default;
19
+ $base-header-right-border-radius: 0 !default;
20
+
21
+
22
+ // Right Side Action Buttons
6
23
  $base-action-margin: 0 0 0 .25rem !default;
7
24
  $base-action-bg: $gray-200 !default;
8
25
  $base-action-hover-bg: #d3d9df !default;
@@ -12,11 +29,15 @@ $base-action-padding-x: 1rem !default;
12
29
  $base-action-padding-y: .5rem !default;
13
30
  $base-action-border-radius: .25rem !default;
14
31
 
32
+
33
+ // Top Bar Wrapper
15
34
  $base-layout-top-bar-container-border-top: none !default;
16
35
  $base-layout-top-bar-container-border-right: none !default;
17
36
  $base-layout-top-bar-container-border-bottom: 1px solid #dee2e6 !default;
18
37
  $base-layout-top-bar-container-border-left: none !default;
19
38
 
39
+
40
+ // Side Bar Wrapper
20
41
  $base-layout-side-bar-container-border-top: none !default;
21
42
  $base-layout-side-bar-container-border-right: 1px solid #dee2e6 !default;
22
43
  $base-layout-side-bar-container-border-bottom: none !default;
@@ -0,0 +1,4 @@
1
+ @import './styles/utilities';
2
+
3
+ @import './horizontal-nav/horizontal-nav.component';
4
+ @import './nav-item/nav-item.component';
@@ -0,0 +1,25 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { EventEmitter, OnDestroy } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { INavItem, NavItemChildAction, NavItemExpandAction, NavItemExpandedEvent } from '../nav.models';
5
+ import { TheSeamNavService } from '../nav.service';
6
+ import * as i0 from "@angular/core";
7
+ export declare class HorizontalNavComponent implements OnDestroy {
8
+ private readonly _nav;
9
+ static ngAcceptInputType_hasHeaderToggle: BooleanInput;
10
+ private readonly _ngUnsubscribe;
11
+ get items(): INavItem[];
12
+ set items(value: INavItem[]);
13
+ private _items;
14
+ readonly items$: Observable<INavItem[]>;
15
+ hideEmptyIcon: boolean | undefined | null;
16
+ hierLevel: number;
17
+ childAction: NavItemChildAction;
18
+ expandAction: NavItemExpandAction;
19
+ navItemExpanded: EventEmitter<NavItemExpandedEvent>;
20
+ constructor(_nav: TheSeamNavService);
21
+ ngOnDestroy(): void;
22
+ _navItemExpanded(item: INavItem, expanded: boolean): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalNavComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalNavComponent, "seam-horizontal-nav", never, { "items": "items"; "hideEmptyIcon": "hideEmptyIcon"; "hierLevel": "hierLevel"; "childAction": "childAction"; "expandAction": "expandAction"; }, { "navItemExpanded": "navItemExpanded"; }, never, never, false, never>;
25
+ }
@@ -0,0 +1,50 @@
1
+ @import '../styles/utilities';
2
+
3
+ seam-horizontal-nav,
4
+ .seam-horizontal-nav {
5
+ display: block;
6
+ height: 100%;
7
+
8
+ // Prevent main page content layer overlapping the nav while animating.
9
+ position: relative;
10
+ z-index: 2;
11
+
12
+ .nav-inner-wrapper {
13
+ background: $seam-nav-bg;
14
+ height: 100%;
15
+ }
16
+
17
+ .nav-backdrop {
18
+ background: $seam-nav-background-bg-color;
19
+ width: 100vw;
20
+ height: 100vh;
21
+
22
+ &.nav-backdrop-hidden {
23
+ display: none;
24
+ width: 0;
25
+ height: 0;
26
+ padding: 0;
27
+ margin: 0;
28
+ }
29
+ }
30
+
31
+ .nav-content {
32
+ display: flex;
33
+ flex-direction: column;
34
+ height: 100%;
35
+ flex-wrap: nowrap;
36
+ }
37
+
38
+ .nav-items-container {
39
+ display: flex;
40
+ flex-direction: column;
41
+ width: 100%;
42
+ flex: 1 1 100%;
43
+ }
44
+
45
+ .nav-items-row {
46
+ height: 100%;
47
+ display: flex;
48
+ padding: $seam-nav-row-padding;
49
+ }
50
+ }
@@ -0,0 +1,5 @@
1
+ export * from './nav-item/nav-item.component';
2
+ export * from './horizontal-nav/horizontal-nav.component';
3
+ export * from './nav.models';
4
+ export * from './nav.module';
5
+ export * from './nav-utils';
@@ -0,0 +1,74 @@
1
+ import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
+ import { EventEmitter, OnDestroy } from '@angular/core';
3
+ import type { SeamIcon } from '@theseam/ui-common/icon';
4
+ import type { ThemeTypes } from '@theseam/ui-common/models';
5
+ import { MenuComponent } from '@theseam/ui-common/menu';
6
+ import { INavItem, NavItemBadgeTooltip, NavItemChildAction, NavItemExpandAction } from '../nav.models';
7
+ import { TheSeamNavService } from '../nav.service';
8
+ import * as i0 from "@angular/core";
9
+ export declare class NavItemComponent implements OnDestroy {
10
+ private readonly _nav;
11
+ static ngAcceptInputType_hierLevel: NumberInput;
12
+ static ngAcceptInputType_indentSize: NumberInput;
13
+ static ngAcceptInputType_expanded: BooleanInput;
14
+ static ngAcceptInputType_compact: BooleanInput;
15
+ static ngAcceptInputType_active: BooleanInput;
16
+ private readonly _ngUnsubscribe;
17
+ readonly faAngleLeft: import("@fortawesome/fontawesome-common-types").IconDefinition;
18
+ item: INavItem | undefined | null;
19
+ itemType: 'divider' | 'basic' | 'link' | 'button' | 'title' | undefined | null;
20
+ icon: SeamIcon | undefined | null;
21
+ hideEmptyIcon: boolean | undefined | null;
22
+ label: string | undefined | null;
23
+ active: boolean;
24
+ set link(value: string | undefined | null);
25
+ get link(): string | undefined | null;
26
+ private readonly _link;
27
+ readonly link$: import("rxjs").Observable<string | null | undefined>;
28
+ queryParams: {
29
+ [k: string]: any;
30
+ } | undefined | null;
31
+ children: INavItem[] | undefined | null;
32
+ hierLevel: number;
33
+ indentSize: number;
34
+ set expanded(value: boolean);
35
+ get expanded(): boolean;
36
+ private readonly _expanded;
37
+ readonly expanded$: import("rxjs").Observable<boolean>;
38
+ set compact(value: boolean);
39
+ get compact(): boolean;
40
+ private readonly _compact;
41
+ readonly compact$: import("rxjs").Observable<boolean>;
42
+ focused: boolean;
43
+ badgeText: string | undefined | null;
44
+ badgeTheme: ThemeTypes | undefined | null;
45
+ /**
46
+ * Content to provide to assistive technology, such as screen readers.
47
+ */
48
+ badgeSrContent: string | undefined | null;
49
+ get badgeTooltip(): string | NavItemBadgeTooltip | undefined | null;
50
+ set badgeTooltip(value: string | NavItemBadgeTooltip | undefined | null);
51
+ private _badgeTooltip;
52
+ childAction: NavItemChildAction;
53
+ expandAction: NavItemExpandAction;
54
+ navItemExpanded: EventEmitter<boolean>;
55
+ get _isActiveCssClass(): boolean;
56
+ get _isChildActiveCssClass(): boolean;
57
+ get _isExpandedCssClass(): boolean;
58
+ get _isFocusedCssClass(): boolean;
59
+ get _attrDataHierLevel(): number;
60
+ _menu?: MenuComponent;
61
+ _navItems?: NavItemComponent[];
62
+ constructor(_nav: TheSeamNavService);
63
+ ngOnDestroy(): void;
64
+ get hasChildren(): boolean;
65
+ get hasActiveChild(): boolean;
66
+ get hasMenuToggle(): boolean;
67
+ get menuTpl(): MenuComponent | undefined;
68
+ get hasExpandingChildren(): boolean;
69
+ _toggleChildren(event: Event): void;
70
+ _menuEvent(menuExpanded: any): void;
71
+ get showIconBlock(): boolean;
72
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavItemComponent, never>;
73
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavItemComponent, "seam-nav-item", ["seamNavItem"], { "item": "item"; "itemType": "itemType"; "icon": "icon"; "hideEmptyIcon": "hideEmptyIcon"; "label": "label"; "active": "active"; "link": "link"; "queryParams": "queryParams"; "children": "children"; "hierLevel": "hierLevel"; "indentSize": "indentSize"; "expanded": "expanded"; "compact": "compact"; "focused": "focused"; "badgeText": "badgeText"; "badgeTheme": "badgeTheme"; "badgeSrContent": "badgeSrContent"; "badgeTooltip": "badgeTooltip"; "childAction": "childAction"; "expandAction": "expandAction"; }, { "navItemExpanded": "navItemExpanded"; }, never, never, false, never>;
74
+ }
@@ -0,0 +1,203 @@
1
+ @import '../styles/utilities';
2
+
3
+ seam-nav-item {
4
+ display: block;
5
+ transition: 250ms ease-in-out background-color;
6
+ text-align: $seam-nav-item-text-align;
7
+ border-radius: $seam-nav-item-border-radius;
8
+ overflow: hidden;
9
+ background: $seam-nav-item-bg-color;
10
+ margin: $seam-nav-item-margin;
11
+
12
+ &.seam-nav-item--expanded {
13
+ background-color: $seam-nav-item-bg-color-expanded;
14
+ .nav-link {
15
+ color: $seam-nav-item-color-expanded;
16
+ }
17
+ }
18
+
19
+ &.seam-nav-item--child-active {
20
+ background-color: $seam-nav-item-bg-color-child-active;
21
+ .nav-link {
22
+ color: $seam-nav-item-color-child-active;
23
+ }
24
+ }
25
+
26
+ &.seam-nav-item--active {
27
+ background-color: $seam-nav-item-bg-color-active;
28
+
29
+ .active,
30
+ &:active,
31
+ .nav-item.active:hover {
32
+ background-color: $seam-nav-item-bg-color-active;
33
+ }
34
+
35
+ .nav-item {
36
+ &:hover {
37
+ background-color: $seam-nav-item-bg-color-hover;
38
+ }
39
+ }
40
+
41
+ .nav-link {
42
+ color: $seam-nav-item-color-active;
43
+ }
44
+ }
45
+
46
+ .badge {
47
+ vertical-align: middle;
48
+ }
49
+
50
+ &:not(.nav-item--icon) {
51
+ .nav-item--badge {
52
+ pointer-events: all;
53
+ margin-left: 5px;
54
+ margin-right: 3px;
55
+ }
56
+ }
57
+
58
+ .nav-item--icon {
59
+ position: relative;
60
+ width: 24px;
61
+ max-width: 24px;
62
+ min-width: 24px;
63
+ height: 24px;
64
+ max-height: 24px;
65
+ min-height: 24px;
66
+ text-align: center;
67
+
68
+ margin-right: .5rem;
69
+
70
+ .nav-item--badge {
71
+ top: -4px;
72
+ right: -4px;
73
+ position: absolute;
74
+
75
+ .badge:empty {
76
+ display: block;
77
+ width: 8px;
78
+ height: 8px;
79
+ padding: 0;
80
+ }
81
+
82
+ &.nav-item--badge-no-icon {
83
+ top: 0px;
84
+ right: 0px;
85
+ }
86
+ }
87
+ }
88
+
89
+ .nav-item {
90
+ transition: 250ms ease-in-out background-color;
91
+
92
+ &:hover {
93
+ background-color: $seam-nav-item-bg-color-hover;
94
+ }
95
+
96
+ &.active {
97
+ pointer-events: none;
98
+ cursor: default;
99
+ }
100
+ }
101
+
102
+ a.nav-item:not([href]):not([tabindex]) {
103
+ color: $seam-nav-item-disabled-color;
104
+
105
+ &:hover {
106
+ background-color: transparent;
107
+ }
108
+ }
109
+
110
+ .nav-link {
111
+ color: $seam-nav-item-color;
112
+ }
113
+
114
+ .nav-btn {
115
+ font-weight: $font-weight-normal;
116
+ color: $seam-nav-toggle-btn-color;
117
+ text-decoration: $link-decoration;
118
+ border-radius: $seam-nav-toggle-btn-border-radius;
119
+ border:
120
+ $seam-nav-toggle-btn-border-width
121
+ $seam-nav-toggle-btn-border-style
122
+ $seam-nav-toggle-btn-border-color;
123
+
124
+ @include hover {
125
+ color: $seam-nav-toggle-btn-color-hover;
126
+ text-decoration: $link-hover-decoration;
127
+ }
128
+
129
+ &:focus,
130
+ &.focus {
131
+ text-decoration: $link-hover-decoration;
132
+ box-shadow: none;
133
+ }
134
+
135
+ &:disabled,
136
+ &.disabled {
137
+ color: $seam-nav-item-disabled-color;
138
+ pointer-events: none;
139
+ }
140
+ }
141
+
142
+ // Add the button focus like a link when navigating with keyboard.
143
+ .cdk-keyboard-focused {
144
+ // outline: -webkit-focus-ring-color auto 1px;
145
+ outline: 1px dotted;
146
+ outline: 5px auto -webkit-focus-ring-color;
147
+ }
148
+
149
+ .nav-item--toggle-btn-container {
150
+ transition: 250ms ease-in-out background-color;
151
+ padding: $seam-nav-toggle-btn-padding;
152
+ }
153
+ button.nav-item--toggle-btn-container {
154
+ &:hover {
155
+ background-color: $seam-nav-item-bg-color-hover;
156
+ }
157
+ }
158
+
159
+ .nav-item--toggle-btn {
160
+ .svg-inline--fa {
161
+ transition: 100ms ease-in-out transform;
162
+ transform: $seam-nav-toggle-btn-transform;
163
+ }
164
+
165
+ @if $seam-nav-toggle-btn-use-transform-active {
166
+ &.nav-item--toggle-btn-expanded {
167
+ .svg-inline--fa {
168
+ transform: $seam-nav-toggle-btn-transform-active;
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ .nav--group {
175
+ will-change: height;
176
+ overflow: hidden;
177
+ }
178
+
179
+ @for $i from 1 through 9 {
180
+ .nav--group--level-#{$i} {
181
+ background-color: darken($seam-nav-bg-color, ($i * $seam-nav-group-bg-variation-amount));
182
+ }
183
+ }
184
+
185
+ .nav-item--divider {
186
+ display: block;
187
+ border-top: $seam-nav-divider-size solid $seam-nav-divider-color;
188
+ width: 100%;
189
+ }
190
+
191
+ .nav-item--title {
192
+ color: $seam-nav-title-color;
193
+ font-size: $seam-nav-title-font-size;
194
+ padding-left: $seam-nav-title-padding-left;
195
+ }
196
+
197
+ // without a set position, these labels can cause unnecessary scrollbars
198
+ .sr-only {
199
+ top: 0;
200
+ left: 0;
201
+ }
202
+ }
203
+
@@ -0,0 +1,20 @@
1
+ import { INavBasic, INavButton, INavDivider, INavItem, INavItemState, INavLink, INavTitle, NavItemCanHaveChildren, NavItemCanHaveState } from './nav.models';
2
+ export declare function isHorizontalNavItemType(item: INavItem, type: 'title'): item is INavTitle;
3
+ export declare function isHorizontalNavItemType(item: INavItem, type: 'divider'): item is INavDivider;
4
+ export declare function isHorizontalNavItemType(item: INavItem, type: 'basic'): item is INavBasic;
5
+ export declare function isHorizontalNavItemType(item: INavItem, type: 'link'): item is INavLink;
6
+ export declare function isHorizontalNavItemType(item: INavItem, type: 'button'): item is INavButton;
7
+ export declare function isHorizontalNavItemActive(item: INavItem): boolean;
8
+ export declare function isHorizontalNavItemExpanded(item: INavItem): boolean;
9
+ export declare function isHorizontalNavItemFocused(item: INavItem): boolean;
10
+ export declare function horizontalNavItemHasChildren(item: INavItem): item is (INavBasic | INavLink) & Required<NavItemCanHaveChildren>;
11
+ export declare function horizontalNavItemCanHaveChildren(item: INavItem): item is (INavBasic | INavLink);
12
+ export declare function horizontalNavItemHasActiveChild(item: INavItem): boolean;
13
+ export declare function horizontalNavItemHasExpandedChild(item: INavItem): boolean;
14
+ export declare function horizontalNavItemCanBeActive(item: INavItem): item is (INavBasic | INavLink);
15
+ export declare function horizontalNavItemCanExpand(item: INavItem): item is (INavBasic | INavLink);
16
+ export declare function findHorizontalNavLinkItems(items: INavItem[]): INavLink[];
17
+ export declare function setHorizontalNavItemStateProp<K extends keyof INavItemState>(item: INavItem, prop: K, value: INavItemState[K]): void;
18
+ export declare function getHorizontalNavItemStateProp<K extends keyof INavItemState>(item: INavItem, prop: K): INavItemState[K];
19
+ export declare function setDefaultHorizontalNavItemState(item: INavItem): INavItem & Required<NavItemCanHaveState>;
20
+ export declare function areSameHorizontalNavItem(item1: INavItem | undefined, item2: INavItem | undefined): boolean;
@@ -0,0 +1,77 @@
1
+ import { IsActiveMatchOptions, UrlCreationOptions } from '@angular/router';
2
+ import { SeamIcon } from '@theseam/ui-common/icon';
3
+ import type { ThemeTypes } from '@theseam/ui-common/models';
4
+ export interface INavItemState {
5
+ active: boolean;
6
+ expanded: boolean;
7
+ focused: boolean;
8
+ }
9
+ export interface NavItemCanHaveState {
10
+ /**
11
+ * This prop is managed by the Nav. If manually set it will be overwritten.
12
+ *
13
+ * @ignore
14
+ */
15
+ __state?: INavItemState;
16
+ }
17
+ export interface NavItemCanHaveChildren {
18
+ children?: INavItem[];
19
+ }
20
+ export interface INavItemBase<T extends string> extends NavItemCanHaveState {
21
+ /**
22
+ * default: 'route'
23
+ */
24
+ itemType?: T;
25
+ badge?: INavBadge;
26
+ }
27
+ export interface INavTitle extends INavItemBase<'title'> {
28
+ label?: string;
29
+ }
30
+ export interface INavDivider extends INavItemBase<'divider'> {
31
+ label?: string;
32
+ }
33
+ export interface INavBadge {
34
+ text?: string;
35
+ theme?: ThemeTypes;
36
+ /**
37
+ * Content to provide to assistive technology, such as screen readers.
38
+ */
39
+ srContent?: string;
40
+ tooltip?: string | NavItemBadgeTooltip;
41
+ }
42
+ export interface INavBasic extends INavItemBase<'basic'>, NavItemCanHaveChildren {
43
+ icon?: SeamIcon;
44
+ label: string;
45
+ }
46
+ export interface INavLink extends INavItemBase<'link'>, Partial<Pick<UrlCreationOptions, 'queryParams' | 'fragment' | 'queryParamsHandling' | 'preserveFragment'>>, NavItemCanHaveChildren {
47
+ icon?: SeamIcon;
48
+ label: string;
49
+ link?: any[] | string;
50
+ /**
51
+ * Default: { paths: 'subset', queryParams: 'subset', fragment: 'ignored', matrixParams: 'ignored' }
52
+ */
53
+ matchOptions?: Partial<IsActiveMatchOptions>;
54
+ }
55
+ export interface INavButton extends INavItemBase<'button'> {
56
+ onClick: (event: MouseEvent) => void;
57
+ }
58
+ export type INavItem = INavTitle | INavDivider | INavBasic | INavLink | INavButton;
59
+ export interface NavItemStateChanged {
60
+ item: INavItem;
61
+ prop: keyof INavItemState;
62
+ prevValue: any;
63
+ newValue: any;
64
+ }
65
+ export interface NavItemBadgeTooltip {
66
+ tooltip?: string;
67
+ class?: string;
68
+ placement?: string;
69
+ container?: string;
70
+ disabled?: boolean;
71
+ }
72
+ export type NavItemChildAction = 'menu' | 'expand' | 'none' | null | undefined;
73
+ export type NavItemExpandAction = 'toggle' | 'expandOnly' | null | undefined;
74
+ export interface NavItemExpandedEvent {
75
+ navItem: INavItem;
76
+ expanded: boolean;
77
+ }
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./nav-item/nav-item.component";
3
+ import * as i2 from "./horizontal-nav/horizontal-nav.component";
4
+ import * as i3 from "@angular/common";
5
+ import * as i4 from "@angular/router";
6
+ import * as i5 from "@theseam/ui-common/icon";
7
+ import * as i6 from "@angular/cdk/a11y";
8
+ import * as i7 from "@theseam/ui-common/scrollbar";
9
+ import * as i8 from "@theseam/ui-common/layout";
10
+ import * as i9 from "@ng-bootstrap/ng-bootstrap";
11
+ import * as i10 from "@angular/cdk/portal";
12
+ import * as i11 from "@theseam/ui-common/menu";
13
+ export declare class TheSeamNavModule {
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<TheSeamNavModule, never>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TheSeamNavModule, [typeof i1.NavItemComponent, typeof i2.HorizontalNavComponent], [typeof i3.CommonModule, typeof i4.RouterModule, typeof i5.TheSeamIconModule, typeof i6.A11yModule, typeof i7.TheSeamScrollbarModule, typeof i8.TheSeamLayoutModule, typeof i9.NgbTooltipModule, typeof i10.PortalModule, typeof i11.TheSeamMenuModule], [typeof i1.NavItemComponent, typeof i2.HorizontalNavComponent]>;
16
+ static ɵinj: i0.ɵɵInjectorDeclaration<TheSeamNavModule>;
17
+ }