@theseam/ui-common 0.4.11 → 0.4.12-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/buttons/public-api.d.ts +1 -0
  3. package/buttons/testing/anchor-badge-button.harness.d.ts +16 -0
  4. package/buttons/testing/anchor-button.harness.d.ts +16 -0
  5. package/buttons/testing/badge-button.harness.d.ts +15 -0
  6. package/buttons/testing/base-badge-button.harness.d.ts +15 -0
  7. package/buttons/testing/base-button.harness.d.ts +19 -0
  8. package/buttons/testing/button.harness.d.ts +15 -0
  9. package/buttons/testing/index.d.ts +5 -0
  10. package/buttons/testing/toggle-button.harness.d.ts +21 -0
  11. package/checkbox/checkbox.component.d.ts +1 -1
  12. package/checkbox/checkbox.module.d.ts +2 -3
  13. package/datatable/datatable/datatable.component.d.ts +10 -1
  14. package/datatable/datatable.module.d.ts +1 -1
  15. package/datatable/models/action-item-column-position.d.ts +13 -0
  16. package/datatable/services/columns-manager.service.d.ts +7 -0
  17. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  18. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  19. package/esm2020/buttons/button/button.component.mjs +2 -1
  20. package/esm2020/buttons/public-api.mjs +2 -1
  21. package/esm2020/buttons/testing/anchor-badge-button.harness.mjs +18 -0
  22. package/esm2020/buttons/testing/anchor-button.harness.mjs +18 -0
  23. package/esm2020/buttons/testing/badge-button.harness.mjs +14 -0
  24. package/esm2020/buttons/testing/base-badge-button.harness.mjs +29 -0
  25. package/esm2020/buttons/testing/base-button.harness.mjs +41 -0
  26. package/esm2020/buttons/testing/button.harness.mjs +16 -0
  27. package/esm2020/buttons/testing/index.mjs +6 -0
  28. package/esm2020/buttons/testing/toggle-button.harness.mjs +25 -0
  29. package/esm2020/carousel/carousel.component.mjs +2 -1
  30. package/esm2020/checkbox/checkbox.component.mjs +8 -3
  31. package/esm2020/checkbox/checkbox.module.mjs +5 -12
  32. package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
  33. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  34. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  35. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  36. package/esm2020/datatable/datatable.module.mjs +5 -5
  37. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  38. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  39. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  40. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  41. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  42. package/esm2020/form-field/form-field.component.mjs +4 -4
  43. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  44. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  45. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  46. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  47. package/esm2020/framework/base-layout/index.mjs +2 -1
  48. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  49. package/esm2020/framework/nav/index.mjs +6 -0
  50. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  51. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  52. package/esm2020/framework/nav/nav.models.mjs +2 -0
  53. package/esm2020/framework/nav/nav.module.mjs +67 -0
  54. package/esm2020/framework/nav/nav.service.mjs +204 -0
  55. package/esm2020/framework/public-api.mjs +2 -1
  56. package/esm2020/framework/schema-form/index.mjs +2 -1
  57. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +6 -3
  58. package/esm2020/framework/schema-form/schema-form-framework.mjs +62 -7
  59. package/esm2020/framework/schema-form/schema-form-widget.mjs +2 -0
  60. package/esm2020/framework/schema-form/schema-form.module.mjs +1 -8
  61. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +21 -11
  62. package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +20 -0
  63. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +17 -8
  64. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +14 -5
  65. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +19 -9
  66. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +21 -13
  67. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +30 -18
  68. package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +48 -0
  69. package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +57 -0
  70. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
  71. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  72. package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
  73. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  74. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  75. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  76. package/esm2020/framework/top-bar/index.mjs +3 -1
  77. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  78. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  79. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  80. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  81. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  82. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  83. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  84. package/esm2020/layout/layout.service.mjs +12 -2
  85. package/esm2020/menu/menu-item.component.mjs +3 -3
  86. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  87. package/esm2020/menu/public-api.mjs +5 -1
  88. package/esm2020/menu/testing/menu-footer.harness.mjs +28 -0
  89. package/esm2020/menu/testing/menu-header.harness.mjs +23 -0
  90. package/esm2020/menu/testing/menu-item.harness.mjs +59 -0
  91. package/esm2020/menu/testing/menu.harness.mjs +163 -0
  92. package/esm2020/menu/testing/utils.mjs +13 -0
  93. package/esm2020/story-helpers/args-to-tpl.mjs +83 -0
  94. package/esm2020/story-helpers/public-api.mjs +2 -2
  95. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
  96. package/esm2020/tel-input/public-api.mjs +2 -1
  97. package/esm2020/tel-input/tel-input/tel-input.component.mjs +22 -10
  98. package/esm2020/tel-input/tel-input.directive.mjs +12 -13
  99. package/esm2020/tel-input/tel-input.module.mjs +10 -9
  100. package/esm2020/tel-input/testing/tel-input.harness.mjs +49 -0
  101. package/esm2020/testing/harnesses/ng-select-dropdown.harness.mjs +39 -0
  102. package/esm2020/testing/harnesses/ng-select-option.harness.mjs +26 -0
  103. package/esm2020/testing/harnesses/ng-select.harness.mjs +104 -0
  104. package/esm2020/testing/public-api.mjs +4 -1
  105. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +1 -1
  106. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  107. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  108. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  109. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  110. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  111. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  112. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  113. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  114. package/fesm2015/theseam-ui-common-buttons.mjs +181 -3
  115. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  116. package/fesm2015/theseam-ui-common-carousel.mjs +1 -0
  117. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  118. package/fesm2015/theseam-ui-common-checkbox.mjs +12 -14
  119. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  120. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  121. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  122. package/fesm2015/theseam-ui-common-datatable.mjs +60 -14
  123. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  124. package/fesm2015/theseam-ui-common-form-field.mjs +3 -3
  125. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  126. package/fesm2015/theseam-ui-common-framework.mjs +1155 -322
  127. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  128. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  129. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  130. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  131. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  132. package/fesm2015/theseam-ui-common-menu.mjs +337 -6
  133. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  134. package/fesm2015/theseam-ui-common-story-helpers.mjs +86 -1
  135. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  136. package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
  137. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  138. package/fesm2015/theseam-ui-common-tel-input.mjs +105 -29
  139. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  140. package/fesm2015/theseam-ui-common-testing.mjs +197 -1
  141. package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
  142. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  143. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  144. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  145. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  146. package/fesm2020/theseam-ui-common-buttons.mjs +154 -2
  147. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  148. package/fesm2020/theseam-ui-common-carousel.mjs +1 -0
  149. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  150. package/fesm2020/theseam-ui-common-checkbox.mjs +12 -14
  151. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  152. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  153. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  154. package/fesm2020/theseam-ui-common-datatable.mjs +60 -14
  155. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  156. package/fesm2020/theseam-ui-common-form-field.mjs +3 -3
  157. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  158. package/fesm2020/theseam-ui-common-framework.mjs +1151 -326
  159. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  160. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  161. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  162. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  163. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  164. package/fesm2020/theseam-ui-common-menu.mjs +283 -5
  165. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  166. package/fesm2020/theseam-ui-common-story-helpers.mjs +84 -1
  167. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  168. package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
  169. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  170. package/fesm2020/theseam-ui-common-tel-input.mjs +89 -29
  171. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  172. package/fesm2020/theseam-ui-common-testing.mjs +165 -1
  173. package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
  174. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  175. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  176. package/framework/base-layout/base-layout.component.d.ts +4 -2
  177. package/framework/base-layout/base-layout.component.scss +18 -10
  178. package/framework/base-layout/base-layout.module.d.ts +11 -10
  179. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  180. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  181. package/framework/base-layout/index.d.ts +1 -0
  182. package/framework/base-layout/styles/_variables.scss +21 -0
  183. package/framework/nav/_nav-theme.scss +4 -0
  184. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  185. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  186. package/framework/nav/index.d.ts +5 -0
  187. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  188. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  189. package/framework/nav/nav-utils.d.ts +20 -0
  190. package/framework/nav/nav.models.d.ts +77 -0
  191. package/framework/nav/nav.module.d.ts +17 -0
  192. package/framework/nav/nav.service.d.ts +27 -0
  193. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  194. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  195. package/framework/nav/styles/_utilities.scss +3 -0
  196. package/framework/nav/styles/_variables.scss +2 -0
  197. package/framework/public-api.d.ts +1 -0
  198. package/framework/schema-form/index.d.ts +1 -0
  199. package/framework/schema-form/schema-form-framework.d.ts +12 -1
  200. package/framework/schema-form/schema-form-widget.d.ts +61 -0
  201. package/framework/schema-form/schema-form.module.d.ts +1 -2
  202. package/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.d.ts +12 -11
  203. package/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.d.ts +12 -0
  204. package/framework/schema-form-controls/schema-form-input/schema-form-input.component.d.ts +10 -9
  205. package/framework/schema-form-controls/schema-form-number/schema-form-number.component.d.ts +8 -7
  206. package/framework/schema-form-controls/schema-form-select/schema-form-select.component.d.ts +10 -9
  207. package/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.d.ts +10 -9
  208. package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +10 -9
  209. package/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.d.ts +23 -0
  210. package/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.d.ts +32 -0
  211. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  212. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  213. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  214. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  215. package/framework/side-nav/side-nav.component.d.ts +13 -1
  216. package/framework/side-nav/side-nav.component.scss +0 -1
  217. package/framework/side-nav/side-nav.models.d.ts +7 -1
  218. package/framework/side-nav/side-nav.module.d.ts +1 -9
  219. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  220. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  221. package/framework/top-bar/index.d.ts +2 -0
  222. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  223. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  224. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  225. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  226. package/framework/top-bar/top-bar.component.d.ts +25 -3
  227. package/framework/top-bar/top-bar.component.scss +7 -2
  228. package/framework/top-bar/top-bar.module.d.ts +10 -8
  229. package/layout/layout.service.d.ts +9 -1
  230. package/menu/menu-footer-action/menu-footer-action.component.d.ts +1 -1
  231. package/menu/menu-toggle.directive.d.ts +2 -1
  232. package/menu/public-api.d.ts +4 -0
  233. package/menu/testing/menu-footer.harness.d.ts +22 -0
  234. package/menu/testing/menu-header.harness.d.ts +18 -0
  235. package/menu/testing/menu-item.harness.d.ts +37 -0
  236. package/menu/testing/menu.harness.d.ts +74 -0
  237. package/menu/testing/utils.d.ts +5 -0
  238. package/package.json +2 -2
  239. package/story-helpers/args-to-tpl.d.ts +25 -0
  240. package/story-helpers/public-api.d.ts +1 -0
  241. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
  242. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
  243. package/tel-input/public-api.d.ts +1 -0
  244. package/tel-input/tel-input/tel-input.component.d.ts +2 -2
  245. package/tel-input/tel-input.directive.d.ts +1 -1
  246. package/tel-input/tel-input.module.d.ts +7 -7
  247. package/tel-input/testing/tel-input.harness.d.ts +19 -0
  248. package/testing/harnesses/ng-select-dropdown.harness.d.ts +23 -0
  249. package/testing/harnesses/ng-select-option.harness.d.ts +18 -0
  250. package/testing/harnesses/ng-select.harness.d.ts +50 -0
  251. package/testing/public-api.d.ts +3 -0
  252. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +10 -10
  253. package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +0 -79
  254. package/framework/schema-form-controls/schema-form-controls.module.d.ts +0 -20
@@ -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, inject } 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,27 +25,31 @@ 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
- import { isArray, buildTitleMap, hasOwn, Framework, JsonSchemaFormModule, WidgetLibraryModule, JsonSchemaFormService, FrameworkLibraryService, WidgetLibraryService } from '@ajsf/core';
40
+ import { JsonSchemaFormModule, isArray, buildTitleMap, hasOwn, Framework, WidgetLibraryModule, JsonSchemaFormService, FrameworkLibraryService, WidgetLibraryService } from '@ajsf/core';
41
41
  import * as i3$3 from '@angular/forms';
42
42
  import { ReactiveFormsModule } from '@angular/forms';
43
+ import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
43
44
  import * as i4$3 from '@theseam/ui-common/form-field';
44
45
  import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
45
- import * as i5$1 from '@theseam/ui-common/checkbox';
46
- import { TheSeamCheckboxModule } from '@theseam/ui-common/checkbox';
47
- import * as i5$2 from '@ng-select/ng-select';
46
+ import * as i5$1 from '@ng-select/ng-select';
48
47
  import { NgSelectModule } from '@ng-select/ng-select';
48
+ import * as i5$2 from '@theseam/ui-common/tel-input';
49
+ import { TheSeamTelInputModule } from '@theseam/ui-common/tel-input';
50
+ import * as i6$1 from '@theseam/ui-common/tiled-select';
51
+ import { TheSeamTiledSelectModule } from '@theseam/ui-common/tiled-select';
52
+ import * as i2$3 from '@angular/cdk/platform';
49
53
 
