@theseam/ui-common 0.4.10 → 0.4.12-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 (194) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/buttons/badge-button/badge-button.component.d.ts +7 -7
  3. package/buttons/button/button.component.d.ts +6 -6
  4. package/buttons/buttons.module.d.ts +1 -1
  5. package/buttons/progress-circle-button/progress-circle-button.component.d.ts +4 -4
  6. package/buttons/toggle-button/toggle-button.component.d.ts +4 -4
  7. package/datatable/datatable/datatable.component.d.ts +10 -1
  8. package/datatable/models/action-item-column-position.d.ts +13 -0
  9. package/datatable/services/columns-manager.service.d.ts +7 -0
  10. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  11. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  12. package/esm2020/buttons/badge-button/badge-button.component.mjs +10 -10
  13. package/esm2020/buttons/button/button.component.mjs +9 -9
  14. package/esm2020/buttons/buttons.module.mjs +29 -29
  15. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +10 -10
  16. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +8 -8
  17. package/esm2020/carousel/carousel.component.mjs +3 -2
  18. package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
  19. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  20. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  21. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  22. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  23. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  24. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  25. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  26. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  27. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  28. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  29. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  30. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  31. package/esm2020/framework/base-layout/index.mjs +2 -1
  32. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +1 -1
  33. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  34. package/esm2020/framework/nav/index.mjs +6 -0
  35. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  36. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  37. package/esm2020/framework/nav/nav.models.mjs +2 -0
  38. package/esm2020/framework/nav/nav.module.mjs +67 -0
  39. package/esm2020/framework/nav/nav.service.mjs +204 -0
  40. package/esm2020/framework/public-api.mjs +2 -1
  41. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  42. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +36 -67
  43. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  44. package/esm2020/framework/side-nav/side-nav.component.mjs +141 -38
  45. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  46. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  47. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  48. package/esm2020/framework/top-bar/index.mjs +3 -1
  49. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  50. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  51. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  52. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  53. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  54. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  55. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  56. package/esm2020/layout/layout.service.mjs +12 -2
  57. package/esm2020/loading/loading/loading.component.mjs +5 -5
  58. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  59. package/esm2020/loading/loading.module.mjs +6 -6
  60. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  61. package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
  62. package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
  63. package/esm2020/services/preferences/preferences-record.mjs +1 -1
  64. package/esm2020/services/preferences/preferences.models.mjs +1 -1
  65. package/esm2020/story-helpers/arg-type-helpers.mjs +5 -9
  66. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
  67. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
  68. package/esm2020/testing/get-harness.mjs +8 -2
  69. package/esm2020/testing/story-expect.mjs +3 -2
  70. package/esm2020/toggle-edit/toggle-edit.component.mjs +1 -1
  71. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  72. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  73. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  74. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  75. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  76. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  77. package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
  78. package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
  79. package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
  80. package/esm2020/widget/widget/widget.component.mjs +3 -3
  81. package/esm2020/widget/widget.models.mjs +1 -1
  82. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  83. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  84. package/fesm2015/theseam-ui-common-buttons.mjs +55 -55
  85. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  86. package/fesm2015/theseam-ui-common-carousel.mjs +2 -1
  87. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  88. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  89. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  90. package/fesm2015/theseam-ui-common-datatable.mjs +56 -10
  91. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  92. package/fesm2015/theseam-ui-common-framework.mjs +940 -158
  93. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  94. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  95. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  96. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  97. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  98. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  99. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  100. package/fesm2015/theseam-ui-common-menu.mjs +6 -1
  101. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  102. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  103. package/fesm2015/theseam-ui-common-story-helpers.mjs +4 -8
  104. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  105. package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
  106. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  107. package/fesm2015/theseam-ui-common-testing.mjs +9 -2
  108. package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
  109. package/fesm2015/theseam-ui-common-toggle-edit.mjs +1 -1
  110. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  111. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  112. package/fesm2015/theseam-ui-common-widget.mjs +2 -2
  113. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  114. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  115. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  116. package/fesm2020/theseam-ui-common-buttons.mjs +55 -55
  117. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  118. package/fesm2020/theseam-ui-common-carousel.mjs +2 -1
  119. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  120. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  121. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  122. package/fesm2020/theseam-ui-common-datatable.mjs +56 -10
  123. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  124. package/fesm2020/theseam-ui-common-framework.mjs +941 -157
  125. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  126. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  127. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  128. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  129. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  130. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  131. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  132. package/fesm2020/theseam-ui-common-menu.mjs +6 -1
  133. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  134. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  135. package/fesm2020/theseam-ui-common-story-helpers.mjs +4 -8
  136. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  137. package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
  138. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  139. package/fesm2020/theseam-ui-common-testing.mjs +9 -2
  140. package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
  141. package/fesm2020/theseam-ui-common-toggle-edit.mjs +1 -1
  142. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  143. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  144. package/fesm2020/theseam-ui-common-widget.mjs +2 -2
  145. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  146. package/framework/base-layout/base-layout.component.d.ts +4 -2
  147. package/framework/base-layout/base-layout.component.scss +18 -10
  148. package/framework/base-layout/base-layout.module.d.ts +11 -10
  149. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  150. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  151. package/framework/base-layout/index.d.ts +1 -0
  152. package/framework/base-layout/styles/_variables.scss +21 -0
  153. package/framework/nav/_nav-theme.scss +4 -0
  154. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  155. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  156. package/framework/nav/index.d.ts +5 -0
  157. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  158. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  159. package/framework/nav/nav-utils.d.ts +20 -0
  160. package/framework/nav/nav.models.d.ts +77 -0
  161. package/framework/nav/nav.module.d.ts +17 -0
  162. package/framework/nav/nav.service.d.ts +27 -0
  163. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  164. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  165. package/framework/nav/styles/_utilities.scss +3 -0
  166. package/framework/nav/styles/_variables.scss +2 -0
  167. package/framework/public-api.d.ts +1 -0
  168. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +10 -14
  169. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  170. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  171. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  172. package/framework/side-nav/side-nav.component.d.ts +18 -2
  173. package/framework/side-nav/side-nav.component.scss +0 -1
  174. package/framework/side-nav/side-nav.models.d.ts +19 -1
  175. package/framework/side-nav/side-nav.module.d.ts +1 -9
  176. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  177. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  178. package/framework/top-bar/index.d.ts +2 -0
  179. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  180. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  181. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  182. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  183. package/framework/top-bar/top-bar.component.d.ts +25 -3
  184. package/framework/top-bar/top-bar.component.scss +7 -2
  185. package/framework/top-bar/top-bar.module.d.ts +10 -8
  186. package/layout/layout.service.d.ts +9 -1
  187. package/loading/loading/loading.component.d.ts +3 -3
  188. package/loading/loading.module.d.ts +1 -1
  189. package/menu/menu-toggle.directive.d.ts +2 -1
  190. package/package.json +2 -2
  191. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
  192. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
  193. package/testing/get-harness.d.ts +2 -2
  194. package/testing/story-expect.d.ts +1 -0
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, InjectionToken, Optional, Inject, HostBinding, Input, HostListener, forwardRef, isDevMode, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, NgModule, ViewChild, EventEmitter, Output, Injectable, Injector, ViewChildren, SkipSelf, Host, Self, ContentChildren } from '@angular/core';
2
+ import { Directive, InjectionToken, Optional, Inject, HostBinding, Input, HostListener, forwardRef, isDevMode, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, NgModule, ViewChild, EventEmitter, Output, Injectable, Injector, ViewChildren, Self, ContentChildren } from '@angular/core';
3
+ import { tap, map, startWith, switchMap, shareReplay, mapTo, take, auditTime, debounceTime, takeUntil, distinctUntilChanged, finalize, filter } from 'rxjs/operators';
3
4
  import * as i3 from '@angular/cdk/portal';
4
5
  import { TemplatePortal, PortalModule, BasePortalOutlet, ComponentPortal } from '@angular/cdk/portal';
5
- import { BehaviorSubject, isObservable, from, Subject, of, combineLatest, defer, Observable } from 'rxjs';
6
+ import { BehaviorSubject, isObservable, from, Subject, of, combineLatest, map as map$1, defer, Observable } from 'rxjs';
6
7
  import { faAngleDoubleRight, faAngleDoubleLeft, faLock, faUnlock, faAngleLeft, faBars, faAngleDown } from '@fortawesome/free-solid-svg-icons';
7
8
  import * as i1 from '@theseam/ui-common/layout';
8
9
  import { TheSeamLayoutModule } from '@theseam/ui-common/layout';
@@ -14,8 +15,7 @@ import * as i4$1 from '@theseam/ui-common/buttons';
14
15
  import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
15
16
  import * as i2$1 from '@theseam/ui-common/icon';
16
17
  import { TheSeamIconModule } from '@theseam/ui-common/icon';
17
- import { map, startWith, switchMap, shareReplay, tap, mapTo, take, auditTime, debounceTime, takeUntil, distinctUntilChanged, finalize, filter } from 'rxjs/operators';
18
- import { hasProperty, notNullOrUndefined, observeControlValue, observeControlStatus } from '@theseam/ui-common/utils';
18
+ import { hasProperty, notNullOrUndefined, observeControlValue, observeControlStatus, isNullOrUndefined } from '@theseam/ui-common/utils';
19
19
  import { __decorate } from 'tslib';
20
20
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
21
21
  import * as i3$1 from '@angular/cdk/drag-drop';
@@ -25,16 +25,16 @@ import { THESEAM_WIDGET_DATA, THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common
25
25
  import * as i1$1 from '@theseam/ui-common/dynamic-component-loader';
26
26
  import * as i6 from '@theseam/ui-common/shared';
27
27
  import { TheSeamSharedModule } from '@theseam/ui-common/shared';
28
- import { trigger, state, style, transition, animate, group, query, animateChild, keyframes } from '@angular/animations';
29
28
  import * as i1$2 from '@angular/router';
30
- import { NavigationEnd, RouterModule, NavigationStart } from '@angular/router';
29
+ import { RouterModule, NavigationEnd, NavigationStart } from '@angular/router';
31
30
  import * as i4$2 from '@angular/cdk/a11y';
32
31
  import { A11yModule } from '@angular/cdk/a11y';
33
32
  import * as i5 from '@ng-bootstrap/ng-bootstrap';
34
33
  import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
34
+ import { trigger, state, style, transition, animate, group, query, animateChild, keyframes } from '@angular/animations';
35
35
  import * as i2$2 from '@angular/flex-layout/extended';
36
36
  import * as i3$2 from '@theseam/ui-common/menu';
37
- import { TheSeamMenuModule } from '@theseam/ui-common/menu';
37
+ import { TheSeamMenuModule, MenuComponent } from '@theseam/ui-common/menu';
38
38
  import { faUserCircle } from '@fortawesome/free-regular-svg-icons';
39
39
  import * as i1$3 from '@ajsf/core';
40
40
  import { isArray, buildTitleMap, hasOwn, Framework, JsonSchemaFormModule, WidgetLibraryModule, JsonSchemaFormService, FrameworkLibraryService, WidgetLibraryService } from '@ajsf/core';
@@ -102,22 +102,31 @@ class BaseLayoutNavToggleDirective {
102
102
  this.baseLayout.registeredNav.toggle();
103
103
  }
104
104
  }