50
54
  class BaseLayoutContentFooterDirective {
51
55
  constructor(_elementRef) {
@@ -102,22 +106,31 @@ class BaseLayoutNavToggleDirective {
102
106
  this.baseLayout.registeredNav.toggle();
103
107
  }
104
108
  }
105
- constructor(_baseLayout) {
109
+ constructor(_cdr, _baseLayout) {
110
+ this._cdr = _cdr;
106
111
  this.type = 'button';
107
112
  /** Screenreader label for the button. */
108
113
  this.ariaLabel = 'Navigation toggle';
114
+ this._toggleClass = true;
115
+ this._expandedClass = false;
109
116
  this.baseLayout = _baseLayout;
110
117
  }
118
+ ngOnInit() {
119
+ this.baseLayout?.registeredNav?.expanded$.pipe(tap(exp => {
120
+ this._expandedClass = exp;
121
+ this._cdr.markForCheck();
122
+ })).subscribe();
123
+ }
111
124
  }
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 });
125
+ 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 });
126
+ 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
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutNavToggleDirective, decorators: [{
115
128
  type: Directive,
116
129
  args: [{
117
130
  selector: 'button[seamBaseLayoutNavToggle]',
118
131
  exportAs: 'seamBaseLayoutNavToggle'
119
132
  }]
120
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
133
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
121
134
  type: Optional
122
135
  }, {
123
136
  type: Inject,
@@ -133,6 +146,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
133
146
  }], ariaLabel: [{
134
147
  type: Input,
135
148
  args: ['aria-label']
149
+ }], _toggleClass: [{
150
+ type: HostBinding,
151
+ args: ['class.base-layout-nav-toggle']
152
+ }], _expandedClass: [{
153
+ type: HostBinding,
154
+ args: ['class.base-layout-nav-toggle--expanded']
136
155
  }], _onClick: [{
137
156
  type: HostListener,
138
157
  args: ['click']
@@ -180,6 +199,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
180
199
  }]
181
200
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
182
201
 
202
+ class BaseLayoutSideBarHeaderDirective {
203
+ constructor(_elementRef) {
204
+ this._elementRef = _elementRef;
205
+ }
206
+ }
207
+ BaseLayoutSideBarHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
208
+ BaseLayoutSideBarHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: BaseLayoutSideBarHeaderDirective, selector: "[seamBaseLayoutSideBarHeader]", ngImport: i0 });
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, decorators: [{
210
+ type: Directive,
211
+ args: [{
212
+ selector: '[seamBaseLayoutSideBarHeader]'
213
+ }]
214
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
215
+
183
216
  const THE_SEAM_BASE_LAYOUT = {
184
217
  provide: THESEAM_BASE_LAYOUT_REF,
185
218
  // tslint:disable-next-line:no-use-before-declare
@@ -195,6 +228,7 @@ class TheSeamBaseLayoutComponent {
195
228
  this.faAngleDoubleRight = faAngleDoubleRight;
196
229
  this.faAngleDoubleLeft = faAngleDoubleLeft;
197
230
  this.overlayNav = false;
231
+ this.showSidebar = true;
198
232
  this._hasSideBar = new BehaviorSubject(false);
199
233
  this._registeredNav = new BehaviorSubject(undefined);
200
234
  this.registeredNav$ = this._registeredNav.asObservable();
@@ -204,12 +238,17 @@ class TheSeamBaseLayoutComponent {
204
238
  this.hasSideBar$ = this._hasSideBar.asObservable();
205
239
  }
206
240
  ngOnInit() {
241
+ if (this.mobileBreakpoint) {
242
+ this._layout.setMobileBreakpoint(this.mobileBreakpoint);
243
+ }
207
244
  if (this._topBarTpl) {
208
245
  this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef);
209
246
  }
210
247
  if (this._sideBarTpl) {
211
248
  this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef);
212
- this._hasSideBar.next(true);
249
+ if (this.showSidebar) {
250
+ this._hasSideBar.next(true);
251
+ }
213
252
  }
214
253
  if (this._contentTpl) {
215
254
  this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef);
@@ -265,12 +304,16 @@ class TheSeamBaseLayoutComponent {
265
304
  }
266
305
  }
267
306
  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 });
307
+ 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
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamBaseLayoutComponent, decorators: [{
270
309
  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"] }]
310
+ 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
311
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }]; }, propDecorators: { overlayNav: [{
273
312
  type: Input
313
+ }], mobileBreakpoint: [{
314
+ type: Input
315
+ }], showSidebar: [{
316
+ type: Input
274
317
  }], _topBarTpl: [{
275
318
  type: ContentChild,
276
319
  args: [BaseLayoutTopBarDirective, { static: true, read: TemplateRef }]
@@ -295,6 +338,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
295
338
  BaseLayoutContentDirective,
296
339
  BaseLayoutSideBarDirective,
297
340
  BaseLayoutSideBarFooterDirective,
341
+ BaseLayoutSideBarHeaderDirective,
298
342
  BaseLayoutTopBarDirective,
299
343
  BaseLayoutNavToggleDirective,
300
344
  BaseLayoutContentHeaderDirective,
@@ -306,6 +350,7 @@ TheSeamBaseLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
306
350
  BaseLayoutContentDirective,
307
351
  BaseLayoutSideBarDirective,
308
352
  BaseLayoutSideBarFooterDirective,
353
+ BaseLayoutSideBarHeaderDirective,
309
354
  BaseLayoutTopBarDirective,
310
355
  BaseLayoutNavToggleDirective,
311
356
  BaseLayoutContentHeaderDirective,
@@ -323,6 +368,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
323
368
  BaseLayoutContentDirective,
324
369
  BaseLayoutSideBarDirective,
325
370
  BaseLayoutSideBarFooterDirective,
371
+ BaseLayoutSideBarHeaderDirective,
326
372
  BaseLayoutTopBarDirective,
327
373
  BaseLayoutNavToggleDirective,
328
374
  BaseLayoutContentHeaderDirective,
@@ -340,6 +386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
340
386
  BaseLayoutContentDirective,
341
387
  BaseLayoutSideBarDirective,
342
388
  BaseLayoutSideBarFooterDirective,
389
+ BaseLayoutSideBarHeaderDirective,
343
390
  BaseLayoutTopBarDirective,
344
391
  BaseLayoutNavToggleDirective,
345
392
  BaseLayoutContentHeaderDirective,
@@ -1098,8 +1145,6 @@ const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken('THESEAM_SIDE_NAV_ACCESSOR'
1098
1145
 
1099
1146
  const EXPANDED_STATE$1 = 'expanded';
1100
1147
  const COLLAPSED_STATE$1 = 'collapsed';
1101
- const FULL_STATE = 'full';
1102
- const COMPACT_STATE = 'compact';
1103
1148
  class SideNavItemComponent {
1104
1149
  set link(value) { this._link.next(value); }
1105
1150
  get link() { return this._link.value; }
@@ -1125,7 +1170,7 @@ class SideNavItemComponent {
1125
1170
  container: value.container || 'body',
1126
1171
  disabled: typeof value?.disabled === 'boolean'
1127
1172
  ? value.disabled
1128
- : typeof value.tooltip !== 'string'
1173
+ : typeof value.tooltip === 'string',
1129
1174
  };
1130
1175
  }
1131
1176
  }
@@ -1135,9 +1180,8 @@ class SideNavItemComponent {
1135
1180
  }
1136
1181
  get _isActiveCssClass() { return this.active; }
1137
1182
  get _attrDataHierLevel() { return this.hierLevel; }
1138
- constructor(_sideNav, _parent) {
1183
+ constructor(_sideNav) {
1139
1184
  this._sideNav = _sideNav;
1140
- this._parent = _parent;
1141
1185
  this._ngUnsubscribe = new Subject();
1142
1186
  this.faAngleLeft = faAngleLeft;
1143
1187
  this.active = false;
@@ -1151,9 +1195,7 @@ class SideNavItemComponent {
1151
1195
  this.compact$ = this._compact.asObservable();
1152
1196
  this.badgeTheme = 'danger';
1153
1197
  this.childGroupAnimState$ = this.expanded$
1154
- .pipe(map(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
1155
- this.compactAnimState$ = this.compact$
1156
- .pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE));
1198
+ .pipe(map$1(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
1157
1199
  }
1158
1200
  ngOnDestroy() {
1159
1201
  this._ngUnsubscribe.next(undefined);
@@ -1171,36 +1213,17 @@ class SideNavItemComponent {
1171
1213
  this._sideNav.collapse();
1172
1214
  }
1173
1215
  }
1216
+ get showIconBlock() {
1217
+ return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
1218
+ }
1174
1219
  }
1175
- 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 });
1176
- 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", 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\">\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 [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 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\">\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\">\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 .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", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
1220
+ 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 });
1221
+ 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: [
1177
1222
  trigger('childGroupAnim', [
1178
1223
  state(EXPANDED_STATE$1, style({ height: '*' })),
1179
- state(COLLAPSED_STATE$1, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
1224
+ state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
1180
1225
  transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
1181
1226
  ]),
1182
- trigger('compactAnim', [
1183
- // transition('* <=> *', [
1184
- // query(':enter', [
1185
- // style({ opacity: '0' }),
1186
- // animate('5.2s ease-in-out', style({ opacity: '1' }))
1187
- // ], { optional: true }),
1188
- // query(':leave', [
1189
- // style({ opacity: '1' }),
1190
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1191
- // ], { optional: true })
1192
- // ])
1193
- // state(FULL_STATE, style({ opacity: '1' })),
1194
- // state(COMPACT_STATE, style({ opacity: '0' })),
1195
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
1196
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
1197
- // transition('* <=> *', [
1198
- // query(':leave', [
1199
- // style({ opacity: '1' }),
1200
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1201
- // ], { optional: true })
1202
- // ]),
1203
- ])
1204
1227
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1205
1228
  __decorate([
1206
1229
  InputBoolean()
@@ -1216,45 +1239,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1216
1239
  args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
1217
1240
  trigger('childGroupAnim', [
1218
1241
  state(EXPANDED_STATE$1, style({ height: '*' })),
1219
- state(COLLAPSED_STATE$1, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
1242
+ state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
1220
1243
  transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
1221
1244
  ]),
1222
- trigger('compactAnim', [
1223
- // transition('* <=> *', [
1224
- // query(':enter', [
1225
- // style({ opacity: '0' }),
1226
- // animate('5.2s ease-in-out', style({ opacity: '1' }))
1227
- // ], { optional: true }),
1228
- // query(':leave', [
1229
- // style({ opacity: '1' }),
1230
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1231
- // ], { optional: true })
1232
- // ])
1233
- // state(FULL_STATE, style({ opacity: '1' })),
1234
- // state(COMPACT_STATE, style({ opacity: '0' })),
1235
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),
1236
- // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [
1237
- // transition('* <=> *', [
1238
- // query(':leave', [
1239
- // style({ opacity: '1' }),
1240
- // animate('5.2s ease-in-out', style({ opacity: '0' }))
1241
- // ], { optional: true })
1242
- // ]),
1243
- ])
1244
- ], 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 [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 [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 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\">\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\">\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 .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"] }]
1245
+ ], imports: [
1246
+ CommonModule,
1247
+ RouterModule,
1248
+ TheSeamIconModule,
1249
+ A11yModule,
1250
+ NgbTooltipModule,
1251
+ ], 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"] }]
1245
1252
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1246
1253
  type: Inject,
1247
1254
  args: [THESEAM_SIDE_NAV_ACCESSOR]
1248
- }] }, { type: SideNavItemComponent, decorators: [{
1249
- type: Optional
1250
- }, {
1251
- type: SkipSelf
1252
- }, {
1253
- type: Host
1254
1255
  }] }]; }, propDecorators: { itemType: [{
1255
1256
  type: Input
1256
1257
  }], icon: [{
1257
1258
  type: Input
1259
+ }], hideEmptyIcon: [{
1260
+ type: Input
1258
1261
  }], label: [{
1259
1262
  type: Input
1260
1263
  }], active: [{
@@ -1297,7 +1300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1297
1300
 
1298
1301
  class SideNavToggleComponent {
1299
1302
  constructor() {
1300
- this.faBars = faBars;
1301
1303
  this.expanded = false;
1302
1304
  this.toggleExpand = new EventEmitter();
1303
1305
  }
@@ -1306,7 +1308,7 @@ class SideNavToggleComponent {
1306
1308
  }
1307
1309
  }
1308
1310
  SideNavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1309
- 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 });
1311
+ 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 });
1310
1312
  __decorate([
1311
1313
  InputBoolean()
1312
1314
  ], SideNavToggleComponent.prototype, "expanded", void 0);
@@ -1314,9 +1316,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1314
1316
  type: Component,
1315
1317
  args: [{ selector: 'seam-side-nav-toggle', host: {
1316
1318
  '[class.side-nav-toggle--compact]': '!expanded'
1317
- }, 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"] }]
1319
+ }, imports: [
1320
+ CommonModule,
1321
+ TheSeamIconModule,
1322
+ ], 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"] }]
1318
1323
  }], propDecorators: { expanded: [{
1319
1324
  type: Input
1325
+ }], toggleIcon: [{
1326
+ type: Input
1327
+ }], toggleTpl: [{
1328
+ type: Input
1320
1329
  }], toggleExpand: [{
1321
1330
  type: Output
1322
1331
  }] } });
@@ -1625,14 +1634,20 @@ class SideNavComponent {
1625
1634
  this._sideNav = _sideNav;
1626
1635
  this._baseLayoutRef = _baseLayoutRef;
1627
1636
  this._ngUnsubscribe = new Subject();
1637
+ this.faBars = faBars;
1628
1638
  // @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE
1629
1639
  // _sideNavExpand = EXPANDED_STATE
1630
1640
  // @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE
1631
1641
  this._sideNavExpand = 'initial';
1632
1642
  this.hasHeaderToggle = true;
1643
+ this.toggleIcon = faBars;
1633
1644
  this._items = new BehaviorSubject([]);
1645
+ this.indentSize = 10;
1634
1646
  this._expanded = new BehaviorSubject(true);
1635
1647
  this.expanded$ = this._expanded.asObservable();
1648
+ this.expandOrigin = 'left';
1649
+ this.expandHeight = '100%';
1650
+ this.expandWidth = 'calc(100vw - 50px)';
1636
1651
  this._overlay = new BehaviorSubject(false);
1637
1652
  this.overlay$ = this._overlay.asObservable();
1638
1653
  this._menuItemTooltipConfig = {
@@ -1642,7 +1657,7 @@ class SideNavComponent {
1642
1657
  };
1643
1658
  this.toggleExpand = new EventEmitter();
1644
1659
  this._backdropHidden = new BehaviorSubject(true);
1645
- this.items$ = this._items.asObservable().pipe(switchMap(items => this._sideNav.createItemsObservable(items)), shareReplay({ bufferSize: 1, refCount: true }));
1660
+ this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
1646
1661
  this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
1647
1662
  this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
1648
1663
  ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
@@ -1667,6 +1682,9 @@ class SideNavComponent {
1667
1682
  this.sideNavExpandedState$
1668
1683
  .pipe(takeUntil(this._ngUnsubscribe))
1669
1684
  .subscribe(v => this._sideNavExpand = v);
1685
+ if (this._sideBarHeaderTpl) {
1686
+ this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
1687
+ }
1670
1688
  if (this._sideBarFooterTpl) {
1671
1689
  this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef);
1672
1690
  }
@@ -1697,16 +1715,32 @@ class SideNavComponent {
1697
1715
  this._backdropHidden.next(true);
1698
1716
  }
1699
1717
  }
1718
+ get expandOriginTransform() {
1719
+ switch (this.expandOrigin) {
1720
+ case 'right':
1721
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(100vw) translateX(-100%)'
1722
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(100vw)' : null;
1723
+ case 'top':
1724
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(0)'
1725
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(-100%)' : null;
1726
+ case 'bottom':
1727
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(100vh) translateY(-100%)'
1728
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(100vh)' : null;
1729
+ case 'left':
1730
+ default:
1731
+ return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(0)'
1732
+ : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(-100%)' : null;
1733
+ }
1734
+ }
1700
1735
  }
1701
1736
  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 });
1702
- 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", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
1737
+ 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: [
1703
1738
  TheSeamSideNavService,
1704
1739
  {
1705
1740
  provide: THESEAM_SIDE_NAV_ACCESSOR,
1706
- // tslint:disable-next-line:no-use-before-declare
1707
- useExisting: forwardRef(() => SideNavComponent)
1741
+ useExisting: SideNavComponent
1708
1742
  },
1709
- ], 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 [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 [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\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", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
1743
+ ], 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: [
1710
1744
  //
1711
1745
  // TODO: This animation code turned into a mess. Clean it up and make it
1712
1746
  // more smooth.
@@ -1729,32 +1763,42 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
1729
1763
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1730
1764
  ]),
1731
1765
  trigger('sideNavExpand', [
1732
- // TODO: Make width configurable.
1766
+ // TODO: Make width configurable for non-overlay state.
1733
1767
  state(EXPANDED_STATE, style({ width: '260px' })),
1734
1768
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
1735
1769
  state(EXPANDED_OVERLAY_STATE, style({
1736
1770
  position: 'absolute',
1737
1771
  top: 0,
1738
- height: '100%',
1739
1772
  bottom: 0,
1740
1773
  left: 0,
1741
- float: 'left',
1774
+ height: '{{ height }}',
1775
+ width: '{{ width }}',
1776
+ transform: '{{ origin }}',
1742
1777
  zIndex: '9999',
1743
- width: 'calc(100vw - 50px)',
1744
- transform: 'translateX(0)'
1745
- })),
1778
+ }), {
1779
+ params: {
1780
+ origin: 'translateX(100%)',
1781
+ height: '100%',
1782
+ width: 'calc(100vw - 50px)',
1783
+ }
1784
+ }),
1746
1785
  state(COLLAPSED_OVERLAY_STATE, style({
1747
1786
  position: 'absolute',
1748
1787
  top: 0,
1749
- height: '100%',
1750
1788
  bottom: 0,
1751
1789
  left: 0,
1752
- float: 'left',
1790
+ height: '{{ height }}',
1791
+ width: '{{ width }}',
1792
+ transform: '{{ origin }}',
1793
+ 'overflow-x': 'hidden',
1753
1794
  zIndex: '9999',
1754
- width: 'calc(100vw - 50px)',
1755
- transform: 'translateX(calc(-100vw + 50px))',
1756
- 'overflow-x': 'hidden'
1757
- })),
1795
+ }), {
1796
+ params: {
1797
+ origin: 'translateX(0)',
1798
+ height: '100%',
1799
+ width: 'calc(100vw - 50px)',
1800
+ }
1801
+ }),
1758
1802
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
1759
1803
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1760
1804
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -1772,14 +1816,16 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
1772
1816
  __decorate([
1773
1817
  InputBoolean()
1774
1818
  ], SideNavComponent.prototype, "hasHeaderToggle", void 0);
1819
+ __decorate([
1820
+ InputNumber(10)
1821
+ ], SideNavComponent.prototype, "indentSize", void 0);
1775
1822
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, decorators: [{
1776
1823
  type: Component,
1777
1824
  args: [{ selector: 'seam-side-nav', providers: [
1778
1825
  TheSeamSideNavService,
1779
1826
  {
1780
1827
  provide: THESEAM_SIDE_NAV_ACCESSOR,
1781
- // tslint:disable-next-line:no-use-before-declare
1782
- useExisting: forwardRef(() => SideNavComponent)
1828
+ useExisting: SideNavComponent
1783
1829
  },
1784
1830
  ], animations: [
1785
1831
  //
@@ -1804,32 +1850,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1804
1850
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1805
1851
  ]),
1806
1852
  trigger('sideNavExpand', [
1807
- // TODO: Make width configurable.
1853
+ // TODO: Make width configurable for non-overlay state.
1808
1854
  state(EXPANDED_STATE, style({ width: '260px' })),
1809
1855
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
1810
1856
  state(EXPANDED_OVERLAY_STATE, style({
1811
1857
  position: 'absolute',
1812
1858
  top: 0,
1813
- height: '100%',
1814
1859
  bottom: 0,
1815
1860
  left: 0,
1816
- float: 'left',
1861
+ height: '{{ height }}',
1862
+ width: '{{ width }}',
1863
+ transform: '{{ origin }}',
1817
1864
  zIndex: '9999',
1818
- width: 'calc(100vw - 50px)',
1819
- transform: 'translateX(0)'
1820
- })),
1865
+ }), {
1866
+ params: {
1867
+ origin: 'translateX(100%)',
1868
+ height: '100%',
1869
+ width: 'calc(100vw - 50px)',
1870
+ }
1871
+ }),
1821
1872
  state(COLLAPSED_OVERLAY_STATE, style({
1822
1873
  position: 'absolute',
1823
1874
  top: 0,
1824
- height: '100%',
1825
1875
  bottom: 0,
1826
1876
  left: 0,
1827
- float: 'left',
1877
+ height: '{{ height }}',
1878
+ width: '{{ width }}',
1879
+ transform: '{{ origin }}',
1880
+ 'overflow-x': 'hidden',
1828
1881
  zIndex: '9999',
1829
- width: 'calc(100vw - 50px)',
1830
- transform: 'translateX(calc(-100vw + 50px))',
1831
- 'overflow-x': 'hidden'
1832
- })),
1882
+ }), {
1883
+ params: {
1884
+ origin: 'translateX(0)',
1885
+ height: '100%',
1886
+ width: 'calc(100vw - 50px)',
1887
+ }
1888
+ }),
1833
1889
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
1834
1890
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
1835
1891
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -1843,7 +1899,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1843
1899
  // ])
1844
1900
  // ]),
1845
1901
  ])
1846
- ], 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 [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 [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\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"] }]
1902
+ ], imports: [
1903
+ CommonModule,
1904
+ A11yModule,
1905
+ TheSeamScrollbarModule,
1906
+ TheSeamLayoutModule,
1907
+ PortalModule,
1908
+ SideNavItemComponent,
1909
+ SideNavToggleComponent,
1910
+ ], 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"] }]
1847
1911
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }, { type: TheSeamSideNavService }, { type: undefined, decorators: [{
1848
1912
  type: Optional
1849
1913
  }, {
@@ -1854,16 +1918,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1854
1918
  args: ['@sideNavAnim']
1855
1919
  }], hasHeaderToggle: [{
1856
1920
  type: Input
1921
+ }], toggleIcon: [{
1922
+ type: Input
1923
+ }], toggleTpl: [{
1924
+ type: Input
1857
1925
  }], items: [{
1858
1926
  type: Input
1927
+ }], hideEmptyIcon: [{
1928
+ type: Input
1929
+ }], indentSize: [{
1930
+ type: Input
1859
1931
  }], expanded: [{
1860
1932
  type: Input
1933
+ }], expandOrigin: [{
1934
+ type: Input
1935
+ }], expandHeight: [{
1936
+ type: Input
1937
+ }], expandWidth: [{
1938
+ type: Input
1861
1939
  }], overlay: [{
1862
1940
  type: Input
1863
1941
  }], menuItemTooltipConfig: [{
1864
1942
  type: Input
1865
1943
  }], toggleExpand: [{
1866
1944
  type: Output
1945
+ }], _sideBarHeaderTpl: [{
1946
+ type: ContentChild,
1947
+ args: [BaseLayoutSideBarHeaderDirective, { static: true, read: TemplateRef }]
1867
1948
  }], _sideBarFooterTpl: [{
1868
1949
  type: ContentChild,
1869
1950
  args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
@@ -1872,48 +1953,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1872
1953
  class TheSeamSideNavModule {
1873
1954
  }
1874
1955
  TheSeamSideNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1875
- TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, declarations: [SideNavItemComponent,
1956
+ TheSeamSideNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
1876
1957
  SideNavComponent,
1877
- SideNavToggleComponent], imports: [CommonModule,
1878
- RouterModule,
1879
- TheSeamIconModule,
1880
- A11yModule,
1881
- TheSeamScrollbarModule,
1882
- TheSeamLayoutModule,
1883
- NgbTooltipModule,
1884
- PortalModule], exports: [SideNavItemComponent,
1958
+ SideNavToggleComponent], exports: [SideNavItemComponent,
1959
+ SideNavComponent,
1960
+ SideNavToggleComponent] });
1961
+ TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
1885
1962
  SideNavComponent,
1886
1963
  SideNavToggleComponent] });
1887
- TheSeamSideNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, imports: [CommonModule,
1888
- RouterModule,
1889
- TheSeamIconModule,
1890
- A11yModule,
1891
- TheSeamScrollbarModule,
1892
- TheSeamLayoutModule,
1893
- NgbTooltipModule,
1894
- PortalModule] });
1895
1964
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
1896
1965
  type: NgModule,
1897
1966
  args: [{
1898
- declarations: [
1967
+ imports: [
1899
1968
  SideNavItemComponent,
1900
1969
  SideNavComponent,
1901
- SideNavToggleComponent
1902
- ],
1903
- imports: [
1904
- CommonModule,
1905
- RouterModule,
1906
- TheSeamIconModule,
1907
- A11yModule,
1908
- TheSeamScrollbarModule,
1909
- TheSeamLayoutModule,
1910
- NgbTooltipModule,
1911
- PortalModule
1970
+ SideNavToggleComponent,
1912
1971
  ],
1913
1972
  exports: [
1914
1973
  SideNavItemComponent,
1915
1974
  SideNavComponent,
1916
- SideNavToggleComponent
1975
+ SideNavToggleComponent,
1917
1976
  ]
1918
1977
  }]
1919
1978
  }] });