105
- constructor(_baseLayout) {
105
+ constructor(_cdr, _baseLayout) {
106
+ this._cdr = _cdr;
106
107
  this.type = 'button';
107
108
  /** Screenreader label for the button. */
108
109
  this.ariaLabel = 'Navigation toggle';
110
+ this._toggleClass = true;
111
+ this._expandedClass = false;
109
112
  this.baseLayout = _baseLayout;
110
113
  }
114
+ ngOnInit() {
115
+ this.baseLayout?.registeredNav?.expanded$.pipe(tap(exp => {
116
+ this._expandedClass = exp;
117
+ this._cdr.markForCheck();
118
+ })).subscribe();
119
+ }
111
120
  }
112
- BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
113
- BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
121
+ BaseLayoutNavToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
122
+ BaseLayoutNavToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel", "class.base-layout-nav-toggle": "this._toggleClass", "class.base-layout-nav-toggle--expanded": "this._expandedClass" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
114
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, decorators: [{
115
124
  type: Directive,
116
125
  args: [{
117
126
  selector: 'button[seamBaseLayoutNavToggle]',
118
127
  exportAs: 'seamBaseLayoutNavToggle'
119
128
  }]
120
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
129
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
121
130
  type: Optional
122
131
  }, {
123
132
  type: Inject,
@@ -133,6 +142,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
133
142
  }], ariaLabel: [{
134
143
  type: Input,
135
144
  args: ['aria-label']
145
+ }], _toggleClass: [{
146
+ type: HostBinding,
147
+ args: ['class.base-layout-nav-toggle']
148
+ }], _expandedClass: [{
149
+ type: HostBinding,
150
+ args: ['class.base-layout-nav-toggle--expanded']
136
151
  }], _onClick: [{
137
152
  type: HostListener,
138
153
  args: ['click']
@@ -180,6 +195,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
180
195
  }]
181
196
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
182
197
 
198
+ class BaseLayoutSideBarHeaderDirective {
199
+ constructor(_elementRef) {
200
+ this._elementRef = _elementRef;
201
+ }
202
+ }
203
+ BaseLayoutSideBarHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
204
+ BaseLayoutSideBarHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutSideBarHeaderDirective, selector: "[seamBaseLayoutSideBarHeader]", ngImport: i0 });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, decorators: [{
206
+ type: Directive,
207
+ args: [{
208
+ selector: '[seamBaseLayoutSideBarHeader]'
209
+ }]
210
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
211
+
183
212
  const THE_SEAM_BASE_LAYOUT = {
184
213
  provide: THESEAM_BASE_LAYOUT_REF,
185
214
  // tslint:disable-next-line:no-use-before-declare
@@ -195,6 +224,7 @@ class TheSeamBaseLayoutComponent {
195
224
  this.faAngleDoubleRight = faAngleDoubleRight;
196
225
  this.faAngleDoubleLeft = faAngleDoubleLeft;
197
226
  this.overlayNav = false;
227
+ this.showSidebar = true;
198
228
  this._hasSideBar = new BehaviorSubject(false);
199
229
  this._registeredNav = new BehaviorSubject(undefined);
200
230
  this.registeredNav$ = this._registeredNav.asObservable();
@@ -204,12 +234,17 @@ class TheSeamBaseLayoutComponent {
204
234
  this.hasSideBar$ = this._hasSideBar.asObservable();
205
235
  }
206
236
  ngOnInit() {
237
+ if (this.mobileBreakpoint) {
238
+ this._layout.setMobileBreakpoint(this.mobileBreakpoint);
239
+ }
207
240
  if (this._topBarTpl) {
208
241
  this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef);
209
242
  }
210
243
  if (this._sideBarTpl) {
211
244
  this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef);
212
- this._hasSideBar.next(true);
245
+ if (this.showSidebar) {
246
+ this._hasSideBar.next(true);
247
+ }
213
248
  }
214
249
  if (this._contentTpl) {
215
250
  this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef);
@@ -265,12 +300,16 @@ class TheSeamBaseLayoutComponent {
265
300
  }
266
301
  }
267
302
  TheSeamBaseLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamBaseLayoutComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
268
- TheSeamBaseLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamBaseLayoutComponent, selector: "seam-base-layout", inputs: { overlayNav: "overlayNav" }, providers: [THE_SEAM_BASE_LAYOUT], queries: [{ propertyName: "_topBarTpl", first: true, predicate: BaseLayoutTopBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarTpl", first: true, predicate: BaseLayoutSideBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentTpl", first: true, predicate: BaseLayoutContentDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentHeaderTpl", first: true, predicate: BaseLayoutContentHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentFooterTpl", first: true, predicate: BaseLayoutContentFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header\">\n <!-- <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template> -->\n\n <div class=\"d-flex d-flex-row\">\n <div class=\"flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div>\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;float:left;z-index:9999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .base-layout-content-container-header{margin:.25rem;padding:0;background:none;border-radius:0;overflow:hidden}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
303
+ TheSeamBaseLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamBaseLayoutComponent, selector: "seam-base-layout", inputs: { overlayNav: "overlayNav", mobileBreakpoint: "mobileBreakpoint", showSidebar: "showSidebar" }, providers: [THE_SEAM_BASE_LAYOUT], queries: [{ propertyName: "_topBarTpl", first: true, predicate: BaseLayoutTopBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarTpl", first: true, predicate: BaseLayoutSideBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentTpl", first: true, predicate: BaseLayoutContentDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentHeaderTpl", first: true, predicate: BaseLayoutContentHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentFooterTpl", first: true, predicate: BaseLayoutContentFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
269
304
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamBaseLayoutComponent, decorators: [{
270
305
  type: Component,
271
- args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header\">\n <!-- <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template> -->\n\n <div class=\"d-flex d-flex-row\">\n <div class=\"flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div>\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;float:left;z-index:9999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .base-layout-content-container-header{margin:.25rem;padding:0;background:none;border-radius:0;overflow:hidden}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"] }]
306
+ args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"] }]
272
307
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }]; }, propDecorators: { overlayNav: [{
273
308
  type: Input
309
+ }], mobileBreakpoint: [{
310
+ type: Input
311
+ }], showSidebar: [{
312
+ type: Input
274
313
  }], _topBarTpl: [{
275
314
  type: ContentChild,
276
315
  args: [BaseLayoutTopBarDirective, { static: true, read: TemplateRef }]
@@ -295,6 +334,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
295
334
  BaseLayoutContentDirective,
296
335
  BaseLayoutSideBarDirective,
297
336
  BaseLayoutSideBarFooterDirective,
337
+ BaseLayoutSideBarHeaderDirective,
298
338
  BaseLayoutTopBarDirective,
299
339
  BaseLayoutNavToggleDirective,
300
340
  BaseLayoutContentHeaderDirective,
@@ -306,6 +346,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
306
346
  BaseLayoutContentDirective,
307
347
  BaseLayoutSideBarDirective,
308
348
  BaseLayoutSideBarFooterDirective,
349
+ BaseLayoutSideBarHeaderDirective,
309
350
  BaseLayoutTopBarDirective,
310
351
  BaseLayoutNavToggleDirective,
311
352
  BaseLayoutContentHeaderDirective,
@@ -323,6 +364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
323
364
  BaseLayoutContentDirective,
324
365
  BaseLayoutSideBarDirective,
325
366
  BaseLayoutSideBarFooterDirective,
367
+ BaseLayoutSideBarHeaderDirective,
326
368
  BaseLayoutTopBarDirective,
327
369
  BaseLayoutNavToggleDirective,
328
370
  BaseLayoutContentHeaderDirective,
@@ -340,6 +382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
340
382
  BaseLayoutContentDirective,
341
383
  BaseLayoutSideBarDirective,
342
384
  BaseLayoutSideBarFooterDirective,
385
+ BaseLayoutSideBarHeaderDirective,
343
386
  BaseLayoutTopBarDirective,
344
387
  BaseLayoutNavToggleDirective,
345
388
  BaseLayoutContentHeaderDirective,
@@ -982,7 +1025,7 @@ DashboardWidgetsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
982
1025
  // tslint:disable-next-line:no-use-before-declare
983
1026
  useExisting: forwardRef(() => DashboardWidgetsComponent)
984
1027
  },
985
- ], viewQueries: [{ propertyName: "_toggleBtnTpl", first: true, predicate: ["toggleBtnTpl"], descendants: true, static: true }, { propertyName: "containers", predicate: DashboardWidgetContainerComponent, descendants: true }, { propertyName: "cdkDragDirectives", predicate: CdkDrag, descendants: true }], ngImport: i0, template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n <seam-dashboard-widget-container *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($event)\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i6.ElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"] }, { kind: "component", type: DashboardWidgetContainerComponent, selector: "seam-dashboard-widget-container", inputs: ["def"] }, { kind: "component", type: DashboardWidgetTemplateContainerComponent, selector: "seam-dashboard-widget-template-container", inputs: ["item"] }, { kind: "directive", type: DashboardWidgetPortalOutletDirective, selector: "[seamDashboardWidgetPortalOutlet]", inputs: ["seamDashboardWidgetPortalOutlet"], outputs: ["attached"], exportAs: ["seamDashboardWidgetPortalOutlet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1028
+ ], viewQueries: [{ propertyName: "_toggleBtnTpl", first: true, predicate: ["toggleBtnTpl"], descendants: true, static: true }, { propertyName: "containers", predicate: DashboardWidgetContainerComponent, descendants: true }, { propertyName: "cdkDragDirectives", predicate: CdkDrag, descendants: true }], ngImport: i0, template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n <seam-dashboard-widget-container *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($event)\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i6.ElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"] }, { kind: "component", type: DashboardWidgetContainerComponent, selector: "seam-dashboard-widget-container", inputs: ["def"] }, { kind: "component", type: DashboardWidgetTemplateContainerComponent, selector: "seam-dashboard-widget-template-container", inputs: ["item"] }, { kind: "directive", type: DashboardWidgetPortalOutletDirective, selector: "[seamDashboardWidgetPortalOutlet]", inputs: ["seamDashboardWidgetPortalOutlet"], outputs: ["attached"], exportAs: ["seamDashboardWidgetPortalOutlet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
986
1029
  __decorate([
987
1030
  InputBoolean()
988
1031
  ], DashboardWidgetsComponent.prototype, "widgetsDraggable", void 0);
@@ -1098,8 +1141,6 @@ const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken('THESEAM_SIDE_NAV_ACCESSOR'
1098
1141
 
1099
1142
  const EXPANDED_STATE$1 = 'expanded';
1100
1143
  const COLLAPSED_STATE$1 = 'collapsed';
1101
- const FULL_STATE = 'full';
1102
- const COMPACT_STATE = 'compact';
1103
1144
  class SideNavItemComponent {
1104
1145
  set link(value) { this._link.next(value); }
1105
1146
  get link() { return this._link.value; }
@@ -1114,6 +1155,7 @@ class SideNavItemComponent {
1114
1155
  this._badgeTooltip = {
1115
1156
  tooltip: value,
1116
1157
  placement: 'auto',
1158
+ container: 'body',
1117
1159
  disabled: false
1118
1160
  };
1119
1161
  }
@@ -1121,9 +1163,10 @@ class SideNavItemComponent {
1121
1163
  this._badgeTooltip = {
1122
1164
  ...value,
1123
1165
  placement: value.placement || 'auto',
1166
+ container: value.container || 'body',
1124
1167
  disabled: typeof value?.disabled === 'boolean'
1125
1168
  ? value.disabled
1126
- : typeof value.tooltip !== 'string'
1169
+ : typeof value.tooltip === 'string',
1127
1170
  };
1128
1171
  }
1129
1172
  }
@@ -1133,9 +1176,8 @@ class SideNavItemComponent {
1133
1176
  }
1134
1177
  get _isActiveCssClass() { return this.active; }
1135
1178
  get _attrDataHierLevel() { return this.hierLevel; }
1136
- constructor(_sideNav, _parent) {
1179
+ constructor(_sideNav) {
1137
1180
  this._sideNav = _sideNav;
1138
- this._parent = _parent;
1139
1181
  this._ngUnsubscribe = new Subject();
1140
1182
  this.faAngleLeft = faAngleLeft;
1141
1183
  this.active = false;
@@ -1149,9 +1191,7 @@ class SideNavItemComponent {
1149
1191
  this.compact$ = this._compact.asObservable();
1150
1192
  this.badgeTheme = 'danger';
1151
1193
  this.childGroupAnimState$ = this.expanded$
1152
- .pipe(map(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
1153
- this.compactAnimState$ = this.compact$
1154
- .pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE));
1194
+ .pipe(map$1(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
1155
1195
  }
1156
1196
  ngOnDestroy() {
1157
1197
  this._ngUnsubscribe.next(undefined);
@@ -1169,36 +1209,17 @@ class SideNavItemComponent {
1169
1209
  this._sideNav.collapse();
1170
1210
  }
1171
1211
  }
1212
+ get showIconBlock() {
1213
+ return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
1214
+ }
1172
1215
  }
1173
- SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }, { token: SideNavItemComponent, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
1174
- SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
1216
+ SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }], target: i0.ɵɵFactoryTarget.Component });
1217
+ SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], animations: [
1175
1218
  trigger('childGroupAnim', [
1176
1219
  state(EXPANDED_STATE$1, style({ height: '*' })),
1177
- state(COLLAPSED_STATE$1, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
1220
+ state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
1178
1221
  transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
1179
1222
  ]),
1180
- trigger('compactAnim', [
1181
- // transition('* <=> *', [
1182
- // query(':enter', [
1183
- // style({ opacity: '0' }),
1184
- // animate('5.2s ease-in-out', style({ opacity: '1' }))
1185
- // ], { optional: true }),
1186
- // query(':leave', [
1187
- // style({ opacity: '1' }),
1188
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1189
- // ], { optional: true })
1190
- // ])
1191
- // state(FULL_STATE, style({ opacity: '1' })),
1192
- // state(COMPACT_STATE, style({ opacity: '0' })),
1193
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
1194
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
1195
- // transition('* <=> *', [
1196
- // query(':leave', [
1197
- // style({ opacity: '1' }),
1198
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1199
- // ], { optional: true })
1200
- // ]),
1201
- ])
1202
1223
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1203
1224
  __decorate([
1204
1225
  InputBoolean()
@@ -1214,45 +1235,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1214
1235
  args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
1215
1236
  trigger('childGroupAnim', [
1216
1237
  state(EXPANDED_STATE$1, style({ height: '*' })),
1217
- state(COLLAPSED_STATE$1, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
1238
+ state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
1218
1239
  transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
1219
1240
  ]),
1220
- trigger('compactAnim', [
1221
- // transition('* <=> *', [
1222
- // query(':enter', [
1223
- // style({ opacity: '0' }),
1224
- // animate('5.2s ease-in-out', style({ opacity: '1' }))
1225
- // ], { optional: true }),
1226
- // query(':leave', [
1227
- // style({ opacity: '1' }),
1228
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1229
- // ], { optional: true })
1230
- // ])
1231
- // state(FULL_STATE, style({ opacity: '1' })),
1232
- // state(COMPACT_STATE, style({ opacity: '0' })),
1233
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
1234
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
1235
- // transition('* <=> *', [
1236
- // query(':leave', [
1237
- // style({ opacity: '1' }),
1238
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1239
- // ], { optional: true })
1240
- // ]),
1241
- ])
1242
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
1241
+ ], imports: [
1242
+ CommonModule,
1243
+ RouterModule,
1244
+ TheSeamIconModule,
1245
+ A11yModule,
1246
+ NgbTooltipModule,
1247
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
1243
1248
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1244
1249
  type: Inject,
1245
1250
  args: [THESEAM_SIDE_NAV_ACCESSOR]
1246
- }] }, { type: SideNavItemComponent, decorators: [{
1247
- type: Optional
1248
- }, {
1249
- type: SkipSelf
1250
- }, {
1251
- type: Host
1252
1251
  }] }]; }, propDecorators: { itemType: [{
1253
1252
  type: Input
1254
1253
  }], icon: [{
1255
1254
  type: Input
1255
+ }], hideEmptyIcon: [{
1256
+ type: Input
1256
1257
  }], label: [{
1257
1258
  type: Input
1258
1259
  }], active: [{
@@ -1271,6 +1272,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1271
1272
  type: Input
1272
1273
  }], compact: [{
1273
1274
  type: Input
1275
+ }], isMobile: [{
1276
+ type: Input
1274
1277
  }], badgeText: [{
1275
1278
  type: Input
1276
1279
  }], badgeTheme: [{
@@ -1279,6 +1282,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1279
1282
  type: Input
1280
1283
  }], badgeTooltip: [{
1281
1284
  type: Input
1285
+ }], menuItemTooltipConfig: [{
1286
+ type: Input
1287
+ }], menuItemTooltipDisabled: [{
1288
+ type: Input
1282
1289
  }], _isActiveCssClass: [{
1283
1290
  type: HostBinding,
1284
1291
  args: ['class.seam-side-nav-item--active']
@@ -1289,7 +1296,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1289
1296
 
1290
1297
  class SideNavToggleComponent {
1291
1298
  constructor() {
1292
- this.faBars = faBars;
1293
1299
  this.expanded = false;
1294
1300
  this.toggleExpand = new EventEmitter();
1295
1301
  }
@@ -1298,7 +1304,7 @@ class SideNavToggleComponent {
1298
1304
  }
1299
1305
  }
1300
1306
  SideNavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1301
- SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{position:absolute;top:0;right:5px;color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1307
+ SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavToggleComponent, isStandalone: true, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2$1.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1302
1308
  __decorate([
1303
1309
  InputBoolean()
1304
1310
  ], SideNavToggleComponent.prototype, "expanded", void 0);
@@ -1306,9 +1312,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1306
1312
  type: Component,
1307
1313
  args: [{ selector: 'seam-side-nav-toggle', host: {
1308
1314
  '[class.side-nav-toggle--compact]': '!expanded'
1309
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{position:absolute;top:0;right:5px;color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
1315
+ }, imports: [
1316
+ CommonModule,
1317
+ TheSeamIconModule,
1318
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
1310
1319
  }], propDecorators: { expanded: [{
1311
1320
  type: Input
1321
+ }], toggleIcon: [{
1322
+ type: Input
1323
+ }], toggleTpl: [{
1324
+ type: Input
1312
1325
  }], toggleExpand: [{
1313
1326
  type: Output
1314
1327
  }] } });
@@ -1602,29 +1615,58 @@ class SideNavComponent {
1602
1615
  }
1603
1616
  get overlay() { return this._overlay.value; }
1604
1617
  set overlay(value) { this._overlay.next(coerceBooleanProperty(value)); }
1618
+ get menuItemTooltipConfig() { return this._menuItemTooltipConfig; }
1619
+ set menuItemTooltipConfig(value) {
1620
+ this._menuItemTooltipConfig = {
1621
+ class: value?.class,
1622
+ placement: value?.placement || this._menuItemTooltipConfig.placement,
1623
+ container: value?.container || this._menuItemTooltipConfig.container,
1624
+ behavior: value?.behavior || this._menuItemTooltipConfig.behavior
1625
+ };
1626
+ }
1605
1627
  constructor(_viewContainerRef, _layout, _sideNav, _baseLayoutRef) {
1606
1628
  this._viewContainerRef = _viewContainerRef;
1607
1629
  this._layout = _layout;
1608
1630
  this._sideNav = _sideNav;
1609
1631
  this._baseLayoutRef = _baseLayoutRef;
1610
1632
  this._ngUnsubscribe = new Subject();
1633
+ this.faBars = faBars;
1611
1634
  // @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE
1612
1635
  // _sideNavExpand = EXPANDED_STATE
1613
1636
  // @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE
1614
1637
  this._sideNavExpand = 'initial';
1615
1638
  this.hasHeaderToggle = true;
1639
+ this.toggleIcon = faBars;
1616
1640
  this._items = new BehaviorSubject([]);
1641
+ this.indentSize = 10;
1617
1642
  this._expanded = new BehaviorSubject(true);
1618
1643
  this.expanded$ = this._expanded.asObservable();
1644
+ this.expandOrigin = 'left';
1645
+ this.expandHeight = '100%';
1646
+ this.expandWidth = 'calc(100vw - 50px)';
1619
1647
  this._overlay = new BehaviorSubject(false);
1620
1648
  this.overlay$ = this._overlay.asObservable();
1649
+ this._menuItemTooltipConfig = {
1650
+ placement: 'right',
1651
+ container: 'body',
1652
+ behavior: 'always'
1653
+ };
1621
1654
  this.toggleExpand = new EventEmitter();
1622
1655
  this._backdropHidden = new BehaviorSubject(true);
1623
- this.items$ = this._items.asObservable().pipe(switchMap(items => this._sideNav.createItemsObservable(items)), shareReplay({ bufferSize: 1, refCount: true }));
1656
+ this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
1624
1657
  this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
1625
1658
  this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
1626
1659
  ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
1627
1660
  : overlay ? COLLAPSED_OVERLAY_STATE : COLLAPSED_STATE), distinctUntilChanged());
1661
+ this.menuItemTooltipDisabled$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => {
1662
+ // never display tooltip on mobile, it breaks the layout
1663
+ if (overlay) {
1664
+ return true;
1665
+ }
1666
+ return this.menuItemTooltipConfig?.behavior === 'always' ? false
1667
+ : this.menuItemTooltipConfig?.behavior === 'never' ? true
1668
+ : this.menuItemTooltipConfig?.behavior === 'collapseOnly' ? expanded : true;
1669
+ }), distinctUntilChanged());
1628
1670
  }
1629
1671
  ngOnInit() {
1630
1672
  if (this._baseLayoutRef) {
@@ -1636,6 +1678,9 @@ class SideNavComponent {
1636
1678
  this.sideNavExpandedState$
1637
1679
  .pipe(takeUntil(this._ngUnsubscribe))
1638
1680
  .subscribe(v => this._sideNavExpand = v);
1681
+ if (this._sideBarHeaderTpl) {
1682
+ this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
1683
+ }
1639
1684
  if (this._sideBarFooterTpl) {
1640
1685
  this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef);
1641
1686
  }
@@ -1666,16 +1711,32 @@ class SideNavComponent {
1666
1711
  this._backdropHidden.next(true);
1667
1712
  }
1668
1713
  }
1714
+ get expandOriginTransform() {
1715
+ switch (this.expandOrigin) {
1716
+ case 'right':
1717
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(100vw) translateX(-100%)'
1718
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(100vw)' : null;
1719
+ case 'top':
1720
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(0)'
1721
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(-100%)' : null;
1722
+ case 'bottom':
1723
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(100vh) translateY(-100%)'
1724
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(100vh)' : null;
1725
+ case 'left':
1726
+ default:
1727
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(0)'
1728
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(-100%)' : null;
1729
+ }
1730
+ }
1669
1731
  }
1670
1732
  SideNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }, { token: TheSeamSideNavService }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1671
- SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", items: "items", expanded: "expanded", overlay: "overlay" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
1733
+ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, isStandalone: true, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl", items: "items", hideEmptyIcon: "hideEmptyIcon", indentSize: "indentSize", expanded: "expanded", expandOrigin: "expandOrigin", expandHeight: "expandHeight", expandWidth: "expandWidth", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
1672
1734
  TheSeamSideNavService,
1673
1735
  {
1674
1736
  provide: THESEAM_SIDE_NAV_ACCESSOR,
1675
- // tslint:disable-next-line:no-use-before-declare
1676
- useExisting: forwardRef(() => SideNavComponent)
1737
+ useExisting: SideNavComponent
1677
1738
  },
1678
- ], queries: [{ propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
1739
+ ], queries: [{ propertyName: "_sideBarHeaderTpl", first: true, predicate: BaseLayoutSideBarHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: TheSeamScrollbarModule }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded", "toggleIcon", "toggleTpl"], outputs: ["toggleExpand"] }], animations: [
1679
1740
  //
1680
1741
  // TODO: This animation code turned into a mess. Clean it up and make it
1681
1742
  // more smooth.
@@ -1698,32 +1759,42 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
1698
1759
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1699
1760
  ]),
1700
1761
  trigger('sideNavExpand', [
1701
- // TODO: Make width configurable.
1762
+ // TODO: Make width configurable for non-overlay state.
1702
1763
  state(EXPANDED_STATE, style({ width: '260px' })),
1703
1764
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
1704
1765
  state(EXPANDED_OVERLAY_STATE, style({
1705
1766
  position: 'absolute',
1706
1767
  top: 0,
1707
- height: '100%',
1708
1768
  bottom: 0,
1709
1769
  left: 0,
1710
- float: 'left',
1770
+ height: '{{ height }}',
1771
+ width: '{{ width }}',
1772
+ transform: '{{ origin }}',
1711
1773
  zIndex: '9999',
1712
- width: 'calc(100vw - 50px)',
1713
- transform: 'translateX(0)'
1714
- })),
1774
+ }), {
1775
+ params: {
1776
+ origin: 'translateX(100%)',
1777
+ height: '100%',
1778
+ width: 'calc(100vw - 50px)',
1779
+ }
1780
+ }),
1715
1781
  state(COLLAPSED_OVERLAY_STATE, style({
1716
1782
  position: 'absolute',
1717
1783
  top: 0,
1718
- height: '100%',
1719
1784
  bottom: 0,
1720
1785
  left: 0,
1721
- float: 'left',
1786
+ height: '{{ height }}',
1787
+ width: '{{ width }}',
1788
+ transform: '{{ origin }}',
1789
+ 'overflow-x': 'hidden',
1722
1790
  zIndex: '9999',
1723
- width: 'calc(100vw - 50px)',
1724
- transform: 'translateX(calc(-100vw + 50px))',
1725
- 'overflow-x': 'hidden'
1726
- })),
1791
+ }), {
1792
+ params: {
1793
+ origin: 'translateX(0)',
1794
+ height: '100%',
1795
+ width: 'calc(100vw - 50px)',
1796
+ }
1797
+ }),
1727
1798
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
1728
1799
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1729
1800
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -1741,14 +1812,16 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
1741
1812
  __decorate([
1742
1813
  InputBoolean()
1743
1814
  ], SideNavComponent.prototype, "hasHeaderToggle", void 0);
1815
+ __decorate([
1816
+ InputNumber(10)
1817
+ ], SideNavComponent.prototype, "indentSize", void 0);
1744
1818
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, decorators: [{
1745
1819
  type: Component,
1746
1820
  args: [{ selector: 'seam-side-nav', providers: [
1747
1821
  TheSeamSideNavService,
1748
1822
  {
1749
1823
  provide: THESEAM_SIDE_NAV_ACCESSOR,
1750
- // tslint:disable-next-line:no-use-before-declare
1751
- useExisting: forwardRef(() => SideNavComponent)
1824
+ useExisting: SideNavComponent
1752
1825
  },
1753
1826
  ], animations: [
1754
1827
  //
@@ -1773,32 +1846,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1773
1846
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1774
1847
  ]),
1775
1848
  trigger('sideNavExpand', [
1776
- // TODO: Make width configurable.
1849
+ // TODO: Make width configurable for non-overlay state.
1777
1850
  state(EXPANDED_STATE, style({ width: '260px' })),
1778
1851
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
1779
1852
  state(EXPANDED_OVERLAY_STATE, style({
1780
1853
  position: 'absolute',
1781
1854
  top: 0,
1782
- height: '100%',
1783
1855
  bottom: 0,
1784
1856
  left: 0,
1785
- float: 'left',
1857
+ height: '{{ height }}',
1858
+ width: '{{ width }}',
1859
+ transform: '{{ origin }}',
1786
1860
  zIndex: '9999',
1787
- width: 'calc(100vw - 50px)',
1788
- transform: 'translateX(0)'
1789
- })),
1861
+ }), {
1862
+ params: {
1863
+ origin: 'translateX(100%)',
1864
+ height: '100%',
1865
+ width: 'calc(100vw - 50px)',
1866
+ }
1867
+ }),
1790
1868
  state(COLLAPSED_OVERLAY_STATE, style({
1791
1869
  position: 'absolute',
1792
1870
  top: 0,
1793
- height: '100%',
1794
1871
  bottom: 0,
1795
1872
  left: 0,
1796
- float: 'left',
1873
+ height: '{{ height }}',
1874
+ width: '{{ width }}',
1875
+ transform: '{{ origin }}',
1876
+ 'overflow-x': 'hidden',
1797
1877
  zIndex: '9999',
1798
- width: 'calc(100vw - 50px)',
1799
- transform: 'translateX(calc(-100vw + 50px))',
1800
- 'overflow-x': 'hidden'
1801
- })),
1878
+ }), {
1879
+ params: {
1880
+ origin: 'translateX(0)',
1881
+ height: '100%',
1882
+ width: 'calc(100vw - 50px)',
1883
+ }
1884
+ }),
1802
1885
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
1803
1886
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1804
1887
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -1812,7 +1895,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1812
1895
  // ])
1813
1896
  // ]),
1814
1897
  ])
1815
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
1898
+ ], imports: [
1899
+ CommonModule,
1900
+ A11yModule,
1901
+ TheSeamScrollbarModule,
1902
+ TheSeamLayoutModule,
1903
+ PortalModule,
1904
+ SideNavItemComponent,
1905
+ SideNavToggleComponent,
1906
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
1816
1907
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }, { type: TheSeamSideNavService }, { type: undefined, decorators: [{
1817
1908
  type: Optional
1818
1909
  }, {
@@ -1823,14 +1914,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1823
1914
  args: ['@sideNavAnim']
1824
1915
  }], hasHeaderToggle: [{
1825
1916
  type: Input
1917
+ }], toggleIcon: [{
1918
+ type: Input
1919
+ }], toggleTpl: [{
1920
+ type: Input
1826
1921
  }], items: [{
1827
1922
  type: Input
1923
+ }], hideEmptyIcon: [{
1924
+ type: Input
1925
+ }], indentSize: [{
1926
+ type: Input
1828
1927
  }], expanded: [{
1829
1928
  type: Input
1929
+ }], expandOrigin: [{
1930
+ type: Input
1931
+ }], expandHeight: [{
1932
+ type: Input
1933
+ }], expandWidth: [{
1934
+ type: Input
1830
1935
  }], overlay: [{
1831
1936
  type: Input
1937
+ }], menuItemTooltipConfig: [{
1938
+ type: Input
1832
1939
  }], toggleExpand: [{
1833
1940
  type: Output
1941
+ }], _sideBarHeaderTpl: [{
1942
+ type: ContentChild,
1943
+ args: [BaseLayoutSideBarHeaderDirective, { static: true, read: TemplateRef }]
1834
1944
  }], _sideBarFooterTpl: [{
1835
1945
  type: ContentChild,
1836
1946
  args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
@@ -1839,48 +1949,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1839
1949
  class TheSeamSideNavModule {
1840
1950
  }
1841
1951
  TheSeamSideNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1842
- TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, declarations: [SideNavItemComponent,
1952
+ TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
1843
1953
  SideNavComponent,
1844
- SideNavToggleComponent], imports: [CommonModule,
1845
- RouterModule,
1846
- TheSeamIconModule,
1847
- A11yModule,
1848
- TheSeamScrollbarModule,
1849
- TheSeamLayoutModule,
1850
- NgbTooltipModule,
1851
- PortalModule], exports: [SideNavItemComponent,
1954
+ SideNavToggleComponent], exports: [SideNavItemComponent,
1955
+ SideNavComponent,
1956
+ SideNavToggleComponent] });
1957
+ TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
1852
1958
  SideNavComponent,
1853
1959
  SideNavToggleComponent] });