@@ -1933,7 +1992,7 @@ class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
1933
1992
  get _hasBtnLinkClass() { return !this.compact; }
1934
1993
  }
1935
1994
  TopBarMenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1936
- 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 });
1995
+ 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 });
1937
1996
  __decorate([
1938
1997
  InputBoolean()
1939
1998
  ], TopBarMenuButtonComponent.prototype, "compact", void 0);
@@ -1941,12 +2000,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1941
2000
  type: Component,
1942
2001
  args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
1943
2002
  'attr.type': 'button',
1944
- 'class': 'btn border text-decoration-none py-0',
2003
+ 'class': 'btn border text-decoration-none py-0 top-bar-menu-button',
1945
2004
  '[attr.aria-disabled]': 'disabled.toString()',
1946
2005
  '[attr.disabled]': 'disabled || null',
1947
- }, 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"] }]
2006
+ }, 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"] }]
1948
2007
  }], propDecorators: { detailTpl: [{
1949
2008
  type: Input
2009
+ }], compactDetailTpl: [{
2010
+ type: Input
1950
2011
  }], compact: [{
1951
2012
  type: Input
1952
2013
  }], profileIcon: [{
@@ -1978,19 +2039,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1978
2039
  type: Input
1979
2040
  }] } });
1980
2041
 
2042
+ class TopBarCompactMenuBtnDetailDirective {
2043
+ constructor(template) {
2044
+ this.template = template;
2045
+ }
2046
+ }
2047
+ TopBarCompactMenuBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2048
+ TopBarCompactMenuBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarCompactMenuBtnDetailDirective, selector: "[seamTopBarCompactMenuBtnDetail]", ngImport: i0 });
2049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
2050
+ type: Directive,
2051
+ args: [{
2052
+ selector: '[seamTopBarCompactMenuBtnDetail]'
2053
+ }]
2054
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2055
+
2056
+ class TopBarNavToggleBtnDetailDirective {
2057
+ constructor(template) {
2058
+ this.template = template;
2059
+ }
2060
+ }
2061
+ TopBarNavToggleBtnDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2062
+ TopBarNavToggleBtnDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarNavToggleBtnDetailDirective, selector: "[seamTopBarNavToggleBtnDetail]", ngImport: i0 });
2063
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
2064
+ type: Directive,
2065
+ args: [{
2066
+ selector: '[seamTopBarNavToggleBtnDetail]'
2067
+ }]
2068
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2069
+
1981
2070
  class TopBarItemDirective {
2071
+ set seamTopBarItem(value) {
2072
+ this.position = value;
2073
+ }
1982
2074
  constructor(template) {
1983
2075
  this.template = template;
2076
+ this.position = 'right';
1984
2077
  }
1985
2078
  }
1986
2079
  TopBarItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1987
- TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", ngImport: i0 });
2080
+ TopBarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TopBarItemDirective, selector: "[seamTopBarItem]", inputs: { seamTopBarItem: "seamTopBarItem" }, ngImport: i0 });
1988
2081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TopBarItemDirective, decorators: [{
1989
2082
  type: Directive,
1990
2083
  args: [{
1991
2084
  selector: '[seamTopBarItem]'
1992
2085
  }]
1993
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2086
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { seamTopBarItem: [{
2087
+ type: Input
2088
+ }] } });
1994
2089
 
1995
2090
  class TopBarMenuBtnDetailDirective {
1996
2091
  constructor(template) {
@@ -2046,8 +2141,26 @@ class TheSeamTopBarComponent {
2046
2141
  this.logoRoute = '/';
2047
2142
  /** Determines if the title should be displayed. */
2048
2143
  this.hasTitle = false;
2144
+ /** Determines if the top bar button should be displayed. */
2145
+ this.hasTopBarMenuButton = true;
2049
2146
  /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
2050
2147
  this.profileIcon = faUserCircle;
2148
+ /** Icon to display for mobile nav toggle. Defaults to faBars. */
2149
+ this.toggleIcon = faBars;
2150
+ /** Display nav toggle on either left or right side of top bar. Defaults to left. */
2151
+ this.navToggleAlign = 'left';
2152
+ /** @ignore */
2153
+ this._leftItems = new BehaviorSubject([]);
2154
+ /** Additional templates to display on left side of top bar */
2155
+ this.leftItems$ = this._leftItems.asObservable();
2156
+ /** @ignore */
2157
+ this._centerItems = new BehaviorSubject([]);
2158
+ /** Additional templates to display in center of top bar */
2159
+ this.centerItems$ = this._centerItems.asObservable();
2160
+ /** @ignore */
2161
+ this._rightItems = new BehaviorSubject([]);
2162
+ /** Additional templates to display on right side of top bar */
2163
+ this.rightItems$ = this._rightItems.asObservable();
2051
2164
  this.isMobile$ = this._layout.isMobile$;
2052
2165
  }
2053
2166
  /** @ignore */
@@ -2058,18 +2171,29 @@ class TheSeamTopBarComponent {
2058
2171
  /** @ignore */
2059
2172
  ngAfterContentInit() {
2060
2173
  if (this._topBarItems) {
2061
- this._items$ = this._topBarItems.changes.pipe(startWith(undefined), takeUntil(this._ngUnsubscribe), map(() => this._topBarItems?.toArray() || []), shareReplay({ bufferSize: 1, refCount: true }));
2174
+ this._topBarItems.changes.pipe(startWith(undefined), takeUntil(this._ngUnsubscribe), map(() => {
2175
+ const items = this._topBarItems?.toArray() || [];
2176
+ const left = items.filter(i => i.position === 'left');
2177
+ const right = items.filter(i => i.position === 'right');
2178
+ const center = items.filter(i => i.position === 'center');
2179
+ this._leftItems.next(left);
2180
+ this._rightItems.next(right);
2181
+ this._centerItems.next(center);
2182
+ }), shareReplay({ bufferSize: 1, refCount: true })).subscribe();
2062
2183
  }
2063
2184
  }
2064
2185
  }
2065
2186
  TheSeamTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
2066
- 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 });
2187
+ 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 });
2067
2188
  __decorate([
2068
2189
  InputBoolean()
2069
2190
  ], TheSeamTopBarComponent.prototype, "hasTitle", void 0);
2191
+ __decorate([
2192
+ InputBoolean()
2193
+ ], TheSeamTopBarComponent.prototype, "hasTopBarMenuButton", void 0);
2070
2194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
2071
2195
  type: Component,
2072
- 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"] }]
2196
+ 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"] }]
2073
2197
  }], ctorParameters: function () { return [{ type: i1.TheSeamLayoutService }]; }, propDecorators: { _topBarMenu: [{
2074
2198
  type: ContentChild,
2075
2199
  args: [TopBarMenuDirective, { static: true }]
@@ -2079,6 +2203,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2079
2203
  }], _topBarMenuBtnDetailTpl: [{
2080
2204
  type: ContentChild,
2081
2205
  args: [TopBarMenuBtnDetailDirective]
2206
+ }], _topBarCompactMenuBtnDetailTpl: [{
2207
+ type: ContentChild,
2208
+ args: [TopBarCompactMenuBtnDetailDirective]
2209
+ }], _topBarNavToggleBtnDetailTpl: [{
2210
+ type: ContentChild,
2211
+ args: [TopBarNavToggleBtnDetailDirective]
2082
2212
  }], logo: [{
2083
2213
  type: Input
2084
2214
  }], logoSm: [{
@@ -2095,8 +2225,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2095
2225
  type: Input
2096
2226
  }], subTitleText: [{
2097
2227
  type: Input
2228
+ }], hasTopBarMenuButton: [{
2229
+ type: Input
2098
2230
  }], profileIcon: [{
2099
2231
  type: Input
2232
+ }], toggleIcon: [{
2233
+ type: Input
2234
+ }], navToggleAlign: [{
2235
+ type: Input
2100
2236
  }] } });
2101
2237
 
2102
2238
  class TheSeamTopBarModule {
@@ -2107,7 +2243,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
2107
2243
  TopBarMenuButtonComponent,
2108
2244
  TopBarMenuDirective,
2109
2245
  TopBarItemDirective,
2110
- TopBarMenuBtnDetailDirective], imports: [CommonModule,
2246
+ TopBarMenuBtnDetailDirective,
2247
+ TopBarCompactMenuBtnDetailDirective,
2248
+ TopBarNavToggleBtnDetailDirective], imports: [CommonModule,
2111
2249
  TheSeamLayoutModule,
2112
2250
  TheSeamButtonsModule,
2113
2251
  TheSeamIconModule,
@@ -2118,7 +2256,9 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
2118
2256
  TopBarMenuDirective,
2119
2257
  TheSeamMenuModule,
2120
2258
  TopBarItemDirective,
2121
- TopBarMenuBtnDetailDirective] });
2259
+ TopBarMenuBtnDetailDirective,
2260
+ TopBarCompactMenuBtnDetailDirective,
2261
+ TopBarNavToggleBtnDetailDirective] });
2122
2262
  TheSeamTopBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTopBarModule, imports: [CommonModule,
2123
2263
  TheSeamLayoutModule,
2124
2264
  TheSeamButtonsModule,
@@ -2135,7 +2275,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2135
2275
  TopBarMenuButtonComponent,
2136
2276
  TopBarMenuDirective,
2137
2277
  TopBarItemDirective,
2138
- TopBarMenuBtnDetailDirective
2278
+ TopBarMenuBtnDetailDirective,
2279
+ TopBarCompactMenuBtnDetailDirective,
2280
+ TopBarNavToggleBtnDetailDirective
2139
2281
  ],
2140
2282
  imports: [
2141
2283
  CommonModule,
@@ -2152,7 +2294,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2152
2294
  TopBarMenuDirective,
2153
2295
  TheSeamMenuModule,
2154
2296
  TopBarItemDirective,
2155
- TopBarMenuBtnDetailDirective
2297
+ TopBarMenuBtnDetailDirective,
2298
+ TopBarCompactMenuBtnDetailDirective,
2299
+ TopBarNavToggleBtnDetailDirective
2156
2300
  ]
2157
2301
  }]
2158
2302
  }] });
@@ -2568,33 +2712,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2568
2712
  }] });
2569
2713
 