1854
- TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [CommonModule,
1855
- RouterModule,
1856
- TheSeamIconModule,
1857
- A11yModule,
1858
- TheSeamScrollbarModule,
1859
- TheSeamLayoutModule,
1860
- NgbTooltipModule,
1861
- PortalModule] });
1862
1960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
1863
1961
  type: NgModule,
1864
1962
  args: [{
1865
- declarations: [
1963
+ imports: [
1866
1964
  SideNavItemComponent,
1867
1965
  SideNavComponent,
1868
- SideNavToggleComponent
1869
- ],
1870
- imports: [
1871
- CommonModule,
1872
- RouterModule,
1873
- TheSeamIconModule,
1874
- A11yModule,
1875
- TheSeamScrollbarModule,
1876
- TheSeamLayoutModule,
1877
- NgbTooltipModule,
1878
- PortalModule
1966
+ SideNavToggleComponent,
1879
1967
  ],
1880
1968
  exports: [
1881
1969
  SideNavItemComponent,
1882
1970
  SideNavComponent,
1883
- SideNavToggleComponent
1971
+ SideNavToggleComponent,
1884
1972
  ]
1885
1973
  }]
1886
1974
  }] });
@@ -1900,7 +1988,7 @@ class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
1900
1988
  get _hasBtnLinkClass() { return !this.compact; }
1901
1989
  }
1902
1990
  TopBarMenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1903
- TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1991
+ TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compactDetailTpl: "compactDetailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0 top-bar-menu-button" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1904
1992
  __decorate([
1905
1993
  InputBoolean()
1906
1994
  ], TopBarMenuButtonComponent.prototype, "compact", void 0);
@@ -1908,12 +1996,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1908
1996
  type: Component,
1909
1997
  args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
1910
1998
  'attr.type': 'button',
1911
- 'class': 'btn border text-decoration-none py-0',
1999
+ 'class': 'btn border text-decoration-none py-0 top-bar-menu-button',
1912
2000
  '[attr.aria-disabled]': 'disabled.toString()',
1913
2001
  '[attr.disabled]': 'disabled || null',
1914
- }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"] }]
2002
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"] }]
1915
2003
  }], propDecorators: { detailTpl: [{
1916
2004
  type: Input
2005
+ }], compactDetailTpl: [{
2006
+ type: Input
1917
2007
  }], compact: [{
1918
2008
  type: Input
1919
2009
  }], profileIcon: [{
@@ -1945,19 +2035,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1945
2035
  type: Input
1946
2036
  }] } });
1947
2037
 
2038
+ class TopBarCompactMenuBtnDetailDirective {
2039
+ constructor(template) {
2040
+ this.template = template;
2041
+ }
2042
+ }
2043
+ TopBarCompactMenuBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2044
+ TopBarCompactMenuBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarCompactMenuBtnDetailDirective, selector: "[seamTopBarCompactMenuBtnDetail]", ngImport: i0 });
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
2046
+ type: Directive,
2047
+ args: [{
2048
+ selector: '[seamTopBarCompactMenuBtnDetail]'
2049
+ }]
2050
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2051
+
2052
+ class TopBarNavToggleBtnDetailDirective {
2053
+ constructor(template) {
2054
+ this.template = template;
2055
+ }
2056
+ }
2057
+ TopBarNavToggleBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2058
+ TopBarNavToggleBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarNavToggleBtnDetailDirective, selector: "[seamTopBarNavToggleBtnDetail]", ngImport: i0 });
2059
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
2060
+ type: Directive,
2061
+ args: [{
2062
+ selector: '[seamTopBarNavToggleBtnDetail]'
2063
+ }]
2064
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2065
+
1948
2066
  class TopBarItemDirective {
2067
+ set seamTopBarItem(value) {
2068
+ this.position = value;
2069
+ }
1949
2070
  constructor(template) {
1950
2071
  this.template = template;
2072
+ this.position = 'right';
1951
2073
  }
1952
2074
  }
1953
2075
  TopBarItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1954
- TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", ngImport: i0 });
2076
+ TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", inputs: { seamTopBarItem: "seamTopBarItem" }, ngImport: i0 });
1955
2077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, decorators: [{
1956
2078
  type: Directive,
1957
2079
  args: [{
1958
2080
  selector: '[seamTopBarItem]'
1959
2081
  }]
1960
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2082
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { seamTopBarItem: [{
2083
+ type: Input
2084
+ }] } });
1961
2085
 
1962
2086
  class TopBarMenuBtnDetailDirective {
1963
2087
  constructor(template) {
@@ -2013,8 +2137,26 @@ class TheSeamTopBarComponent {
2013
2137
  this.logoRoute = '/';
2014
2138
  /** Determines if the title should be displayed. */
2015
2139
  this.hasTitle = false;
2140
+ /** Determines if the top bar button should be displayed. */
2141
+ this.hasTopBarMenuButton = true;
2016
2142
  /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
2017
2143
  this.profileIcon = faUserCircle;
2144
+ /** Icon to display for mobile nav toggle. Defaults to faBars. */
2145
+ this.toggleIcon = faBars;
2146
+ /** Display nav toggle on either left or right side of top bar. Defaults to left. */
2147
+ this.navToggleAlign = 'left';
2148
+ /** @ignore */
2149
+ this._leftItems = new BehaviorSubject([]);
2150
+ /** Additional templates to display on left side of top bar */
2151
+ this.leftItems$ = this._leftItems.asObservable();
2152
+ /** @ignore */
2153
+ this._centerItems = new BehaviorSubject([]);
2154
+ /** Additional templates to display in center of top bar */
2155
+ this.centerItems$ = this._centerItems.asObservable();
2156
+ /** @ignore */
2157
+ this._rightItems = new BehaviorSubject([]);
2158
+ /** Additional templates to display on right side of top bar */
2159
+ this.rightItems$ = this._rightItems.asObservable();
2018
2160
  this.isMobile$ = this._layout.isMobile$;
2019
2161
  }
2020
2162
  /** @ignore */
@@ -2025,18 +2167,29 @@ class TheSeamTopBarComponent {
2025
2167
  /** @ignore */
2026
2168
  ngAfterContentInit() {
2027
2169
  if (this._topBarItems) {
2028
- this._items$ = this._topBarItems.changes.pipe(startWith(undefined), takeUntil(this._ngUnsubscribe), map(() => this._topBarItems?.toArray() || []), shareReplay({ bufferSize: 1, refCount: true }));
2170
+ this._topBarItems.changes.pipe(startWith(undefined), takeUntil(this._ngUnsubscribe), map(() => {
2171
+ const items = this._topBarItems?.toArray() || [];
2172
+ const left = items.filter(i => i.position === 'left');
2173
+ const right = items.filter(i => i.position === 'right');
2174
+ const center = items.filter(i => i.position === 'center');
2175
+ this._leftItems.next(left);
2176
+ this._rightItems.next(right);
2177
+ this._centerItems.next(center);
2178
+ }), shareReplay({ bufferSize: 1, refCount: true })).subscribe();
2029
2179
  }
2030
2180
  }
2031
2181
  }
2032
2182
  TheSeamTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
2033
- TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamTopBarComponent, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", profileIcon: "profileIcon" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar-icon-container{margin:auto 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: i2$1.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "directive", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2183
+ TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamTopBarComponent, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", hasTopBarMenuButton: "hasTopBarMenuButton", profileIcon: "profileIcon", toggleIcon: "toggleIcon", navToggleAlign: "navToggleAlign" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarCompactMenuBtnDetailTpl", first: true, predicate: TopBarCompactMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarNavToggleBtnDetailTpl", first: true, predicate: TopBarNavToggleBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n </button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: i2$1.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "directive", type: BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compactDetailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2034
2184
  __decorate([
2035
2185
  InputBoolean()
2036
2186
  ], TheSeamTopBarComponent.prototype, "hasTitle", void 0);
2187
+ __decorate([
2188
+ InputBoolean()
2189
+ ], TheSeamTopBarComponent.prototype, "hasTopBarMenuButton", void 0);
2037
2190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
2038
2191
  type: Component,
2039
- args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar-icon-container{margin:auto 0}\n"] }]
2192
+ args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n </button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"] }]
2040
2193
  }], ctorParameters: function () { return [{ type: i1.TheSeamLayoutService }]; }, propDecorators: { _topBarMenu: [{
2041
2194
  type: ContentChild,
2042
2195
  args: [TopBarMenuDirective, { static: true }]
@@ -2046,6 +2199,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2046
2199
  }], _topBarMenuBtnDetailTpl: [{
2047
2200
  type: ContentChild,
2048
2201
  args: [TopBarMenuBtnDetailDirective]
2202
+ }], _topBarCompactMenuBtnDetailTpl: [{
2203
+ type: ContentChild,
2204
+ args: [TopBarCompactMenuBtnDetailDirective]
2205
+ }], _topBarNavToggleBtnDetailTpl: [{
2206
+ type: ContentChild,
2207
+ args: [TopBarNavToggleBtnDetailDirective]
2049
2208
  }], logo: [{
2050
2209
  type: Input
2051
2210
  }], logoSm: [{
@@ -2062,8 +2221,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2062
2221
  type: Input
2063
2222
  }], subTitleText: [{
2064
2223
  type: Input
2224
+ }], hasTopBarMenuButton: [{
2225
+ type: Input
2065
2226
  }], profileIcon: [{
2066
2227
  type: Input
2228
+ }], toggleIcon: [{
2229
+ type: Input
2230
+ }], navToggleAlign: [{
2231
+ type: Input
2067
2232
  }] } });
2068
2233
 
2069
2234
  class TheSeamTopBarModule {
@@ -2074,7 +2239,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
2074
2239
  TopBarMenuButtonComponent,
2075
2240
  TopBarMenuDirective,
2076
2241
  TopBarItemDirective,
2077
- TopBarMenuBtnDetailDirective], imports: [CommonModule,
2242
+ TopBarMenuBtnDetailDirective,
2243
+ TopBarCompactMenuBtnDetailDirective,
2244
+ TopBarNavToggleBtnDetailDirective], imports: [CommonModule,
2078
2245
  TheSeamLayoutModule,
2079
2246
  TheSeamButtonsModule,
2080
2247
  TheSeamIconModule,
@@ -2085,7 +2252,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
2085
2252
  TopBarMenuDirective,
2086
2253
  TheSeamMenuModule,
2087
2254
  TopBarItemDirective,
2088
- TopBarMenuBtnDetailDirective] });
2255
+ TopBarMenuBtnDetailDirective,
2256
+ TopBarCompactMenuBtnDetailDirective,
2257
+ TopBarNavToggleBtnDetailDirective] });
2089
2258
  TheSeamTopBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarModule, imports: [CommonModule,
2090
2259
  TheSeamLayoutModule,
2091
2260
  TheSeamButtonsModule,
@@ -2102,7 +2271,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2102
2271
  TopBarMenuButtonComponent,
2103
2272
  TopBarMenuDirective,
2104
2273
  TopBarItemDirective,
2105
- TopBarMenuBtnDetailDirective
2274
+ TopBarMenuBtnDetailDirective,
2275
+ TopBarCompactMenuBtnDetailDirective,
2276
+ TopBarNavToggleBtnDetailDirective
2106
2277
  ],
2107
2278
  imports: [
2108
2279
  CommonModule,
@@ -2119,7 +2290,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2119
2290
  TopBarMenuDirective,
2120
2291
  TheSeamMenuModule,
2121
2292
  TopBarItemDirective,
2122
- TopBarMenuBtnDetailDirective
2293
+ TopBarMenuBtnDetailDirective,
2294
+ TopBarCompactMenuBtnDetailDirective,
2295
+ TopBarNavToggleBtnDetailDirective
2123
2296
  ]
2124
2297
  }]
2125
2298
  }] });
@@ -2784,7 +2957,7 @@ class TheSeamSchemaFormSubmitSplitComponent {
2784
2957
  }
2785
2958
  }
2786
2959
  TheSeamSchemaFormSubmitSplitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2787
- TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$2.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
2960
+ TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$2.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
2788
2961
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
2789
2962
  type: Component,
2790
2963
  args: [{ selector: 'seam-schema-form-submit-split', template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
@@ -2982,9 +3155,620 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2982
3155
  }]
2983
3156
  }] });
2984
3157
 