2570
2714
  class TheSeamSchemaFormCheckboxComponent {
2571
- constructor(jsf) {
2572
- this.jsf = jsf;
2715
+ constructor(_jsf) {
2716
+ this._jsf = _jsf;
2573
2717
  this.controlDisabled = false;
2574
2718
  this.boundControl = false;
2575
2719
  this.trueValue = true;
2576
2720
  this.falseValue = false;
2577
2721
  }
2578
2722
  ngOnInit() {
2579
- this.options = this.layoutNode.options || {};
2580
- this.jsf.initializeControl(this);
2723
+ this.options = this.layoutNode?.options || {};
2724
+ this._jsf.initializeControl(this);
2581
2725
  if (this.controlValue === null || this.controlValue === undefined) {
2582
- this.controlValue = this.options.title;
2726
+ this.controlValue = this.options?.title;
2583
2727
  }
2584
2728
  }
2585
2729
  updateValue(event) {
2586
2730
  event.preventDefault();
2587
- this.jsf.updateValue(this, event.target.checked ? this.trueValue : this.falseValue);
2731
+ this._jsf.updateValue(this, event.target.checked ? this.trueValue : this.falseValue);
2588
2732
  }
2589
2733
  get isChecked() {
2590
- return this.jsf.getFormControlValue(this) === this.trueValue;
2734
+ return this._jsf.getFormControlValue(this) === this.trueValue;
2591
2735
  }
2592
2736
  }
2593
2737
  TheSeamSchemaFormCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2594
- TheSeamSchemaFormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormCheckboxComponent, selector: "seam-schema-form-checkbox", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: i5$1.TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }] });
2738
+ TheSeamSchemaFormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormCheckboxComponent, isStandalone: true, selector: "seam-schema-form-checkbox", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }] });
2595
2739
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, decorators: [{
2596
2740
  type: Component,
2597
- args: [{ selector: 'seam-schema-form-checkbox', template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n" }]
2741
+ args: [{ selector: 'seam-schema-form-checkbox', standalone: true, imports: [
2742
+ CommonModule,
2743
+ ReactiveFormsModule,
2744
+ JsonSchemaFormModule,
2745
+ TheSeamFormFieldModule,
2746
+ TheSeamCheckboxComponent,
2747
+ ], template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n" }]
2598
2748
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2599
2749
  type: Input
2600
2750
  }], layoutIndex: [{
@@ -2604,25 +2754,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2604
2754
  }] } });
2605
2755
 
2606
2756
  class TheSeamSchemaFormInputComponent {
2607
- constructor(jsf) {
2608
- this.jsf = jsf;
2757
+ constructor(_jsf) {
2758
+ this._jsf = _jsf;
2609
2759
  this.controlDisabled = false;
2610
2760
  this.boundControl = false;
2611
2761
  this.autoCompleteList = [];
2612
2762
  }
2613
2763
  ngOnInit() {
2614
- this.options = this.layoutNode.options || {};
2615
- this.jsf.initializeControl(this);
2764
+ this.options = this.layoutNode?.options || {};
2765
+ this._jsf.initializeControl(this);
2616
2766
  }
2617
2767
  updateValue(event) {
2618
- this.jsf.updateValue(this, event.target.value);
2768
+ this._jsf.updateValue(this, event.target.value);
2619
2769
  }
2620
2770
  }
2621
2771
  TheSeamSchemaFormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2622
- TheSeamSchemaFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormInputComponent, selector: "seam-schema-form-input", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2772
+ TheSeamSchemaFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormInputComponent, isStandalone: true, selector: "seam-schema-form-input", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2623
2773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormInputComponent, decorators: [{
2624
2774
  type: Component,
2625
- args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2775
+ args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
2776
+ CommonModule,
2777
+ ReactiveFormsModule,
2778
+ JsonSchemaFormModule,
2779
+ TheSeamFormFieldModule,
2780
+ ], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2626
2781
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2627
2782
  type: Input
2628
2783
  }], layoutIndex: [{
@@ -2642,9 +2797,9 @@ class TheSeamSchemaFormNumberComponent {
2642
2797
  this.lastValidNumber = '';
2643
2798
  }
2644
2799
  ngOnInit() {
2645
- this.options = this.layoutNode.options || {};
2800
+ this.options = this.layoutNode?.options || {};
2646
2801
  this.jsf.initializeControl(this);
2647
- if (this.layoutNode.dataType === 'integer') {
2802
+ if (this.layoutNode?.dataType === 'integer') {
2648
2803
  this.allowDecimal = false;
2649
2804
  }
2650
2805
  }
@@ -2653,10 +2808,15 @@ class TheSeamSchemaFormNumberComponent {
2653
2808
  }
2654
2809
  }
2655
2810
  TheSeamSchemaFormNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2656
- TheSeamSchemaFormNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormNumberComponent, selector: "seam-schema-form-number", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2811
+ TheSeamSchemaFormNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormNumberComponent, isStandalone: true, selector: "seam-schema-form-number", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3$3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2657
2812
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormNumberComponent, decorators: [{
2658
2813
  type: Component,
2659
- args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2814
+ args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
2815
+ CommonModule,
2816
+ ReactiveFormsModule,
2817
+ JsonSchemaFormModule,
2818
+ TheSeamFormFieldModule,
2819
+ ], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2660
2820
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2661
2821
  type: Input
2662
2822
  }], layoutIndex: [{
@@ -2666,27 +2826,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2666
2826
  }] } });
2667
2827
 
2668
2828
  class TheSeamSchemaFormSelectComponent {
2669
- constructor(jsf) {
2670
- this.jsf = jsf;
2829
+ constructor(_jsf) {
2830
+ this._jsf = _jsf;
2671
2831
  this.controlDisabled = false;
2672
2832
  this.boundControl = false;
2673
2833
  this.selectList = [];
2674
2834
  this.isArray = isArray;
2675
2835
  }
2676
2836
  ngOnInit() {
2677
- this.options = this.layoutNode.options || {};
2837
+ this.options = this.layoutNode?.options || {};
2678
2838
  this.selectList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, !!this.options.required, !!this.options.flatList);
2679
- this.jsf.initializeControl(this);
2839
+ this._jsf.initializeControl(this);
2680
2840
  }
2681
2841
  updateValue(event) {
2682
- this.jsf.updateValue(this, event.value);
2842
+ this._jsf.updateValue(this, event.value);
2683
2843
  }
2684
2844
  }
2685
2845
  TheSeamSchemaFormSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2686
- TheSeamSchemaFormSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSelectComponent, selector: "seam-schema-form-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: i5$2.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i5$2.ɵf, selector: "[ng-option-tmp]" }, { kind: "directive", type: i5$2.ɵh, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2846
+ TheSeamSchemaFormSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSelectComponent, isStandalone: true, selector: "seam-schema-form-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i5$1.ɵf, selector: "[ng-option-tmp]" }, { kind: "directive", type: i5$1.ɵh, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2687
2847
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSelectComponent, decorators: [{
2688
2848
  type: Component,
2689
- args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2849
+ args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
2850
+ CommonModule,
2851
+ ReactiveFormsModule,
2852
+ JsonSchemaFormModule,
2853
+ TheSeamFormFieldModule,
2854
+ NgSelectModule,
2855
+ ], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
2690
2856
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2691
2857
  type: Input
2692
2858
  }], layoutIndex: [{
@@ -2702,8 +2868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2702
2868
  // from a schema definition. The library may need to me forked to actually
2703
2869
  // support this in the way I expect, but maybe there is another way.
2704
2870
  class TheSeamSchemaFormSubmitSplitComponent {
2705
- constructor(jsf) {
2706
- this.jsf = jsf;
2871
+ constructor(_jsf) {
2872
+ this._jsf = _jsf;
2707
2873
  /** @ignore */
2708
2874
  this._ngUnsubscribe = new Subject();
2709
2875
  this.controlDisabled = false;
@@ -2714,8 +2880,8 @@ class TheSeamSchemaFormSubmitSplitComponent {
2714
2880
  }
2715
2881
  /** @ignore */
2716
2882
  ngOnInit() {
2717
- this.options = this.layoutNode.options || {};
2718
- this.jsf.initializeControl(this);
2883
+ this.options = this.layoutNode?.options || {};
2884
+ this._jsf.initializeControl(this);
2719
2885
  // NOTE: This is commented out, because there is a bug with submit widgets
2720
2886
  // manually defined in layout. All nodes initialized from the provided
2721
2887
  // layout have their options populated from the defaults and 'disabled' is
@@ -2732,9 +2898,9 @@ class TheSeamSchemaFormSubmitSplitComponent {
2732
2898
  // console.log('[TheSeamSchemaFormSubmitSplitComponent] hasDisabled', this.options.disabled)
2733
2899
  // this.controlDisabled = this.options.disabled
2734
2900
  // } else
2735
- if (this.jsf.formOptions.disableInvalidSubmit) {
2736
- this.controlDisabled = !this.jsf.isValid;
2737
- this.jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
2901
+ if (this._jsf.formOptions.disableInvalidSubmit) {
2902
+ this.controlDisabled = !this._jsf.isValid;
2903
+ this._jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
2738
2904
  }
2739
2905
  if (this.controlValue === null || this.controlValue === undefined) {
2740
2906
  this.controlValue = this.options.title;
@@ -2751,33 +2917,33 @@ class TheSeamSchemaFormSubmitSplitComponent {
2751
2917
  this._ngUnsubscribe.complete();
2752
2918
  }
2753
2919
  updateValue(event) {
2754
- if (typeof this.options.onClick === 'function') {
2920
+ if (typeof this.options?.onClick === 'function') {
2755
2921
  this.options.onClick(event);
2756
2922
  }
2757
2923
  else {
2758
- this.jsf.updateValue(this, event.target.value);
2924
+ this._jsf.updateValue(this, event.target.value);
2759
2925
  }
2760
2926
  }
2761
2927
  _initDropdown() {
2762
- if (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode.items || []).length) {
2928
+ if (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode?.items || []).length) {
2763
2929
  return;
2764
2930
  }
2765
2931
  if (isDevMode()) {
2766
- if (this.layoutNode.items.length > 1) {
2932
+ if (this.layoutNode?.items && this.layoutNode?.items.length > 1) {
2767
2933
  // eslint-disable-next-line no-console
2768
2934
  console.warn(`TheSeamSchemaFormSubmitSplitComponent only supports one item.` +
2769
2935
  ` items after index 0 will be ignored.`);
2770
2936
  }
2771
2937
  }
2772
2938
  const idx = 0;
2773
- const item = this.layoutNode.items[idx];
2939
+ const item = (this.layoutNode?.items)[idx] || {};
2774
2940
  this._dropdownObj = {
2775
2941
  layoutNode: item,
2776
2942
  layoutIndex: (this.layoutIndex || []).concat(idx),
2777
2943
  dataIndex: this.layoutNode?.dataType === 'array' ? (this.dataIndex || []).concat(idx) : this.dataIndex,
2778
2944
  options: item.options || {}
2779
2945
  };
2780
- this.jsf.initializeControl(this._dropdownObj);
2946
+ this._jsf.initializeControl(this._dropdownObj);
2781
2947
  const items = buildTitleMap(this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames, this._dropdownObj.options.enum, !!this._dropdownObj.options.required, !!this._dropdownObj.options.flatList);
2782
2948
  this._selectList = items;
2783
2949
  // TODO: Should this be checking if the control is bound?
@@ -2817,10 +2983,17 @@ class TheSeamSchemaFormSubmitSplitComponent {
2817
2983
  }
2818
2984
  }
2819
2985
  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 });
2820
- 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.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
2986
+ TheSeamSchemaFormSubmitSplitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitSplitComponent, isStandalone: true, 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: "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: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "ngmodule", type: TheSeamMenuModule }, { 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: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i4$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
2821
2987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
2822
2988
  type: Component,
2823
- 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"] }]
2989
+ args: [{ selector: 'seam-schema-form-submit-split', standalone: true, imports: [
2990
+ CommonModule,
2991
+ ReactiveFormsModule,
2992
+ JsonSchemaFormModule,
2993
+ TheSeamFormFieldModule,
2994
+ TheSeamMenuModule,
2995
+ TheSeamButtonsModule,
2996
+ ], 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"] }]
2824
2997
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2825
2998
  type: Input
2826
2999
  }], layoutIndex: [{
@@ -2829,13 +3002,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2829
3002
  type: Input
2830
3003
  }] } });
2831
3004
 
2832
- class TheSeamSchemaFormFrameworkComponent {
3005
+ class TheSeamSchemaFormDividerComponent {
3006
+ ngOnInit() {
3007
+ this.options = this.layoutNode.options || {};
3008
+ }
2833
3009
  }
2834
- TheSeamSchemaFormFrameworkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2835
- TheSeamSchemaFormFrameworkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormFrameworkComponent, selector: "seam-schema-form-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n", styles: [""], dependencies: [{ kind: "component", type: i1$3.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] });
2836
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, decorators: [{
3010
+ TheSeamSchemaFormDividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3011
+ TheSeamSchemaFormDividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormDividerComponent, isStandalone: true, selector: "seam-schema-form-divider", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `<hr [class]="options?.htmlClass" />`, isInline: true, styles: [":host{display:block}\n"] });
3012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormDividerComponent, decorators: [{
2837
3013
  type: Component,
2838
- args: [{ selector: 'seam-schema-form-framework', template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n" }]
3014
+ args: [{ selector: 'seam-schema-form-divider', template: `<hr [class]="options?.htmlClass" />`, standalone: true, styles: [":host{display:block}\n"] }]
2839
3015
  }], propDecorators: { layoutNode: [{
2840
3016
  type: Input
2841
3017
  }], layoutIndex: [{
@@ -2844,61 +3020,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2844
3020
  type: Input
2845
3021
  }] } });
2846
3022
 
2847
- class TheSeamFramework extends Framework {
2848
- constructor() {
2849
- super(...arguments);
2850
- this.name = 'seam-framework';
2851
- this.framework = TheSeamSchemaFormFrameworkComponent;
2852
- this.widgets = {
2853
- 'checkbox': TheSeamSchemaFormCheckboxComponent,
2854
- // 'submit': TheSeamSchemaFormSubmitComponent,
2855
- 'submit': TheSeamSchemaFormSubmitSplitComponent,
2856
- 'text': TheSeamSchemaFormInputComponent,
2857
- 'number': TheSeamSchemaFormNumberComponent,
2858
- 'select': TheSeamSchemaFormSelectComponent
2859
- };
2860
- }
2861
- }
2862
- TheSeamFramework.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2863
- TheSeamFramework.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework });
2864
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, decorators: [{
2865
- type: Injectable
2866
- }] });
2867
-
2868
- class TheSeamSchemaFormSubmitComponent {
2869
- constructor(jsf) {
2870
- this.jsf = jsf;
3023
+ class TheSeamSchemaFormTelComponent {
3024
+ constructor(_jsf) {
3025
+ this._jsf = _jsf;
2871
3026
  this.controlDisabled = false;
2872
3027
  this.boundControl = false;
3028
+ this.autoCompleteList = [];
2873
3029
  }
2874
3030
  ngOnInit() {
2875
- this.options = this.layoutNode.options || {};
2876
- this.jsf.initializeControl(this);
2877
- if (hasOwn(this.options, 'disabled')) {
2878
- this.controlDisabled = this.options.disabled;
2879
- }
2880
- else if (this.jsf.formOptions.disableInvalidSubmit) {
2881
- this.controlDisabled = !this.jsf.isValid;
2882
- this.jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
2883
- }
2884
- if (this.controlValue === null || this.controlValue === undefined) {
2885
- this.controlValue = this.options.title;
2886
- }
3031
+ this.options = this.layoutNode?.options || {};
3032
+ this._jsf.initializeControl(this);
3033
+ console.log(this.controlValue);
3034
+ console.log(this.formControl?.value);
2887
3035
  }
2888
3036
  updateValue(event) {
2889
- if (typeof this.options.onClick === 'function') {
2890
- this.options.onClick(event);
2891
- }
2892
- else {
2893
- this.jsf.updateValue(this, event.target.value);
2894
- }
3037
+ this._jsf.updateValue(this, event.target.value);
2895
3038
  }
2896
3039
  }
2897
- TheSeamSchemaFormSubmitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
2898
- TheSeamSchemaFormSubmitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormSubmitComponent, selector: "seam-schema-form-submit", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <input\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 [type]=\"layoutNode?.type\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n</div>\n" });
2899
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormSubmitComponent, decorators: [{
3040
+ TheSeamSchemaFormTelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, deps: [{ token: i1$3.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
3041
+ TheSeamSchemaFormTelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormTelComponent, isStandalone: true, selector: "seam-schema-form-tel", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\">\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\">\n </seam-tel-input>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTelInputModule }, { kind: "component", type: i5$2.TheSeamTelInputComponent, selector: "seam-tel-input", inputs: ["required", "disabled", "tabIndex", "name", "value"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTelComponent, decorators: [{
2900
3043
  type: Component,
2901
- args: [{ selector: 'seam-schema-form-submit', template: "<div\n [class]=\"options?.htmlClass || ''\">\n <input\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 [type]=\"layoutNode?.type\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n</div>\n" }]
3044
+ args: [{ selector: 'seam-schema-form-tel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
3045
+ CommonModule,
3046
+ ReactiveFormsModule,
3047
+ JsonSchemaFormModule,
3048
+ TheSeamFormFieldModule,
3049
+ TheSeamTelInputModule,
3050
+ ], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\">\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\">\n </seam-tel-input>\n</seam-form-field>\n" }]
2902
3051
  }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }]; }, propDecorators: { layoutNode: [{
2903
3052
  type: Input
2904
3053
  }], layoutIndex: [{
@@ -2907,85 +3056,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2907
3056
  type: Input
2908
3057
  }] } });
2909
3058
 
2910
- const controls = [
2911
- TheSeamSchemaFormCheckboxComponent,
2912
- TheSeamSchemaFormSubmitComponent,
2913
- TheSeamSchemaFormSelectComponent,
2914
- TheSeamSchemaFormInputComponent,
2915
- TheSeamSchemaFormNumberComponent,
2916
- TheSeamSchemaFormSubmitSplitComponent
2917
- ];
2918
- class TheSeamSchemaFormControlsModule {
2919
- }
2920
- TheSeamSchemaFormControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormControlsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2921
- TheSeamSchemaFormControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormControlsModule, declarations: [TheSeamSchemaFormCheckboxComponent,
2922
- TheSeamSchemaFormSubmitComponent,
2923
- TheSeamSchemaFormSelectComponent,
2924
- TheSeamSchemaFormInputComponent,
2925
- TheSeamSchemaFormNumberComponent,
2926
- TheSeamSchemaFormSubmitSplitComponent], imports: [CommonModule,
2927
- ReactiveFormsModule,
2928
- JsonSchemaFormModule,
2929
- TheSeamFormFieldModule,
2930
- TheSeamCheckboxModule,
2931
- TheSeamMenuModule,
2932
- TheSeamButtonsModule,
2933
- NgSelectModule], exports: [TheSeamSchemaFormCheckboxComponent,
2934
- TheSeamSchemaFormSubmitComponent,
2935
- TheSeamSchemaFormSelectComponent,
2936
- TheSeamSchemaFormInputComponent,
2937
- TheSeamSchemaFormNumberComponent,
2938
- TheSeamSchemaFormSubmitSplitComponent, JsonSchemaFormModule] });
2939
- TheSeamSchemaFormControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormControlsModule, imports: [CommonModule,
2940
- ReactiveFormsModule,
2941
- JsonSchemaFormModule,
2942
- TheSeamFormFieldModule,
2943
- TheSeamCheckboxModule,
2944
- TheSeamMenuModule,
2945
- TheSeamButtonsModule,
2946
- NgSelectModule, JsonSchemaFormModule] });
2947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormControlsModule, decorators: [{
2948
- type: NgModule,
2949
- args: [{
2950
- declarations: [
2951
- ...controls
2952
- ],
2953
- imports: [
3059
+ class TheSeamSchemaFormTiledSelectComponent {
3060
+ constructor(_jsf, _platform) {
3061
+ this._jsf = _jsf;
3062
+ this._platform = _platform;
3063
+ this.controlDisabled = false;
3064
+ this.boundControl = false;
3065
+ this.tiles = [];
3066
+ this.layout = 'grid';
3067
+ this.multiple = false;
3068
+ this.selectionToggleable = true;
3069
+ this.tileBackdrop = false;
3070
+ this.showSelectedIcon = true;
3071
+ this.animationsDisabled = this._platform.IOS;
3072
+ }
3073
+ ngOnInit() {
3074
+ this.options = this.layoutNode?.options || {};
3075
+ this._jsf.initializeControl(this);
3076
+ console.log(this.options);
3077
+ console.log(this.layoutNode);
3078
+ this.tiles = this.options.tiles || [];
3079
+ }
3080
+ updateValue(event) {
3081
+ this._jsf.updateValue(this, event.target.value);
3082
+ }
3083
+ }
3084
+ TheSeamSchemaFormTiledSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, deps: [{ token: i1$3.JsonSchemaFormService }, { token: i2$3.Platform }], target: i0.ɵɵFactoryTarget.Component });
3085
+ TheSeamSchemaFormTiledSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormTiledSelectComponent, isStandalone: true, selector: "seam-schema-form-tiled-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$3.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$3.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTiledSelectModule }, { kind: "component", type: i6$1.TheSeamTiledSelectComponent, selector: "seam-tiled-select", inputs: ["layout", "tiles", "value", "disabled", "multiple", "selectionToggleable", "tileBackdrop", "showSelectedIcon", "animationsDisabled"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, decorators: [{
3087
+ type: Component,
3088
+ args: [{ selector: 'seam-schema-form-tiled-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
2954
3089
  CommonModule,
2955
3090
  ReactiveFormsModule,
2956
3091
  JsonSchemaFormModule,
2957
3092
  TheSeamFormFieldModule,
2958
- TheSeamCheckboxModule,
2959
- TheSeamMenuModule,
2960
- TheSeamButtonsModule,
2961
- NgSelectModule
2962
- ],
2963
- exports: [
2964
- ...controls,
2965
- JsonSchemaFormModule
2966
- ],
2967
- entryComponents: [
2968
- ...controls
2969
- ]
2970
- }]
2971
- }] });
3093
+ TheSeamTiledSelectModule,
3094
+ ], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n" }]
3095
+ }], ctorParameters: function () { return [{ type: i1$3.JsonSchemaFormService }, { type: i2$3.Platform }]; }, propDecorators: { layoutNode: [{
3096
+ type: Input
3097
+ }], layoutIndex: [{
3098
+ type: Input
3099
+ }], dataIndex: [{
3100
+ type: Input
3101
+ }] } });
2972
3102
 
2973
- class TheSeamSchemaFormModule {
3103
+ class TheSeamSchemaFormFrameworkComponent {
2974
3104
  }
2975
- TheSeamSchemaFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2976
- TheSeamSchemaFormModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, declarations: [TheSeamSchemaFormFrameworkComponent], imports: [CommonModule,
2977
- JsonSchemaFormModule,
2978
- TheSeamSchemaFormControlsModule,
2979
- WidgetLibraryModule], exports: [TheSeamSchemaFormFrameworkComponent,
2980
- JsonSchemaFormModule] });
2981
- TheSeamSchemaFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
2982
- JsonSchemaFormService,
2983
- FrameworkLibraryService,
2984
- WidgetLibraryService,
2985
- { provide: Framework, useClass: TheSeamFramework, multi: true }
3105
+ TheSeamSchemaFormFrameworkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3106
+ TheSeamSchemaFormFrameworkComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamSchemaFormFrameworkComponent, selector: "seam-schema-form-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, host: { properties: { "attr.data-name": "layoutNode?.node", "attr.data-data-pointer": "layoutNode?.dataPointer" } }, ngImport: i0, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n", styles: [""], dependencies: [{ kind: "component", type: i1$3.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] });
3107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, decorators: [{
3108
+ type: Component,
3109
+ args: [{ selector: 'seam-schema-form-framework', host: {
3110
+ '[attr.data-name]': 'layoutNode?.node',
3111
+ '[attr.data-data-pointer]': 'layoutNode?.dataPointer',
3112
+ }, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n" }]
3113
+ }], propDecorators: { layoutNode: [{
3114
+ type: Input
3115
+ }], layoutIndex: [{
3116
+ type: Input
3117
+ }], dataIndex: [{
3118
+ type: Input
3119
+ }] } });
3120
+
3121
+ const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES = new InjectionToken('THESEAM_SCHEMA_FRAMEWORK_OVERRIDES');
3122
+ function extendFramework(toExtend, extendFrameworkOrName) {
3123
+ // console.log('extendFramework', toExtend, extendFrameworkOrName)
3124
+ const _overrides = inject(Framework, { optional: true });
3125
+ const overrides = typeof extendFrameworkOrName === 'string'
3126
+ ? (_overrides || []).filter(x => x.name === extendFrameworkOrName)
3127
+ : [extendFrameworkOrName];
3128
+ // console.log(_overrides, overrides)
3129
+ if (overrides) {
3130
+ for (const override of overrides) {
3131
+ // console.log('override', override)
3132
+ if (hasProperty(override, 'framework')) {
3133
+ toExtend.framework = override.framework;
3134
+ }
3135
+ if (hasProperty(override, 'widgets')) {
3136
+ toExtend.widgets = { ...toExtend.widgets, ...override.widgets };
3137
+ }
3138
+ if (hasProperty(override, 'stylesheets')) {
3139
+ toExtend.stylesheets = { ...toExtend.stylesheets, ...override.stylesheets };
3140
+ }
3141
+ if (hasProperty(override, 'scripts')) {
3142
+ toExtend.scripts = { ...toExtend.scripts, ...override.scripts };
3143
+ }
3144
+ }
3145
+ }
3146
+ }
3147
+ class TheSeamFramework extends Framework {
3148
+ constructor(_overrides) {
3149
+ super();
3150
+ this.name = 'seam-framework';
3151
+ this.framework = TheSeamSchemaFormFrameworkComponent;
3152
+ this.widgets = {
3153
+ 'checkbox': TheSeamSchemaFormCheckboxComponent,
3154
+ // 'submit': TheSeamSchemaFormSubmitComponent,
3155
+ 'submit': TheSeamSchemaFormSubmitSplitComponent,
3156
+ 'text': TheSeamSchemaFormInputComponent,
3157
+ 'number': TheSeamSchemaFormNumberComponent,
3158
+ 'select': TheSeamSchemaFormSelectComponent,
3159
+ 'divider': TheSeamSchemaFormDividerComponent,
3160
+ 'tel': TheSeamSchemaFormTelComponent,
3161
+ 'tiled-select': TheSeamSchemaFormTiledSelectComponent
3162
+ // 'file': // TODO: Implement
3163
+ // 'date': // TODO: Implement
3164
+ // 'map': // TODO: Implement
3165
+ // 'wizard': // TODO: Implement
3166
+ // 'image': // TODO: Implement
3167
+ // 'tabs': // TODO: Implement
3168
+ // 'card': // TODO: Implement
3169
+ // 'richtext': // TODO: Implement
3170
+ };
3171
+ // console.log('TheSeamFramework', _overrides, this)
3172
+ if (_overrides) {
3173
+ for (const override of _overrides) {
3174
+ // console.log('override', override)
3175
+ if (hasProperty(override, 'widgets')) {
3176
+ this.widgets = { ...this.widgets, ...override.widgets };
3177
+ }
3178
+ }
3179
+ }
3180
+ }
3181
+ }
3182
+ TheSeamFramework.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, deps: [{ token: THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
3183
+ TheSeamFramework.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework });
3184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamFramework, decorators: [{
3185
+ type: Injectable
3186
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
3187
+ type: Optional
3188
+ }, {
3189
+ type: Inject,
3190
+ args: [THESEAM_SCHEMA_FRAMEWORK_OVERRIDES]
3191
+ }] }]; } });
3192
+
3193
+ class TheSeamSchemaFormModule {
3194
+ }
3195
+ TheSeamSchemaFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3196
+ TheSeamSchemaFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, declarations: [TheSeamSchemaFormFrameworkComponent], imports: [CommonModule,
3197
+ JsonSchemaFormModule,
3198
+ WidgetLibraryModule], exports: [TheSeamSchemaFormFrameworkComponent,
3199
+ JsonSchemaFormModule] });
3200
+ TheSeamSchemaFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
3201
+ JsonSchemaFormService,
3202
+ FrameworkLibraryService,
3203
+ WidgetLibraryService,
3204
+ { provide: Framework, useClass: TheSeamFramework, multi: true }
2986
3205
  ], imports: [CommonModule,
2987
3206
  JsonSchemaFormModule,
2988
- TheSeamSchemaFormControlsModule,
2989
3207
  WidgetLibraryModule, JsonSchemaFormModule] });