3158
+ function isHorizontalNavItemType(item, type) {
3159
+ return item.itemType === type;
3160
+ }
3161
+ function isHorizontalNavItemActive(item) {
3162
+ return item.__state?.active ?? false;
3163
+ }
3164
+ function isHorizontalNavItemExpanded(item) {
3165
+ return item.__state?.expanded ?? false;
3166
+ }
3167
+ function isHorizontalNavItemFocused(item) {
3168
+ return item.__state?.focused ?? false;
3169
+ }
3170
+ function horizontalNavItemHasChildren(item) {
3171
+ return horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
3172
+ }
3173
+ function horizontalNavItemCanHaveChildren(item) {
3174
+ return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
3175
+ }
3176
+ function horizontalNavItemHasActiveChild(item) {
3177
+ if (!horizontalNavItemHasChildren(item)) {
3178
+ return false;
3179
+ }
3180
+ for (const child of item.children) {
3181
+ if (getHorizontalNavItemStateProp(child, 'active') || horizontalNavItemHasActiveChild(child)) {
3182
+ return true;
3183
+ }
3184
+ }
3185
+ return false;
3186
+ }
3187
+ function horizontalNavItemHasExpandedChild(item) {
3188
+ if (!horizontalNavItemHasChildren(item)) {
3189
+ return false;
3190
+ }
3191
+ for (const child of item.children) {
3192
+ if (getHorizontalNavItemStateProp(child, 'expanded')) {
3193
+ return true;
3194
+ }
3195
+ }
3196
+ return false;
3197
+ }
3198
+ function horizontalNavItemCanBeActive(item) {
3199
+ return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
3200
+ }
3201
+ function horizontalNavItemCanExpand(item) {
3202
+ return horizontalNavItemCanHaveChildren(item);
3203
+ }
3204
+ function findHorizontalNavLinkItems(items) {
3205
+ const linkItems = [];
3206
+ const _fn = (_items) => {
3207
+ for (const item of _items) {
3208
+ if (isHorizontalNavItemType(item, 'link')) {
3209
+ linkItems.push(item);
3210
+ }
3211
+ if (horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children')) {
3212
+ _fn(item.children);
3213
+ }
3214
+ }
3215
+ };
3216
+ _fn(items);
3217
+ return linkItems;
3218
+ }
3219
+ function setHorizontalNavItemStateProp(item, prop, value) {
3220
+ if (hasProperty(item, '__state')) {
3221
+ item.__state[prop] = value;
3222
+ }
3223
+ }
3224
+ function getHorizontalNavItemStateProp(item, prop) {
3225
+ return setDefaultHorizontalNavItemState(item).__state[prop];
3226
+ }
3227
+ function setDefaultHorizontalNavItemState(item) {
3228
+ if (hasProperty(item, '__state')) {
3229
+ return item;
3230
+ }
3231
+ item.__state = {
3232
+ active: false,
3233
+ expanded: false,
3234
+ focused: false
3235
+ };
3236
+ // TODO: See if there is a nice way to fix the typing for this.
3237
+ return item;
3238
+ }
3239
+ function areSameHorizontalNavItem(item1, item2) {
3240
+ if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {
3241
+ return false;
3242
+ }
3243
+ if (item1.itemType !== item2.itemType) {
3244
+ return false;
3245
+ }
3246
+ if (isHorizontalNavItemType(item1, 'title') && isHorizontalNavItemType(item2, 'title')) {
3247
+ return item1.label === item2.label;
3248
+ }
3249
+ else if (isHorizontalNavItemType(item1, 'divider') && isHorizontalNavItemType(item2, 'divider')) {
3250
+ return item1.label === item2.label;
3251
+ }
3252
+ else if (isHorizontalNavItemType(item1, 'basic') && isHorizontalNavItemType(item2, 'basic')) {
3253
+ return item1.label === item2.label;
3254
+ }
3255
+ else if (isHorizontalNavItemType(item1, 'link') && isHorizontalNavItemType(item2, 'link')) {
3256
+ return item1.label === item2.label && item1.link === item2.link;
3257
+ }
3258
+ else if (isHorizontalNavItemType(item1, 'button') && isHorizontalNavItemType(item2, 'button')) {
3259
+ return item1.onClick === item2.onClick;
3260
+ }
3261
+ return false;
3262
+ }
3263
+
3264
+ class TheSeamNavService {
3265
+ constructor(_router) {
3266
+ this._router = _router;
3267
+ this._updatingCount = new BehaviorSubject(0);
3268
+ this.itemChanged = new Subject();
3269
+ this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
3270
+ }
3271
+ createItemsObservable(items) {
3272
+ return defer(() => {
3273
+ this.updateItemsStates(items);
3274
+ this.updateRouterFocusedItem(items);
3275
+ return new Observable((subscriber) => {
3276
+ const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
3277
+ if (change.prop === 'focused' && change.newValue) {
3278
+ this.updateFocusedItem(items, change.item);
3279
+ }
3280
+ return this.loading$.pipe(filter(loading => !loading));
3281
+ })).subscribe(() => {
3282
+ subscriber.next(items);
3283
+ });
3284
+ try {
3285
+ this.updateItemsStates(items);
3286
+ }
3287
+ catch (err) {
3288
+ subscriber.error(err);
3289
+ }
3290
+ const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
3291
+ try {
3292
+ this.updateItemsStates(items);
3293
+ this.updateRouterFocusedItem(items);
3294
+ }
3295
+ catch (err) {
3296
+ subscriber.error(err);
3297
+ }
3298
+ });
3299
+ return () => {
3300
+ stateChangeSub.unsubscribe();
3301
+ routeChangeSub.unsubscribe();
3302
+ };
3303
+ }).pipe(startWith(items));
3304
+ });
3305
+ }
3306
+ _incUpdatingCount() {
3307
+ this._updatingCount.next(this._updatingCount.value + 1);
3308
+ }
3309
+ _decrUpdatingCount() {
3310
+ this._updatingCount.next(this._updatingCount.value - 1);
3311
+ }
3312
+ updateItemsStates(items) {
3313
+ this._incUpdatingCount();
3314
+ try {
3315
+ for (const item of items) {
3316
+ if (horizontalNavItemHasChildren(item)) {
3317
+ this.updateItemsStates(item.children);
3318
+ }
3319
+ this.updateItemState(item);
3320
+ }
3321
+ this._decrUpdatingCount();
3322
+ }
3323
+ catch (err) {
3324
+ this._decrUpdatingCount();
3325
+ throw err;
3326
+ }
3327
+ }
3328
+ updateItemState(item) {
3329
+ this._incUpdatingCount();
3330
+ try {
3331
+ setDefaultHorizontalNavItemState(item);
3332
+ this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
3333
+ // TODO: Implement this in a more optimized way. Unless our apps start
3334
+ // having large navs constantly updating their state, this shouldn't
3335
+ // have much impact on performance.
3336
+ this._updateItemExpandedState(item);
3337
+ this._decrUpdatingCount();
3338
+ }
3339
+ catch (err) {
3340
+ this._decrUpdatingCount();
3341
+ throw err;
3342
+ }
3343
+ }
3344
+ horizontalNavLinkActive(item) {
3345
+ if (isHorizontalNavItemType(item, 'link')) {
3346
+ const url = this._getUrl(item);
3347
+ if (notNullOrUndefined(url)) {
3348
+ const opts = this._getMatchOptions(item);
3349
+ return this._router.isActive(url, opts);
3350
+ }
3351
+ }
3352
+ return false;
3353
+ }
3354
+ _updateItemsExpandedState(items) {
3355
+ for (const item of items) {
3356
+ if (horizontalNavItemHasChildren(item)) {
3357
+ this._updateItemsExpandedState(item.children);
3358
+ }
3359
+ this._updateItemExpandedState(item);
3360
+ }
3361
+ }
3362
+ _updateItemExpandedState(item) {
3363
+ if (!horizontalNavItemCanExpand(item)) {
3364
+ if (getHorizontalNavItemStateProp(item, 'expanded')) {
3365
+ this.setItemStateProp(item, 'expanded', false);
3366
+ }
3367
+ return;
3368
+ }
3369
+ if (horizontalNavItemHasChildren(item)) {
3370
+ this._updateItemsExpandedState(item.children);
3371
+ }
3372
+ if (horizontalNavItemHasActiveChild(item) || horizontalNavItemHasExpandedChild(item)) {
3373
+ if (!getHorizontalNavItemStateProp(item, 'expanded')) {
3374
+ this.setItemStateProp(item, 'expanded', true);
3375
+ }
3376
+ }
3377
+ else {
3378
+ if (getHorizontalNavItemStateProp(item, 'expanded')) {
3379
+ this.setItemStateProp(item, 'expanded', false);
3380
+ }
3381
+ }
3382
+ }
3383
+ updateRouterFocusedItem(items) {
3384
+ const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
3385
+ if (notNullOrUndefined(focusedItem)) {
3386
+ this.updateFocusedItem(items, focusedItem);
3387
+ }
3388
+ }
3389
+ updateFocusedItem(items, focusedItem) {
3390
+ for (const item of items) {
3391
+ if (areSameHorizontalNavItem(item, focusedItem)) {
3392
+ setHorizontalNavItemStateProp(item, 'focused', true);
3393
+ }
3394
+ else {
3395
+ setHorizontalNavItemStateProp(item, 'focused', false);
3396
+ }
3397
+ }
3398
+ }
3399
+ _getNavExtras(item) {
3400
+ const navigationExtras = {};
3401
+ if (hasProperty(item, 'queryParams')) {
3402
+ navigationExtras.queryParams = item.queryParams;
3403
+ }
3404
+ if (hasProperty(item, 'fragment')) {
3405
+ navigationExtras.fragment = item.fragment;
3406
+ }
3407
+ if (hasProperty(item, 'queryParamsHandling')) {
3408
+ navigationExtras.queryParamsHandling = item.queryParamsHandling;
3409
+ }
3410
+ if (hasProperty(item, 'preserveFragment')) {
3411
+ navigationExtras.preserveFragment = item.preserveFragment;
3412
+ }
3413
+ return navigationExtras;
3414
+ }
3415
+ _getUrl(item) {
3416
+ const link = item.link;
3417
+ if (typeof link === 'string') {
3418
+ return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
3419
+ }
3420
+ else if (Array.isArray(link)) {
3421
+ return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
3422
+ }
3423
+ return null;
3424
+ }
3425
+ _getMatchOptions(item) {
3426
+ const defaultMatchOpts = {
3427
+ paths: 'subset',
3428
+ queryParams: 'subset',
3429
+ fragment: 'ignored',
3430
+ matrixParams: 'ignored'
3431
+ };
3432
+ if (hasProperty(item, 'matchOptions')) {
3433
+ return {
3434
+ ...defaultMatchOpts,
3435
+ ...item.matchOptions
3436
+ };
3437
+ }
3438
+ return defaultMatchOpts;
3439
+ }
3440
+ setItemStateProp(item, prop, value) {
3441
+ const currentValue = getHorizontalNavItemStateProp(item, prop);
3442
+ if (currentValue !== value) {
3443
+ setHorizontalNavItemStateProp(item, prop, value);
3444
+ const changed = {
3445
+ item,
3446
+ prop,
3447
+ prevValue: currentValue,
3448
+ newValue: value
3449
+ };
3450
+ this.itemChanged.next(changed);
3451
+ }
3452
+ }
3453
+ }
3454
+ TheSeamNavService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
3455
+ TheSeamNavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService });
3456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, decorators: [{
3457
+ type: Injectable
3458
+ }], ctorParameters: function () { return [{ type: i1$2.Router }]; } });
3459
+
3460
+ class NavItemComponent {
3461
+ set link(value) { this._link.next(value); }
3462
+ get link() { return this._link.value; }
3463
+ set expanded(value) {
3464
+ this._expanded.next(coerceBooleanProperty(value));
3465
+ }
3466
+ get expanded() { return this._expanded.value; }
3467
+ set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
3468
+ get compact() { return this._compact.value; }
3469
+ get badgeTooltip() { return this._badgeTooltip; }
3470
+ set badgeTooltip(value) {
3471
+ if (value !== null && value !== undefined) {
3472
+ if (typeof value === 'string') {
3473
+ this._badgeTooltip = {
3474
+ tooltip: value,
3475
+ placement: 'auto',
3476
+ disabled: false
3477
+ };
3478
+ }
3479
+ else {
3480
+ this._badgeTooltip = {
3481
+ ...value,
3482
+ placement: value.placement || 'auto',
3483
+ disabled: typeof value?.disabled === 'boolean'
3484
+ ? value.disabled
3485
+ : typeof value.tooltip !== 'string'
3486
+ };
3487
+ }
3488
+ }
3489
+ else {
3490
+ this._badgeTooltip = undefined;
3491
+ }
3492
+ }
3493
+ get _isActiveCssClass() { return this.active; }
3494
+ get _isChildActiveCssClass() { return this.hasActiveChild; }
3495
+ get _isExpandedCssClass() { return this.expanded; }
3496
+ get _isFocusedCssClass() { return this.focused; }
3497
+ get _attrDataHierLevel() { return this.hierLevel; }
3498
+ constructor(_nav) {
3499
+ this._nav = _nav;
3500
+ this._ngUnsubscribe = new Subject();
3501
+ this.faAngleLeft = faAngleLeft;
3502
+ this.active = false;
3503
+ this._link = new BehaviorSubject(undefined);
3504
+ this.link$ = this._link.asObservable();
3505
+ this.hierLevel = 0;
3506
+ this.indentSize = 10;
3507
+ this._expanded = new BehaviorSubject(false);
3508
+ this.expanded$ = this._expanded.asObservable();
3509
+ this._compact = new BehaviorSubject(false);
3510
+ this.compact$ = this._compact.asObservable();
3511
+ this.focused = false;
3512
+ this.badgeTheme = 'danger';
3513
+ this.childAction = 'menu';
3514
+ this.expandAction = 'toggle';
3515
+ this.navItemExpanded = new EventEmitter();
3516
+ }
3517
+ ngOnDestroy() {
3518
+ this._ngUnsubscribe.next();
3519
+ this._ngUnsubscribe.complete();
3520
+ }
3521
+ get hasChildren() {
3522
+ return Array.isArray(this.children) && this.children.length > 0;
3523
+ }
3524
+ get hasActiveChild() {
3525
+ if (notNullOrUndefined(this.item)) {
3526
+ return horizontalNavItemHasActiveChild(this.item);
3527
+ }
3528
+ return false;
3529
+ }
3530
+ get hasMenuToggle() {
3531
+ return this.hasChildren && this.childAction === 'menu';
3532
+ }
3533
+ get menuTpl() {
3534
+ return this.hasMenuToggle ? this._menu : undefined;
3535
+ }
3536
+ get hasExpandingChildren() {
3537
+ return this.hasChildren && this.childAction === 'expand';
3538
+ }
3539
+ _toggleChildren(event) {
3540
+ let ex = !this.expanded;
3541
+ if (this.expandAction === 'expandOnly') {
3542
+ ex = true;
3543
+ }
3544
+ this.expanded = ex;
3545
+ this.navItemExpanded.emit(this.expanded);
3546
+ if (this.item && this.expanded) {
3547
+ this._nav.setItemStateProp(this.item, 'focused', this.expanded);
3548
+ }
3549
+ // Prevents seam-menu from closing out when toggling child expand
3550
+ event.stopPropagation();
3551
+ }
3552
+ // Updates expanded state when user exits seam-menu
3553
+ _menuEvent(menuExpanded) {
3554
+ if (menuExpanded === false) {
3555
+ this.expanded = false;
3556
+ // TODO: figure out why closing seam-menu with expanded submenu messes up animation
3557
+ if (this._navItems && this._navItems.length) {
3558
+ this._navItems.forEach(navItem => {
3559
+ navItem.expanded = false;
3560
+ });
3561
+ }
3562
+ }
3563
+ }
3564
+ get showIconBlock() {
3565
+ return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
3566
+ }
3567
+ }
3568
+ NavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
3569
+ NavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NavItemComponent, selector: "seam-nav-item", inputs: { 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" }, outputs: { navItemExpanded: "navItemExpanded" }, host: { properties: { "class.seam-nav-item--active": "this._isActiveCssClass", "class.seam-nav-item--child-active": "this._isChildActiveCssClass", "class.seam-nav-item--expanded": "this._isExpandedCssClass", "class.seam-nav-item--focused": "this._isFocusedCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, viewQueries: [{ propertyName: "_menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_navItems", predicate: NavItemComponent, descendants: true }], exportAs: ["seamNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid #dae0e5;width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i2$1.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i3$2.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$2.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
3570
+ trigger('childGroupAnim', [
3571
+ transition(':enter', [
3572
+ style({ height: 0 }),
3573
+ animate('0.2s ease-in-out', style({ height: '*' }))
3574
+ ]),
3575
+ transition(':leave', [
3576
+ style({ height: '*' }),
3577
+ animate('0.2s ease-in-out', style({ height: 0 }))
3578
+ ])
3579
+ ])
3580
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3581
+ __decorate([
3582
+ InputBoolean()
3583
+ ], NavItemComponent.prototype, "active", void 0);
3584
+ __decorate([
3585
+ InputNumber(0)
3586
+ ], NavItemComponent.prototype, "hierLevel", void 0);
3587
+ __decorate([
3588
+ InputNumber(10)
3589
+ ], NavItemComponent.prototype, "indentSize", void 0);
3590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, decorators: [{
3591
+ type: Component,
3592
+ args: [{ selector: 'seam-nav-item', exportAs: 'seamNavItem', animations: [
3593
+ trigger('childGroupAnim', [
3594
+ transition(':enter', [
3595
+ style({ height: 0 }),
3596
+ animate('0.2s ease-in-out', style({ height: '*' }))
3597
+ ]),
3598
+ transition(':leave', [
3599
+ style({ height: '*' }),
3600
+ animate('0.2s ease-in-out', style({ height: 0 }))
3601
+ ])
3602
+ ])
3603
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid #dae0e5;width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"] }]
3604
+ }], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { item: [{
3605
+ type: Input
3606
+ }], itemType: [{
3607
+ type: Input
3608
+ }], icon: [{
3609
+ type: Input
3610
+ }], hideEmptyIcon: [{
3611
+ type: Input
3612
+ }], label: [{
3613
+ type: Input
3614
+ }], active: [{
3615
+ type: Input
3616
+ }], link: [{
3617
+ type: Input
3618
+ }], queryParams: [{
3619
+ type: Input
3620
+ }], children: [{
3621
+ type: Input
3622
+ }], hierLevel: [{
3623
+ type: Input
3624
+ }], indentSize: [{
3625
+ type: Input
3626
+ }], expanded: [{
3627
+ type: Input
3628
+ }], compact: [{
3629
+ type: Input
3630
+ }], focused: [{
3631
+ type: Input
3632
+ }], badgeText: [{
3633
+ type: Input
3634
+ }], badgeTheme: [{
3635
+ type: Input
3636
+ }], badgeSrContent: [{
3637
+ type: Input
3638
+ }], badgeTooltip: [{
3639
+ type: Input
3640
+ }], childAction: [{
3641
+ type: Input
3642
+ }], expandAction: [{
3643
+ type: Input
3644
+ }], navItemExpanded: [{
3645
+ type: Output
3646
+ }], _isActiveCssClass: [{
3647
+ type: HostBinding,
3648
+ args: ['class.seam-nav-item--active']
3649
+ }], _isChildActiveCssClass: [{
3650
+ type: HostBinding,
3651
+ args: ['class.seam-nav-item--child-active']
3652
+ }], _isExpandedCssClass: [{
3653
+ type: HostBinding,
3654
+ args: ['class.seam-nav-item--expanded']
3655
+ }], _isFocusedCssClass: [{
3656
+ type: HostBinding,
3657
+ args: ['class.seam-nav-item--focused']
3658
+ }], _attrDataHierLevel: [{
3659
+ type: HostBinding,
3660
+ args: ['attr.data-hier-level']
3661
+ }], _menu: [{
3662
+ type: ViewChild,
3663
+ args: [MenuComponent]
3664
+ }], _navItems: [{
3665
+ type: ViewChildren,
3666
+ args: [NavItemComponent]
3667
+ }] } });
3668
+
3669
+ class HorizontalNavComponent {
3670
+ get items() { return this._items.value; }
3671
+ set items(value) {
3672
+ this._items.next(value);
3673
+ }
3674
+ constructor(_nav) {
3675
+ this._nav = _nav;
3676
+ this._ngUnsubscribe = new Subject();
3677
+ this._items = new BehaviorSubject([]);
3678
+ this.hideEmptyIcon = true;
3679
+ this.hierLevel = 0;
3680
+ this.childAction = 'menu';
3681
+ this.expandAction = 'toggle';
3682
+ this.navItemExpanded = new EventEmitter();
3683
+ this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
3684
+ }
3685
+ ngOnDestroy() {
3686
+ this._ngUnsubscribe.next();
3687
+ this._ngUnsubscribe.complete();
3688
+ }
3689
+ _navItemExpanded(item, expanded) {
3690
+ this.navItemExpanded.emit({ navItem: item, expanded });
3691
+ }
3692
+ }
3693
+ HorizontalNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
3694
+ HorizontalNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: HorizontalNavComponent, selector: "seam-horizontal-nav", inputs: { items: "items", hideEmptyIcon: "hideEmptyIcon", hierLevel: "hierLevel", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, providers: [
3695
+ TheSeamNavService
3696
+ ], ngImport: i0, template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3697
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, decorators: [{
3698
+ type: Component,
3699
+ args: [{ selector: 'seam-horizontal-nav', providers: [
3700
+ TheSeamNavService
3701
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"] }]
3702
+ }], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { items: [{
3703
+ type: Input
3704
+ }], hideEmptyIcon: [{
3705
+ type: Input
3706
+ }], hierLevel: [{
3707
+ type: Input
3708
+ }], childAction: [{
3709
+ type: Input
3710
+ }], expandAction: [{
3711
+ type: Input
3712
+ }], navItemExpanded: [{
3713
+ type: Output
3714
+ }] } });
3715
+
3716
+ class TheSeamNavModule {
3717
+ }
3718
+ TheSeamNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3719
+ TheSeamNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, declarations: [NavItemComponent,
3720
+ HorizontalNavComponent], imports: [CommonModule,
3721
+ RouterModule,
3722
+ TheSeamIconModule,
3723
+ A11yModule,
3724
+ TheSeamScrollbarModule,
3725
+ TheSeamLayoutModule,
3726
+ NgbTooltipModule,
3727
+ PortalModule,
3728
+ TheSeamMenuModule], exports: [NavItemComponent,
3729
+ HorizontalNavComponent] });
3730
+ TheSeamNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, providers: [
3731
+ TheSeamNavService,
3732
+ ], imports: [CommonModule,
3733
+ RouterModule,
3734
+ TheSeamIconModule,
3735
+ A11yModule,
3736
+ TheSeamScrollbarModule,
3737
+ TheSeamLayoutModule,
3738
+ NgbTooltipModule,
3739
+ PortalModule,
3740
+ TheSeamMenuModule] });
3741
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, decorators: [{
3742
+ type: NgModule,
3743
+ args: [{
3744
+ declarations: [
3745
+ NavItemComponent,
3746
+ HorizontalNavComponent,
3747
+ ],
3748
+ imports: [
3749
+ CommonModule,
3750
+ RouterModule,
3751
+ TheSeamIconModule,
3752
+ A11yModule,
3753
+ TheSeamScrollbarModule,
3754
+ TheSeamLayoutModule,
3755
+ NgbTooltipModule,
3756
+ PortalModule,
3757
+ TheSeamMenuModule
3758
+ ],
3759
+ exports: [
3760
+ NavItemComponent,
3761
+ HorizontalNavComponent,
3762
+ ],
3763
+ providers: [
3764
+ TheSeamNavService,
3765
+ ]
3766
+ }]
3767
+ }] });
3768
+
2985
3769
  /**
2986
3770
  * Generated bundle index. Do not edit.
2987
3771
  */