2990
3208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamSchemaFormModule, decorators: [{
2991
3209
  type: NgModule,
@@ -2996,7 +3214,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2996
3214
  imports: [
2997
3215
  CommonModule,
2998
3216
  JsonSchemaFormModule,
2999
- TheSeamSchemaFormControlsModule,
3000
3217
  WidgetLibraryModule,
3001
3218
  ],
3002
3219
  providers: [
@@ -3009,8 +3226,616 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3009
3226
  TheSeamSchemaFormFrameworkComponent,
3010
3227
  JsonSchemaFormModule
3011
3228
  ],
3012
- entryComponents: [
3013
- TheSeamSchemaFormFrameworkComponent
3229
+ }]
3230
+ }] });
3231
+
3232
+ function isHorizontalNavItemType(item, type) {
3233
+ return item.itemType === type;
3234
+ }
3235
+ function isHorizontalNavItemActive(item) {
3236
+ return item.__state?.active ?? false;
3237
+ }
3238
+ function isHorizontalNavItemExpanded(item) {
3239
+ return item.__state?.expanded ?? false;
3240
+ }
3241
+ function isHorizontalNavItemFocused(item) {
3242
+ return item.__state?.focused ?? false;
3243
+ }
3244
+ function horizontalNavItemHasChildren(item) {
3245
+ return horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
3246
+ }
3247
+ function horizontalNavItemCanHaveChildren(item) {
3248
+ return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
3249
+ }
3250
+ function horizontalNavItemHasActiveChild(item) {
3251
+ if (!horizontalNavItemHasChildren(item)) {
3252
+ return false;
3253
+ }
3254
+ for (const child of item.children) {
3255
+ if (getHorizontalNavItemStateProp(child, 'active') || horizontalNavItemHasActiveChild(child)) {
3256
+ return true;
3257
+ }
3258
+ }
3259
+ return false;
3260
+ }
3261
+ function horizontalNavItemHasExpandedChild(item) {
3262
+ if (!horizontalNavItemHasChildren(item)) {
3263
+ return false;
3264
+ }
3265
+ for (const child of item.children) {
3266
+ if (getHorizontalNavItemStateProp(child, 'expanded')) {
3267
+ return true;
3268
+ }
3269
+ }
3270
+ return false;
3271
+ }
3272
+ function horizontalNavItemCanBeActive(item) {
3273
+ return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
3274
+ }
3275
+ function horizontalNavItemCanExpand(item) {
3276
+ return horizontalNavItemCanHaveChildren(item);
3277
+ }
3278
+ function findHorizontalNavLinkItems(items) {
3279
+ const linkItems = [];
3280
+ const _fn = (_items) => {
3281
+ for (const item of _items) {
3282
+ if (isHorizontalNavItemType(item, 'link')) {
3283
+ linkItems.push(item);
3284
+ }
3285
+ if (horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children')) {
3286
+ _fn(item.children);
3287
+ }
3288
+ }
3289
+ };
3290
+ _fn(items);
3291
+ return linkItems;
3292
+ }
3293
+ function setHorizontalNavItemStateProp(item, prop, value) {
3294
+ if (hasProperty(item, '__state')) {
3295
+ item.__state[prop] = value;
3296
+ }
3297
+ }
3298
+ function getHorizontalNavItemStateProp(item, prop) {
3299
+ return setDefaultHorizontalNavItemState(item).__state[prop];
3300
+ }
3301
+ function setDefaultHorizontalNavItemState(item) {
3302
+ if (hasProperty(item, '__state')) {
3303
+ return item;
3304
+ }
3305
+ item.__state = {
3306
+ active: false,
3307
+ expanded: false,
3308
+ focused: false
3309
+ };
3310
+ // TODO: See if there is a nice way to fix the typing for this.
3311
+ return item;
3312
+ }
3313
+ function areSameHorizontalNavItem(item1, item2) {
3314
+ if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {
3315
+ return false;
3316
+ }
3317
+ if (item1.itemType !== item2.itemType) {
3318
+ return false;
3319
+ }
3320
+ if (isHorizontalNavItemType(item1, 'title') && isHorizontalNavItemType(item2, 'title')) {
3321
+ return item1.label === item2.label;
3322
+ }
3323
+ else if (isHorizontalNavItemType(item1, 'divider') && isHorizontalNavItemType(item2, 'divider')) {
3324
+ return item1.label === item2.label;
3325
+ }
3326
+ else if (isHorizontalNavItemType(item1, 'basic') && isHorizontalNavItemType(item2, 'basic')) {
3327
+ return item1.label === item2.label;
3328
+ }
3329
+ else if (isHorizontalNavItemType(item1, 'link') && isHorizontalNavItemType(item2, 'link')) {
3330
+ return item1.label === item2.label && item1.link === item2.link;
3331
+ }
3332
+ else if (isHorizontalNavItemType(item1, 'button') && isHorizontalNavItemType(item2, 'button')) {
3333
+ return item1.onClick === item2.onClick;
3334
+ }
3335
+ return false;
3336
+ }
3337
+
3338
+ class TheSeamNavService {
3339
+ constructor(_router) {
3340
+ this._router = _router;
3341
+ this._updatingCount = new BehaviorSubject(0);
3342
+ this.itemChanged = new Subject();
3343
+ this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
3344
+ }
3345
+ createItemsObservable(items) {
3346
+ return defer(() => {
3347
+ this.updateItemsStates(items);
3348
+ this.updateRouterFocusedItem(items);
3349
+ return new Observable((subscriber) => {
3350
+ const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
3351
+ if (change.prop === 'focused' && change.newValue) {
3352
+ this.updateFocusedItem(items, change.item);
3353
+ }
3354
+ return this.loading$.pipe(filter(loading => !loading));
3355
+ })).subscribe(() => {
3356
+ subscriber.next(items);
3357
+ });
3358
+ try {
3359
+ this.updateItemsStates(items);
3360
+ }
3361
+ catch (err) {
3362
+ subscriber.error(err);
3363
+ }
3364
+ const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
3365
+ try {
3366
+ this.updateItemsStates(items);
3367
+ this.updateRouterFocusedItem(items);
3368
+ }
3369
+ catch (err) {
3370
+ subscriber.error(err);
3371
+ }
3372
+ });
3373
+ return () => {
3374
+ stateChangeSub.unsubscribe();
3375
+ routeChangeSub.unsubscribe();
3376
+ };
3377
+ }).pipe(startWith(items));
3378
+ });
3379
+ }
3380
+ _incUpdatingCount() {
3381
+ this._updatingCount.next(this._updatingCount.value + 1);
3382
+ }
3383
+ _decrUpdatingCount() {
3384
+ this._updatingCount.next(this._updatingCount.value - 1);
3385
+ }
3386
+ updateItemsStates(items) {
3387
+ this._incUpdatingCount();
3388
+ try {
3389
+ for (const item of items) {
3390
+ if (horizontalNavItemHasChildren(item)) {
3391
+ this.updateItemsStates(item.children);
3392
+ }
3393
+ this.updateItemState(item);
3394
+ }
3395
+ this._decrUpdatingCount();
3396
+ }
3397
+ catch (err) {
3398
+ this._decrUpdatingCount();
3399
+ throw err;
3400
+ }
3401
+ }
3402
+ updateItemState(item) {
3403
+ this._incUpdatingCount();
3404
+ try {
3405
+ setDefaultHorizontalNavItemState(item);
3406
+ this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
3407
+ // TODO: Implement this in a more optimized way. Unless our apps start
3408
+ // having large navs constantly updating their state, this shouldn't
3409
+ // have much impact on performance.
3410
+ this._updateItemExpandedState(item);
3411
+ this._decrUpdatingCount();
3412
+ }
3413
+ catch (err) {
3414
+ this._decrUpdatingCount();
3415
+ throw err;
3416
+ }
3417
+ }
3418
+ horizontalNavLinkActive(item) {
3419
+ if (isHorizontalNavItemType(item, 'link')) {
3420
+ const url = this._getUrl(item);
3421
+ if (notNullOrUndefined(url)) {
3422
+ const opts = this._getMatchOptions(item);
3423
+ return this._router.isActive(url, opts);
3424
+ }
3425
+ }
3426
+ return false;
3427
+ }
3428
+ _updateItemsExpandedState(items) {
3429
+ for (const item of items) {
3430
+ if (horizontalNavItemHasChildren(item)) {
3431
+ this._updateItemsExpandedState(item.children);
3432
+ }
3433
+ this._updateItemExpandedState(item);
3434
+ }
3435
+ }
3436
+ _updateItemExpandedState(item) {
3437
+ if (!horizontalNavItemCanExpand(item)) {
3438
+ if (getHorizontalNavItemStateProp(item, 'expanded')) {
3439
+ this.setItemStateProp(item, 'expanded', false);
3440
+ }
3441
+ return;
3442
+ }
3443
+ if (horizontalNavItemHasChildren(item)) {
3444
+ this._updateItemsExpandedState(item.children);
3445
+ }
3446
+ if (horizontalNavItemHasActiveChild(item) || horizontalNavItemHasExpandedChild(item)) {
3447
+ if (!getHorizontalNavItemStateProp(item, 'expanded')) {
3448
+ this.setItemStateProp(item, 'expanded', true);
3449
+ }
3450
+ }
3451
+ else {
3452
+ if (getHorizontalNavItemStateProp(item, 'expanded')) {
3453
+ this.setItemStateProp(item, 'expanded', false);
3454
+ }
3455
+ }
3456
+ }
3457
+ updateRouterFocusedItem(items) {
3458
+ const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
3459
+ if (notNullOrUndefined(focusedItem)) {
3460
+ this.updateFocusedItem(items, focusedItem);
3461
+ }
3462
+ }
3463
+ updateFocusedItem(items, focusedItem) {
3464
+ for (const item of items) {
3465
+ if (areSameHorizontalNavItem(item, focusedItem)) {
3466
+ setHorizontalNavItemStateProp(item, 'focused', true);
3467
+ }
3468
+ else {
3469
+ setHorizontalNavItemStateProp(item, 'focused', false);
3470
+ }
3471
+ }
3472
+ }
3473
+ _getNavExtras(item) {
3474
+ const navigationExtras = {};
3475
+ if (hasProperty(item, 'queryParams')) {
3476
+ navigationExtras.queryParams = item.queryParams;
3477
+ }
3478
+ if (hasProperty(item, 'fragment')) {
3479
+ navigationExtras.fragment = item.fragment;
3480
+ }
3481
+ if (hasProperty(item, 'queryParamsHandling')) {
3482
+ navigationExtras.queryParamsHandling = item.queryParamsHandling;
3483
+ }
3484
+ if (hasProperty(item, 'preserveFragment')) {
3485
+ navigationExtras.preserveFragment = item.preserveFragment;
3486
+ }
3487
+ return navigationExtras;
3488
+ }
3489
+ _getUrl(item) {
3490
+ const link = item.link;
3491
+ if (typeof link === 'string') {
3492
+ return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
3493
+ }
3494
+ else if (Array.isArray(link)) {
3495
+ return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
3496
+ }
3497
+ return null;
3498
+ }
3499
+ _getMatchOptions(item) {
3500
+ const defaultMatchOpts = {
3501
+ paths: 'subset',
3502
+ queryParams: 'subset',
3503
+ fragment: 'ignored',
3504
+ matrixParams: 'ignored'
3505
+ };
3506
+ if (hasProperty(item, 'matchOptions')) {
3507
+ return {
3508
+ ...defaultMatchOpts,
3509
+ ...item.matchOptions
3510
+ };
3511
+ }
3512
+ return defaultMatchOpts;
3513
+ }
3514
+ setItemStateProp(item, prop, value) {
3515
+ const currentValue = getHorizontalNavItemStateProp(item, prop);
3516
+ if (currentValue !== value) {
3517
+ setHorizontalNavItemStateProp(item, prop, value);
3518
+ const changed = {
3519
+ item,
3520
+ prop,
3521
+ prevValue: currentValue,
3522
+ newValue: value
3523
+ };
3524
+ this.itemChanged.next(changed);
3525
+ }
3526
+ }
3527
+ }
3528
+ 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 });
3529
+ TheSeamNavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService });
3530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavService, decorators: [{
3531
+ type: Injectable
3532
+ }], ctorParameters: function () { return [{ type: i1$2.Router }]; } });
3533
+
3534
+ class NavItemComponent {
3535
+ set link(value) { this._link.next(value); }
3536
+ get link() { return this._link.value; }
3537
+ set expanded(value) {
3538
+ this._expanded.next(coerceBooleanProperty(value));
3539
+ }
3540
+ get expanded() { return this._expanded.value; }
3541
+ set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
3542
+ get compact() { return this._compact.value; }
3543
+ get badgeTooltip() { return this._badgeTooltip; }
3544
+ set badgeTooltip(value) {
3545
+ if (value !== null && value !== undefined) {
3546
+ if (typeof value === 'string') {
3547
+ this._badgeTooltip = {
3548
+ tooltip: value,
3549
+ placement: 'auto',
3550
+ disabled: false
3551
+ };
3552
+ }
3553
+ else {
3554
+ this._badgeTooltip = {
3555
+ ...value,
3556
+ placement: value.placement || 'auto',
3557
+ disabled: typeof value?.disabled === 'boolean'
3558
+ ? value.disabled
3559
+ : typeof value.tooltip !== 'string'
3560
+ };
3561
+ }
3562
+ }
3563
+ else {
3564
+ this._badgeTooltip = undefined;
3565
+ }
3566
+ }
3567
+ get _isActiveCssClass() { return this.active; }
3568
+ get _isChildActiveCssClass() { return this.hasActiveChild; }
3569
+ get _isExpandedCssClass() { return this.expanded; }
3570
+ get _isFocusedCssClass() { return this.focused; }
3571
+ get _attrDataHierLevel() { return this.hierLevel; }
3572
+ constructor(_nav) {
3573
+ this._nav = _nav;
3574
+ this._ngUnsubscribe = new Subject();
3575
+ this.faAngleLeft = faAngleLeft;
3576
+ this.active = false;
3577
+ this._link = new BehaviorSubject(undefined);
3578
+ this.link$ = this._link.asObservable();
3579
+ this.hierLevel = 0;
3580
+ this.indentSize = 10;
3581
+ this._expanded = new BehaviorSubject(false);
3582
+ this.expanded$ = this._expanded.asObservable();
3583
+ this._compact = new BehaviorSubject(false);
3584
+ this.compact$ = this._compact.asObservable();
3585
+ this.focused = false;
3586
+ this.badgeTheme = 'danger';
3587
+ this.childAction = 'menu';
3588
+ this.expandAction = 'toggle';
3589
+ this.navItemExpanded = new EventEmitter();
3590
+ }
3591
+ ngOnDestroy() {
3592
+ this._ngUnsubscribe.next();
3593
+ this._ngUnsubscribe.complete();
3594
+ }
3595
+ get hasChildren() {
3596
+ return Array.isArray(this.children) && this.children.length > 0;
3597
+ }
3598
+ get hasActiveChild() {
3599
+ if (notNullOrUndefined(this.item)) {
3600
+ return horizontalNavItemHasActiveChild(this.item);
3601
+ }
3602
+ return false;
3603
+ }
3604
+ get hasMenuToggle() {
3605
+ return this.hasChildren && this.childAction === 'menu';
3606
+ }
3607
+ get menuTpl() {
3608
+ return this.hasMenuToggle ? this._menu : undefined;
3609
+ }
3610
+ get hasExpandingChildren() {
3611
+ return this.hasChildren && this.childAction === 'expand';
3612
+ }
3613
+ _toggleChildren(event) {
3614
+ let ex = !this.expanded;
3615
+ if (this.expandAction === 'expandOnly') {
3616
+ ex = true;
3617
+ }
3618
+ this.expanded = ex;
3619
+ this.navItemExpanded.emit(this.expanded);
3620
+ if (this.item && this.expanded) {
3621
+ this._nav.setItemStateProp(this.item, 'focused', this.expanded);
3622
+ }
3623
+ // Prevents seam-menu from closing out when toggling child expand
3624
+ event.stopPropagation();
3625
+ }
3626
+ // Updates expanded state when user exits seam-menu
3627
+ _menuEvent(menuExpanded) {
3628
+ if (menuExpanded === false) {
3629
+ this.expanded = false;
3630
+ // TODO: figure out why closing seam-menu with expanded submenu messes up animation
3631
+ if (this._navItems && this._navItems.length) {
3632
+ this._navItems.forEach(navItem => {
3633
+ navItem.expanded = false;
3634
+ });
3635
+ }
3636
+ }
3637
+ }
3638
+ get showIconBlock() {
3639
+ return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
3640
+ }
3641
+ }
3642
+ NavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
3643
+ 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: [
3644
+ trigger('childGroupAnim', [
3645
+ transition(':enter', [
3646
+ style({ height: 0 }),
3647
+ animate('0.2s ease-in-out', style({ height: '*' }))
3648
+ ]),
3649
+ transition(':leave', [
3650
+ style({ height: '*' }),
3651
+ animate('0.2s ease-in-out', style({ height: 0 }))
3652
+ ])
3653
+ ])
3654
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3655
+ __decorate([
3656
+ InputBoolean()
3657
+ ], NavItemComponent.prototype, "active", void 0);
3658
+ __decorate([
3659
+ InputNumber(0)
3660
+ ], NavItemComponent.prototype, "hierLevel", void 0);
3661
+ __decorate([
3662
+ InputNumber(10)
3663
+ ], NavItemComponent.prototype, "indentSize", void 0);
3664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavItemComponent, decorators: [{
3665
+ type: Component,
3666
+ args: [{ selector: 'seam-nav-item', exportAs: 'seamNavItem', animations: [
3667
+ trigger('childGroupAnim', [
3668
+ transition(':enter', [
3669
+ style({ height: 0 }),
3670
+ animate('0.2s ease-in-out', style({ height: '*' }))
3671
+ ]),
3672
+ transition(':leave', [
3673
+ style({ height: '*' }),
3674
+ animate('0.2s ease-in-out', style({ height: 0 }))
3675
+ ])
3676
+ ])
3677
+ ], 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"] }]
3678
+ }], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { item: [{
3679
+ type: Input
3680
+ }], itemType: [{
3681
+ type: Input
3682
+ }], icon: [{
3683
+ type: Input
3684
+ }], hideEmptyIcon: [{
3685
+ type: Input
3686
+ }], label: [{
3687
+ type: Input
3688
+ }], active: [{
3689
+ type: Input
3690
+ }], link: [{
3691
+ type: Input
3692
+ }], queryParams: [{
3693
+ type: Input
3694
+ }], children: [{
3695
+ type: Input
3696
+ }], hierLevel: [{
3697
+ type: Input
3698
+ }], indentSize: [{
3699
+ type: Input
3700
+ }], expanded: [{
3701
+ type: Input
3702
+ }], compact: [{
3703
+ type: Input
3704
+ }], focused: [{
3705
+ type: Input
3706
+ }], badgeText: [{
3707
+ type: Input
3708
+ }], badgeTheme: [{
3709
+ type: Input
3710
+ }], badgeSrContent: [{
3711
+ type: Input
3712
+ }], badgeTooltip: [{
3713
+ type: Input
3714
+ }], childAction: [{
3715
+ type: Input
3716
+ }], expandAction: [{
3717
+ type: Input
3718
+ }], navItemExpanded: [{
3719
+ type: Output
3720
+ }], _isActiveCssClass: [{
3721
+ type: HostBinding,
3722
+ args: ['class.seam-nav-item--active']
3723
+ }], _isChildActiveCssClass: [{
3724
+ type: HostBinding,
3725
+ args: ['class.seam-nav-item--child-active']
3726
+ }], _isExpandedCssClass: [{
3727
+ type: HostBinding,
3728
+ args: ['class.seam-nav-item--expanded']
3729
+ }], _isFocusedCssClass: [{
3730
+ type: HostBinding,
3731
+ args: ['class.seam-nav-item--focused']
3732
+ }], _attrDataHierLevel: [{
3733
+ type: HostBinding,
3734
+ args: ['attr.data-hier-level']
3735
+ }], _menu: [{
3736
+ type: ViewChild,
3737
+ args: [MenuComponent]
3738
+ }], _navItems: [{
3739
+ type: ViewChildren,
3740
+ args: [NavItemComponent]
3741
+ }] } });
3742
+
3743
+ class HorizontalNavComponent {
3744
+ get items() { return this._items.value; }
3745
+ set items(value) {
3746
+ this._items.next(value);
3747
+ }
3748
+ constructor(_nav) {
3749
+ this._nav = _nav;
3750
+ this._ngUnsubscribe = new Subject();
3751
+ this._items = new BehaviorSubject([]);
3752
+ this.hideEmptyIcon = true;
3753
+ this.hierLevel = 0;
3754
+ this.childAction = 'menu';
3755
+ this.expandAction = 'toggle';
3756
+ this.navItemExpanded = new EventEmitter();
3757
+ this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
3758
+ }
3759
+ ngOnDestroy() {
3760
+ this._ngUnsubscribe.next();
3761
+ this._ngUnsubscribe.complete();
3762
+ }
3763
+ _navItemExpanded(item, expanded) {
3764
+ this.navItemExpanded.emit({ navItem: item, expanded });
3765
+ }
3766
+ }
3767
+ HorizontalNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, deps: [{ token: TheSeamNavService }], target: i0.ɵɵFactoryTarget.Component });
3768
+ 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: [
3769
+ TheSeamNavService
3770
+ ], 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 });
3771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: HorizontalNavComponent, decorators: [{
3772
+ type: Component,
3773
+ args: [{ selector: 'seam-horizontal-nav', providers: [
3774
+ TheSeamNavService
3775
+ ], 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"] }]
3776
+ }], ctorParameters: function () { return [{ type: TheSeamNavService }]; }, propDecorators: { items: [{
3777
+ type: Input
3778
+ }], hideEmptyIcon: [{
3779
+ type: Input
3780
+ }], hierLevel: [{
3781
+ type: Input
3782
+ }], childAction: [{
3783
+ type: Input
3784
+ }], expandAction: [{
3785
+ type: Input
3786
+ }], navItemExpanded: [{
3787
+ type: Output
3788
+ }] } });
3789
+
3790
+ class TheSeamNavModule {
3791
+ }
3792
+ TheSeamNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3793
+ TheSeamNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, declarations: [NavItemComponent,
3794
+ HorizontalNavComponent], imports: [CommonModule,
3795
+ RouterModule,
3796
+ TheSeamIconModule,
3797
+ A11yModule,
3798
+ TheSeamScrollbarModule,
3799
+ TheSeamLayoutModule,
3800
+ NgbTooltipModule,
3801
+ PortalModule,
3802
+ TheSeamMenuModule], exports: [NavItemComponent,
3803
+ HorizontalNavComponent] });
3804
+ TheSeamNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, providers: [
3805
+ TheSeamNavService,
3806
+ ], imports: [CommonModule,
3807
+ RouterModule,
3808
+ TheSeamIconModule,
3809
+ A11yModule,
3810
+ TheSeamScrollbarModule,
3811
+ TheSeamLayoutModule,
3812
+ NgbTooltipModule,
3813
+ PortalModule,
3814
+ TheSeamMenuModule] });
3815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamNavModule, decorators: [{
3816
+ type: NgModule,
3817
+ args: [{
3818
+ declarations: [
3819
+ NavItemComponent,
3820
+ HorizontalNavComponent,
3821
+ ],
3822
+ imports: [
3823
+ CommonModule,
3824
+ RouterModule,
3825
+ TheSeamIconModule,
3826
+ A11yModule,
3827
+ TheSeamScrollbarModule,
3828
+ TheSeamLayoutModule,
3829
+ NgbTooltipModule,
3830
+ PortalModule,
3831
+ TheSeamMenuModule
3832
+ ],
3833
+ exports: [
3834
+ NavItemComponent,
3835
+ HorizontalNavComponent,
3836
+ ],
3837
+ providers: [
3838
+ TheSeamNavService,
3014
3839
  ]
3015
3840
  }]
3016
3841
  }] });
@@ -3019,5 +3844,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3019
3844
  * Generated bundle index. Do not edit.
3020
3845
  */
3021
3846
 
3022
- 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 };
3847
+ 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_SCHEMA_FRAMEWORK_OVERRIDES, 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, extendFramework, 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 };
3023
3848
  //# sourceMappingURL=theseam-ui-common-framework.mjs.map