2988
3772
 
2989
- export { BaseLayoutContentDirective, BaseLayoutContentFooterDirective, BaseLayoutContentHeaderDirective, BaseLayoutNavToggleDirective, BaseLayoutSideBarDirective, BaseLayoutSideBarFooterDirective, BaseLayoutTopBarDirective, DashboardComponent, DashboardWidgetContainerComponent, DashboardWidgetPortalOutletDirective, DashboardWidgetTemplateContainerComponent, DashboardWidgetsComponent, DashboardWidgetsPreferencesService, DashboardWidgetsService, HierarchyLevelResolver, HierarchyRouterOutletComponent, SideNavComponent, SideNavItemComponent, SideNavToggleComponent, THESEAM_BASE_LAYOUT_REF, THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, THESEAM_SIDE_NAV_ACCESSOR, THE_SEAM_BASE_LAYOUT, TheSeamBaseLayoutComponent, TheSeamBaseLayoutModule, TheSeamDashboardModule, TheSeamDynamicRouterModule, TheSeamFramework, TheSeamSchemaFormFrameworkComponent, TheSeamSchemaFormModule, TheSeamSideNavModule, TheSeamTopBarComponent, TheSeamTopBarModule, TopBarItemDirective, TopBarMenuBtnDetailDirective, TopBarMenuButtonComponent, TopBarMenuDirective, TopBarTitleComponent, canBeActive, canExpand, canHaveChildren, fader, findLinkItems, getItemStateProp, hasActiveChild, hasChildren, hasExpandedChild, isExpanded, isNavItemActive, isNavItemType, routeChanges, setDefaultState, setItemStateProp, sideNavExpandStateChangeFn, sideToSide, slider, stepper, transformer };
3773
+ export { BaseLayoutContentDirective, BaseLayoutContentFooterDirective, BaseLayoutContentHeaderDirective, BaseLayoutNavToggleDirective, BaseLayoutSideBarDirective, BaseLayoutSideBarFooterDirective, BaseLayoutSideBarHeaderDirective, BaseLayoutTopBarDirective, DashboardComponent, DashboardWidgetContainerComponent, DashboardWidgetPortalOutletDirective, DashboardWidgetTemplateContainerComponent, DashboardWidgetsComponent, DashboardWidgetsPreferencesService, DashboardWidgetsService, HierarchyLevelResolver, HierarchyRouterOutletComponent, HorizontalNavComponent, NavItemComponent, SideNavComponent, SideNavItemComponent, SideNavToggleComponent, THESEAM_BASE_LAYOUT_REF, THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, THESEAM_SIDE_NAV_ACCESSOR, THE_SEAM_BASE_LAYOUT, TheSeamBaseLayoutComponent, TheSeamBaseLayoutModule, TheSeamDashboardModule, TheSeamDynamicRouterModule, TheSeamFramework, TheSeamNavModule, TheSeamSchemaFormFrameworkComponent, TheSeamSchemaFormModule, TheSeamSideNavModule, TheSeamTopBarComponent, TheSeamTopBarModule, TopBarCompactMenuBtnDetailDirective, TopBarItemDirective, TopBarMenuBtnDetailDirective, TopBarMenuButtonComponent, TopBarMenuDirective, TopBarNavToggleBtnDetailDirective, TopBarTitleComponent, areSameHorizontalNavItem, canBeActive, canExpand, canHaveChildren, fader, findHorizontalNavLinkItems, findLinkItems, getHorizontalNavItemStateProp, getItemStateProp, hasActiveChild, hasChildren, hasExpandedChild, horizontalNavItemCanBeActive, horizontalNavItemCanExpand, horizontalNavItemCanHaveChildren, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isExpanded, isHorizontalNavItemActive, isHorizontalNavItemExpanded, isHorizontalNavItemFocused, isHorizontalNavItemType, isNavItemActive, isNavItemType, routeChanges, setDefaultHorizontalNavItemState, setDefaultState, setHorizontalNavItemStateProp, setItemStateProp, sideNavExpandStateChangeFn, sideToSide, slider, stepper, transformer };
2990
3774
  //# sourceMappingURL=theseam-ui-common-framework.mjs.map