@theseam/ui-common 1.0.0 → 1.0.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-framework.mjs","sources":["../../../projects/ui-common/framework/base-layout/directives/base-layout-content-footer.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-content-header.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-content.directive.ts","../../../projects/ui-common/framework/base-layout/base-layout-tokens.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-nav-toggle.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar-footer.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-top-bar.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar-header.directive.ts","../../../projects/ui-common/framework/base-layout/base-layout.component.ts","../../../projects/ui-common/framework/base-layout/base-layout.component.html","../../../projects/ui-common/framework/base-layout/base-layout.module.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.html","../../../projects/ui-common/framework/dashboard/dashboard-widgets-tokens.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.html","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor-token.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.service.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.component.html","../../../projects/ui-common/framework/dashboard/dashboard.component.ts","../../../projects/ui-common/framework/dashboard/dashboard.component.html","../../../projects/ui-common/framework/dashboard/dashboard.module.ts","../../../projects/ui-common/framework/side-nav/side-nav-tokens.ts","../../../projects/ui-common/framework/side-nav/side-nav-item/side-nav-item.component.ts","../../../projects/ui-common/framework/side-nav/side-nav-item/side-nav-item.component.html","../../../projects/ui-common/framework/side-nav/side-nav-toggle/side-nav-toggle.component.ts","../../../projects/ui-common/framework/side-nav/side-nav-toggle/side-nav-toggle.component.html","../../../projects/ui-common/framework/side-nav/side-nav-utils.ts","../../../projects/ui-common/framework/side-nav/side-nav.service.ts","../../../projects/ui-common/framework/side-nav/side-nav.component.ts","../../../projects/ui-common/framework/side-nav/side-nav.component.html","../../../projects/ui-common/framework/side-nav/side-nav.module.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.html","../../../projects/ui-common/framework/top-bar/top-bar-title/top-bar-title.component.ts","../../../projects/ui-common/framework/top-bar/top-bar-title/top-bar-title.component.html","../../../projects/ui-common/framework/top-bar/top-bar-compact-menu-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-item.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar.component.ts","../../../projects/ui-common/framework/top-bar/top-bar.component.html","../../../projects/ui-common/framework/top-bar/top-bar.module.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-route-animations.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.html","../../../projects/ui-common/framework/dynamic-router/resolvers/hierarchy-level.resolver.ts","../../../projects/ui-common/framework/dynamic-router/dynamic-router.module.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-input/schema-form-input.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-input/schema-form-input.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-number/schema-form-number.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-number/schema-form-number.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-select/schema-form-select.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-select/schema-form-select.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.html","../../../projects/ui-common/framework/schema-form/schema-form-framework.component.ts","../../../projects/ui-common/framework/schema-form/schema-form-framework.component.html","../../../projects/ui-common/framework/schema-form/schema-form-framework.ts","../../../projects/ui-common/framework/schema-form/schema-form.module.ts","../../../projects/ui-common/framework/nav/nav-utils.ts","../../../projects/ui-common/framework/nav/nav.service.ts","../../../projects/ui-common/framework/nav/nav-item/nav-item.component.ts","../../../projects/ui-common/framework/nav/nav-item/nav-item.component.html","../../../projects/ui-common/framework/nav/horizontal-nav/horizontal-nav.component.ts","../../../projects/ui-common/framework/nav/horizontal-nav/horizontal-nav.component.html","../../../projects/ui-common/framework/nav/nav.module.ts","../../../projects/ui-common/framework/theseam-ui-common-framework.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentFooter]',\n exportAs: 'seamBaseLayoutContentFooter',\n})\nexport class BaseLayoutContentFooterDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentHeader]',\n exportAs: 'seamBaseLayoutContentHeader',\n})\nexport class BaseLayoutContentHeaderDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContent]',\n exportAs: 'seamBaseLayoutContent',\n})\nexport class BaseLayoutContentDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamBaseLayoutRef } from './base-layout-ref'\n\nexport const THESEAM_BASE_LAYOUT_REF = new InjectionToken<TheSeamBaseLayoutRef>(\n 'seamBaseLayoutRef',\n)\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n inject,\n Inject,\n Input,\n OnInit,\n Optional,\n} from '@angular/core'\nimport { tap } from 'rxjs/operators'\n\nimport { TheSeamBaseLayoutRef } from '../base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from '../base-layout-tokens'\n\n/**\n * Can be used to toggle the expand state of the registered nav.\n */\n@Directive({\n selector: 'button[seamBaseLayoutNavToggle]',\n exportAs: 'seamBaseLayoutNavToggle',\n})\nexport class TheSeamBaseLayoutNavToggleDirective implements OnInit {\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _baseLayout: TheSeamBaseLayoutRef | null = inject(\n THESEAM_BASE_LAYOUT_REF,\n { optional: true },\n )\n\n public baseLayout: TheSeamBaseLayoutRef | undefined =\n this._baseLayout ?? undefined\n\n @HostBinding('attr.type')\n get _attrType() {\n return this.type\n }\n\n @Input() type: string | undefined | null = 'button'\n\n @HostBinding('attr.aria-label')\n get _attrAriaLabel() {\n return this.ariaLabel || null\n }\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string | undefined | null =\n 'Navigation toggle'\n\n @HostBinding('class.base-layout-nav-toggle') _toggleClass = true\n @HostBinding('class.base-layout-nav-toggle--expanded') _expandedClass = false\n\n @HostListener('click')\n _onClick() {\n if (this.baseLayout && this.baseLayout.registeredNav) {\n this.baseLayout.registeredNav.toggle()\n }\n }\n\n ngOnInit() {\n this.baseLayout?.registeredNav?.expanded$\n .pipe(\n tap((exp) => {\n this._expandedClass = exp\n this._cdr.markForCheck()\n }),\n )\n .subscribe()\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarFooter]',\n exportAs: 'seamBaseLayoutSideBarFooter',\n})\nexport class BaseLayoutSideBarFooterDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBar]',\n exportAs: 'seamBaseLayoutSideBar',\n})\nexport class BaseLayoutSideBarDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutTopBar]',\n exportAs: 'seamBaseLayoutTopBar',\n})\nexport class BaseLayoutTopBarDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarHeader]',\n exportAs: 'seamBaseLayoutSideBarHeader',\n})\nexport class BaseLayoutSideBarHeaderDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n forwardRef,\n inject,\n Input,\n isDevMode,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { BehaviorSubject, from, isObservable, Observable } from 'rxjs'\n\nimport {\n faAngleDoubleLeft,\n faAngleDoubleRight,\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n MediaQueryAliases,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport {\n TheSeamBaseLayoutAction,\n TheSeamBaseLayoutActionButton,\n} from './base-layout-action'\nimport { TheSeamBaseLayoutNav } from './base-layout-nav'\nimport { TheSeamBaseLayoutRef } from './base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from './base-layout-tokens'\nimport { BaseLayoutContentFooterDirective } from './directives/base-layout-content-footer.directive'\nimport { BaseLayoutContentHeaderDirective } from './directives/base-layout-content-header.directive'\nimport { BaseLayoutContentDirective } from './directives/base-layout-content.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\nexport const THE_SEAM_BASE_LAYOUT: any = {\n provide: THESEAM_BASE_LAYOUT_REF,\n useExisting: forwardRef(() => TheSeamBaseLayoutComponent),\n multi: false,\n}\n\n@Component({\n selector: 'seam-base-layout',\n templateUrl: './base-layout.component.html',\n styleUrls: ['./base-layout.component.scss'],\n providers: [THE_SEAM_BASE_LAYOUT],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n PortalModule,\n TheSeamOverlayScrollbarDirective,\n ],\n})\nexport class TheSeamBaseLayoutComponent\n implements OnInit, TheSeamBaseLayoutRef\n{\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _layout = inject(TheSeamLayoutService)\n\n readonly faAngleDoubleRight = faAngleDoubleRight\n readonly faAngleDoubleLeft = faAngleDoubleLeft\n\n @Input() overlayNav = false\n\n @Input() mobileBreakpoint: MediaQueryAliases | undefined\n\n @Input() showSidebar: boolean | undefined = true\n\n // TODO: Consider making the template queries not be dynamic. I can see this\n // potentially causing confusion or issues with potential layouts built with\n // this component.\n @ContentChild(BaseLayoutTopBarDirective, { static: true, read: TemplateRef })\n _topBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutSideBarDirective, { static: true, read: TemplateRef })\n _sideBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentDirective, { static: true, read: TemplateRef })\n _contentTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentHeaderDirective, {\n static: true,\n read: TemplateRef,\n })\n _contentHeaderTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentFooterDirective, {\n static: true,\n read: TemplateRef,\n })\n _contentFooterTpl?: TemplateRef<any> | null\n\n _topBarPortal?: TemplatePortal\n _sideBarPortal?: TemplatePortal\n _contentPortal?: TemplatePortal\n _contentHeaderPortal?: TemplatePortal\n _contentFooterPortal?: TemplatePortal\n\n private readonly _hasSideBar = new BehaviorSubject<boolean>(false)\n\n public readonly hasSideBar$: Observable<boolean>\n public readonly isMobile$: Observable<boolean>\n\n get registeredNav() {\n return this._registeredNav.value\n }\n private readonly _registeredNav = new BehaviorSubject<\n TheSeamBaseLayoutNav | undefined\n >(undefined)\n public readonly registeredNav$ = this._registeredNav.asObservable()\n\n get registeredActions() {\n return this._registeredActions.value\n }\n private readonly _registeredActions = new BehaviorSubject<\n TheSeamBaseLayoutAction[]\n >([])\n public readonly registeredActions$: Observable<TheSeamBaseLayoutAction[]>\n\n constructor() {\n this.registeredActions$ = this._registeredActions.asObservable()\n\n this.isMobile$ = this._layout.isMobile$\n this.hasSideBar$ = this._hasSideBar.asObservable()\n }\n\n ngOnInit() {\n if (this.mobileBreakpoint) {\n this._layout.setMobileBreakpoint(this.mobileBreakpoint)\n }\n\n if (this._topBarTpl) {\n this._topBarPortal = new TemplatePortal(\n this._topBarTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._sideBarTpl) {\n this._sideBarPortal = new TemplatePortal(\n this._sideBarTpl,\n this._viewContainerRef,\n )\n if (this.showSidebar) {\n this._hasSideBar.next(true)\n }\n }\n\n if (this._contentTpl) {\n this._contentPortal = new TemplatePortal(\n this._contentTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._contentHeaderTpl) {\n this._contentHeaderPortal = new TemplatePortal(\n this._contentHeaderTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._contentFooterTpl) {\n this._contentFooterPortal = new TemplatePortal(\n this._contentFooterTpl,\n this._viewContainerRef,\n )\n }\n }\n\n public registerNav(nav: TheSeamBaseLayoutNav): void {\n // TODO: Allow multiple registered navs\n // if (this.registeredNav) {\n // throw new Error('[TheSeamBaseLayoutComponent] A nav is already registered.')\n // }\n // console.log('register nav', nav)\n this._registeredNav.next(nav)\n }\n\n public unregisterNav(nav: TheSeamBaseLayoutNav): void {\n if (this.registeredNav === nav) {\n this._registeredNav.next(undefined)\n }\n }\n\n public registerAction(action: TheSeamBaseLayoutAction): void {\n const actions = this._registeredActions.value\n if (actions.findIndex((a) => a.name === action.name) !== -1) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[TheSeamBaseLayoutComponent] registerAction(): Action ${action.name} not ` +\n 'registered, because another action by that name is already registered.',\n )\n }\n return\n }\n actions.push(action)\n }\n\n public unregisterAction(action: TheSeamBaseLayoutAction | string): void {\n const actionName = typeof action === 'string' ? action : action.name\n const actions = this._registeredActions.value\n this._registeredActions.next(actions.filter((f) => f.name !== actionName))\n }\n\n public isActionRegistered(actionName: string): boolean {\n const actions = this._registeredActions.value\n const action = actions.find((f) => f.name === actionName)\n return !!action\n }\n\n _handleButtonAction(action: TheSeamBaseLayoutActionButton): void {\n this._execButtonAction(action).subscribe()\n }\n\n _execButtonAction(action: TheSeamBaseLayoutActionButton): Observable<void> {\n const fnRes = action.exec()\n return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes))\n }\n}\n","<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\" 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\n *ngFor=\"let action of registeredActions$ | async; first as isFirst\"\n >\n <div class=\"base-layout-registered-action\">\n <ng-container\n [ngTemplateOutlet]=\"$any(action)?.template\"\n ></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","import { NgModule } from '@angular/core'\n\nimport { TheSeamBaseLayoutComponent } from './base-layout.component'\nimport { BaseLayoutContentFooterDirective } from './directives/base-layout-content-footer.directive'\nimport { BaseLayoutContentHeaderDirective } from './directives/base-layout-content-header.directive'\nimport { BaseLayoutContentDirective } from './directives/base-layout-content.directive'\nimport { TheSeamBaseLayoutNavToggleDirective } from './directives/base-layout-nav-toggle.directive'\nimport { BaseLayoutSideBarFooterDirective } from './directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarHeaderDirective } from './directives/base-layout-side-bar-header.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\n@NgModule({\n imports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutSideBarHeaderDirective,\n BaseLayoutTopBarDirective,\n TheSeamBaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective,\n ],\n exports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutSideBarHeaderDirective,\n BaseLayoutTopBarDirective,\n TheSeamBaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective,\n ],\n})\nexport class TheSeamBaseLayoutModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\n\nimport type { IDashboardWidgetsItemDef } from '../dashboard-widgets/dashboard-widgets-item'\n\n@Component({\n selector: 'seam-dashboard-widget-container',\n templateUrl: './dashboard-widget-container.component.html',\n styleUrls: ['./dashboard-widget-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DashboardWidgetContainerComponent {\n @Input() def: IDashboardWidgetsItemDef | undefined | null\n\n @ViewChild(TemplateRef) templateRef?: TemplateRef<any>\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import { InjectionToken } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { DashboardWidgetContainerComponent } from './dashboard-widget-container/dashboard-widget-container.component'\n\nexport interface DashboardWidgetsAccessor {\n containers$: Observable<DashboardWidgetContainerComponent[]>\n}\n\nexport const THESEAM_DASHBOARD_WIDGETS_ACCESSOR =\n new InjectionToken<DashboardWidgetsAccessor>(\n 'THESEAM_DASHBOARD_WIDGETS_ACCESSOR',\n )\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core'\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport {\n DashboardWidgetsAccessor,\n THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n} from '../dashboard-widgets-tokens'\nimport { IDashboardWidgetsItem } from '../dashboard-widgets/dashboard-widgets-item'\n\n@Component({\n selector: 'seam-dashboard-widget-template-container',\n templateUrl: './dashboard-widget-template-container.component.html',\n styleUrls: ['./dashboard-widget-template-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, AsyncPipe],\n})\nexport class DashboardWidgetTemplateContainerComponent {\n private readonly _dashboardWidgetsComponent: DashboardWidgetsAccessor =\n inject(THESEAM_DASHBOARD_WIDGETS_ACCESSOR)\n\n @Input() item: IDashboardWidgetsItem | undefined | null\n\n public readonly template$: Observable<TemplateRef<any> | undefined>\n\n constructor() {\n this.template$ = this._dashboardWidgetsComponent.containers$.pipe(\n map((containers) =>\n containers.find((c: any) => c.def.widgetId === this.item?.widgetId),\n ),\n map((container) => container && container.templateRef),\n )\n }\n}\n","<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n","import {\n BasePortalOutlet,\n CdkPortalOutletAttachedRef,\n ComponentPortal,\n Portal,\n TemplatePortal,\n} from '@angular/cdk/portal'\nimport {\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core'\n\n/**\n * Mostly copied from\n * `https://github.com/angular/components/blob/master/src/cdk/portal/portal-directives.ts`\n * until I can figure out how to hold off removing the DOM nodes with the\n * cdkPortalOutlet. When we update to Angular 9 I may be able to do this better\n * with the new DomPortal.\n *\n * Directive version of a PortalOutlet. Because the directive *is* a\n * PortalOutlet, portals can be directly attached to it, enabling declarative\n * use.\n *\n * Usage: `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[seamDashboardWidgetPortalOutlet]',\n exportAs: 'seamDashboardWidgetPortalOutlet',\n inputs: ['portal: seamDashboardWidgetPortalOutlet'],\n})\nexport class DashboardWidgetPortalOutletDirective\n extends BasePortalOutlet\n implements OnInit, OnDestroy\n{\n private readonly _viewContainerRef = inject(ViewContainerRef)\n\n /** Whether the portal component is initialized. */\n private _isInitialized = false\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef?: CdkPortalOutletAttachedRef\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal\n }\n\n set portal(portal: Portal<any> | null) {\n // console.log('[DashboardWidgetPortalOutletDirective] set portal', portal, this.hasAttached())\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return\n }\n\n if (this.hasAttached()) {\n super.detach()\n }\n\n if (portal) {\n super.attach(portal)\n }\n\n this._attachedPortal = portal\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>()\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef | undefined {\n return this._attachedRef\n }\n\n ngOnInit() {\n this._isInitialized = true\n }\n\n ngOnDestroy() {\n // console.log('[DashboardWidgetPortalOutletDirective] ngOnDestroy')\n\n // TODO: Figure out the right way to call dispose without messing up\n // animation. This setTimeout way assumes the transition is 500ms, but that\n // may not always be the case and isn't guaranteed to match the animation ms\n // duration, since setTimeout isn't really meant for accurate timing. It\n // also makes debugging animations difficult, because you can pause an\n // animation, but the timeout will still run.\n setTimeout(() => {\n super.dispose()\n this._attachedPortal = null\n this._attachedRef = null\n }, 500)\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this)\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef =\n portal.viewContainerRef != null\n ? portal.viewContainerRef\n : this._viewContainerRef\n\n const ref = viewContainerRef.createComponent(portal.component, {\n index: viewContainerRef.length,\n injector: portal.injector || viewContainerRef.injector,\n })\n\n super.setDisposeFn(() => ref.destroy())\n this._attachedPortal = portal\n this._attachedRef = ref\n this.attached.emit(ref)\n\n return ref as any\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this)\n const viewRef = this._viewContainerRef.createEmbeddedView(\n portal.templateRef,\n portal.context,\n )\n super.setDisposeFn(() => this._viewContainerRef.clear())\n\n this._attachedPortal = portal\n this._attachedRef = viewRef\n this.attached.emit(viewRef)\n\n return viewRef\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\n\nexport const THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR =\n new InjectionToken<ITheSeamDashboardWidgetsPreferencesAccessor>(\n 'ITheSeamDashboardWidgetsPreferencesAccessor',\n )\n","import { inject, Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { Observable, of, Subject } from 'rxjs'\nimport {\n auditTime,\n map,\n mapTo,\n shareReplay,\n startWith,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators'\n\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport {\n IDashboardWidgetItemLayout,\n IDashboardWidgetItemLayoutPreference,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n IDashboardWidgetsItemSerialized,\n IDashboardWidgetsPreferences,\n} from './dashboard-widgets-item'\nimport type { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\nimport { THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR } from './dashboard-widgets-preferences-accessor-token'\n\nexport interface IDashboardWidgetsPreferencesMapRecord {\n observable: Observable<IDashboardWidgetsPreferences>\n refresh: Subject<void>\n}\n\n// TODO: This needs a unit test to make sure it will not cause a race condition\n// if update is called faster than the previous can respond.\n//\n// The ideal approach I am thinking, without steping through the process too\n// thoroughly is to hold the new data emit until all pending updates are done.\n// Any pending updates other than the most recently requested will be ignored\n// and just wait on the most recent, and if already running it should be\n// canceled if possible. Also, incase something happens that causes the new data\n// emissions to get held up too long, there could be a threshold time that the\n// new data can be held up.\n\n/**\n * Manages anything dealing with retrieving and updating dashboard widget\n * preference data from the provided accessor.\n */\n@Injectable({ providedIn: 'root' })\nexport class DashboardWidgetsPreferencesService {\n private readonly _prefsAccessor: ITheSeamDashboardWidgetsPreferencesAccessor | null =\n inject(THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, { optional: true })\n\n private readonly _tablePrefsMap = new Map<\n string,\n IDashboardWidgetsPreferencesMapRecord\n >()\n // private _pending = false\n\n // public get pending() { return this._pending }\n\n public preferences(\n preferenceKey: string,\n ): Observable<IDashboardWidgetsPreferences> {\n let prefs = this._tablePrefsMap.get(preferenceKey)\n if (!prefs) {\n const refreshSubject = new Subject<void>()\n prefs = {\n observable: this._createObservable(refreshSubject, preferenceKey),\n refresh: refreshSubject,\n }\n this._tablePrefsMap.set(preferenceKey, prefs)\n }\n return prefs.observable\n }\n\n private _createObservable(\n refreshSubject: Subject<void>,\n prefKey: string,\n ): Observable<IDashboardWidgetsPreferences> {\n if (!this._prefsAccessor) {\n return of({})\n }\n\n const accessor = (key: string): Observable<string> =>\n this._prefsAccessor ? this._prefsAccessor.get(key) : of('{}')\n\n return refreshSubject.pipe(\n startWith({}),\n // tap(() => console.log('Start requesting: ', prefKey)),\n switchMap(() =>\n accessor(prefKey).pipe(\n map((v) => {\n if (!v) {\n return null\n }\n\n // TODO: Add a schema validator and migration tool to avoid parsing issues.\n try {\n return JSON.parse(v) as IDashboardWidgetsPreferences\n } catch (error) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n return null\n }\n }),\n map((v) => v || {}),\n // tap(v => console.log('preferences$', v)),\n // tap(v => this._pending = false),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public refresh(preferenceKey: string): Observable<void> {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n // this._pending = true\n // prefs.refresh.next()\n return prefs.observable.pipe(\n // tap(() => prefs.refresh.next()),\n tap(() =>\n setTimeout(() => {\n prefs.refresh.next()\n }, 0),\n ),\n mapTo(undefined),\n take(1),\n // tap(() => console.log('Done refreshing: ', preferenceKey)),\n )\n }\n\n return of(undefined)\n }\n\n public selectLayout(\n preferenceKey: string,\n layoutName: string,\n ): Observable<IDashboardWidgetItemLayoutPreference | undefined> {\n return this.preferences(preferenceKey).pipe(\n map((prefs) => (prefs.layouts || []).find((l) => l.name === layoutName)),\n )\n }\n\n // TODO: Improve this updating to not be more generic, so we can quickly add\n // edits for different preference schema's.\n //\n // TODO: Decide if a send queue/merging of pending queue is needed to avoid\n // out of order updates. This shouldn't be an issue, with how fast preferences\n // will most likely be changing, but it could happen in situations, such as\n // network issues.\n public updateLayout(\n preferenceKey: string,\n layout: IDashboardWidgetItemLayout,\n ): Observable<void> {\n if (!this._prefsAccessor) {\n return of(undefined)\n }\n\n if (!hasProperty(layout, 'name')) {\n throw Error(\n `Unable to save layout preference. 'name' is required for a layout preference.`,\n )\n }\n\n const _layout = this.toSerializeableLayout(layout)\n\n // this._pending = true\n return this.preferences(preferenceKey).pipe(\n map((prefs) => {\n // Making the preferences immutable may not be necessary, but for now\n // this obj->str->obj will work as a naive clone.\n const layouts = JSON.parse(JSON.stringify(prefs.layouts || []))\n const _layoutPref = layouts.find((c: any) => c.name === _layout.name)\n // console.log('has', _layoutPref)\n if (_layoutPref) {\n if (hasProperty(_layout, 'name')) {\n _layoutPref.name = _layout.name\n }\n if (hasProperty(_layout, 'label')) {\n _layoutPref.label = _layout.label\n }\n if (hasProperty(_layout, 'items')) {\n _layoutPref.items = _layout.items\n }\n } else {\n layouts.push({ ..._layout })\n }\n const newPrefs: IDashboardWidgetsPreferences = { ...prefs, layouts }\n return newPrefs\n }),\n // tap(v => console.log('newPrefs', v)),\n take(1),\n switchMap((newPrefs) =>\n this._prefsAccessor\n ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))\n : of(newPrefs),\n ),\n switchMap(() => this.refresh(preferenceKey).pipe(mapTo(undefined))),\n )\n // .subscribe()\n }\n\n public toSerializeableLayout(\n layout: IDashboardWidgetItemLayout,\n ): IDashboardWidgetItemLayoutPreference {\n const serialized: IDashboardWidgetItemLayoutPreference = {\n name: layout.name,\n label: layout.label,\n items: this.toSerializeableItems(layout.items as any) || [],\n }\n return serialized\n }\n\n // public toDeserializedLayout(layout: IDashboardWidgetItemLayoutSerialized): IDashboardWidgetItemLayoutDef {\n // // For now there is nothing to do. Eventually this should have at least\n // // validation on the deserialized object.\n // return layout\n // }\n\n /**\n * Returns the serializable widget items as objects that can be serialized to\n * a JSON string for storage.\n */\n public toSerializeableItems(\n widgets: IDashboardWidgetsItem[],\n ): IDashboardWidgetsItemSerialized[] {\n const serialized: IDashboardWidgetsItemSerialized[] = []\n for (const w of widgets) {\n // if (!w.__itemDef.component || typeof w.__itemDef.component !== 'string') {\n // console.warn(`[DashboardWidgetsService] Widget item def must have a string 'component' property to be serialized.`, w)\n // continue\n // }\n // serialized.push({\n // widgetId: w.widgetId,\n // col: w.col,\n // order: w.order,\n // component: w.__itemDef.component\n // })\n\n // TODO: Remove this, it is only here for initial dev debugging.\n serialized.push({\n widgetId: w.widgetId,\n col: w.col,\n order: w.order,\n // component: w.__itemDef.component as string,\n })\n }\n return serialized\n }\n\n // public toDeserializedItems(widgets: IDashboardWidgetsItemSerialized[]): IDashboardWidgetsItemDef[] {\n // const items: IDashboardWidgetsItemDef[] = []\n // for (const w of widgets) {\n // items.push({\n // widgetId: w.widgetId,\n // col: w.col,\n // order: w.order,\n // // component: w.component,\n // })\n // }\n // return items\n // }\n}\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport {\n inject,\n Injectable,\n Injector,\n isDevMode,\n ViewContainerRef,\n} from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport {\n auditTime,\n map,\n mapTo,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators'\n\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { THESEAM_WIDGET_DATA } from '@theseam/ui-common/widget'\n\nimport {\n IDashboardWidgetItemLayoutPreference,\n IDashboardWidgetsColumnRecord,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n} from './dashboard-widgets-item'\nimport { DashboardWidgetsPreferencesService } from './dashboard-widgets-preferences.service'\n\n@Injectable({ providedIn: 'root' })\nexport class DashboardWidgetsService {\n private readonly _dynamicComponentLoaderModule = inject(\n TheSeamDynamicComponentLoader,\n )\n private readonly _preferences = inject(DashboardWidgetsPreferencesService)\n\n public readonly preferenceKey: string = 'datatable-widgets'\n\n public readonly defaultNumColumns: number = 3\n\n /** Used for operations, such as 'addWidget', if the column is not specified. */\n public readonly defaultColumn: number = 0\n\n get widgets(): IDashboardWidgetsItemDef[] {\n return this._widgets.value\n }\n set widgets(value: IDashboardWidgetsItemDef[]) {\n this._widgets.next(value)\n }\n private readonly _widgets = new BehaviorSubject<IDashboardWidgetsItemDef[]>(\n [],\n )\n\n get numColumns(): number {\n return this._numColumns.value\n }\n set numColumns(value: number) {\n if (value !== this._numColumns.value) {\n this._numColumns.next(value)\n }\n }\n private readonly _numColumns = new BehaviorSubject<number>(\n this.defaultNumColumns,\n )\n\n public readonly numColumns$: Observable<number>\n public readonly widgetItems$: Observable<IDashboardWidgetsItem[]>\n public readonly widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n\n private readonly _viewContainerRefSubject = new BehaviorSubject<\n ViewContainerRef | undefined\n >(undefined)\n\n constructor() {\n this.numColumns$ = this._numColumns.asObservable()\n\n // Widget items without preferences\n const _widgetItems$ = combineLatest([\n this._widgets,\n this._viewContainerRefSubject,\n ]).pipe(switchMap(([defs, vcr]) => this.createWidgetItems(defs, vcr)))\n\n // Widget items with preferences\n this.widgetItems$ = combineLatest([_widgetItems$, this.numColumns$]).pipe(\n // Wait until the current tick is done, incase both the widgets and\n // number of columns are set durring the same tick. Without the audit,\n // this would get called twice when the component is initialized with\n // both inputs set one after the other individually.\n auditTime(0),\n switchMap(([items, numColumns]) =>\n this._preferences\n .selectLayout(this.preferenceKey, this._layoutName(numColumns))\n .pipe(\n map((layout) =>\n layout ? this.withLayoutPreferences(items, layout) : items,\n ),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this.widgetColumns$ = this.widgetItems$.pipe(\n map((items) => this.toColumnRecords(items)),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n private _layoutName(numColumns: number): string {\n return `columns-${numColumns}`\n }\n\n public setViewContainerRef(vcr: ViewContainerRef | undefined) {\n this._viewContainerRefSubject.next(vcr)\n }\n\n public createWidgetItems(\n defs: IDashboardWidgetsItemDef[],\n vcr?: ViewContainerRef,\n ): Observable<IDashboardWidgetsItem[]> {\n const _createObservables = (defs || []).map((d) =>\n this.createWidgetItem(d, vcr),\n )\n const items$ =\n _createObservables.length > 0 ? combineLatest(_createObservables) : of([])\n return items$.pipe(\n map((items) => items.filter(notNullOrUndefined)),\n tap((items) => {\n if (isDevMode()) {\n const ids: string[] = items.map((v) => v.widgetId)\n if (new Set(ids).size !== ids.length) {\n // eslint-disable-next-line no-console\n console.warn(\n `[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`,\n )\n }\n }\n }),\n )\n }\n\n public createWidgetItem(\n def: IDashboardWidgetsItemDef,\n vcr?: ViewContainerRef,\n ): Observable<IDashboardWidgetsItem | undefined> {\n if (\n !def.widgetId ||\n typeof def.widgetId !== 'string' ||\n def.widgetId.length < 1\n ) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`,\n def,\n )\n }\n return of(undefined)\n }\n\n return this.createWidgetPortal(def, vcr).pipe(\n map((portal) => ({\n ...def,\n col: def.col || this.defaultColumn,\n order: def.order || 0,\n portal,\n __itemDef: def,\n })),\n )\n }\n\n public createWidgetPortal(\n def: IDashboardWidgetsItemDef,\n vcr?: ViewContainerRef,\n ): Observable<ComponentPortal<any>> {\n const injector = Injector.create({\n providers: [\n { provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } },\n ],\n parent: this._viewContainerRefSubject.value?.injector,\n })\n\n // TODO: I still use the ViewContainerRef injector, but I don't pass it to\n // the portal, because it throws an error and I am not sure why. I would\n // like to find out why, even though I don't think it is needed, because our\n // code has been leaving it undefined for a while, when I thought it was\n // being used.\n\n if (typeof def.component === 'string') {\n return this._dynamicComponentLoaderModule\n .getComponentFactory(def.component)\n .pipe(\n map((componentFactory) => {\n return new ComponentPortal(\n componentFactory.componentType,\n undefined,\n injector,\n )\n }),\n take(1),\n )\n }\n\n return of(new ComponentPortal(def.component, undefined, injector))\n }\n\n public updateOrder(): Observable<void> {\n return this.widgetColumns$.pipe(\n take(1),\n tap((columns) =>\n columns.forEach((col) => {\n let i = 0\n col.items.forEach((itm) => (itm.order = i++))\n }),\n ),\n mapTo(undefined),\n )\n }\n\n public toColumnRecords(\n items: IDashboardWidgetsItem[],\n ): IDashboardWidgetsColumnRecord[] {\n let columns: IDashboardWidgetsColumnRecord[] = []\n\n for (let i = 0; i < this.numColumns; i++) {\n columns.push({ column: i, items: [] })\n }\n\n const colNotFound: IDashboardWidgetsItem[] = []\n\n // Distribute items into columns\n for (const item of items) {\n const col: IDashboardWidgetsColumnRecord | undefined = columns.find(\n (c) => c.column === item.col,\n )\n if (!col) {\n // columns.push({ column: item.col, items: [ item ] })\n // if (item.col < 0) {\n // const col0: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === 0)\n // if (col0) {\n // col0.items.push(item)\n // }\n // } else if (item.col > this.numColumns - 1) {\n // const colMax: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === this.numColumns - 1)\n // if (colMax) {\n // colMax.items.push(item)\n // }\n // }\n colNotFound.push(item)\n } else {\n col.items.push(item)\n }\n }\n\n for (let i = 0; i < colNotFound.length; i++) {\n const item = colNotFound[i]\n\n const col: IDashboardWidgetsColumnRecord | undefined = columns.find(\n (c) => c.column === i % this.numColumns,\n )\n\n if (col) {\n col.items.push(item)\n }\n }\n\n // Sort columns\n columns = columns.sort((a, b) => a.column - b.column)\n\n // Sort columns items\n columns.forEach((col) => col.items.sort((a, b) => a.order - b.order))\n\n return columns\n }\n\n public withLayoutPreferences(\n items: IDashboardWidgetsItem[],\n layout: IDashboardWidgetItemLayoutPreference,\n ): IDashboardWidgetsItem[] {\n const _items: IDashboardWidgetsItem[] = []\n\n for (const item of items) {\n const itemPref = layout.items.find((x) => x.widgetId === item.widgetId)\n _items.push({\n ...item,\n ...(itemPref || {}),\n })\n }\n\n return _items\n }\n\n public savePreferences(): Observable<void> {\n // Right now the items are moved between the column record arrays, but the\n // 'col' prop is not updated, so it is mapped to corrected items here from\n // the column records.\n const items$ = this.widgetColumns$.pipe(\n map((columns) =>\n ([] as IDashboardWidgetsItem[]).concat(\n ...columns.map((c) =>\n c.items.map((itm) => ({ ...itm, col: c.column })),\n ),\n ),\n ),\n )\n\n return combineLatest([items$, this.numColumns$]).pipe(\n auditTime(0),\n take(1),\n switchMap(([items, numColumns]) => {\n return this._preferences.updateLayout(this.preferenceKey, {\n name: this._layoutName(numColumns),\n items,\n })\n }),\n mapTo(undefined),\n )\n }\n}\n","import {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n CdkDrag,\n CdkDragDrop,\n DragDropModule,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop'\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport {\n auditTime,\n debounceTime,\n distinctUntilChanged,\n finalize,\n map,\n shareReplay,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport { faLock, faUnlock } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { TheSeamElementResizedEvent } from '@theseam/ui-common/shared'\nimport { THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common/widget'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\n\nimport { TheSeamBaseLayoutRef } from '../../base-layout/base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from '../../base-layout/base-layout-tokens'\nimport { DashboardWidgetContainerComponent } from '../dashboard-widget-container/dashboard-widget-container.component'\n\nimport {\n DashboardWidgetsAccessor,\n THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n} from '../dashboard-widgets-tokens'\nimport {\n IDashboardWidgetsColumnRecord,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n} from './dashboard-widgets-item'\nimport { DashboardWidgetsService } from './dashboard-widgets.service'\nimport { DashboardWidgetTemplateContainerComponent } from '../dashboard-widget-template-container/dashboard-widget-template-container.component'\nimport { DashboardWidgetPortalOutletDirective } from '../dashboard-widgets/dashboard-widget-portal-outlet.directive'\n\n@Component({\n selector: 'seam-dashboard-widgets',\n templateUrl: './dashboard-widgets.component.html',\n styleUrls: ['./dashboard-widgets.component.scss'],\n providers: [\n {\n provide: THESEAM_WIDGET_ACCESSOR,\n useExisting: forwardRef(() => DashboardWidgetsComponent),\n },\n {\n provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n useExisting: forwardRef(() => DashboardWidgetsComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgFor,\n AsyncPipe,\n DragDropModule,\n TheSeamIconModule,\n TheSeamButtonsModule,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetContainerComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n})\nexport class DashboardWidgetsComponent\n implements OnInit, OnDestroy, AfterViewInit, DashboardWidgetsAccessor\n{\n static ngAcceptInputType_gapSize: NumberInput\n static ngAcceptInputType_numColumns: NumberInput\n static ngAcceptInputType_widgetsDraggable: BooleanInput\n static ngAcceptInputType_dragToggleVisible: BooleanInput\n static ngAcceptInputType_widgets:\n | IDashboardWidgetsItemDef[]\n | undefined\n | null\n\n private readonly _dashboardWidgets = inject(DashboardWidgetsService)\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _baseLayoutRef = inject<TheSeamBaseLayoutRef | null>(\n THESEAM_BASE_LAYOUT_REF,\n { optional: true },\n )\n\n readonly faLock = faLock\n readonly faUnlock = faUnlock\n\n public readonly _actionWidgetDragToggleName = 'widget-drag-toggle'\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n get gapSize(): number {\n return this._gapSize.value\n }\n set gapSize(val: number) {\n this._gapSize.next(coerceNumberProperty(val))\n }\n private readonly _gapSize = new BehaviorSubject<number>(30)\n\n @Input() @InputBoolean() widgetsDraggable = false\n\n @Input()\n get dragToggleVisible(): boolean {\n return this._dragToggleVisible.value\n }\n set dragToggleVisible(val: boolean) {\n this._dragToggleVisible.next(coerceBooleanProperty(val))\n }\n private _dragToggleVisible = new BehaviorSubject<boolean>(true)\n\n @Input()\n get numColumns(): number {\n return this._dashboardWidgets.numColumns\n }\n set numColumns(val: number) {\n this._dashboardWidgets.numColumns = coerceNumberProperty(val)\n }\n\n @Input()\n set widgets(value: IDashboardWidgetsItemDef[]) {\n this._dashboardWidgets.widgets = value || []\n }\n get widgets(): IDashboardWidgetsItemDef[] {\n return this._dashboardWidgets.widgets\n }\n\n public readonly widgetItems$: Observable<IDashboardWidgetsItem[]>\n public readonly widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n public readonly containers$: Observable<DashboardWidgetContainerComponent[]>\n\n readonly _gapStyleSize$: Observable<number>\n\n @ViewChildren(DashboardWidgetContainerComponent)\n containers?: QueryList<DashboardWidgetContainerComponent>\n @ViewChildren(CdkDrag) cdkDragDirectives?: QueryList<CdkDrag>\n\n @ViewChild('toggleBtnTpl', { static: true }) _toggleBtnTpl?: TemplateRef<any>\n\n private readonly _containers = new BehaviorSubject<\n DashboardWidgetContainerComponent[]\n >([])\n private readonly _layoutChange = new Subject<void>()\n\n @Output() readonly widgetsChange = new EventEmitter<IDashboardWidgetsItem[]>()\n\n private readonly _widthChange = new Subject<number>()\n\n constructor() {\n this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)\n\n this.containers$ = this._containers.asObservable()\n\n this._gapStyleSize$ = this._gapSize.pipe(\n auditTime(0),\n map((size) => size / 2),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this._widthChange\n .pipe(\n debounceTime(30),\n tap((width) => {\n if (width > 1300) {\n this.numColumns = 3\n } else if (width > 800) {\n this.numColumns = 2\n } else {\n this.numColumns = 1\n }\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n\n this.widgetItems$ = this._dashboardWidgets.widgetItems$\n this.widgetColumns$ = this._dashboardWidgets.widgetColumns$\n }\n\n ngOnInit() {\n // this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)\n\n this._layoutChange\n .pipe(\n switchMap(() =>\n this.widgetItems$.pipe(\n take(1),\n tap((widgetItems) => this.widgetsChange.emit(widgetItems)),\n // map(widgetItems => this._dashboardWidgets.toSerializeableItems(widgetItems)),\n // tap(v => console.log('serializable', v)),\n switchMap(() => this._dashboardWidgets.savePreferences()),\n ),\n ),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n\n ngOnDestroy() {\n this._unregisterToggleAction()\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n if (this._baseLayoutRef) {\n this._dragToggleVisible\n .pipe(\n distinctUntilChanged(),\n tap((visible) => {\n const isRegistered = this._isActionToggleActionRegistered()\n if (visible && !isRegistered) {\n this._registerToggleAction()\n } else if (!visible && isRegistered) {\n this._unregisterToggleAction()\n }\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n\n this.containers?.changes\n .pipe(\n startWith(undefined),\n map(() => this.containers?.toArray() || []),\n takeUntil(this._ngUnsubscribe),\n finalize(() => this._containers.next([])),\n )\n .subscribe((v) => this._containers.next(v))\n }\n\n private _registerToggleAction() {\n if (this._baseLayoutRef) {\n // This should probably use a component dynamically created from the\n // config and return a ref to it, instead of using a template.\n if (this._toggleBtnTpl) {\n this._baseLayoutRef.registerAction({\n // type: 'button',\n type: 'template',\n name: this._actionWidgetDragToggleName,\n label: 'Toggle Widget Dragging',\n // exec: () => {\n // console.log('toggle')\n // },\n template: this._toggleBtnTpl,\n })\n }\n }\n }\n\n private _unregisterToggleAction() {\n if (this._baseLayoutRef) {\n this._baseLayoutRef.unregisterAction(this._actionWidgetDragToggleName)\n }\n }\n\n private _isActionToggleActionRegistered() {\n if (!this._baseLayoutRef) {\n return false\n }\n return this._baseLayoutRef.isActionRegistered(\n this._actionWidgetDragToggleName,\n )\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(\n event.container.data,\n event.previousIndex,\n event.currentIndex,\n )\n this._dashboardWidgets\n .updateOrder()\n .subscribe(() => this._layoutChange.next())\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex,\n )\n this._dashboardWidgets\n .updateOrder()\n .subscribe(() => this._layoutChange.next())\n }\n }\n\n _containerTrackByFn(index: number, item: IDashboardWidgetsItem) {\n return item.widgetId\n }\n\n _columnsTrackByFn(index: number, record: IDashboardWidgetsColumnRecord) {\n return record.column\n }\n\n toggleDragging() {\n this.widgetsDraggable = !this.widgetsDraggable\n this._cdr.detectChanges()\n }\n\n _resized(event: TheSeamElementResizedEvent) {\n this._widthChange.next(event.size.width)\n }\n}\n","<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n<seam-dashboard-widget-container\n *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\"\n [def]=\"$any(item)\"\n>\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div\n class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup\n>\n <div\n *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\"\n >\n <div\n *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\"\n >\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container\n [item]=\"item\"\n ></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button\n seamButton\n theme=\"baselayout-action\"\n title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\"\n (click)=\"toggleDragging()\"\n >\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { IDashboardWidgetsItemDef } from './dashboard-widgets/dashboard-widgets-item'\nimport { DashboardWidgetsComponent } from './dashboard-widgets/dashboard-widgets.component'\n\n@Component({\n selector: 'seam-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DashboardWidgetsComponent],\n})\nexport class DashboardComponent {\n @Input() widgets: IDashboardWidgetsItemDef[] | undefined | null\n @Input() @InputBoolean() widgetsDraggable = true\n}\n","<seam-dashboard-widgets\n [widgets]=\"widgets\"\n [widgetsDraggable]=\"widgetsDraggable\"\n></seam-dashboard-widgets>\n","import { DragDropModule } from '@angular/cdk/drag-drop'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { DashboardWidgetContainerComponent } from './dashboard-widget-container/dashboard-widget-container.component'\nimport { DashboardWidgetTemplateContainerComponent } from './dashboard-widget-template-container/dashboard-widget-template-container.component'\nimport { DashboardWidgetPortalOutletDirective } from './dashboard-widgets/dashboard-widget-portal-outlet.directive'\nimport { DashboardWidgetsComponent } from './dashboard-widgets/dashboard-widgets.component'\nimport { DashboardComponent } from './dashboard.component'\n\n@NgModule({\n // declarations: [\n // // DashboardComponent,\n // // DashboardWidgetsComponent,\n\n // ],\n imports: [\n // CommonModule,\n // PortalModule,\n // DragDropModule,\n // TheSeamButtonsModule,\n // TheSeamIconModule,\n // TheSeamSharedModule,\n\n DashboardComponent,\n DashboardWidgetsComponent,\n DashboardWidgetContainerComponent,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n exports: [\n DashboardComponent,\n DashboardWidgetsComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n})\nexport class TheSeamDashboardModule {}\n","import { InjectionToken } from '@angular/core'\n\nexport interface SideNavAccessor {\n overlay: boolean\n collapse(): void\n}\n\nexport const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken<SideNavAccessor>(\n 'THESEAM_SIDE_NAV_ACCESSOR',\n)\n\nexport interface SideNavConfig {\n /**\n * Default: false\n */\n activeNavigatable: boolean\n}\n\nexport const THESEAM_SIDE_NAV_CONFIG = new InjectionToken<SideNavConfig>(\n 'THESEAM_SIDE_NAV_CONFIG',\n)\n\nexport const DEFAULT_SIDE_NAV_CONFIG: SideNavConfig = {\n activeNavigatable: false,\n}\n","import {\n BooleanInput,\n coerceBooleanProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core'\nimport { animate, state, style, transition, trigger } from '@angular/animations'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { BehaviorSubject, map, Observable, Subject } from 'rxjs'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\nimport type { ThemeTypes } from '@theseam/ui-common/models'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamTooltipModule } from '@theseam/ui-common/tooltip'\n\nimport { SideNavAccessor, THESEAM_SIDE_NAV_ACCESSOR } from '../side-nav-tokens'\nimport {\n ISideNavItem,\n SideNavItemBadgeTooltip,\n SideNavItemMenuItemTooltipConfig,\n} from '../side-nav.models'\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\n@Component({\n selector: 'seam-side-nav-item',\n templateUrl: './side-nav-item.component.html',\n styleUrls: ['./side-nav-item.component.scss'],\n exportAs: 'seamSideNavItem',\n animations: [\n trigger('childGroupAnim', [\n state(EXPANDED_STATE, style({ height: '*' })),\n state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),\n transition(\n `${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`,\n animate('0.2s ease-in-out'),\n ),\n ]),\n ],\n imports: [\n CommonModule,\n RouterModule,\n TheSeamIconModule,\n A11yModule,\n TheSeamTooltipModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SideNavItemComponent implements OnDestroy {\n static ngAcceptInputType_hierLevel: NumberInput\n static ngAcceptInputType_indentSize: NumberInput\n static ngAcceptInputType_expanded: BooleanInput\n static ngAcceptInputType_compact: BooleanInput\n static ngAcceptInputType_active: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n readonly faAngleLeft = faAngleLeft\n\n readonly _linkHistoryState = { seamReload: true, triggeredByNavBar: true }\n\n @Input() itemType:\n | 'divider'\n | 'basic'\n | 'link'\n | 'button'\n | 'title'\n | undefined\n | null\n\n @Input() icon: SeamIcon | undefined | null\n\n @Input() hideEmptyIcon: boolean | undefined | null\n\n @Input() label: string | undefined | null\n\n @Input() @InputBoolean() active = false\n\n @Input() @InputBoolean() activeNavigatable = false\n\n @Input()\n set link(value: string | undefined | null) {\n this._link.next(value)\n }\n get link() {\n return this._link.value\n }\n private readonly _link = new BehaviorSubject<string | undefined | null>(\n undefined,\n )\n public readonly link$ = this._link.asObservable()\n\n @Input() queryParams: { [k: string]: any } | undefined | null\n\n @Input() children: ISideNavItem[] | undefined | null\n\n @Input() @InputNumber(0) hierLevel = 0\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n set expanded(value: boolean) {\n this._expanded.next(coerceBooleanProperty(value))\n }\n get expanded() {\n return this._expanded.value\n }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) {\n this._compact.next(coerceBooleanProperty(value))\n }\n get compact() {\n return this._compact.value\n }\n private readonly _compact = new BehaviorSubject<boolean>(false)\n public readonly compact$ = this._compact.asObservable()\n\n @Input() isMobile: boolean | undefined | null\n\n @Input() badgeText: string | undefined | null\n @Input() badgeTheme: ThemeTypes | undefined | null = 'danger'\n\n /**\n * Content to provide to assistive technology, such as screen readers.\n */\n @Input() badgeSrContent: string | undefined | null\n\n @Input()\n get badgeTooltip() {\n return this._badgeTooltip\n }\n set badgeTooltip(value: string | SideNavItemBadgeTooltip | undefined | null) {\n if (value !== null && value !== undefined) {\n if (typeof value === 'string') {\n this._badgeTooltip = {\n tooltip: value,\n placement: 'auto',\n container: 'body',\n disabled: false,\n }\n } else {\n this._badgeTooltip = {\n ...value,\n placement: value.placement || 'auto',\n container: value.container || 'body',\n disabled:\n typeof value?.disabled === 'boolean'\n ? value.disabled\n : typeof value.tooltip === 'string',\n }\n }\n } else {\n this._badgeTooltip = undefined\n }\n }\n private _badgeTooltip: SideNavItemBadgeTooltip | undefined | null\n\n @Input() menuItemTooltipConfig:\n | SideNavItemMenuItemTooltipConfig\n | undefined\n | null\n\n @Input() menuItemTooltipDisabled: boolean | undefined | null\n\n @HostBinding('class.seam-side-nav-item--active') get _isActiveCssClass() {\n return this.active\n }\n @HostBinding('class.active-clickable') get _isClickableWhenActiveCssClass() {\n return this.activeNavigatable\n }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() {\n return this.hierLevel\n }\n\n public readonly childGroupAnimState$: Observable<string>\n\n constructor(\n @Inject(THESEAM_SIDE_NAV_ACCESSOR)\n private readonly _sideNav: SideNavAccessor,\n ) {\n this.childGroupAnimState$ = this.expanded$.pipe(\n map((expanded) => (expanded ? EXPANDED_STATE : COLLAPSED_STATE)),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n get hasChildren() {\n return Array.isArray(this.children) && this.children.length > 0\n }\n\n public toggleChildren(): void {\n this.expanded = !this.expanded\n }\n\n _linkClicked() {\n // Close nav when link is clicked while in overlay state\n if (this._sideNav.overlay) {\n this._sideNav.collapse()\n }\n }\n\n get showIconBlock(): boolean {\n return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true\n }\n}\n","<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\n class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\"\n >\n <seam-side-nav-item\n *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 [activeNavigatable]=\"$any(child).activeNavigatable\"\n >\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n 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 [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div\n class=\"nav-link d-flex flex-row w-100\"\n [class.nav-link__compact]=\"compact\"\n >\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>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n >\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 >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div\n class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <a\n *ngIf=\"link; else noLink\"\n 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 [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\"\n >\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>{{\n label\n }}</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\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\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>{{\n label\n }}</span>\n </a>\n </ng-template>\n\n <button\n *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 >\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 >\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>{{\n label\n }}</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\n class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"\n isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\n \"\n >\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","import { BooleanInput } from '@angular/cdk/coercion'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\n\n@Component({\n selector: 'seam-side-nav-toggle',\n templateUrl: './side-nav-toggle.component.html',\n styleUrls: ['./side-nav-toggle.component.scss'],\n host: {\n '[class.side-nav-toggle--compact]': '!expanded',\n },\n imports: [CommonModule, TheSeamIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SideNavToggleComponent {\n static ngAcceptInputType_expanded: BooleanInput\n\n @Input() @InputBoolean() expanded = false\n\n @Input() toggleIcon: SeamIcon | undefined | null\n\n @Input() toggleTpl: TemplateRef<any> | undefined | null\n\n @Output() toggleExpand = new EventEmitter<void>()\n\n toggle() {\n this.toggleExpand.emit()\n }\n}\n","<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 class=\"side-nav-toggle--btn mx-1\" (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\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\"\n >\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n","import { hasProperty } from '@theseam/ui-common/utils'\n\nimport {\n ISideNavBasic,\n ISideNavButton,\n ISideNavDivider,\n ISideNavItem,\n ISideNavItemState,\n ISideNavLink,\n ISideNavTitle,\n SideNavItemCanHaveChildren,\n SideNavItemCanHaveState,\n} from './side-nav.models'\nimport { SideNavConfig } from './side-nav-tokens'\n\ninterface NavItemTypeMap {\n title: ISideNavTitle\n divider: ISideNavDivider\n basic: ISideNavBasic\n link: ISideNavLink\n button: ISideNavButton\n}\n\nexport function isNavItemType<T extends keyof NavItemTypeMap>(\n item: ISideNavItem,\n type: T,\n): item is NavItemTypeMap[T] {\n return item.itemType === type\n}\n\nexport function isNavItemActive(item: ISideNavItem): boolean {\n return item.__state?.active ?? false\n}\n\nexport function isExpanded(item: ISideNavItem): boolean {\n return item.__state?.expanded ?? false\n}\n\nexport function hasChildren(\n item: ISideNavItem,\n): item is (ISideNavBasic | ISideNavLink) &\n Required<SideNavItemCanHaveChildren> {\n return (\n canHaveChildren(item) &&\n hasProperty(item, 'children') &&\n item.children.length > 0\n )\n}\n\nexport function canHaveChildren(\n item: ISideNavItem,\n): item is ISideNavBasic | ISideNavLink {\n return isNavItemType(item, 'basic') || isNavItemType(item, 'link')\n}\n\nexport function hasActiveChild(item: ISideNavItem): boolean {\n if (!hasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getItemStateProp(child, 'active')) {\n return true\n }\n }\n\n return false\n}\n\nexport function hasExpandedChild(item: ISideNavItem): boolean {\n if (!hasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getItemStateProp(child, 'expanded')) {\n return true\n }\n }\n\n return false\n}\n\nexport function canBeActive(\n item: ISideNavItem,\n): item is ISideNavButton | ISideNavLink {\n return isNavItemType(item, 'button') || isNavItemType(item, 'link')\n}\n\nexport function canExpand(\n item: ISideNavItem,\n): item is ISideNavBasic | ISideNavLink {\n return canHaveChildren(item)\n}\n\nexport function findLinkItems(items: ISideNavItem[]): ISideNavLink[] {\n const linkItems: ISideNavLink[] = []\n\n const _fn = (_items: ISideNavItem[]) => {\n for (const item of _items) {\n if (isNavItemType(item, 'link')) {\n linkItems.push(item)\n }\n if (canHaveChildren(item) && hasProperty(item, 'children')) {\n _fn(item.children)\n }\n }\n }\n _fn(items)\n\n return linkItems\n}\n\nexport function setItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n value: ISideNavItemState[K],\n): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n): ISideNavItemState[K] {\n return setDefaultState(item).__state[prop]\n}\n\nexport function setDefaultState(\n item: ISideNavItem,\n): ISideNavItem & Required<SideNavItemCanHaveState> {\n if (hasProperty(item, '__state')) {\n return item\n }\n\n item.__state = {\n active: false,\n expanded: false,\n }\n\n // TODO: See if there is a nice way to fix the typing for this.\n return item as any\n}\n\nexport function applyItemConfig(\n item: ISideNavItem,\n config: SideNavConfig,\n): ISideNavItem {\n if (canBeActive(item)) {\n if (\n !hasProperty(item, 'activeNavigatable') &&\n hasProperty(config, 'activeNavigatable')\n ) {\n item.activeNavigatable = config.activeNavigatable\n }\n }\n\n if (hasChildren(item)) {\n item.children = item.children.map((child) => applyItemConfig(child, config))\n }\n\n return item\n}\n","import { Injectable } from '@angular/core'\nimport {\n ActivatedRoute,\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n UrlCreationOptions,\n} from '@angular/router'\nimport {\n BehaviorSubject,\n combineLatest,\n defer,\n Observable,\n of,\n Subject,\n Subscriber,\n} from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n canExpand,\n getItemStateProp,\n hasActiveChild,\n hasChildren,\n hasExpandedChild,\n isNavItemType,\n setDefaultState,\n setItemStateProp,\n} from './side-nav-utils'\nimport {\n ISideNavItem,\n ISideNavItemState,\n ISideNavLink,\n SideNavItemStateChanged,\n} from './side-nav.models'\n\n@Injectable()\nexport class TheSeamSideNavService {\n private readonly _updatingCount = new BehaviorSubject<number>(0)\n\n public readonly loading$: Observable<boolean>\n\n public readonly itemChanged = new Subject<SideNavItemStateChanged>()\n\n constructor(private readonly _router: Router) {\n this.loading$ = this._updatingCount.pipe(\n map((count) => count > 0),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public createItemsObservable(\n items: ISideNavItem[],\n ): Observable<ISideNavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n return new Observable((subscriber: Subscriber<ISideNavItem[]>) => {\n const stateChangeSub = this.itemChanged\n .pipe(\n switchMap(() => this.loading$.pipe(filter((loading) => !loading))),\n )\n .subscribe(() => {\n subscriber.next(items)\n })\n\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n\n // const linkItems = findLinkItems(items)\n\n const routeChangeSub = this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n // ).subscribe(() => linkItems.forEach(itm => this.updateItemState(itm)))\n )\n .subscribe(() => {\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n })\n\n return () => {\n stateChangeSub.unsubscribe()\n routeChangeSub.unsubscribe()\n }\n }).pipe(startWith(items))\n })\n }\n\n private _incUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value + 1)\n }\n\n private _decrUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value - 1)\n }\n\n public updateItemsStates(items: ISideNavItem[]): void {\n this._incUpdatingCount()\n\n try {\n for (const item of items) {\n if (hasChildren(item)) {\n this.updateItemsStates(item.children)\n }\n\n this.updateItemState(item)\n }\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public updateItemState(item: ISideNavItem): void {\n this._incUpdatingCount()\n\n try {\n setDefaultState(item)\n\n if (isNavItemType(item, 'link')) {\n const url = this._getUrl(item)\n if (notNullOrUndefined(url)) {\n const opts = this._getMatchOptions(item)\n this.setItemStateProp(\n item,\n 'active',\n this._router.isActive(url, opts),\n )\n }\n }\n\n // TODO: Implement this in a more optimized way. Unless our apps start\n // having large side-navs constantly updating their state, this shouldn't\n // have much impact on performance.\n this._updateItemExpandedState(item)\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n private _updateItemsExpandedState(items: ISideNavItem[]): void {\n for (const item of items) {\n if (hasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n this._updateItemExpandedState(item)\n }\n }\n\n private _updateItemExpandedState(item: ISideNavItem): void {\n if (!canExpand(item)) {\n if (getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n return\n }\n\n if (hasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n\n if (hasActiveChild(item) || hasExpandedChild(item)) {\n if (!getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', true)\n }\n } else {\n if (getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n }\n }\n\n private _getNavExtras(item: ISideNavLink): UrlCreationOptions {\n const navigationExtras: UrlCreationOptions = {}\n if (hasProperty(item, 'queryParams')) {\n navigationExtras.queryParams = item.queryParams\n }\n if (hasProperty(item, 'fragment')) {\n navigationExtras.fragment = item.fragment\n }\n if (hasProperty(item, 'queryParamsHandling')) {\n navigationExtras.queryParamsHandling = item.queryParamsHandling\n }\n if (hasProperty(item, 'preserveFragment')) {\n navigationExtras.preserveFragment = item.preserveFragment\n }\n return navigationExtras\n }\n\n private _getUrl(item: ISideNavLink): string | null {\n const link = item.link\n\n if (typeof link === 'string') {\n return this._router\n .createUrlTree([link], this._getNavExtras(item))\n .toString()\n } else if (Array.isArray(link)) {\n return this._router\n .createUrlTree(link, this._getNavExtras(item))\n .toString()\n }\n\n return null\n }\n\n private _getMatchOptions(item: ISideNavLink): IsActiveMatchOptions {\n const defaultMatchOpts: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n\n if (hasProperty(item, 'matchOptions')) {\n return {\n ...defaultMatchOpts,\n ...item.matchOptions,\n }\n }\n\n return defaultMatchOpts\n }\n\n public setItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n value: ISideNavItemState[K],\n ): void {\n const currentValue = getItemStateProp(item, prop)\n if (currentValue !== value) {\n setItemStateProp(item, prop, value)\n\n const changed: SideNavItemStateChanged = {\n item,\n prop,\n prevValue: currentValue,\n newValue: value,\n }\n this.itemChanged.next(changed)\n }\n }\n}\n","import {\n animate,\n animateChild,\n group,\n query,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations'\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport {\n TheSeamLayoutModule,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport {\n TheSeamBaseLayoutNav,\n TheSeamBaseLayoutRef,\n THESEAM_BASE_LAYOUT_REF,\n} from '../base-layout/index'\n\nimport { BaseLayoutSideBarFooterDirective } from '../base-layout/directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarHeaderDirective } from '../base-layout/directives/base-layout-side-bar-header.directive'\nimport {\n DEFAULT_SIDE_NAV_CONFIG,\n SideNavConfig,\n THESEAM_SIDE_NAV_ACCESSOR,\n THESEAM_SIDE_NAV_CONFIG,\n} from './side-nav-tokens'\nimport {\n ISideNavItem,\n SideNavItemMenuItemTooltipConfig,\n} from './side-nav.models'\nimport { TheSeamSideNavService } from './side-nav.service'\nimport { SideNavToggleComponent } from './side-nav-toggle/side-nav-toggle.component'\nimport { SideNavItemComponent } from './side-nav-item/side-nav-item.component'\nimport { applyItemConfig } from './side-nav-utils'\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\nconst EXPANDED_OVERLAY_STATE = 'expanded-overlay'\nconst COLLAPSED_OVERLAY_STATE = 'collapsed-overlay'\n\nconst EXPANDED_STATES = [EXPANDED_STATE, EXPANDED_OVERLAY_STATE]\nconst COLLAPSED_STATES = [COLLAPSED_STATE, COLLAPSED_OVERLAY_STATE]\nconst EXPAND_STATES = [...EXPANDED_STATES, ...COLLAPSED_STATES]\n\nexport function sideNavExpandStateChangeFn(fromState: string, toState: string) {\n // console.log({ fromState, toState })\n return (\n fromState !== toState &&\n // NOTE: The current way the side nav is being used it causes the\n // component to sometimes get placed in the wrong location initially. It\n // is fast enough to not be noticed without an initial animation usually,\n // so it is commented out below until the initial placement issue it\n // fixed.\n //\n // (\n // fromState === 'void' && EXPAND_STATES.indexOf(toState) !== -1\n // ||\n // toState === 'void' && EXPAND_STATES.indexOf(fromState) !== -1\n // )\n // ||\n ((EXPANDED_STATES.indexOf(fromState) !== -1 &&\n COLLAPSED_STATES.indexOf(toState) !== -1) ||\n (EXPANDED_STATES.indexOf(toState) !== -1 &&\n COLLAPSED_STATES.indexOf(fromState) !== -1))\n )\n}\n\n@Component({\n selector: 'seam-side-nav',\n templateUrl: './side-nav.component.html',\n styleUrls: ['./side-nav.component.scss'],\n providers: [\n TheSeamSideNavService,\n {\n provide: THESEAM_SIDE_NAV_ACCESSOR,\n useExisting: SideNavComponent,\n },\n ],\n animations: [\n //\n // TODO: This animation code turned into a mess. Clean it up and make it\n // more smooth.\n //\n\n trigger('sideNavAnim', [\n transition(sideNavExpandStateChangeFn, [\n group([\n query('@sideNavBackdrop', animateChild(), { optional: true }),\n query('@sideNavExpand', animateChild(), { optional: true }),\n ]),\n ]),\n ]),\n\n trigger('sideNavBackdrop', [\n state(EXPANDED_OVERLAY_STATE, style({ opacity: '1' })),\n state(COLLAPSED_OVERLAY_STATE, style({ opacity: '0' })),\n\n // transition((fromState, toState, element, params) => {\n // console.log('sideNavBackdrop v', fromState, toState, element, params)\n // return false\n // }, []),\n\n transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),\n ]),\n\n trigger('sideNavExpand', [\n // TODO: Make width configurable for non-overlay state.\n state(EXPANDED_STATE, style({ width: '260px' })),\n state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),\n\n state(\n EXPANDED_OVERLAY_STATE,\n style({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n height: '{{ height }}',\n width: '{{ width }}',\n transform: '{{ origin }}',\n zIndex: '9999',\n }),\n {\n params: {\n origin: 'translateX(100%)',\n height: '100%',\n width: 'calc(100vw - 50px)',\n },\n },\n ),\n state(\n COLLAPSED_OVERLAY_STATE,\n style({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n height: '{{ height }}',\n width: '{{ width }}',\n transform: '{{ origin }}',\n 'overflow-x': 'hidden',\n zIndex: '9999',\n }),\n {\n params: {\n origin: 'translateX(0)',\n height: '100%',\n width: 'calc(100vw - 50px)',\n },\n },\n ),\n\n // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n\n transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),\n\n // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [\n // // query(':leave', animateChild(), { optional: true }),\n // // query(':enter', animateChild(), { optional: true }),\n // group([\n // query(':leave', animateChild(), { optional: true }),\n // query(':enter', animateChild(), { optional: true }),\n // query('@compactAnim', animateChild(), { optional: true }),\n // animate('5.2s ease-in-out')\n // ])\n // ]),\n ]),\n ],\n imports: [\n CommonModule,\n A11yModule,\n TheSeamOverlayScrollbarDirective,\n TheSeamLayoutModule,\n PortalModule,\n SideNavItemComponent,\n SideNavToggleComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class SideNavComponent\n implements OnInit, OnDestroy, TheSeamBaseLayoutNav\n{\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n faBars = faBars\n\n // @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE\n // _sideNavExpand = EXPANDED_STATE\n\n // @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE\n @HostBinding('@sideNavAnim') _sideNavExpand = 'initial'\n\n @Input() @InputBoolean() hasHeaderToggle = true\n\n @Input() toggleIcon: SeamIcon | null | undefined = faBars\n\n @Input() toggleTpl: TemplateRef<any> | undefined | null\n\n @Input()\n get items(): ISideNavItem[] {\n return this._items.value\n }\n set items(value: ISideNavItem[]) {\n this._items.next(value)\n }\n private _items = new BehaviorSubject<ISideNavItem[]>([])\n public readonly items$: Observable<ISideNavItem[]>\n\n @Input() hideEmptyIcon: boolean | null | undefined\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n get expanded(): boolean {\n return this._expanded.value\n }\n set expanded(value: boolean) {\n const expanded = coerceBooleanProperty(value)\n const emit = expanded !== this.expanded\n this._expanded.next(expanded)\n\n if (emit) {\n this.toggleExpand.emit(coerceBooleanProperty(value))\n }\n }\n private _expanded = new BehaviorSubject<boolean>(true)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input() expandOrigin: 'left' | 'right' | 'top' | 'bottom' = 'left'\n\n @Input() expandHeight = '100%'\n\n @Input() expandWidth = 'calc(100vw - 50px)'\n\n @Input()\n get overlay(): boolean {\n return this._overlay.value\n }\n set overlay(value: boolean) {\n this._overlay.next(coerceBooleanProperty(value))\n }\n private _overlay = new BehaviorSubject<boolean>(false)\n public readonly overlay$ = this._overlay.asObservable()\n\n private _menuItemTooltipConfig: SideNavItemMenuItemTooltipConfig = {\n placement: 'right',\n container: 'body',\n behavior: 'always',\n }\n\n @Input()\n get menuItemTooltipConfig() {\n return this._menuItemTooltipConfig\n }\n set menuItemTooltipConfig(\n value: SideNavItemMenuItemTooltipConfig | undefined | null,\n ) {\n this._menuItemTooltipConfig = {\n class: value?.class,\n placement: value?.placement || this._menuItemTooltipConfig.placement,\n container: value?.container || this._menuItemTooltipConfig.container,\n behavior: value?.behavior || this._menuItemTooltipConfig.behavior,\n }\n }\n\n public menuItemTooltipDisabled$: Observable<boolean> | undefined | null\n\n @Output() toggleExpand = new EventEmitter<boolean>()\n\n public readonly isMobile$: Observable<boolean>\n public readonly sideNavExpandedState$: Observable<string>\n public _backdropHidden = new BehaviorSubject<boolean>(true)\n\n @ContentChild(BaseLayoutSideBarHeaderDirective, {\n static: true,\n read: TemplateRef,\n })\n _sideBarHeaderTpl?: TemplateRef<any> | null\n _sideBarHeaderPortal?: TemplatePortal\n\n @ContentChild(BaseLayoutSideBarFooterDirective, {\n static: true,\n read: TemplateRef,\n })\n _sideBarFooterTpl?: TemplateRef<any> | null\n _sideBarFooterPortal?: TemplatePortal\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _layout: TheSeamLayoutService,\n private readonly _sideNav: TheSeamSideNavService,\n @Optional()\n @Inject(THESEAM_SIDE_NAV_CONFIG)\n private readonly _config?: SideNavConfig,\n @Optional()\n @Inject(THESEAM_BASE_LAYOUT_REF)\n private readonly _baseLayoutRef?: TheSeamBaseLayoutRef,\n ) {\n const config: SideNavConfig = {\n ...DEFAULT_SIDE_NAV_CONFIG,\n ...(this._config || {}),\n }\n\n this.items$ = this._items.asObservable().pipe(\n map((items) =>\n items && config ? items.map((itm) => applyItemConfig(itm, config)) : [],\n ),\n switchMap((items) =>\n items ? this._sideNav.createItemsObservable(items) : [],\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this.isMobile$ = this._layout.isMobile$.pipe(\n tap((isMobile) => (isMobile ? this.collapse() : this.expand())),\n )\n\n this.sideNavExpandedState$ = combineLatest([\n this.expanded$,\n this.overlay$,\n ]).pipe(\n map(([expanded, overlay]) =>\n expanded\n ? overlay\n ? EXPANDED_OVERLAY_STATE\n : EXPANDED_STATE\n : overlay\n ? COLLAPSED_OVERLAY_STATE\n : COLLAPSED_STATE,\n ),\n distinctUntilChanged(),\n )\n\n this.menuItemTooltipDisabled$ = combineLatest([\n this.expanded$,\n this.overlay$,\n ]).pipe(\n map(([expanded, overlay]) => {\n // never display tooltip on mobile, it breaks the layout\n if (overlay) {\n return true\n }\n\n return this.menuItemTooltipConfig?.behavior === 'always'\n ? false\n : this.menuItemTooltipConfig?.behavior === 'never'\n ? true\n : this.menuItemTooltipConfig?.behavior === 'collapseOnly'\n ? expanded\n : true\n }),\n distinctUntilChanged(),\n )\n }\n\n ngOnInit() {\n if (this._baseLayoutRef) {\n this._baseLayoutRef.registerNav(this)\n }\n\n this.isMobile$\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((b) => (this.overlay = b))\n\n this.sideNavExpandedState$\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((v) => (this._sideNavExpand = v))\n\n if (this._sideBarHeaderTpl) {\n this._sideBarHeaderPortal = new TemplatePortal(\n this._sideBarHeaderTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._sideBarFooterTpl) {\n this._sideBarFooterPortal = new TemplatePortal(\n this._sideBarFooterTpl,\n this._viewContainerRef,\n )\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n if (this._baseLayoutRef) {\n this._baseLayoutRef.unregisterNav(this)\n }\n }\n\n public expand() {\n this.expanded = true\n }\n\n public collapse() {\n this.expanded = false\n }\n\n public toggle() {\n this.expanded = !this.expanded\n }\n\n public animateStart() {\n if (this.expanded) {\n this._backdropHidden.next(false)\n }\n }\n\n public animateEnd() {\n if (!this.expanded) {\n this._backdropHidden.next(true)\n }\n }\n\n get expandOriginTransform(): string | null {\n switch (this.expandOrigin) {\n case 'right':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateX(100vw) translateX(-100%)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateX(100vw)'\n : null\n case 'top':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateY(0)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateY(-100%)'\n : null\n case 'bottom':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateY(100vh) translateY(-100%)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateY(100vh)'\n : null\n case 'left':\n default:\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateX(0)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateX(-100%)'\n : null\n }\n }\n}\n","<div\n class=\"side-nav-backdrop\"\n *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"\n></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>\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle\n *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\"\n >\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\n *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 >\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n","import { NgModule } from '@angular/core'\n\nimport { SideNavItemComponent } from './side-nav-item/side-nav-item.component'\nimport { SideNavToggleComponent } from './side-nav-toggle/side-nav-toggle.component'\nimport { SideNavComponent } from './side-nav.component'\n\n@NgModule({\n imports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],\n exports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],\n})\nexport class TheSeamSideNavModule {}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core'\n\nimport { faAngleDown } from '@fortawesome/free-solid-svg-icons'\n\nimport {\n CanDisableCtor,\n InputBoolean,\n mixinDisabled,\n} from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\n\nclass TopBarMenuButtonBase {}\n\nconst _TopBarMenuButtonMixinBase: CanDisableCtor & typeof TopBarMenuButtonBase =\n mixinDisabled(TopBarMenuButtonBase)\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[seamTopBarMenuButton]',\n templateUrl: './top-bar-menu-button.component.html',\n styleUrls: ['./top-bar-menu-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'seamButton',\n inputs: ['disabled'],\n host: {\n 'attr.type': 'button',\n class: 'btn border text-decoration-none py-0 top-bar-menu-button',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, NgTemplateOutlet, TheSeamIconModule],\n})\nexport class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {\n static ngAcceptInputType_compact: BooleanInput\n\n faAngleDown = faAngleDown\n\n /** Custom template to show in desktop mode. No default. */\n @Input() detailTpl: TemplateRef<any> | undefined | null\n\n /** Custom template to show in mobile mode. Defaults to icon. */\n @Input() compactDetailTpl: TemplateRef<any> | undefined | null\n\n @Input() @InputBoolean() compact = false\n\n /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null\n\n @HostBinding('class.top-bar-menu-button--compact') get _hasCompactClass() {\n return this.compact\n }\n @HostBinding('class.p-0') get _hasPadding0Class() {\n return this.compact\n }\n @HostBinding('class.rounded') get _hasRoundedClass() {\n return this.compact\n }\n @HostBinding('class.btn-link') get _hasBtnLinkClass() {\n return !this.compact\n }\n}\n","<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\n [icon]=\"profileIcon\"\n iconType=\"borderless-styled-square\"\n ></seam-icon>\n </ng-template>\n</ng-template>\n","import { NgIf, NgStyle } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core'\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\n@Component({\n selector: 'seam-top-bar-title',\n templateUrl: './top-bar-title.component.html',\n styleUrls: ['./top-bar-title.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, NgStyle, FlexLayoutModule],\n})\nexport class TopBarTitleComponent {\n @Input() titleText: string | undefined | null\n @Input() subTitleText: string | undefined | null\n}\n","<h2\n class=\"mb-0\"\n [ngStyle]=\"{ 'font-size.px': 32 }\"\n [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\"\n [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\"\n>\n {{ titleText }}\n <br fxHide.gt-sm />\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarCompactMenuBtnDetail]',\n exportAs: 'seamTopBarCompactMenuBtnDetail',\n})\nexport class TopBarCompactMenuBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarNavToggleBtnDetail]',\n exportAs: 'seamTopBarNavToggleBtnDetail',\n})\nexport class TopBarNavToggleBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject, Input, TemplateRef } from '@angular/core'\n\nexport type TopBarPosition = 'left' | 'right' | 'center'\n\n@Directive({\n selector: '[seamTopBarItem]',\n exportAs: 'seamTopBarItem',\n})\nexport class TopBarItemDirective {\n public readonly template = inject(TemplateRef<any>)\n\n position: TopBarPosition = 'right'\n\n @Input() set seamTopBarItem(value: any) {\n this.position = value\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarMenuBtnDetail]',\n exportAs: 'seamTopBarMenuBtnDetail',\n})\nexport class TopBarMenuBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject } from '@angular/core'\n\nimport { MenuComponent } from '@theseam/ui-common/menu'\n\n@Directive({\n selector: 'seam-menu[seamTopBarMenu]',\n exportAs: 'seamTopBarMenu',\n})\nexport class TopBarMenuDirective {\n public readonly menu = inject(MenuComponent, { self: true })\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { map, shareReplay, startWith, takeUntil } from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\nimport { faUserCircle } from '@fortawesome/free-regular-svg-icons'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport {\n TheSeamLayoutModule,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\n\nimport { TopBarCompactMenuBtnDetailDirective } from './top-bar-compact-menu-btn-detail.directive'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\nimport { TopBarNavToggleBtnDetailDirective } from './top-bar-nav-toggle-btn-detail.directive'\nimport { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\nimport { TopBarMenuButtonComponent } from './top-bar-menu-button/top-bar-menu-button.component'\n// import { TheSeamBaseLayoutNavToggleDirective } from '../base-layout/directives/base-layout-nav-toggle.directive'\nimport { TheSeamBaseLayoutModule } from '../base-layout/base-layout.module'\n\n/**\n * Top bar of an app.\n *\n * The top bar is fairly opinionated, so most parts are not intended to be\n * customized unless there is an input.\n *\n * > If you have to make a change and apply it externally with a css class or js\n * > make sure there is an issue to get the feature changed, so we don't have\n * > different modifications across our apps. Also, this will help make sure\n * > your change should have even been done.\n */\n@Component({\n selector: 'seam-top-bar',\n templateUrl: './top-bar.component.html',\n styleUrls: ['./top-bar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'seamTopBar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n RouterModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamMenuModule,\n TheSeamBaseLayoutModule,\n TheSeamLayoutModule,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n // TheSeamBaseLayoutNavToggleDirective,\n ],\n})\nexport class TheSeamTopBarComponent implements OnDestroy, AfterContentInit {\n static ngAcceptInputType_hasTitle: BooleanInput\n\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject<void>()\n\n /** @ignore */\n readonly faBars = faBars\n\n /** @ignore */\n @ContentChild(TopBarMenuDirective, { static: true })\n _topBarMenu?: TopBarMenuDirective | null\n /** @ignore */\n @ContentChildren(TopBarItemDirective)\n _topBarItems?: QueryList<TopBarItemDirective>\n /** @ignore */\n @ContentChild(TopBarMenuBtnDetailDirective)\n _topBarMenuBtnDetailTpl?: TopBarMenuBtnDetailDirective | null\n /** @ignore */\n @ContentChild(TopBarCompactMenuBtnDetailDirective)\n _topBarCompactMenuBtnDetailTpl?: TopBarCompactMenuBtnDetailDirective | null\n /** @ignore */\n @ContentChild(TopBarNavToggleBtnDetailDirective)\n _topBarNavToggleBtnDetailTpl?: TopBarNavToggleBtnDetailDirective | null\n\n /** Logo displayed on the top bar. */\n @Input() logo: string | undefined | null\n /** Logo displayed on the top bar when a smaller logo is needed. */\n @Input() logoSm: string | undefined | null\n\n /** External url to link to when `logo` is clicked. */\n @Input() logoHref?: string | null\n\n /** Link target used when `logoHref` is specified. Defaults to `\"_blank\"` */\n @Input() logoHrefTarget = '_blank'\n\n /** Route to link to when `logo` is clicked. Defaults to `/`. */\n @Input() logoRoute = '/'\n\n /** Determines if the title should be displayed. */\n @Input() @InputBoolean() hasTitle = false\n\n /** Title text displayed when `hasTitle` is true. */\n @Input() titleText: string | undefined | null\n\n /** Sub Title text displayed when `hasTitle` is true. The sub title will be less prominent. */\n @Input() subTitleText: string | undefined | null\n\n /** Determines if the top bar button should be displayed. */\n @Input() @InputBoolean() hasTopBarMenuButton = true\n\n /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null = faUserCircle\n\n /** Icon to display for mobile nav toggle. Defaults to faBars. */\n @Input() toggleIcon: SeamIcon | undefined | null = faBars\n\n /** Display nav toggle on either left or right side of top bar. Defaults to left. */\n @Input() navToggleAlign: 'left' | 'right' | undefined | null = 'left'\n\n /** @ignore */\n readonly _leftItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display on left side of top bar */\n readonly leftItems$ = this._leftItems.asObservable()\n\n /** @ignore */\n readonly _centerItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display in center of top bar */\n readonly centerItems$ = this._centerItems.asObservable()\n\n /** @ignore */\n readonly _rightItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display on right side of top bar */\n readonly rightItems$ = this._rightItems.asObservable()\n\n /** @ignore */\n readonly isMobile$: Observable<boolean>\n\n constructor(private readonly _layout: TheSeamLayoutService) {\n this.isMobile$ = this._layout.isMobile$\n }\n\n /** @ignore */\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /** @ignore */\n ngAfterContentInit() {\n if (this._topBarItems) {\n this._topBarItems.changes\n .pipe(\n startWith(undefined),\n map(() => {\n const items = this._topBarItems?.toArray() || []\n\n const left = items.filter((i) => i.position === 'left')\n const right = items.filter((i) => i.position === 'right')\n const center = items.filter((i) => i.position === 'center')\n\n this._leftItems.next(left)\n this._rightItems.next(right)\n this._centerItems.next(center)\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n }\n}\n","<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\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img\n *ngIf=\"logo\"\n [src]=\"logo\"\n [src.lt-md]=\"logoSm ? logoSm : logo\"\n alt=\"Logo\"\n />\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 >\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\n class=\"d-flex flex-column justify-content-center pr-2\"\n *ngIf=\"isMobile$ | async\"\n >\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template\n [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"\n ></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button\n seamBaseLayoutNavToggle\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n ></button>\n </ng-template>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamTopBarComponent } from './top-bar.component'\nimport { TopBarCompactMenuBtnDetailDirective } from './top-bar-compact-menu-btn-detail.directive'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuButtonComponent } from './top-bar-menu-button/top-bar-menu-button.component'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\nimport { TopBarNavToggleBtnDetailDirective } from './top-bar-nav-toggle-btn-detail.directive'\nimport { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\n\n@NgModule({\n imports: [\n TheSeamTopBarComponent,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective,\n TopBarCompactMenuBtnDetailDirective,\n TopBarNavToggleBtnDetailDirective,\n ],\n exports: [\n TheSeamTopBarComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective,\n TopBarCompactMenuBtnDetailDirective,\n TopBarNavToggleBtnDetailDirective,\n ],\n})\nexport class TheSeamTopBarModule {}\n","import {\n animate,\n animateChild,\n group,\n keyframes,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations'\n\nexport const fader = trigger('routeAnimations', [\n transition('* <=> *', [\n // Set a default style for enter and leave\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n opacity: 0,\n transform: 'scale(0) translateY(100%)',\n }),\n ],\n { optional: true },\n ),\n // Animate the new page in\n query(\n ':enter',\n [\n animate(\n '600ms ease',\n style({ opacity: 1, transform: 'scale(1) translateY(0)' }),\n ),\n ],\n { optional: true },\n ),\n ]),\n])\n\n// function slideTo(direction) {\n// return [\n// query(':enter, :leave', [\n// style({\n// position: 'absolute',\n// top: 0,\n// [direction]: 0,\n// width: '100%'\n// })\n// ], { optional: true }),\n// query(':enter', [\n// style({ [direction]: '-100%'})\n// ], { optional: true }),\n// group([\n// query(':leave', [\n// animate('1000ms ease', style({ [direction]: '100%'}))\n// ], { optional: true }),\n// query(':enter', [\n// animate('1000ms ease', style({ [direction]: '0%'}))\n// ], { optional: true })\n// ]),\n// // Normalize the page style... Might not be necessary\n\n// // Required only if you have child animations on the page\n// query(':leave', animateChild(), { optional: true }),\n// query(':enter', animateChild(), { optional: true }),\n// ]\n// }\n\n// TODO: Refactor the slider animation, because AOT or ng-packagr, I haven't\n// looked into what exactly is preventing it, doesn't allow the function call.\n// export const slider =\n// trigger('routeAnimations', [\n// transition('* => isLeft', slideTo('left') ),\n// transition('* => isRight', slideTo('right') ),\n// transition('isRight => *', slideTo('left') ),\n// transition('isLeft => *', slideTo('right') )\n// ])\n\n// export const contentLeave =\n// trigger('contentLeave', [\n// transition(':leave', [\n\n// ])\n// ])\n\nexport const slider = trigger('routeAnimations', [\n transition('* => isLeft', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ left: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ left: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ left: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('* => isRight', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ right: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ right: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ right: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isRight => *', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ left: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ left: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ left: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isLeft => *', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ right: '-100%' })], {\n optional: true,\n }),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ right: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ right: '0%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n])\n\nexport const transformer = trigger('routeAnimations', [\n transition('* => isLeft', transformTo({ x: -100, y: -100, rotate: -720 })),\n transition('* => isRight', transformTo({ x: 100, y: -100, rotate: 90 })),\n transition('isRight => *', transformTo({ x: -100, y: -100, rotate: 360 })),\n transition('isLeft => *', transformTo({ x: 100, y: -100, rotate: -360 })),\n])\n\nfunction transformTo({ x = 100, y = 0, rotate = 0 }) {\n const optional = { optional: true }\n return [\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n optional,\n ),\n query(\n ':enter',\n [style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })],\n { optional: true },\n ),\n group([\n query(\n ':leave',\n [\n animate(\n '600ms ease-out',\n style({\n transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)`,\n }),\n ),\n ],\n optional,\n ),\n query(\n ':enter',\n [\n animate(\n '600ms ease-out',\n style({ transform: `translate(0, 0) rotate(0)` }),\n ),\n ],\n { optional: true },\n ),\n ]),\n ]\n}\n\nexport const stepper = trigger('routeAnimations', [\n transition('* <=> *', [\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n group([\n query(\n ':enter',\n [\n animate(\n '2000ms ease',\n keyframes([\n style({ transform: 'scale(0) translateX(100%)', offset: 0 }),\n style({ transform: 'scale(0.5) translateX(25%)', offset: 0.3 }),\n style({ transform: 'scale(1) translateX(0%)', offset: 1 }),\n ]),\n ),\n ],\n { optional: true },\n ),\n query(\n ':leave',\n [\n animate(\n '2000ms ease',\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({\n transform: 'scale(0.5) translateX(-25%) rotate(0)',\n offset: 0.35,\n }),\n style({\n opacity: 0,\n transform: 'translateX(-50%) rotate(-180deg) scale(6)',\n offset: 1,\n }),\n ]),\n ),\n ],\n { optional: true },\n ),\n ]),\n ]),\n])\n\nexport const sideToSide = trigger('routeAnimations', [\n transition('* => *', [\n style({\n position: 'fixed',\n width: '100%',\n transform: 'translateX(-100%)',\n }),\n animate('1000ms ease', style({ transform: 'translateX(0%)' })),\n ]),\n transition(':leave', [\n style({\n position: 'fixed',\n width: '100%',\n transform: 'translateX(0%)',\n }),\n animate('1000ms ease', style({ transform: 'translateX(-100%)' })),\n ]),\n])\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnDestroy,\n} from '@angular/core'\nimport {\n ActivatedRoute,\n NavigationEnd,\n NavigationStart,\n Router,\n RouterOutlet,\n} from '@angular/router'\nimport { combineLatest, Subject } from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport {\n fader,\n sideToSide,\n slider,\n stepper,\n transformer,\n} from './hierarchy-route-animations'\n\nexport function routeChanges(router: Router) {\n return router.events.pipe(\n filter(\n (event) =>\n event instanceof NavigationStart || event instanceof NavigationEnd,\n ),\n distinctUntilChanged((x: any, y: any) => x.id === y.id),\n map((event) => ({ url: event.url })),\n )\n}\n\n//\n// TODO: Animation improvement: Try adding a full component animation that\n// queries the <ng-content> and <router-outlet> blocks. When the outlet\n// activates, set the animation state to a transition that moves both blocks\n// together.\n//\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-hierarchy-router-outlet',\n templateUrl: './hierarchy-router-outlet.component.html',\n styleUrls: ['./hierarchy-router-outlet.component.scss'],\n animations: [\n // fader,\n slider,\n // transformer,\n // stepper,\n // sideToSide\n // contentLeave\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class HierarchyRouterOutletComponent implements OnDestroy {\n private _uid = _uid++\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n animState = 'isRight'\n // animState = ''\n\n outletActive = false\n\n ngContentVisible = true\n\n constructor(\n private _route: ActivatedRoute,\n private _router: Router,\n ) {\n this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n // tap(v => console.log(`_hasChildren()[${this._uid}]`, this._hasChildren())),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n\n // routeChanges(this._router)\n // .pipe(\n // untilDestroyed(this),\n // tap(() => {\n // // if (this._hasChildren()) {\n // // this.animState = 'isLeft'\n // // } else {\n // // this.animState = 'isRight'\n // // }\n // })\n // )\n // .subscribe(v => console.log(`routeChanges[${this._uid}]`, v))\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n private _hasChildren() {\n const count = this._route.pathFromRoot.length - 1\n let countFull = 0\n if (this._router.parseUrl(this._router.url).root.children.primary) {\n countFull = this._router.parseUrl(this._router.url).root.children.primary\n .segments.length\n }\n // console.log(`_hasChildren[${this._uid}]`, { count, countFull })\n return countFull > count\n }\n\n prepareRoute(outlet: RouterOutlet) {\n // console.log(`outlet[${this._uid}]`, outlet, this.animState, this._hasChildren(), this.outletActive)\n if (outlet.isActivated) {\n // console.log(outlet.isActivated)\n // console.log(outlet.component)\n // console.log(this.animState)\n return this.animState\n } else {\n return undefined\n }\n // console.log(`prepareRoute[${this._uid}]`, this.animState, this._hasChildren())\n // console.log('activatedRouteData', outlet && outlet.activatedRouteData)\n // if (outlet && outlet.isActivated) {\n // console.log('activatedRoute', outlet.activatedRoute && outlet.activatedRoute.snapshot.url)\n // }\n // return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation']\n // console.log('')\n // return this.animState\n }\n\n outletActivate(event: any) {\n // console.log(`outletActivate[${this._uid}]`, event)\n this.outletActive = true\n }\n\n outletDeactivate(event: any) {\n // console.log(`outletDeactivate[${this._uid}]`, event)\n this.outletActive = false\n }\n\n routeAnimationsStart(event: any) {\n // console.log('routeAnimationsStart', event)\n this.ngContentVisible = true\n }\n\n routeAnimationsDone(event: any) {\n // console.log('routeAnimationsDone', event)\n this.ngContentVisible = !this.outletActive\n }\n}\n","<div\n class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\"\n>\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\" [class.h-100]=\"!ngContentVisible\">\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet\n #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\"\n >\n </router-outlet>\n </div>\n</div>\n","import { Injectable } from '@angular/core'\nimport {\n ActivatedRouteSnapshot,\n Resolve,\n RouterStateSnapshot,\n} from '@angular/router'\nimport { Observable } from 'rxjs'\nimport { map, take } from 'rxjs/operators'\n\n@Injectable({ providedIn: 'root' })\nexport class HierarchyLevelResolver implements Resolve<number> {\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<number> | Promise<number> | number {\n // console.log('[HierarchyLevelResolver]', route)\n // console.log('[HierarchyLevelResolver]', state)\n return this._getMaxHierLevel(route)\n }\n\n private _getMaxHierLevel(route: ActivatedRouteSnapshot) {\n let curr = route\n while (curr.parent) {\n curr = curr.parent\n if (curr.data['hierLevel']) {\n return curr.data['hierLevel'] + 1\n }\n }\n\n return 0\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { HierarchyRouterOutletComponent } from './hierarchy-router-outlet/hierarchy-router-outlet.component'\n\n@NgModule({\n declarations: [HierarchyRouterOutletComponent],\n imports: [CommonModule, RouterModule],\n exports: [HierarchyRouterOutletComponent],\n})\nexport class TheSeamDynamicRouterModule {}\n","import { Component, Input, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-checkbox',\n templateUrl: './schema-form-checkbox.component.html',\n styleUrls: ['./schema-form-checkbox.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamCheckboxComponent,\n ],\n})\nexport class TheSeamSchemaFormCheckboxComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n trueValue = true\n falseValue = false\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n if (this.controlValue === null || this.controlValue === undefined) {\n this.controlValue = this.options?.title\n }\n }\n\n updateValue(event: any) {\n event.preventDefault()\n this._jsf.updateValue(\n this,\n event.target.checked ? this.trueValue : this.falseValue,\n )\n }\n\n get isChecked() {\n return (this._jsf.getFormControlValue(this) as any) === this.trueValue\n }\n}\n","<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox\n 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 >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-input',\n templateUrl: './schema-form-input.component.html',\n styleUrls: ['./schema-form-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n ],\n})\nexport class TheSeamSchemaFormInputComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n autoCompleteList: string[] = []\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\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 />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <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 [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 />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-number',\n templateUrl: './schema-form-number.component.html',\n styleUrls: ['./schema-form-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n ],\n})\nexport class TheSeamSchemaFormNumberComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n allowNegative = true\n allowDecimal = true\n allowExponents = false\n lastValidNumber = ''\n\n constructor(private jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this.jsf.initializeControl(this)\n if (this.layoutNode?.dataType === 'integer') {\n this.allowDecimal = false\n }\n }\n\n updateValue(event: any) {\n this.jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n 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 [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 />\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n 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 [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 />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport {\n buildTitleMap,\n isArray,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n} from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { NgSelectModule } from '@ng-select/ng-select'\n\n@Component({\n selector: 'seam-schema-form-select',\n templateUrl: './schema-form-select.component.html',\n styleUrls: ['./schema-form-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n NgSelectModule,\n ],\n})\nexport class TheSeamSchemaFormSelectComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n selectList: any[] = []\n isArray = isArray\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this.selectList = buildTitleMap(\n this.options.titleMap || this.options.enumNames,\n this.options.enum,\n !!this.options.required,\n !!this.options.flatList,\n )\n\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n 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 [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n 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 [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 >\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</div>\n","import { Component, Input, isDevMode, OnDestroy, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport {\n AbstractControl,\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport {\n buildTitleMap,\n hasOwn,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n TitleMapItem,\n} from '@ajsf/core'\nimport {\n observeControlStatus,\n observeControlValue,\n} from '@theseam/ui-common/utils'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\n\n// NOTE: This is aliasing TitleMapItem, because we may want to extend it's\n// options. For simplicity, I am letting this work similar to a 'select' widget.\nexport type TheSeamSchemaFormSubmitSplitItem = TitleMapItem\n\n// NOTE: This component is a little hacky, because I am basically creating a\n// data widget that acts like a data and 'submit' widget at the same time.\n//\n// TODO: Try and think of a nicer way to implement this, but still make sense\n// from a schema definition. The library may need to me forked to actually\n// support this in the way I expect, but maybe there is another way.\n@Component({\n selector: 'seam-schema-form-submit-split',\n templateUrl: './schema-form-submit-split.component.html',\n styleUrls: ['./schema-form-submit-split.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamMenuModule,\n TheSeamButtonsModule,\n ],\n})\nexport class TheSeamSchemaFormSubmitSplitComponent\n implements OnInit, OnDestroy, TheSeamSchemaFormControlWidget\n{\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject<void>()\n\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n _buttonLabel = ''\n\n _dropdownObj: any\n _dropdownDisabled = false\n _selectList: TheSeamSchemaFormSubmitSplitItem[] = []\n _selectedItem?: TheSeamSchemaFormSubmitSplitItem\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n /** @ignore */\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n\n // NOTE: This is commented out, because there is a bug with submit widgets\n // manually defined in layout. All nodes initialized from the provided\n // layout have their options populated from the defaults and 'disabled' is\n // on of the default properties, so the 'disableInvalidSubmit' condition\n // never gets reached.\n //\n // My initial idea for fixing would be to check if the disabled property\n // exists and is a boolean, or possibly anything defined that can coerce\n // into a boolean. I can't think of a reason disabled should be anything\n // else, so that may be an acceptable fix, but I don't want to enable that\n // yet.\n //\n // if (hasOwn(this.options, 'disabled')) {\n // console.log('[TheSeamSchemaFormSubmitSplitComponent] hasDisabled', this.options.disabled)\n // this.controlDisabled = this.options.disabled\n // } else\n if (this._jsf.formOptions.disableInvalidSubmit) {\n this.controlDisabled = !this._jsf.isValid\n this._jsf.isValidChanges.subscribe(\n (isValid) => (this.controlDisabled = !isValid),\n )\n }\n if (this.controlValue === null || this.controlValue === undefined) {\n this.controlValue = this.options.title\n }\n\n if (hasOwn(this.options, 'title')) {\n this._buttonLabel = this.options.title\n }\n\n this._initDropdown()\n\n // console.log('this', this)\n }\n\n /** @ignore */\n ngOnDestroy(): void {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n updateValue(event: any) {\n if (typeof this.options?.onClick === 'function') {\n this.options.onClick(event)\n } else {\n this._jsf.updateValue(this, event.target.value)\n }\n }\n\n private _initDropdown(): void {\n if (\n !hasOwn(this.layoutNode, 'items') ||\n !(this.layoutNode?.items || []).length\n ) {\n return\n }\n\n if (isDevMode()) {\n if (this.layoutNode?.items && this.layoutNode?.items.length > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `TheSeamSchemaFormSubmitSplitComponent only supports one item.` +\n ` items after index 0 will be ignored.`,\n )\n }\n }\n\n const idx = 0\n const item = (this.layoutNode?.items as any)[idx] || {}\n this._dropdownObj = {\n layoutNode: item,\n layoutIndex: (this.layoutIndex || []).concat(idx),\n dataIndex:\n this.layoutNode?.dataType === 'array'\n ? (this.dataIndex || []).concat(idx)\n : this.dataIndex,\n\n options: item.options || {},\n }\n\n this._jsf.initializeControl(this._dropdownObj)\n\n const items = buildTitleMap(\n this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames,\n this._dropdownObj.options.enum,\n !!this._dropdownObj.options.required,\n !!this._dropdownObj.options.flatList,\n )\n\n this._selectList = items\n\n // TODO: Should this be checking if the control is bound?\n const dropdownControl = this._getDropdownControl()\n if (!dropdownControl) {\n return\n }\n\n observeControlValue(dropdownControl)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((value) => {\n this._setSelectListCheckedProp(value)\n this._selectedItem = this._getSelectedItem()\n })\n\n observeControlStatus(dropdownControl)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((value) => {\n this._dropdownDisabled = dropdownControl.disabled\n })\n }\n\n private _getDropdownControl(): UntypedFormControl | undefined {\n return this._dropdownObj.formControl as UntypedFormControl\n }\n\n private _setSelectListCheckedProp(value: any) {\n const items = this._selectList\n for (const item of items) {\n if (item.value === value) {\n item.checked = true\n } else if (item.checked) {\n item.checked = false\n }\n }\n this._selectList = [...items]\n }\n\n private _getSelectedItem(): TheSeamSchemaFormSubmitSplitItem | undefined {\n return (this._selectList || []).find((x) => x.checked === true)\n }\n\n _setDropdownValue(value: any) {\n const formControl = this._getDropdownControl()\n formControl?.setValue(value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button\n seamButton\n theme=\"primary\"\n 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 >\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\"> [{{ _selectedItem.name }}] </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\"\n >\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button\n seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\"\n >\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core'\n\nimport { TheSeamSchemaFormWidget } from '../../schema-form'\n\n@Component({\n selector: 'seam-schema-form-divider',\n template: `<hr [class]=\"options?.htmlClass\" />`,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n standalone: true,\n})\nexport class TheSeamSchemaFormDividerComponent\n implements OnInit, TheSeamSchemaFormWidget\n{\n options: TheSeamSchemaFormWidget['options']\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamTelInputModule } from '@theseam/ui-common/tel-input'\n\n@Component({\n selector: 'seam-schema-form-tel',\n templateUrl: './schema-form-tel.component.html',\n // styleUrls: ['./schema-form-tel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamTelInputModule,\n ],\n})\nexport class TheSeamSchemaFormTelComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n autoCompleteList: string[] = []\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\n </seam-tel-input>\n</seam-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { inject } from '@angular/core'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\nimport { Platform } from '@angular/cdk/platform'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamTiledSelectModule,\n TheSeamTiledSelectItem,\n TheSeamTiledSelectLayout,\n} from '@theseam/ui-common/tiled-select'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\n\n@Component({\n selector: 'seam-schema-form-tiled-select',\n templateUrl: './schema-form-tiled-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamTiledSelectModule,\n ],\n})\nexport class TheSeamSchemaFormTiledSelectComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n private readonly _jsf = inject(JsonSchemaFormService)\n private readonly _platform = inject(Platform)\n\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n tiles: TheSeamTiledSelectItem[] = []\n layout: TheSeamTiledSelectLayout = 'grid'\n multiple = false\n selectionToggleable = true\n tileBackdrop = false\n showSelectedIcon = true\n animationsDisabled: boolean = this._platform.IOS\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n this.tiles = this.options.tiles || []\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\n </seam-tiled-select>\n</seam-form-field>\n","import { Component, Input } from '@angular/core'\n\nimport { JsonSchemaFormModule } from '@ajsf/core'\n\n@Component({\n selector: 'seam-schema-form-framework',\n templateUrl: './schema-form-framework.component.html',\n styleUrls: ['./schema-form-framework.component.scss'],\n host: {\n '[attr.data-name]': 'layoutNode?.node',\n '[attr.data-data-pointer]': 'layoutNode?.dataPointer',\n },\n imports: [JsonSchemaFormModule],\n})\nexport class TheSeamSchemaFormFrameworkComponent {\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n}\n","<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\"\n>\n</select-widget-widget>\n","import {\n Inject,\n Injectable,\n InjectionToken,\n Optional,\n inject,\n} from '@angular/core'\n\nimport { Framework } from '@ajsf/core'\n\nimport { TheSeamSchemaFormCheckboxComponent } from '../schema-form-controls/schema-form-checkbox/schema-form-checkbox.component'\nimport { TheSeamSchemaFormInputComponent } from '../schema-form-controls/schema-form-input/schema-form-input.component'\nimport { TheSeamSchemaFormNumberComponent } from '../schema-form-controls/schema-form-number/schema-form-number.component'\nimport { TheSeamSchemaFormSelectComponent } from '../schema-form-controls/schema-form-select/schema-form-select.component'\nimport { TheSeamSchemaFormSubmitSplitComponent } from '../schema-form-controls/schema-form-submit-split/schema-form-submit-split.component'\nimport { TheSeamSchemaFormSubmitComponent } from '../schema-form-controls/schema-form-submit/schema-form-submit.component'\nimport { TheSeamSchemaFormDividerComponent } from '../schema-form-controls/schema-form-divider/schema-form-divider.component'\nimport { TheSeamSchemaFormTelComponent } from '../schema-form-controls/schema-form-tel/schema-form-tel.component'\nimport { TheSeamSchemaFormTiledSelectComponent } from '../schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component'\n\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nexport type TheSeamSchemaFormFrameworkOverrides = Omit<\n Framework,\n 'name' | 'framework' | 'stylesheet' | 'scripts'\n>\n\nexport const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES =\n new InjectionToken<TheSeamSchemaFormFrameworkOverrides>(\n 'THESEAM_SCHEMA_FRAMEWORK_OVERRIDES',\n )\n\nexport function extendFramework(\n toExtend: Framework,\n extendFrameworkOrName: Framework | string,\n): void {\n // console.log('extendFramework', toExtend, extendFrameworkOrName)\n const _overrides: Framework[] | null = inject(Framework, {\n optional: true,\n }) as Framework[] | null\n const overrides =\n typeof extendFrameworkOrName === 'string'\n ? (_overrides || []).filter((x) => x.name === extendFrameworkOrName)\n : [extendFrameworkOrName]\n\n // console.log(_overrides, overrides)\n\n if (overrides) {\n for (const override of overrides) {\n // console.log('override', override)\n if (hasProperty(override, 'framework')) {\n toExtend.framework = override.framework\n }\n\n if (hasProperty(override, 'widgets')) {\n toExtend.widgets = { ...toExtend.widgets, ...override.widgets }\n }\n\n if (hasProperty(override, 'stylesheets')) {\n toExtend.stylesheets = {\n ...toExtend.stylesheets,\n ...override.stylesheets,\n }\n }\n\n if (hasProperty(override, 'scripts')) {\n toExtend.scripts = { ...toExtend.scripts, ...override.scripts }\n }\n }\n }\n}\n\n@Injectable()\nexport class TheSeamFramework extends Framework {\n name = 'seam-framework'\n\n framework = TheSeamSchemaFormFrameworkComponent\n\n widgets = {\n checkbox: TheSeamSchemaFormCheckboxComponent,\n // 'submit': TheSeamSchemaFormSubmitComponent,\n submit: TheSeamSchemaFormSubmitSplitComponent,\n text: TheSeamSchemaFormInputComponent,\n number: TheSeamSchemaFormNumberComponent,\n select: TheSeamSchemaFormSelectComponent,\n divider: TheSeamSchemaFormDividerComponent,\n tel: TheSeamSchemaFormTelComponent,\n 'tiled-select': TheSeamSchemaFormTiledSelectComponent,\n\n // 'date': // TODO: Implement\n // 'file': // TODO: Implement\n // 'image': // TODO: Implement\n // 'richtext': // TODO: Implement\n // 'tabs': // TODO: Implement\n // 'wizard': // TODO: Implement\n // 'card': // TODO: Implement\n // 'map': // TODO: Implement\n }\n\n constructor(\n @Optional()\n @Inject(THESEAM_SCHEMA_FRAMEWORK_OVERRIDES)\n _overrides?: TheSeamSchemaFormFrameworkOverrides[],\n ) {\n super()\n\n // console.log('TheSeamFramework', _overrides, this)\n\n if (_overrides) {\n for (const override of _overrides) {\n // console.log('override', override)\n if (hasProperty(override, 'widgets')) {\n this.widgets = { ...this.widgets, ...override.widgets }\n }\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport {\n Framework,\n FrameworkLibraryService,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n WidgetLibraryModule,\n WidgetLibraryService,\n} from '@ajsf/core'\n\nimport { TheSeamFramework } from './schema-form-framework'\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\n\n@NgModule({\n imports: [\n CommonModule,\n JsonSchemaFormModule,\n WidgetLibraryModule,\n TheSeamSchemaFormFrameworkComponent,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: TheSeamFramework, multi: true },\n ],\n exports: [TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule],\n})\nexport class TheSeamSchemaFormModule {}\n","import { hasProperty, isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n INavBasic,\n INavButton,\n INavDivider,\n INavItem,\n INavItemState,\n INavLink,\n INavTitle,\n NavItemCanHaveChildren,\n NavItemCanHaveState,\n} from './nav.models'\n\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'title',\n): item is INavTitle\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'divider',\n): item is INavDivider\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'basic',\n): item is INavBasic\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'link',\n): item is INavLink\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'button',\n): item is INavButton\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: string,\n): item is INavItem {\n return item.itemType === type\n}\n\nexport function isHorizontalNavItemActive(item: INavItem): boolean {\n return item.__state?.active ?? false\n}\n\nexport function isHorizontalNavItemExpanded(item: INavItem): boolean {\n return item.__state?.expanded ?? false\n}\n\nexport function isHorizontalNavItemFocused(item: INavItem): boolean {\n return item.__state?.focused ?? false\n}\n\nexport function horizontalNavItemHasChildren(\n item: INavItem,\n): item is (INavBasic | INavLink) & Required<NavItemCanHaveChildren> {\n return (\n horizontalNavItemCanHaveChildren(item) &&\n hasProperty(item, 'children') &&\n item.children.length > 0\n )\n}\n\nexport function horizontalNavItemCanHaveChildren(\n item: INavItem,\n): item is INavBasic | INavLink {\n return (\n isHorizontalNavItemType(item, 'basic') ||\n isHorizontalNavItemType(item, 'link')\n )\n}\n\nexport function horizontalNavItemHasActiveChild(item: INavItem): boolean {\n if (!horizontalNavItemHasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (\n getHorizontalNavItemStateProp(child, 'active') ||\n horizontalNavItemHasActiveChild(child)\n ) {\n return true\n }\n }\n\n return false\n}\n\nexport function horizontalNavItemHasExpandedChild(item: INavItem): boolean {\n if (!horizontalNavItemHasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getHorizontalNavItemStateProp(child, 'expanded')) {\n return true\n }\n }\n\n return false\n}\n\nexport function horizontalNavItemCanBeActive(\n item: INavItem,\n): item is INavBasic | INavLink {\n return (\n isHorizontalNavItemType(item, 'basic') ||\n isHorizontalNavItemType(item, 'link')\n )\n}\n\nexport function horizontalNavItemCanExpand(\n item: INavItem,\n): item is INavBasic | INavLink {\n return horizontalNavItemCanHaveChildren(item)\n}\n\nexport function findHorizontalNavLinkItems(items: INavItem[]): INavLink[] {\n const linkItems: INavLink[] = []\n\n const _fn = (_items: INavItem[]) => {\n for (const item of _items) {\n if (isHorizontalNavItemType(item, 'link')) {\n linkItems.push(item)\n }\n if (\n horizontalNavItemCanHaveChildren(item) &&\n hasProperty(item, 'children')\n ) {\n _fn(item.children)\n }\n }\n }\n _fn(items)\n\n return linkItems\n}\n\nexport function setHorizontalNavItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n value: INavItemState[K],\n): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getHorizontalNavItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n): INavItemState[K] {\n return setDefaultHorizontalNavItemState(item).__state[prop]\n}\n\nexport function setDefaultHorizontalNavItemState(\n item: INavItem,\n): INavItem & Required<NavItemCanHaveState> {\n if (hasProperty(item, '__state')) {\n return item\n }\n\n item.__state = {\n active: false,\n expanded: false,\n focused: false,\n } as INavItemState\n\n // TODO: See if there is a nice way to fix the typing for this.\n return item as any\n}\n\nexport function areSameHorizontalNavItem(\n item1: INavItem | undefined,\n item2: INavItem | undefined,\n): boolean {\n if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {\n return false\n }\n\n if (item1.itemType !== item2.itemType) {\n return false\n }\n\n if (\n isHorizontalNavItemType(item1, 'title') &&\n isHorizontalNavItemType(item2, 'title')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'divider') &&\n isHorizontalNavItemType(item2, 'divider')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'basic') &&\n isHorizontalNavItemType(item2, 'basic')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'link') &&\n isHorizontalNavItemType(item2, 'link')\n ) {\n return item1.label === item2.label && item1.link === item2.link\n } else if (\n isHorizontalNavItemType(item1, 'button') &&\n isHorizontalNavItemType(item2, 'button')\n ) {\n return item1.onClick === item2.onClick\n }\n\n return false\n}\n","import { inject, Injectable } from '@angular/core'\nimport {\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n UrlCreationOptions,\n} from '@angular/router'\nimport { BehaviorSubject, defer, Observable, Subject, Subscriber } from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap,\n} from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n areSameHorizontalNavItem,\n getHorizontalNavItemStateProp,\n horizontalNavItemCanExpand,\n horizontalNavItemHasActiveChild,\n horizontalNavItemHasChildren,\n horizontalNavItemHasExpandedChild,\n isHorizontalNavItemActive,\n isHorizontalNavItemType,\n setDefaultHorizontalNavItemState,\n setHorizontalNavItemStateProp,\n} from './nav-utils'\nimport {\n INavItem,\n INavItemState,\n INavLink,\n NavItemStateChanged,\n} from './nav.models'\n\n@Injectable()\nexport class TheSeamNavService {\n private readonly _router = inject(Router)\n\n private readonly _updatingCount = new BehaviorSubject<number>(0)\n\n public readonly loading$: Observable<boolean>\n\n public readonly itemChanged = new Subject<NavItemStateChanged>()\n\n constructor() {\n this.loading$ = this._updatingCount.pipe(\n map((count) => count > 0),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public createItemsObservable(items: INavItem[]): Observable<INavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n this.updateRouterFocusedItem(items)\n return new Observable((subscriber: Subscriber<INavItem[]>) => {\n const stateChangeSub = this.itemChanged\n .pipe(\n switchMap((change) => {\n if (change.prop === 'focused' && change.newValue) {\n this.updateFocusedItem(items, change.item)\n }\n return this.loading$.pipe(filter((loading) => !loading))\n }),\n )\n .subscribe(() => {\n subscriber.next(items)\n })\n\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n\n const routeChangeSub = this._router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event) => {\n try {\n this.updateItemsStates(items)\n this.updateRouterFocusedItem(items)\n } catch (err) {\n subscriber.error(err)\n }\n })\n\n return () => {\n stateChangeSub.unsubscribe()\n routeChangeSub.unsubscribe()\n }\n }).pipe(startWith(items))\n })\n }\n\n private _incUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value + 1)\n }\n\n private _decrUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value - 1)\n }\n\n public updateItemsStates(items: INavItem[]): void {\n this._incUpdatingCount()\n\n try {\n for (const item of items) {\n if (horizontalNavItemHasChildren(item)) {\n this.updateItemsStates(item.children)\n }\n\n this.updateItemState(item)\n }\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public updateItemState(item: INavItem): void {\n this._incUpdatingCount()\n\n try {\n setDefaultHorizontalNavItemState(item)\n\n this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item))\n\n // TODO: Implement this in a more optimized way. Unless our apps start\n // having large navs constantly updating their state, this shouldn't\n // have much impact on performance.\n this._updateItemExpandedState(item)\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public horizontalNavLinkActive(item: INavItem): boolean {\n if (isHorizontalNavItemType(item, 'link')) {\n const url = this._getUrl(item)\n if (notNullOrUndefined(url)) {\n const opts = this._getMatchOptions(item)\n return this._router.isActive(url, opts)\n }\n }\n return false\n }\n\n private _updateItemsExpandedState(items: INavItem[]): void {\n for (const item of items) {\n if (horizontalNavItemHasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n this._updateItemExpandedState(item)\n }\n }\n\n private _updateItemExpandedState(item: INavItem): void {\n if (!horizontalNavItemCanExpand(item)) {\n if (getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n return\n }\n\n if (horizontalNavItemHasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n\n if (\n horizontalNavItemHasActiveChild(item) ||\n horizontalNavItemHasExpandedChild(item)\n ) {\n if (!getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', true)\n }\n } else {\n if (getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n }\n }\n\n public updateRouterFocusedItem(items: INavItem[]) {\n const focusedItem =\n items.find((i) => isHorizontalNavItemActive(i)) ||\n items.find((i) => horizontalNavItemHasActiveChild(i))\n if (notNullOrUndefined(focusedItem)) {\n this.updateFocusedItem(items, focusedItem)\n }\n }\n\n public updateFocusedItem(\n items: INavItem[],\n focusedItem: INavItem | undefined,\n ): void {\n for (const item of items) {\n if (areSameHorizontalNavItem(item, focusedItem)) {\n setHorizontalNavItemStateProp(item, 'focused', true)\n } else {\n setHorizontalNavItemStateProp(item, 'focused', false)\n }\n }\n }\n\n private _getNavExtras(item: INavLink): UrlCreationOptions {\n const navigationExtras: UrlCreationOptions = {}\n if (hasProperty(item, 'queryParams')) {\n navigationExtras.queryParams = item.queryParams\n }\n if (hasProperty(item, 'fragment')) {\n navigationExtras.fragment = item.fragment\n }\n if (hasProperty(item, 'queryParamsHandling')) {\n navigationExtras.queryParamsHandling = item.queryParamsHandling\n }\n if (hasProperty(item, 'preserveFragment')) {\n navigationExtras.preserveFragment = item.preserveFragment\n }\n return navigationExtras\n }\n\n private _getUrl(item: INavLink): string | null {\n const link = item.link\n\n if (typeof link === 'string') {\n return this._router\n .createUrlTree([link], this._getNavExtras(item))\n .toString()\n } else if (Array.isArray(link)) {\n return this._router\n .createUrlTree(link, this._getNavExtras(item))\n .toString()\n }\n\n return null\n }\n\n private _getMatchOptions(item: INavLink): IsActiveMatchOptions {\n const defaultMatchOpts: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n\n if (hasProperty(item, 'matchOptions')) {\n return {\n ...defaultMatchOpts,\n ...item.matchOptions,\n }\n }\n\n return defaultMatchOpts\n }\n\n public setItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n value: INavItemState[K],\n ): void {\n const currentValue = getHorizontalNavItemStateProp(item, prop)\n if (currentValue !== value) {\n setHorizontalNavItemStateProp(item, prop, value)\n\n const changed: NavItemStateChanged = {\n item,\n prop,\n prevValue: currentValue,\n newValue: value,\n }\n this.itemChanged.next(changed)\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport {\n BooleanInput,\n coerceBooleanProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { RouterModule } from '@angular/router'\nimport { BehaviorSubject, Subject } from 'rxjs'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { TheSeamIconModule, type SeamIcon } from '@theseam/ui-common/icon'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { MenuComponent, TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamTooltipModule } from '@theseam/ui-common/tooltip'\n\nimport { horizontalNavItemHasActiveChild } from '../nav-utils'\nimport {\n INavItem,\n NavItemBadgeTooltip,\n NavItemChildAction,\n NavItemExpandAction,\n} from '../nav.models'\nimport { TheSeamNavService } from '../nav.service'\n\n@Component({\n selector: 'seam-nav-item',\n templateUrl: './nav-item.component.html',\n styleUrls: ['./nav-item.component.scss'],\n exportAs: 'seamNavItem',\n animations: [\n trigger('childGroupAnim', [\n transition(':enter', [\n style({ height: 0 }),\n animate('0.2s ease-in-out', style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ height: '*' }),\n animate('0.2s ease-in-out', style({ height: 0 })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n RouterModule,\n A11yModule,\n TheSeamMenuModule,\n TheSeamIconModule,\n TheSeamTooltipModule,\n ],\n})\nexport class NavItemComponent implements OnDestroy {\n static ngAcceptInputType_hierLevel: NumberInput\n static ngAcceptInputType_indentSize: NumberInput\n static ngAcceptInputType_expanded: BooleanInput\n static ngAcceptInputType_compact: BooleanInput\n static ngAcceptInputType_active: BooleanInput\n\n private readonly _nav = inject(TheSeamNavService)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n readonly faAngleLeft = faAngleLeft\n\n @Input() item: INavItem | undefined | null\n\n @Input() itemType:\n | 'divider'\n | 'basic'\n | 'link'\n | 'button'\n | 'title'\n | undefined\n | null\n\n @Input() icon: SeamIcon | undefined | null\n\n @Input() hideEmptyIcon: boolean | undefined | null\n\n @Input() label: string | undefined | null\n\n @Input() @InputBoolean() active = false\n\n @Input()\n set link(value: string | undefined | null) {\n this._link.next(value)\n }\n get link() {\n return this._link.value\n }\n private readonly _link = new BehaviorSubject<string | undefined | null>(\n undefined,\n )\n public readonly link$ = this._link.asObservable()\n\n @Input() queryParams: { [k: string]: any } | undefined | null\n\n @Input() children: INavItem[] | undefined | null\n\n @Input() @InputNumber(0) hierLevel = 0\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n set expanded(value: boolean) {\n this._expanded.next(coerceBooleanProperty(value))\n }\n get expanded() {\n return this._expanded.value\n }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) {\n this._compact.next(coerceBooleanProperty(value))\n }\n get compact() {\n return this._compact.value\n }\n private readonly _compact = new BehaviorSubject<boolean>(false)\n public readonly compact$ = this._compact.asObservable()\n\n @Input() focused = false\n\n @Input() badgeText: string | undefined | null\n @Input() badgeTheme: ThemeTypes | undefined | null = 'danger'\n\n /**\n * Content to provide to assistive technology, such as screen readers.\n */\n @Input() badgeSrContent: string | undefined | null\n\n @Input()\n get badgeTooltip() {\n return this._badgeTooltip\n }\n set badgeTooltip(value: string | NavItemBadgeTooltip | undefined | null) {\n if (value !== null && value !== undefined) {\n if (typeof value === 'string') {\n this._badgeTooltip = {\n tooltip: value,\n placement: 'auto',\n disabled: false,\n }\n } else {\n this._badgeTooltip = {\n ...value,\n placement: value.placement || 'auto',\n disabled:\n typeof value?.disabled === 'boolean'\n ? value.disabled\n : typeof value.tooltip !== 'string',\n }\n }\n } else {\n this._badgeTooltip = undefined\n }\n }\n private _badgeTooltip: NavItemBadgeTooltip | undefined | null\n\n @Input() childAction: NavItemChildAction = 'menu'\n\n @Input() expandAction: NavItemExpandAction = 'toggle'\n\n @Output() navItemExpanded = new EventEmitter<boolean>()\n\n @HostBinding('class.seam-nav-item--active') get _isActiveCssClass() {\n return this.active\n }\n\n @HostBinding('class.seam-nav-item--child-active')\n get _isChildActiveCssClass() {\n return this.hasActiveChild\n }\n\n @HostBinding('class.seam-nav-item--expanded') get _isExpandedCssClass() {\n return this.expanded\n }\n\n @HostBinding('class.seam-nav-item--focused') get _isFocusedCssClass() {\n return this.focused\n }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() {\n return this.hierLevel\n }\n\n @ViewChild(MenuComponent) _menu?: MenuComponent\n\n @ViewChildren(NavItemComponent) _navItems?: NavItemComponent[]\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n get hasChildren() {\n return Array.isArray(this.children) && this.children.length > 0\n }\n\n get hasActiveChild() {\n if (notNullOrUndefined(this.item)) {\n return horizontalNavItemHasActiveChild(this.item)\n }\n return false\n }\n\n get hasMenuToggle() {\n return this.hasChildren && this.childAction === 'menu'\n }\n\n get menuTpl(): MenuComponent | undefined {\n return this.hasMenuToggle ? this._menu : undefined\n }\n\n get hasExpandingChildren() {\n return this.hasChildren && this.childAction === 'expand'\n }\n\n public _toggleChildren(event: Event): void {\n let ex = !this.expanded\n if (this.expandAction === 'expandOnly') {\n ex = true\n }\n\n this.expanded = ex\n this.navItemExpanded.emit(this.expanded)\n if (this.item && this.expanded) {\n this._nav.setItemStateProp(this.item, 'focused', this.expanded)\n }\n\n // Prevents seam-menu from closing out when toggling child expand\n event.stopPropagation()\n }\n\n // Updates expanded state when user exits seam-menu\n _menuEvent(menuExpanded: any) {\n if (menuExpanded === false) {\n this.expanded = false\n\n // TODO: figure out why closing seam-menu with expanded submenu messes up animation\n if (this._navItems && this._navItems.length) {\n this._navItems.forEach((navItem) => {\n navItem.expanded = false\n })\n }\n }\n }\n\n get showIconBlock(): boolean {\n return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true\n }\n}\n","<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\n class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\"\n @childGroupAnim\n >\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n 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 >\n <div\n class=\"nav-link d-flex flex-row align-items-center w-100\"\n [class.nav-link__compact]=\"compact\"\n >\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\n *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\"\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a\n *ngIf=\"link; else noLink\"\n 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 >\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\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n >\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\n *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 >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\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\n class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$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 >\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\n *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 >\n </seam-nav-item>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { shareReplay, switchMap } from 'rxjs/operators'\n\nimport {\n INavItem,\n NavItemChildAction,\n NavItemExpandAction,\n NavItemExpandedEvent,\n} from '../nav.models'\nimport { TheSeamNavService } from '../nav.service'\nimport { NavItemComponent } from '../nav-item/nav-item.component'\n\n@Component({\n selector: 'seam-horizontal-nav',\n templateUrl: './horizontal-nav.component.html',\n styleUrls: ['./horizontal-nav.component.scss'],\n providers: [TheSeamNavService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgFor, AsyncPipe, NavItemComponent],\n})\nexport class HorizontalNavComponent implements OnDestroy {\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _nav = inject(TheSeamNavService)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n get items(): INavItem[] {\n return this._items.value\n }\n set items(value: INavItem[]) {\n this._items.next(value)\n }\n private _items = new BehaviorSubject<INavItem[]>([])\n public readonly items$: Observable<INavItem[]>\n\n @Input() hideEmptyIcon: boolean | undefined | null = true\n\n @Input() hierLevel = 0\n\n @Input() childAction: NavItemChildAction = 'menu'\n\n @Input() expandAction: NavItemExpandAction = 'toggle'\n\n @Output() navItemExpanded = new EventEmitter<NavItemExpandedEvent>()\n\n constructor() {\n this.items$ = this._items.asObservable().pipe(\n switchMap((items) =>\n items ? this._nav.createItemsObservable(items) : [],\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n _navItemExpanded(item: INavItem, expanded: boolean) {\n this.navItemExpanded.emit({ navItem: item, expanded })\n }\n}\n","<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{ hierLevel }}\">\n <div class=\"nav-items-row\">\n <seam-nav-item\n *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 >\n </seam-nav-item>\n </div>\n</div>\n","import { NgModule } from '@angular/core'\n\nimport { HorizontalNavComponent } from './horizontal-nav/horizontal-nav.component'\nimport { NavItemComponent } from './nav-item/nav-item.component'\n\n@NgModule({\n imports: [NavItemComponent, HorizontalNavComponent],\n exports: [NavItemComponent, HorizontalNavComponent],\n})\nexport class TheSeamNavModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","EXPANDED_STATE","COLLAPSED_STATE","map","i2","i3","i2.TheSeamSideNavService","i4","i5","i6.TheSeamBaseLayoutNavToggleDirective","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-framework.mjs","sources":["../../../projects/ui-common/framework/base-layout/directives/base-layout-content-footer.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-content-header.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-content.directive.ts","../../../projects/ui-common/framework/base-layout/base-layout-tokens.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-nav-toggle.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar-footer.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-top-bar.directive.ts","../../../projects/ui-common/framework/base-layout/directives/base-layout-side-bar-header.directive.ts","../../../projects/ui-common/framework/base-layout/base-layout.component.ts","../../../projects/ui-common/framework/base-layout/base-layout.component.html","../../../projects/ui-common/framework/base-layout/base-layout.module.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.html","../../../projects/ui-common/framework/dashboard/dashboard-widgets-tokens.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.html","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor-token.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.service.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.component.ts","../../../projects/ui-common/framework/dashboard/dashboard-widgets/dashboard-widgets.component.html","../../../projects/ui-common/framework/dashboard/dashboard.component.ts","../../../projects/ui-common/framework/dashboard/dashboard.component.html","../../../projects/ui-common/framework/dashboard/dashboard.module.ts","../../../projects/ui-common/framework/side-nav/side-nav-tokens.ts","../../../projects/ui-common/framework/side-nav/side-nav-item/side-nav-item.component.ts","../../../projects/ui-common/framework/side-nav/side-nav-item/side-nav-item.component.html","../../../projects/ui-common/framework/side-nav/side-nav-toggle/side-nav-toggle.component.ts","../../../projects/ui-common/framework/side-nav/side-nav-toggle/side-nav-toggle.component.html","../../../projects/ui-common/framework/side-nav/side-nav-utils.ts","../../../projects/ui-common/framework/side-nav/side-nav.service.ts","../../../projects/ui-common/framework/side-nav/side-nav.component.ts","../../../projects/ui-common/framework/side-nav/side-nav.component.html","../../../projects/ui-common/framework/side-nav/side-nav.module.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.html","../../../projects/ui-common/framework/top-bar/top-bar-title/top-bar-title.component.ts","../../../projects/ui-common/framework/top-bar/top-bar-title/top-bar-title.component.html","../../../projects/ui-common/framework/top-bar/top-bar-compact-menu-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-item.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu-btn-detail.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar-menu.directive.ts","../../../projects/ui-common/framework/top-bar/top-bar.component.ts","../../../projects/ui-common/framework/top-bar/top-bar.component.html","../../../projects/ui-common/framework/top-bar/top-bar.module.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-route-animations.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.ts","../../../projects/ui-common/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.html","../../../projects/ui-common/framework/dynamic-router/resolvers/hierarchy-level.resolver.ts","../../../projects/ui-common/framework/dynamic-router/dynamic-router.module.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-input/schema-form-input.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-input/schema-form-input.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-number/schema-form-number.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-number/schema-form-number.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-select/schema-form-select.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-select/schema-form-select.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.html","../../../projects/ui-common/framework/schema-form/schema-form-framework.component.ts","../../../projects/ui-common/framework/schema-form/schema-form-framework.component.html","../../../projects/ui-common/framework/schema-form/schema-form-framework.ts","../../../projects/ui-common/framework/schema-form/schema-form.module.ts","../../../projects/ui-common/framework/nav/nav-utils.ts","../../../projects/ui-common/framework/nav/nav.service.ts","../../../projects/ui-common/framework/nav/nav-item/nav-item.component.ts","../../../projects/ui-common/framework/nav/nav-item/nav-item.component.html","../../../projects/ui-common/framework/nav/horizontal-nav/horizontal-nav.component.ts","../../../projects/ui-common/framework/nav/horizontal-nav/horizontal-nav.component.html","../../../projects/ui-common/framework/nav/nav.module.ts","../../../projects/ui-common/framework/theseam-ui-common-framework.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentFooter]',\n exportAs: 'seamBaseLayoutContentFooter',\n})\nexport class BaseLayoutContentFooterDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentHeader]',\n exportAs: 'seamBaseLayoutContentHeader',\n})\nexport class BaseLayoutContentHeaderDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContent]',\n exportAs: 'seamBaseLayoutContent',\n})\nexport class BaseLayoutContentDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { TheSeamBaseLayoutRef } from './base-layout-ref'\n\nexport const THESEAM_BASE_LAYOUT_REF = new InjectionToken<TheSeamBaseLayoutRef>(\n 'seamBaseLayoutRef',\n)\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n inject,\n Inject,\n Input,\n OnInit,\n Optional,\n} from '@angular/core'\nimport { tap } from 'rxjs/operators'\n\nimport { TheSeamBaseLayoutRef } from '../base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from '../base-layout-tokens'\n\n/**\n * Can be used to toggle the expand state of the registered nav.\n */\n@Directive({\n selector: 'button[seamBaseLayoutNavToggle]',\n exportAs: 'seamBaseLayoutNavToggle',\n})\nexport class TheSeamBaseLayoutNavToggleDirective implements OnInit {\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _baseLayout: TheSeamBaseLayoutRef | null = inject(\n THESEAM_BASE_LAYOUT_REF,\n { optional: true },\n )\n\n public baseLayout: TheSeamBaseLayoutRef | undefined =\n this._baseLayout ?? undefined\n\n @HostBinding('attr.type')\n get _attrType() {\n return this.type\n }\n\n @Input() type: string | undefined | null = 'button'\n\n @HostBinding('attr.aria-label')\n get _attrAriaLabel() {\n return this.ariaLabel || null\n }\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string | undefined | null =\n 'Navigation toggle'\n\n @HostBinding('class.base-layout-nav-toggle') _toggleClass = true\n @HostBinding('class.base-layout-nav-toggle--expanded') _expandedClass = false\n\n @HostListener('click')\n _onClick() {\n if (this.baseLayout && this.baseLayout.registeredNav) {\n this.baseLayout.registeredNav.toggle()\n }\n }\n\n ngOnInit() {\n this.baseLayout?.registeredNav?.expanded$\n .pipe(\n tap((exp) => {\n this._expandedClass = exp\n this._cdr.markForCheck()\n }),\n )\n .subscribe()\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarFooter]',\n exportAs: 'seamBaseLayoutSideBarFooter',\n})\nexport class BaseLayoutSideBarFooterDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBar]',\n exportAs: 'seamBaseLayoutSideBar',\n})\nexport class BaseLayoutSideBarDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutTopBar]',\n exportAs: 'seamBaseLayoutTopBar',\n})\nexport class BaseLayoutTopBarDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { Directive, ElementRef, inject } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarHeader]',\n exportAs: 'seamBaseLayoutSideBarHeader',\n})\nexport class BaseLayoutSideBarHeaderDirective implements HasElementRef {\n public readonly _elementRef = inject(ElementRef)\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n forwardRef,\n inject,\n Input,\n isDevMode,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { BehaviorSubject, from, isObservable, Observable } from 'rxjs'\n\nimport {\n faAngleDoubleLeft,\n faAngleDoubleRight,\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n MediaQueryAliases,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport {\n TheSeamBaseLayoutAction,\n TheSeamBaseLayoutActionButton,\n} from './base-layout-action'\nimport { TheSeamBaseLayoutNav } from './base-layout-nav'\nimport { TheSeamBaseLayoutRef } from './base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from './base-layout-tokens'\nimport { BaseLayoutContentFooterDirective } from './directives/base-layout-content-footer.directive'\nimport { BaseLayoutContentHeaderDirective } from './directives/base-layout-content-header.directive'\nimport { BaseLayoutContentDirective } from './directives/base-layout-content.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\nexport const THE_SEAM_BASE_LAYOUT: any = {\n provide: THESEAM_BASE_LAYOUT_REF,\n useExisting: forwardRef(() => TheSeamBaseLayoutComponent),\n multi: false,\n}\n\n@Component({\n selector: 'seam-base-layout',\n templateUrl: './base-layout.component.html',\n styleUrls: ['./base-layout.component.scss'],\n providers: [THE_SEAM_BASE_LAYOUT],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n PortalModule,\n TheSeamOverlayScrollbarDirective,\n ],\n})\nexport class TheSeamBaseLayoutComponent\n implements OnInit, TheSeamBaseLayoutRef\n{\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _layout = inject(TheSeamLayoutService)\n\n readonly faAngleDoubleRight = faAngleDoubleRight\n readonly faAngleDoubleLeft = faAngleDoubleLeft\n\n @Input() overlayNav = false\n\n @Input() mobileBreakpoint: MediaQueryAliases | undefined\n\n @Input() showSidebar: boolean | undefined = true\n\n // TODO: Consider making the template queries not be dynamic. I can see this\n // potentially causing confusion or issues with potential layouts built with\n // this component.\n @ContentChild(BaseLayoutTopBarDirective, { static: true, read: TemplateRef })\n _topBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutSideBarDirective, { static: true, read: TemplateRef })\n _sideBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentDirective, { static: true, read: TemplateRef })\n _contentTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentHeaderDirective, {\n static: true,\n read: TemplateRef,\n })\n _contentHeaderTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentFooterDirective, {\n static: true,\n read: TemplateRef,\n })\n _contentFooterTpl?: TemplateRef<any> | null\n\n _topBarPortal?: TemplatePortal\n _sideBarPortal?: TemplatePortal\n _contentPortal?: TemplatePortal\n _contentHeaderPortal?: TemplatePortal\n _contentFooterPortal?: TemplatePortal\n\n private readonly _hasSideBar = new BehaviorSubject<boolean>(false)\n\n public readonly hasSideBar$: Observable<boolean>\n public readonly isMobile$: Observable<boolean>\n\n get registeredNav() {\n return this._registeredNav.value\n }\n private readonly _registeredNav = new BehaviorSubject<\n TheSeamBaseLayoutNav | undefined\n >(undefined)\n public readonly registeredNav$ = this._registeredNav.asObservable()\n\n get registeredActions() {\n return this._registeredActions.value\n }\n private readonly _registeredActions = new BehaviorSubject<\n TheSeamBaseLayoutAction[]\n >([])\n public readonly registeredActions$: Observable<TheSeamBaseLayoutAction[]>\n\n constructor() {\n this.registeredActions$ = this._registeredActions.asObservable()\n\n this.isMobile$ = this._layout.isMobile$\n this.hasSideBar$ = this._hasSideBar.asObservable()\n }\n\n ngOnInit() {\n if (this.mobileBreakpoint) {\n this._layout.setMobileBreakpoint(this.mobileBreakpoint)\n }\n\n if (this._topBarTpl) {\n this._topBarPortal = new TemplatePortal(\n this._topBarTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._sideBarTpl) {\n this._sideBarPortal = new TemplatePortal(\n this._sideBarTpl,\n this._viewContainerRef,\n )\n if (this.showSidebar) {\n this._hasSideBar.next(true)\n }\n }\n\n if (this._contentTpl) {\n this._contentPortal = new TemplatePortal(\n this._contentTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._contentHeaderTpl) {\n this._contentHeaderPortal = new TemplatePortal(\n this._contentHeaderTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._contentFooterTpl) {\n this._contentFooterPortal = new TemplatePortal(\n this._contentFooterTpl,\n this._viewContainerRef,\n )\n }\n }\n\n public registerNav(nav: TheSeamBaseLayoutNav): void {\n // TODO: Allow multiple registered navs\n // if (this.registeredNav) {\n // throw new Error('[TheSeamBaseLayoutComponent] A nav is already registered.')\n // }\n // console.log('register nav', nav)\n this._registeredNav.next(nav)\n }\n\n public unregisterNav(nav: TheSeamBaseLayoutNav): void {\n if (this.registeredNav === nav) {\n this._registeredNav.next(undefined)\n }\n }\n\n public registerAction(action: TheSeamBaseLayoutAction): void {\n const actions = this._registeredActions.value\n if (actions.findIndex((a) => a.name === action.name) !== -1) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[TheSeamBaseLayoutComponent] registerAction(): Action ${action.name} not ` +\n 'registered, because another action by that name is already registered.',\n )\n }\n return\n }\n actions.push(action)\n }\n\n public unregisterAction(action: TheSeamBaseLayoutAction | string): void {\n const actionName = typeof action === 'string' ? action : action.name\n const actions = this._registeredActions.value\n this._registeredActions.next(actions.filter((f) => f.name !== actionName))\n }\n\n public isActionRegistered(actionName: string): boolean {\n const actions = this._registeredActions.value\n const action = actions.find((f) => f.name === actionName)\n return !!action\n }\n\n _handleButtonAction(action: TheSeamBaseLayoutActionButton): void {\n this._execButtonAction(action).subscribe()\n }\n\n _execButtonAction(action: TheSeamBaseLayoutActionButton): Observable<void> {\n const fnRes = action.exec()\n return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes))\n }\n}\n","<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\" 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\n *ngFor=\"let action of registeredActions$ | async; first as isFirst\"\n >\n <div class=\"base-layout-registered-action\">\n <ng-container\n [ngTemplateOutlet]=\"$any(action)?.template\"\n ></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","import { NgModule } from '@angular/core'\n\nimport { TheSeamBaseLayoutComponent } from './base-layout.component'\nimport { BaseLayoutContentFooterDirective } from './directives/base-layout-content-footer.directive'\nimport { BaseLayoutContentHeaderDirective } from './directives/base-layout-content-header.directive'\nimport { BaseLayoutContentDirective } from './directives/base-layout-content.directive'\nimport { TheSeamBaseLayoutNavToggleDirective } from './directives/base-layout-nav-toggle.directive'\nimport { BaseLayoutSideBarFooterDirective } from './directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarHeaderDirective } from './directives/base-layout-side-bar-header.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\n@NgModule({\n imports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutSideBarHeaderDirective,\n BaseLayoutTopBarDirective,\n TheSeamBaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective,\n ],\n exports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutSideBarHeaderDirective,\n BaseLayoutTopBarDirective,\n TheSeamBaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective,\n ],\n})\nexport class TheSeamBaseLayoutModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\n\nimport type { IDashboardWidgetsItemDef } from '../dashboard-widgets/dashboard-widgets-item'\n\n@Component({\n selector: 'seam-dashboard-widget-container',\n templateUrl: './dashboard-widget-container.component.html',\n styleUrls: ['./dashboard-widget-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DashboardWidgetContainerComponent {\n @Input() def: IDashboardWidgetsItemDef | undefined | null\n\n @ViewChild(TemplateRef) templateRef?: TemplateRef<any>\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import { InjectionToken } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { DashboardWidgetContainerComponent } from './dashboard-widget-container/dashboard-widget-container.component'\n\nexport interface DashboardWidgetsAccessor {\n containers$: Observable<DashboardWidgetContainerComponent[]>\n}\n\nexport const THESEAM_DASHBOARD_WIDGETS_ACCESSOR =\n new InjectionToken<DashboardWidgetsAccessor>(\n 'THESEAM_DASHBOARD_WIDGETS_ACCESSOR',\n )\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core'\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport {\n DashboardWidgetsAccessor,\n THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n} from '../dashboard-widgets-tokens'\nimport { IDashboardWidgetsItem } from '../dashboard-widgets/dashboard-widgets-item'\n\n@Component({\n selector: 'seam-dashboard-widget-template-container',\n templateUrl: './dashboard-widget-template-container.component.html',\n styleUrls: ['./dashboard-widget-template-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, AsyncPipe],\n})\nexport class DashboardWidgetTemplateContainerComponent {\n private readonly _dashboardWidgetsComponent: DashboardWidgetsAccessor =\n inject(THESEAM_DASHBOARD_WIDGETS_ACCESSOR)\n\n @Input() item: IDashboardWidgetsItem | undefined | null\n\n public readonly template$: Observable<TemplateRef<any> | undefined>\n\n constructor() {\n this.template$ = this._dashboardWidgetsComponent.containers$.pipe(\n map((containers) =>\n containers.find((c: any) => c.def.widgetId === this.item?.widgetId),\n ),\n map((container) => container && container.templateRef),\n )\n }\n}\n","<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n","import {\n BasePortalOutlet,\n CdkPortalOutletAttachedRef,\n ComponentPortal,\n Portal,\n TemplatePortal,\n} from '@angular/cdk/portal'\nimport {\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core'\n\n/**\n * Mostly copied from\n * `https://github.com/angular/components/blob/master/src/cdk/portal/portal-directives.ts`\n * until I can figure out how to hold off removing the DOM nodes with the\n * cdkPortalOutlet. When we update to Angular 9 I may be able to do this better\n * with the new DomPortal.\n *\n * Directive version of a PortalOutlet. Because the directive *is* a\n * PortalOutlet, portals can be directly attached to it, enabling declarative\n * use.\n *\n * Usage: `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[seamDashboardWidgetPortalOutlet]',\n exportAs: 'seamDashboardWidgetPortalOutlet',\n inputs: ['portal: seamDashboardWidgetPortalOutlet'],\n})\nexport class DashboardWidgetPortalOutletDirective\n extends BasePortalOutlet\n implements OnInit, OnDestroy\n{\n private readonly _viewContainerRef = inject(ViewContainerRef)\n\n /** Whether the portal component is initialized. */\n private _isInitialized = false\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef?: CdkPortalOutletAttachedRef\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal\n }\n\n set portal(portal: Portal<any> | null) {\n // console.log('[DashboardWidgetPortalOutletDirective] set portal', portal, this.hasAttached())\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return\n }\n\n if (this.hasAttached()) {\n super.detach()\n }\n\n if (portal) {\n super.attach(portal)\n }\n\n this._attachedPortal = portal\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>()\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef | undefined {\n return this._attachedRef\n }\n\n ngOnInit() {\n this._isInitialized = true\n }\n\n ngOnDestroy() {\n // console.log('[DashboardWidgetPortalOutletDirective] ngOnDestroy')\n\n // TODO: Figure out the right way to call dispose without messing up\n // animation. This setTimeout way assumes the transition is 500ms, but that\n // may not always be the case and isn't guaranteed to match the animation ms\n // duration, since setTimeout isn't really meant for accurate timing. It\n // also makes debugging animations difficult, because you can pause an\n // animation, but the timeout will still run.\n setTimeout(() => {\n super.dispose()\n this._attachedPortal = null\n this._attachedRef = null\n }, 500)\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this)\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef =\n portal.viewContainerRef != null\n ? portal.viewContainerRef\n : this._viewContainerRef\n\n const ref = viewContainerRef.createComponent(portal.component, {\n index: viewContainerRef.length,\n injector: portal.injector || viewContainerRef.injector,\n })\n\n super.setDisposeFn(() => ref.destroy())\n this._attachedPortal = portal\n this._attachedRef = ref\n this.attached.emit(ref)\n\n return ref as any\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this)\n const viewRef = this._viewContainerRef.createEmbeddedView(\n portal.templateRef,\n portal.context,\n )\n super.setDisposeFn(() => this._viewContainerRef.clear())\n\n this._attachedPortal = portal\n this._attachedRef = viewRef\n this.attached.emit(viewRef)\n\n return viewRef\n }\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\n\nexport const THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR =\n new InjectionToken<ITheSeamDashboardWidgetsPreferencesAccessor>(\n 'ITheSeamDashboardWidgetsPreferencesAccessor',\n )\n","import { inject, Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { Observable, of, Subject } from 'rxjs'\nimport {\n auditTime,\n map,\n mapTo,\n shareReplay,\n startWith,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators'\n\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport {\n IDashboardWidgetItemLayout,\n IDashboardWidgetItemLayoutPreference,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n IDashboardWidgetsItemSerialized,\n IDashboardWidgetsPreferences,\n} from './dashboard-widgets-item'\nimport type { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\nimport { THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR } from './dashboard-widgets-preferences-accessor-token'\n\nexport interface IDashboardWidgetsPreferencesMapRecord {\n observable: Observable<IDashboardWidgetsPreferences>\n refresh: Subject<void>\n}\n\n// TODO: This needs a unit test to make sure it will not cause a race condition\n// if update is called faster than the previous can respond.\n//\n// The ideal approach I am thinking, without steping through the process too\n// thoroughly is to hold the new data emit until all pending updates are done.\n// Any pending updates other than the most recently requested will be ignored\n// and just wait on the most recent, and if already running it should be\n// canceled if possible. Also, incase something happens that causes the new data\n// emissions to get held up too long, there could be a threshold time that the\n// new data can be held up.\n\n/**\n * Manages anything dealing with retrieving and updating dashboard widget\n * preference data from the provided accessor.\n */\n@Injectable({ providedIn: 'root' })\nexport class DashboardWidgetsPreferencesService {\n private readonly _prefsAccessor: ITheSeamDashboardWidgetsPreferencesAccessor | null =\n inject(THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, { optional: true })\n\n private readonly _tablePrefsMap = new Map<\n string,\n IDashboardWidgetsPreferencesMapRecord\n >()\n // private _pending = false\n\n // public get pending() { return this._pending }\n\n public preferences(\n preferenceKey: string,\n ): Observable<IDashboardWidgetsPreferences> {\n let prefs = this._tablePrefsMap.get(preferenceKey)\n if (!prefs) {\n const refreshSubject = new Subject<void>()\n prefs = {\n observable: this._createObservable(refreshSubject, preferenceKey),\n refresh: refreshSubject,\n }\n this._tablePrefsMap.set(preferenceKey, prefs)\n }\n return prefs.observable\n }\n\n private _createObservable(\n refreshSubject: Subject<void>,\n prefKey: string,\n ): Observable<IDashboardWidgetsPreferences> {\n if (!this._prefsAccessor) {\n return of({})\n }\n\n const accessor = (key: string): Observable<string> =>\n this._prefsAccessor ? this._prefsAccessor.get(key) : of('{}')\n\n return refreshSubject.pipe(\n startWith({}),\n // tap(() => console.log('Start requesting: ', prefKey)),\n switchMap(() =>\n accessor(prefKey).pipe(\n map((v) => {\n if (!v) {\n return null\n }\n\n // TODO: Add a schema validator and migration tool to avoid parsing issues.\n try {\n return JSON.parse(v) as IDashboardWidgetsPreferences\n } catch (error) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n return null\n }\n }),\n map((v) => v || {}),\n // tap(v => console.log('preferences$', v)),\n // tap(v => this._pending = false),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public refresh(preferenceKey: string): Observable<void> {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n // this._pending = true\n // prefs.refresh.next()\n return prefs.observable.pipe(\n // tap(() => prefs.refresh.next()),\n tap(() =>\n setTimeout(() => {\n prefs.refresh.next()\n }, 0),\n ),\n mapTo(undefined),\n take(1),\n // tap(() => console.log('Done refreshing: ', preferenceKey)),\n )\n }\n\n return of(undefined)\n }\n\n public selectLayout(\n preferenceKey: string,\n layoutName: string,\n ): Observable<IDashboardWidgetItemLayoutPreference | undefined> {\n return this.preferences(preferenceKey).pipe(\n map((prefs) => (prefs.layouts || []).find((l) => l.name === layoutName)),\n )\n }\n\n // TODO: Improve this updating to not be more generic, so we can quickly add\n // edits for different preference schema's.\n //\n // TODO: Decide if a send queue/merging of pending queue is needed to avoid\n // out of order updates. This shouldn't be an issue, with how fast preferences\n // will most likely be changing, but it could happen in situations, such as\n // network issues.\n public updateLayout(\n preferenceKey: string,\n layout: IDashboardWidgetItemLayout,\n ): Observable<void> {\n if (!this._prefsAccessor) {\n return of(undefined)\n }\n\n if (!hasProperty(layout, 'name')) {\n throw Error(\n `Unable to save layout preference. 'name' is required for a layout preference.`,\n )\n }\n\n const _layout = this.toSerializeableLayout(layout)\n\n // this._pending = true\n return this.preferences(preferenceKey).pipe(\n map((prefs) => {\n // Making the preferences immutable may not be necessary, but for now\n // this obj->str->obj will work as a naive clone.\n const layouts = JSON.parse(JSON.stringify(prefs.layouts || []))\n const _layoutPref = layouts.find((c: any) => c.name === _layout.name)\n // console.log('has', _layoutPref)\n if (_layoutPref) {\n if (hasProperty(_layout, 'name')) {\n _layoutPref.name = _layout.name\n }\n if (hasProperty(_layout, 'label')) {\n _layoutPref.label = _layout.label\n }\n if (hasProperty(_layout, 'items')) {\n _layoutPref.items = _layout.items\n }\n } else {\n layouts.push({ ..._layout })\n }\n const newPrefs: IDashboardWidgetsPreferences = { ...prefs, layouts }\n return newPrefs\n }),\n // tap(v => console.log('newPrefs', v)),\n take(1),\n switchMap((newPrefs) =>\n this._prefsAccessor\n ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))\n : of(newPrefs),\n ),\n switchMap(() => this.refresh(preferenceKey).pipe(mapTo(undefined))),\n )\n // .subscribe()\n }\n\n public toSerializeableLayout(\n layout: IDashboardWidgetItemLayout,\n ): IDashboardWidgetItemLayoutPreference {\n const serialized: IDashboardWidgetItemLayoutPreference = {\n name: layout.name,\n label: layout.label,\n items: this.toSerializeableItems(layout.items as any) || [],\n }\n return serialized\n }\n\n // public toDeserializedLayout(layout: IDashboardWidgetItemLayoutSerialized): IDashboardWidgetItemLayoutDef {\n // // For now there is nothing to do. Eventually this should have at least\n // // validation on the deserialized object.\n // return layout\n // }\n\n /**\n * Returns the serializable widget items as objects that can be serialized to\n * a JSON string for storage.\n */\n public toSerializeableItems(\n widgets: IDashboardWidgetsItem[],\n ): IDashboardWidgetsItemSerialized[] {\n const serialized: IDashboardWidgetsItemSerialized[] = []\n for (const w of widgets) {\n // if (!w.__itemDef.component || typeof w.__itemDef.component !== 'string') {\n // console.warn(`[DashboardWidgetsService] Widget item def must have a string 'component' property to be serialized.`, w)\n // continue\n // }\n // serialized.push({\n // widgetId: w.widgetId,\n // col: w.col,\n // order: w.order,\n // component: w.__itemDef.component\n // })\n\n // TODO: Remove this, it is only here for initial dev debugging.\n serialized.push({\n widgetId: w.widgetId,\n col: w.col,\n order: w.order,\n // component: w.__itemDef.component as string,\n })\n }\n return serialized\n }\n\n // public toDeserializedItems(widgets: IDashboardWidgetsItemSerialized[]): IDashboardWidgetsItemDef[] {\n // const items: IDashboardWidgetsItemDef[] = []\n // for (const w of widgets) {\n // items.push({\n // widgetId: w.widgetId,\n // col: w.col,\n // order: w.order,\n // // component: w.component,\n // })\n // }\n // return items\n // }\n}\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport {\n inject,\n Injectable,\n Injector,\n isDevMode,\n ViewContainerRef,\n} from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport {\n auditTime,\n map,\n mapTo,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators'\n\nimport { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { THESEAM_WIDGET_DATA } from '@theseam/ui-common/widget'\n\nimport {\n IDashboardWidgetItemLayoutPreference,\n IDashboardWidgetsColumnRecord,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n} from './dashboard-widgets-item'\nimport { DashboardWidgetsPreferencesService } from './dashboard-widgets-preferences.service'\n\n@Injectable({ providedIn: 'root' })\nexport class DashboardWidgetsService {\n private readonly _dynamicComponentLoaderModule = inject(\n TheSeamDynamicComponentLoader,\n )\n private readonly _preferences = inject(DashboardWidgetsPreferencesService)\n\n public readonly preferenceKey: string = 'datatable-widgets'\n\n public readonly defaultNumColumns: number = 3\n\n /** Used for operations, such as 'addWidget', if the column is not specified. */\n public readonly defaultColumn: number = 0\n\n get widgets(): IDashboardWidgetsItemDef[] {\n return this._widgets.value\n }\n set widgets(value: IDashboardWidgetsItemDef[]) {\n this._widgets.next(value)\n }\n private readonly _widgets = new BehaviorSubject<IDashboardWidgetsItemDef[]>(\n [],\n )\n\n get numColumns(): number {\n return this._numColumns.value\n }\n set numColumns(value: number) {\n if (value !== this._numColumns.value) {\n this._numColumns.next(value)\n }\n }\n private readonly _numColumns = new BehaviorSubject<number>(\n this.defaultNumColumns,\n )\n\n public readonly numColumns$: Observable<number>\n public readonly widgetItems$: Observable<IDashboardWidgetsItem[]>\n public readonly widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n\n private readonly _viewContainerRefSubject = new BehaviorSubject<\n ViewContainerRef | undefined\n >(undefined)\n\n constructor() {\n this.numColumns$ = this._numColumns.asObservable()\n\n // Widget items without preferences\n const _widgetItems$ = combineLatest([\n this._widgets,\n this._viewContainerRefSubject,\n ]).pipe(switchMap(([defs, vcr]) => this.createWidgetItems(defs, vcr)))\n\n // Widget items with preferences\n this.widgetItems$ = combineLatest([_widgetItems$, this.numColumns$]).pipe(\n // Wait until the current tick is done, incase both the widgets and\n // number of columns are set durring the same tick. Without the audit,\n // this would get called twice when the component is initialized with\n // both inputs set one after the other individually.\n auditTime(0),\n switchMap(([items, numColumns]) =>\n this._preferences\n .selectLayout(this.preferenceKey, this._layoutName(numColumns))\n .pipe(\n map((layout) =>\n layout ? this.withLayoutPreferences(items, layout) : items,\n ),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this.widgetColumns$ = this.widgetItems$.pipe(\n map((items) => this.toColumnRecords(items)),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n private _layoutName(numColumns: number): string {\n return `columns-${numColumns}`\n }\n\n public setViewContainerRef(vcr: ViewContainerRef | undefined) {\n this._viewContainerRefSubject.next(vcr)\n }\n\n public createWidgetItems(\n defs: IDashboardWidgetsItemDef[],\n vcr?: ViewContainerRef,\n ): Observable<IDashboardWidgetsItem[]> {\n const _createObservables = (defs || []).map((d) =>\n this.createWidgetItem(d, vcr),\n )\n const items$ =\n _createObservables.length > 0 ? combineLatest(_createObservables) : of([])\n return items$.pipe(\n map((items) => items.filter(notNullOrUndefined)),\n tap((items) => {\n if (isDevMode()) {\n const ids: string[] = items.map((v) => v.widgetId)\n if (new Set(ids).size !== ids.length) {\n // eslint-disable-next-line no-console\n console.warn(\n `[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`,\n )\n }\n }\n }),\n )\n }\n\n public createWidgetItem(\n def: IDashboardWidgetsItemDef,\n vcr?: ViewContainerRef,\n ): Observable<IDashboardWidgetsItem | undefined> {\n if (\n !def.widgetId ||\n typeof def.widgetId !== 'string' ||\n def.widgetId.length < 1\n ) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`,\n def,\n )\n }\n return of(undefined)\n }\n\n return this.createWidgetPortal(def, vcr).pipe(\n map((portal) => ({\n ...def,\n col: def.col || this.defaultColumn,\n order: def.order || 0,\n portal,\n __itemDef: def,\n })),\n )\n }\n\n public createWidgetPortal(\n def: IDashboardWidgetsItemDef,\n vcr?: ViewContainerRef,\n ): Observable<ComponentPortal<any>> {\n const injector = Injector.create({\n providers: [\n { provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } },\n ],\n parent: this._viewContainerRefSubject.value?.injector,\n })\n\n // TODO: I still use the ViewContainerRef injector, but I don't pass it to\n // the portal, because it throws an error and I am not sure why. I would\n // like to find out why, even though I don't think it is needed, because our\n // code has been leaving it undefined for a while, when I thought it was\n // being used.\n\n if (typeof def.component === 'string') {\n return this._dynamicComponentLoaderModule\n .getComponentFactory(def.component)\n .pipe(\n map((componentFactory) => {\n return new ComponentPortal(\n componentFactory.componentType,\n undefined,\n injector,\n )\n }),\n take(1),\n )\n }\n\n return of(new ComponentPortal(def.component, undefined, injector))\n }\n\n public updateOrder(): Observable<void> {\n return this.widgetColumns$.pipe(\n take(1),\n tap((columns) =>\n columns.forEach((col) => {\n let i = 0\n col.items.forEach((itm) => (itm.order = i++))\n }),\n ),\n mapTo(undefined),\n )\n }\n\n public toColumnRecords(\n items: IDashboardWidgetsItem[],\n ): IDashboardWidgetsColumnRecord[] {\n let columns: IDashboardWidgetsColumnRecord[] = []\n\n for (let i = 0; i < this.numColumns; i++) {\n columns.push({ column: i, items: [] })\n }\n\n const colNotFound: IDashboardWidgetsItem[] = []\n\n // Distribute items into columns\n for (const item of items) {\n const col: IDashboardWidgetsColumnRecord | undefined = columns.find(\n (c) => c.column === item.col,\n )\n if (!col) {\n // columns.push({ column: item.col, items: [ item ] })\n // if (item.col < 0) {\n // const col0: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === 0)\n // if (col0) {\n // col0.items.push(item)\n // }\n // } else if (item.col > this.numColumns - 1) {\n // const colMax: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === this.numColumns - 1)\n // if (colMax) {\n // colMax.items.push(item)\n // }\n // }\n colNotFound.push(item)\n } else {\n col.items.push(item)\n }\n }\n\n for (let i = 0; i < colNotFound.length; i++) {\n const item = colNotFound[i]\n\n const col: IDashboardWidgetsColumnRecord | undefined = columns.find(\n (c) => c.column === i % this.numColumns,\n )\n\n if (col) {\n col.items.push(item)\n }\n }\n\n // Sort columns\n columns = columns.sort((a, b) => a.column - b.column)\n\n // Sort columns items\n columns.forEach((col) => col.items.sort((a, b) => a.order - b.order))\n\n return columns\n }\n\n public withLayoutPreferences(\n items: IDashboardWidgetsItem[],\n layout: IDashboardWidgetItemLayoutPreference,\n ): IDashboardWidgetsItem[] {\n const _items: IDashboardWidgetsItem[] = []\n\n for (const item of items) {\n const itemPref = layout.items.find((x) => x.widgetId === item.widgetId)\n _items.push({\n ...item,\n ...(itemPref || {}),\n })\n }\n\n return _items\n }\n\n public savePreferences(): Observable<void> {\n // Right now the items are moved between the column record arrays, but the\n // 'col' prop is not updated, so it is mapped to corrected items here from\n // the column records.\n const items$ = this.widgetColumns$.pipe(\n map((columns) =>\n ([] as IDashboardWidgetsItem[]).concat(\n ...columns.map((c) =>\n c.items.map((itm) => ({ ...itm, col: c.column })),\n ),\n ),\n ),\n )\n\n return combineLatest([items$, this.numColumns$]).pipe(\n auditTime(0),\n take(1),\n switchMap(([items, numColumns]) => {\n return this._preferences.updateLayout(this.preferenceKey, {\n name: this._layoutName(numColumns),\n items,\n })\n }),\n mapTo(undefined),\n )\n }\n}\n","import {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n CdkDrag,\n CdkDragDrop,\n DragDropModule,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop'\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport {\n auditTime,\n debounceTime,\n distinctUntilChanged,\n finalize,\n map,\n shareReplay,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport { faLock, faUnlock } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport {\n TheSeamElementResizedEvent,\n TheSeamElemResizedDirective,\n} from '@theseam/ui-common/shared'\nimport { THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common/widget'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\n\nimport { TheSeamBaseLayoutRef } from '../../base-layout/base-layout-ref'\nimport { THESEAM_BASE_LAYOUT_REF } from '../../base-layout/base-layout-tokens'\nimport { DashboardWidgetContainerComponent } from '../dashboard-widget-container/dashboard-widget-container.component'\n\nimport {\n DashboardWidgetsAccessor,\n THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n} from '../dashboard-widgets-tokens'\nimport {\n IDashboardWidgetsColumnRecord,\n IDashboardWidgetsItem,\n IDashboardWidgetsItemDef,\n} from './dashboard-widgets-item'\nimport { DashboardWidgetsService } from './dashboard-widgets.service'\nimport { DashboardWidgetTemplateContainerComponent } from '../dashboard-widget-template-container/dashboard-widget-template-container.component'\nimport { DashboardWidgetPortalOutletDirective } from '../dashboard-widgets/dashboard-widget-portal-outlet.directive'\n\n@Component({\n selector: 'seam-dashboard-widgets',\n templateUrl: './dashboard-widgets.component.html',\n styleUrls: ['./dashboard-widgets.component.scss'],\n providers: [\n {\n provide: THESEAM_WIDGET_ACCESSOR,\n useExisting: forwardRef(() => DashboardWidgetsComponent),\n },\n {\n provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n useExisting: forwardRef(() => DashboardWidgetsComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgFor,\n AsyncPipe,\n DragDropModule,\n TheSeamIconModule,\n TheSeamButtonsModule,\n TheSeamElemResizedDirective,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetContainerComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n})\nexport class DashboardWidgetsComponent\n implements OnInit, OnDestroy, AfterViewInit, DashboardWidgetsAccessor\n{\n static ngAcceptInputType_gapSize: NumberInput\n static ngAcceptInputType_numColumns: NumberInput\n static ngAcceptInputType_widgetsDraggable: BooleanInput\n static ngAcceptInputType_dragToggleVisible: BooleanInput\n static ngAcceptInputType_widgets:\n | IDashboardWidgetsItemDef[]\n | undefined\n | null\n\n private readonly _dashboardWidgets = inject(DashboardWidgetsService)\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _baseLayoutRef = inject<TheSeamBaseLayoutRef | null>(\n THESEAM_BASE_LAYOUT_REF,\n { optional: true },\n )\n\n readonly faLock = faLock\n readonly faUnlock = faUnlock\n\n public readonly _actionWidgetDragToggleName = 'widget-drag-toggle'\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n get gapSize(): number {\n return this._gapSize.value\n }\n set gapSize(val: number) {\n this._gapSize.next(coerceNumberProperty(val))\n }\n private readonly _gapSize = new BehaviorSubject<number>(30)\n\n @Input() @InputBoolean() widgetsDraggable = false\n\n @Input()\n get dragToggleVisible(): boolean {\n return this._dragToggleVisible.value\n }\n set dragToggleVisible(val: boolean) {\n this._dragToggleVisible.next(coerceBooleanProperty(val))\n }\n private _dragToggleVisible = new BehaviorSubject<boolean>(true)\n\n @Input()\n get numColumns(): number {\n return this._dashboardWidgets.numColumns\n }\n set numColumns(val: number) {\n this._dashboardWidgets.numColumns = coerceNumberProperty(val)\n }\n\n @Input()\n set widgets(value: IDashboardWidgetsItemDef[]) {\n this._dashboardWidgets.widgets = value || []\n }\n get widgets(): IDashboardWidgetsItemDef[] {\n return this._dashboardWidgets.widgets\n }\n\n public readonly widgetItems$: Observable<IDashboardWidgetsItem[]>\n public readonly widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n public readonly containers$: Observable<DashboardWidgetContainerComponent[]>\n\n readonly _gapStyleSize$: Observable<number>\n\n @ViewChildren(DashboardWidgetContainerComponent)\n containers?: QueryList<DashboardWidgetContainerComponent>\n @ViewChildren(CdkDrag) cdkDragDirectives?: QueryList<CdkDrag>\n\n @ViewChild('toggleBtnTpl', { static: true }) _toggleBtnTpl?: TemplateRef<any>\n\n private readonly _containers = new BehaviorSubject<\n DashboardWidgetContainerComponent[]\n >([])\n private readonly _layoutChange = new Subject<void>()\n\n @Output() readonly widgetsChange = new EventEmitter<IDashboardWidgetsItem[]>()\n\n private readonly _widthChange = new Subject<number>()\n\n constructor() {\n this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)\n\n this.containers$ = this._containers.asObservable()\n\n this._gapStyleSize$ = this._gapSize.pipe(\n auditTime(0),\n map((size) => size / 2),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this._widthChange\n .pipe(\n debounceTime(30),\n tap((width) => {\n if (width > 1300) {\n this.numColumns = 3\n } else if (width > 800) {\n this.numColumns = 2\n } else {\n this.numColumns = 1\n }\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n\n this.widgetItems$ = this._dashboardWidgets.widgetItems$\n this.widgetColumns$ = this._dashboardWidgets.widgetColumns$\n }\n\n ngOnInit() {\n // this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)\n\n this._layoutChange\n .pipe(\n switchMap(() =>\n this.widgetItems$.pipe(\n take(1),\n tap((widgetItems) => this.widgetsChange.emit(widgetItems)),\n // map(widgetItems => this._dashboardWidgets.toSerializeableItems(widgetItems)),\n // tap(v => console.log('serializable', v)),\n switchMap(() => this._dashboardWidgets.savePreferences()),\n ),\n ),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n\n ngOnDestroy() {\n this._unregisterToggleAction()\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n if (this._baseLayoutRef) {\n this._dragToggleVisible\n .pipe(\n distinctUntilChanged(),\n tap((visible) => {\n const isRegistered = this._isActionToggleActionRegistered()\n if (visible && !isRegistered) {\n this._registerToggleAction()\n } else if (!visible && isRegistered) {\n this._unregisterToggleAction()\n }\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n\n this.containers?.changes\n .pipe(\n startWith(undefined),\n map(() => this.containers?.toArray() || []),\n takeUntil(this._ngUnsubscribe),\n finalize(() => this._containers.next([])),\n )\n .subscribe((v) => this._containers.next(v))\n }\n\n private _registerToggleAction() {\n if (this._baseLayoutRef) {\n // This should probably use a component dynamically created from the\n // config and return a ref to it, instead of using a template.\n if (this._toggleBtnTpl) {\n this._baseLayoutRef.registerAction({\n // type: 'button',\n type: 'template',\n name: this._actionWidgetDragToggleName,\n label: 'Toggle Widget Dragging',\n // exec: () => {\n // console.log('toggle')\n // },\n template: this._toggleBtnTpl,\n })\n }\n }\n }\n\n private _unregisterToggleAction() {\n if (this._baseLayoutRef) {\n this._baseLayoutRef.unregisterAction(this._actionWidgetDragToggleName)\n }\n }\n\n private _isActionToggleActionRegistered() {\n if (!this._baseLayoutRef) {\n return false\n }\n return this._baseLayoutRef.isActionRegistered(\n this._actionWidgetDragToggleName,\n )\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(\n event.container.data,\n event.previousIndex,\n event.currentIndex,\n )\n this._dashboardWidgets\n .updateOrder()\n .subscribe(() => this._layoutChange.next())\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex,\n )\n this._dashboardWidgets\n .updateOrder()\n .subscribe(() => this._layoutChange.next())\n }\n }\n\n _containerTrackByFn(index: number, item: IDashboardWidgetsItem) {\n return item.widgetId\n }\n\n _columnsTrackByFn(index: number, record: IDashboardWidgetsColumnRecord) {\n return record.column\n }\n\n toggleDragging() {\n this.widgetsDraggable = !this.widgetsDraggable\n this._cdr.detectChanges()\n }\n\n _resized(event: TheSeamElementResizedEvent) {\n this._widthChange.next(event.size.width)\n }\n}\n","<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n<seam-dashboard-widget-container\n *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\"\n [def]=\"$any(item)\"\n>\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div\n class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup\n>\n <div\n *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\"\n >\n <div\n *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\"\n >\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container\n [item]=\"item\"\n ></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button\n seamButton\n theme=\"baselayout-action\"\n title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\"\n (click)=\"toggleDragging()\"\n >\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { IDashboardWidgetsItemDef } from './dashboard-widgets/dashboard-widgets-item'\nimport { DashboardWidgetsComponent } from './dashboard-widgets/dashboard-widgets.component'\n\n@Component({\n selector: 'seam-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DashboardWidgetsComponent],\n})\nexport class DashboardComponent {\n @Input() widgets: IDashboardWidgetsItemDef[] | undefined | null\n @Input() @InputBoolean() widgetsDraggable = true\n}\n","<seam-dashboard-widgets\n [widgets]=\"widgets\"\n [widgetsDraggable]=\"widgetsDraggable\"\n></seam-dashboard-widgets>\n","import { DragDropModule } from '@angular/cdk/drag-drop'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { DashboardWidgetContainerComponent } from './dashboard-widget-container/dashboard-widget-container.component'\nimport { DashboardWidgetTemplateContainerComponent } from './dashboard-widget-template-container/dashboard-widget-template-container.component'\nimport { DashboardWidgetPortalOutletDirective } from './dashboard-widgets/dashboard-widget-portal-outlet.directive'\nimport { DashboardWidgetsComponent } from './dashboard-widgets/dashboard-widgets.component'\nimport { DashboardComponent } from './dashboard.component'\n\n@NgModule({\n // declarations: [\n // // DashboardComponent,\n // // DashboardWidgetsComponent,\n\n // ],\n imports: [\n // CommonModule,\n // PortalModule,\n // DragDropModule,\n // TheSeamButtonsModule,\n // TheSeamIconModule,\n // TheSeamSharedModule,\n\n DashboardComponent,\n DashboardWidgetsComponent,\n DashboardWidgetContainerComponent,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n exports: [\n DashboardComponent,\n DashboardWidgetsComponent,\n DashboardWidgetPortalOutletDirective,\n ],\n})\nexport class TheSeamDashboardModule {}\n","import { InjectionToken } from '@angular/core'\n\nexport interface SideNavAccessor {\n overlay: boolean\n collapse(): void\n}\n\nexport const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken<SideNavAccessor>(\n 'THESEAM_SIDE_NAV_ACCESSOR',\n)\n\nexport interface SideNavConfig {\n /**\n * Default: false\n */\n activeNavigatable: boolean\n}\n\nexport const THESEAM_SIDE_NAV_CONFIG = new InjectionToken<SideNavConfig>(\n 'THESEAM_SIDE_NAV_CONFIG',\n)\n\nexport const DEFAULT_SIDE_NAV_CONFIG: SideNavConfig = {\n activeNavigatable: false,\n}\n","import {\n BooleanInput,\n coerceBooleanProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core'\nimport { animate, state, style, transition, trigger } from '@angular/animations'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { BehaviorSubject, map, Observable, Subject } from 'rxjs'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\nimport type { ThemeTypes } from '@theseam/ui-common/models'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamTooltipModule } from '@theseam/ui-common/tooltip'\n\nimport { SideNavAccessor, THESEAM_SIDE_NAV_ACCESSOR } from '../side-nav-tokens'\nimport {\n ISideNavItem,\n SideNavItemBadgeTooltip,\n SideNavItemMenuItemTooltipConfig,\n} from '../side-nav.models'\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\n@Component({\n selector: 'seam-side-nav-item',\n templateUrl: './side-nav-item.component.html',\n styleUrls: ['./side-nav-item.component.scss'],\n exportAs: 'seamSideNavItem',\n animations: [\n trigger('childGroupAnim', [\n state(EXPANDED_STATE, style({ height: '*' })),\n state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),\n transition(\n `${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`,\n animate('0.2s ease-in-out'),\n ),\n ]),\n ],\n imports: [\n CommonModule,\n RouterModule,\n TheSeamIconModule,\n A11yModule,\n TheSeamTooltipModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SideNavItemComponent implements OnDestroy {\n static ngAcceptInputType_hierLevel: NumberInput\n static ngAcceptInputType_indentSize: NumberInput\n static ngAcceptInputType_expanded: BooleanInput\n static ngAcceptInputType_compact: BooleanInput\n static ngAcceptInputType_active: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n readonly faAngleLeft = faAngleLeft\n\n readonly _linkHistoryState = { seamReload: true, triggeredByNavBar: true }\n\n @Input() itemType:\n | 'divider'\n | 'basic'\n | 'link'\n | 'button'\n | 'title'\n | undefined\n | null\n\n @Input() icon: SeamIcon | undefined | null\n\n @Input() hideEmptyIcon: boolean | undefined | null\n\n @Input() label: string | undefined | null\n\n @Input() @InputBoolean() active = false\n\n @Input() @InputBoolean() activeNavigatable = false\n\n @Input()\n set link(value: string | undefined | null) {\n this._link.next(value)\n }\n get link() {\n return this._link.value\n }\n private readonly _link = new BehaviorSubject<string | undefined | null>(\n undefined,\n )\n public readonly link$ = this._link.asObservable()\n\n @Input() queryParams: { [k: string]: any } | undefined | null\n\n @Input() children: ISideNavItem[] | undefined | null\n\n @Input() @InputNumber(0) hierLevel = 0\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n set expanded(value: boolean) {\n this._expanded.next(coerceBooleanProperty(value))\n }\n get expanded() {\n return this._expanded.value\n }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) {\n this._compact.next(coerceBooleanProperty(value))\n }\n get compact() {\n return this._compact.value\n }\n private readonly _compact = new BehaviorSubject<boolean>(false)\n public readonly compact$ = this._compact.asObservable()\n\n @Input() isMobile: boolean | undefined | null\n\n @Input() badgeText: string | undefined | null\n @Input() badgeTheme: ThemeTypes | undefined | null = 'danger'\n\n /**\n * Content to provide to assistive technology, such as screen readers.\n */\n @Input() badgeSrContent: string | undefined | null\n\n @Input()\n get badgeTooltip() {\n return this._badgeTooltip\n }\n set badgeTooltip(value: string | SideNavItemBadgeTooltip | undefined | null) {\n if (value !== null && value !== undefined) {\n if (typeof value === 'string') {\n this._badgeTooltip = {\n tooltip: value,\n placement: 'auto',\n container: 'body',\n disabled: false,\n }\n } else {\n this._badgeTooltip = {\n ...value,\n placement: value.placement || 'auto',\n container: value.container || 'body',\n disabled:\n typeof value?.disabled === 'boolean'\n ? value.disabled\n : typeof value.tooltip === 'string',\n }\n }\n } else {\n this._badgeTooltip = undefined\n }\n }\n private _badgeTooltip: SideNavItemBadgeTooltip | undefined | null\n\n @Input() menuItemTooltipConfig:\n | SideNavItemMenuItemTooltipConfig\n | undefined\n | null\n\n @Input() menuItemTooltipDisabled: boolean | undefined | null\n\n @HostBinding('class.seam-side-nav-item--active') get _isActiveCssClass() {\n return this.active\n }\n @HostBinding('class.active-clickable') get _isClickableWhenActiveCssClass() {\n return this.activeNavigatable\n }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() {\n return this.hierLevel\n }\n\n public readonly childGroupAnimState$: Observable<string>\n\n constructor(\n @Inject(THESEAM_SIDE_NAV_ACCESSOR)\n private readonly _sideNav: SideNavAccessor,\n ) {\n this.childGroupAnimState$ = this.expanded$.pipe(\n map((expanded) => (expanded ? EXPANDED_STATE : COLLAPSED_STATE)),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n get hasChildren() {\n return Array.isArray(this.children) && this.children.length > 0\n }\n\n public toggleChildren(): void {\n this.expanded = !this.expanded\n }\n\n _linkClicked() {\n // Close nav when link is clicked while in overlay state\n if (this._sideNav.overlay) {\n this._sideNav.collapse()\n }\n }\n\n get showIconBlock(): boolean {\n return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true\n }\n}\n","<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\n class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\"\n >\n <seam-side-nav-item\n *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 [activeNavigatable]=\"$any(child).activeNavigatable\"\n >\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n 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 [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\"\n >\n <div\n class=\"nav-link d-flex flex-row w-100\"\n [class.nav-link__compact]=\"compact\"\n >\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>{{\n label\n }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n >\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 >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div\n class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\n <a\n *ngIf=\"link; else noLink\"\n 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 [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\"\n >\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>{{\n label\n }}</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\n class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n >\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>{{\n label\n }}</span>\n </a>\n </ng-template>\n\n <button\n *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 >\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 >\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>{{\n label\n }}</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\n class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"\n isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\n \"\n >\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","import { BooleanInput } from '@angular/cdk/coercion'\nimport { CommonModule } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\n\n@Component({\n selector: 'seam-side-nav-toggle',\n templateUrl: './side-nav-toggle.component.html',\n styleUrls: ['./side-nav-toggle.component.scss'],\n host: {\n '[class.side-nav-toggle--compact]': '!expanded',\n },\n imports: [CommonModule, TheSeamIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SideNavToggleComponent {\n static ngAcceptInputType_expanded: BooleanInput\n\n @Input() @InputBoolean() expanded = false\n\n @Input() toggleIcon: SeamIcon | undefined | null\n\n @Input() toggleTpl: TemplateRef<any> | undefined | null\n\n @Output() toggleExpand = new EventEmitter<void>()\n\n toggle() {\n this.toggleExpand.emit()\n }\n}\n","<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 class=\"side-nav-toggle--btn mx-1\" (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\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\"\n >\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n","import { hasProperty } from '@theseam/ui-common/utils'\n\nimport {\n ISideNavBasic,\n ISideNavButton,\n ISideNavDivider,\n ISideNavItem,\n ISideNavItemState,\n ISideNavLink,\n ISideNavTitle,\n SideNavItemCanHaveChildren,\n SideNavItemCanHaveState,\n} from './side-nav.models'\nimport { SideNavConfig } from './side-nav-tokens'\n\ninterface NavItemTypeMap {\n title: ISideNavTitle\n divider: ISideNavDivider\n basic: ISideNavBasic\n link: ISideNavLink\n button: ISideNavButton\n}\n\nexport function isNavItemType<T extends keyof NavItemTypeMap>(\n item: ISideNavItem,\n type: T,\n): item is NavItemTypeMap[T] {\n return item.itemType === type\n}\n\nexport function isNavItemActive(item: ISideNavItem): boolean {\n return item.__state?.active ?? false\n}\n\nexport function isExpanded(item: ISideNavItem): boolean {\n return item.__state?.expanded ?? false\n}\n\nexport function hasChildren(\n item: ISideNavItem,\n): item is (ISideNavBasic | ISideNavLink) &\n Required<SideNavItemCanHaveChildren> {\n return (\n canHaveChildren(item) &&\n hasProperty(item, 'children') &&\n item.children.length > 0\n )\n}\n\nexport function canHaveChildren(\n item: ISideNavItem,\n): item is ISideNavBasic | ISideNavLink {\n return isNavItemType(item, 'basic') || isNavItemType(item, 'link')\n}\n\nexport function hasActiveChild(item: ISideNavItem): boolean {\n if (!hasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getItemStateProp(child, 'active')) {\n return true\n }\n }\n\n return false\n}\n\nexport function hasExpandedChild(item: ISideNavItem): boolean {\n if (!hasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getItemStateProp(child, 'expanded')) {\n return true\n }\n }\n\n return false\n}\n\nexport function canBeActive(\n item: ISideNavItem,\n): item is ISideNavButton | ISideNavLink {\n return isNavItemType(item, 'button') || isNavItemType(item, 'link')\n}\n\nexport function canExpand(\n item: ISideNavItem,\n): item is ISideNavBasic | ISideNavLink {\n return canHaveChildren(item)\n}\n\nexport function findLinkItems(items: ISideNavItem[]): ISideNavLink[] {\n const linkItems: ISideNavLink[] = []\n\n const _fn = (_items: ISideNavItem[]) => {\n for (const item of _items) {\n if (isNavItemType(item, 'link')) {\n linkItems.push(item)\n }\n if (canHaveChildren(item) && hasProperty(item, 'children')) {\n _fn(item.children)\n }\n }\n }\n _fn(items)\n\n return linkItems\n}\n\nexport function setItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n value: ISideNavItemState[K],\n): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n): ISideNavItemState[K] {\n return setDefaultState(item).__state[prop]\n}\n\nexport function setDefaultState(\n item: ISideNavItem,\n): ISideNavItem & Required<SideNavItemCanHaveState> {\n if (hasProperty(item, '__state')) {\n return item\n }\n\n item.__state = {\n active: false,\n expanded: false,\n }\n\n // TODO: See if there is a nice way to fix the typing for this.\n return item as any\n}\n\nexport function applyItemConfig(\n item: ISideNavItem,\n config: SideNavConfig,\n): ISideNavItem {\n if (canBeActive(item)) {\n if (\n !hasProperty(item, 'activeNavigatable') &&\n hasProperty(config, 'activeNavigatable')\n ) {\n item.activeNavigatable = config.activeNavigatable\n }\n }\n\n if (hasChildren(item)) {\n item.children = item.children.map((child) => applyItemConfig(child, config))\n }\n\n return item\n}\n","import { Injectable } from '@angular/core'\nimport {\n ActivatedRoute,\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n UrlCreationOptions,\n} from '@angular/router'\nimport {\n BehaviorSubject,\n combineLatest,\n defer,\n Observable,\n of,\n Subject,\n Subscriber,\n} from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n canExpand,\n getItemStateProp,\n hasActiveChild,\n hasChildren,\n hasExpandedChild,\n isNavItemType,\n setDefaultState,\n setItemStateProp,\n} from './side-nav-utils'\nimport {\n ISideNavItem,\n ISideNavItemState,\n ISideNavLink,\n SideNavItemStateChanged,\n} from './side-nav.models'\n\n@Injectable()\nexport class TheSeamSideNavService {\n private readonly _updatingCount = new BehaviorSubject<number>(0)\n\n public readonly loading$: Observable<boolean>\n\n public readonly itemChanged = new Subject<SideNavItemStateChanged>()\n\n constructor(private readonly _router: Router) {\n this.loading$ = this._updatingCount.pipe(\n map((count) => count > 0),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public createItemsObservable(\n items: ISideNavItem[],\n ): Observable<ISideNavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n return new Observable((subscriber: Subscriber<ISideNavItem[]>) => {\n const stateChangeSub = this.itemChanged\n .pipe(\n switchMap(() => this.loading$.pipe(filter((loading) => !loading))),\n )\n .subscribe(() => {\n subscriber.next(items)\n })\n\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n\n // const linkItems = findLinkItems(items)\n\n const routeChangeSub = this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n // ).subscribe(() => linkItems.forEach(itm => this.updateItemState(itm)))\n )\n .subscribe(() => {\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n })\n\n return () => {\n stateChangeSub.unsubscribe()\n routeChangeSub.unsubscribe()\n }\n }).pipe(startWith(items))\n })\n }\n\n private _incUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value + 1)\n }\n\n private _decrUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value - 1)\n }\n\n public updateItemsStates(items: ISideNavItem[]): void {\n this._incUpdatingCount()\n\n try {\n for (const item of items) {\n if (hasChildren(item)) {\n this.updateItemsStates(item.children)\n }\n\n this.updateItemState(item)\n }\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public updateItemState(item: ISideNavItem): void {\n this._incUpdatingCount()\n\n try {\n setDefaultState(item)\n\n if (isNavItemType(item, 'link')) {\n const url = this._getUrl(item)\n if (notNullOrUndefined(url)) {\n const opts = this._getMatchOptions(item)\n this.setItemStateProp(\n item,\n 'active',\n this._router.isActive(url, opts),\n )\n }\n }\n\n // TODO: Implement this in a more optimized way. Unless our apps start\n // having large side-navs constantly updating their state, this shouldn't\n // have much impact on performance.\n this._updateItemExpandedState(item)\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n private _updateItemsExpandedState(items: ISideNavItem[]): void {\n for (const item of items) {\n if (hasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n this._updateItemExpandedState(item)\n }\n }\n\n private _updateItemExpandedState(item: ISideNavItem): void {\n if (!canExpand(item)) {\n if (getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n return\n }\n\n if (hasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n\n if (hasActiveChild(item) || hasExpandedChild(item)) {\n if (!getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', true)\n }\n } else {\n if (getItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n }\n }\n\n private _getNavExtras(item: ISideNavLink): UrlCreationOptions {\n const navigationExtras: UrlCreationOptions = {}\n if (hasProperty(item, 'queryParams')) {\n navigationExtras.queryParams = item.queryParams\n }\n if (hasProperty(item, 'fragment')) {\n navigationExtras.fragment = item.fragment\n }\n if (hasProperty(item, 'queryParamsHandling')) {\n navigationExtras.queryParamsHandling = item.queryParamsHandling\n }\n if (hasProperty(item, 'preserveFragment')) {\n navigationExtras.preserveFragment = item.preserveFragment\n }\n return navigationExtras\n }\n\n private _getUrl(item: ISideNavLink): string | null {\n const link = item.link\n\n if (typeof link === 'string') {\n return this._router\n .createUrlTree([link], this._getNavExtras(item))\n .toString()\n } else if (Array.isArray(link)) {\n return this._router\n .createUrlTree(link, this._getNavExtras(item))\n .toString()\n }\n\n return null\n }\n\n private _getMatchOptions(item: ISideNavLink): IsActiveMatchOptions {\n const defaultMatchOpts: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n\n if (hasProperty(item, 'matchOptions')) {\n return {\n ...defaultMatchOpts,\n ...item.matchOptions,\n }\n }\n\n return defaultMatchOpts\n }\n\n public setItemStateProp<K extends keyof ISideNavItemState>(\n item: ISideNavItem,\n prop: K,\n value: ISideNavItemState[K],\n ): void {\n const currentValue = getItemStateProp(item, prop)\n if (currentValue !== value) {\n setItemStateProp(item, prop, value)\n\n const changed: SideNavItemStateChanged = {\n item,\n prop,\n prevValue: currentValue,\n newValue: value,\n }\n this.itemChanged.next(changed)\n }\n }\n}\n","import {\n animate,\n animateChild,\n group,\n query,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations'\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport {\n TheSeamLayoutModule,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport {\n TheSeamBaseLayoutNav,\n TheSeamBaseLayoutRef,\n THESEAM_BASE_LAYOUT_REF,\n} from '../base-layout/index'\n\nimport { BaseLayoutSideBarFooterDirective } from '../base-layout/directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarHeaderDirective } from '../base-layout/directives/base-layout-side-bar-header.directive'\nimport {\n DEFAULT_SIDE_NAV_CONFIG,\n SideNavConfig,\n THESEAM_SIDE_NAV_ACCESSOR,\n THESEAM_SIDE_NAV_CONFIG,\n} from './side-nav-tokens'\nimport {\n ISideNavItem,\n SideNavItemMenuItemTooltipConfig,\n} from './side-nav.models'\nimport { TheSeamSideNavService } from './side-nav.service'\nimport { SideNavToggleComponent } from './side-nav-toggle/side-nav-toggle.component'\nimport { SideNavItemComponent } from './side-nav-item/side-nav-item.component'\nimport { applyItemConfig } from './side-nav-utils'\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\nconst EXPANDED_OVERLAY_STATE = 'expanded-overlay'\nconst COLLAPSED_OVERLAY_STATE = 'collapsed-overlay'\n\nconst EXPANDED_STATES = [EXPANDED_STATE, EXPANDED_OVERLAY_STATE]\nconst COLLAPSED_STATES = [COLLAPSED_STATE, COLLAPSED_OVERLAY_STATE]\nconst EXPAND_STATES = [...EXPANDED_STATES, ...COLLAPSED_STATES]\n\nexport function sideNavExpandStateChangeFn(fromState: string, toState: string) {\n // console.log({ fromState, toState })\n return (\n fromState !== toState &&\n // NOTE: The current way the side nav is being used it causes the\n // component to sometimes get placed in the wrong location initially. It\n // is fast enough to not be noticed without an initial animation usually,\n // so it is commented out below until the initial placement issue it\n // fixed.\n //\n // (\n // fromState === 'void' && EXPAND_STATES.indexOf(toState) !== -1\n // ||\n // toState === 'void' && EXPAND_STATES.indexOf(fromState) !== -1\n // )\n // ||\n ((EXPANDED_STATES.indexOf(fromState) !== -1 &&\n COLLAPSED_STATES.indexOf(toState) !== -1) ||\n (EXPANDED_STATES.indexOf(toState) !== -1 &&\n COLLAPSED_STATES.indexOf(fromState) !== -1))\n )\n}\n\n@Component({\n selector: 'seam-side-nav',\n templateUrl: './side-nav.component.html',\n styleUrls: ['./side-nav.component.scss'],\n providers: [\n TheSeamSideNavService,\n {\n provide: THESEAM_SIDE_NAV_ACCESSOR,\n useExisting: SideNavComponent,\n },\n ],\n animations: [\n //\n // TODO: This animation code turned into a mess. Clean it up and make it\n // more smooth.\n //\n\n trigger('sideNavAnim', [\n transition(sideNavExpandStateChangeFn, [\n group([\n query('@sideNavBackdrop', animateChild(), { optional: true }),\n query('@sideNavExpand', animateChild(), { optional: true }),\n ]),\n ]),\n ]),\n\n trigger('sideNavBackdrop', [\n state(EXPANDED_OVERLAY_STATE, style({ opacity: '1' })),\n state(COLLAPSED_OVERLAY_STATE, style({ opacity: '0' })),\n\n // transition((fromState, toState, element, params) => {\n // console.log('sideNavBackdrop v', fromState, toState, element, params)\n // return false\n // }, []),\n\n transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),\n ]),\n\n trigger('sideNavExpand', [\n // TODO: Make width configurable for non-overlay state.\n state(EXPANDED_STATE, style({ width: '260px' })),\n state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),\n\n state(\n EXPANDED_OVERLAY_STATE,\n style({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n height: '{{ height }}',\n width: '{{ width }}',\n transform: '{{ origin }}',\n zIndex: '9999',\n }),\n {\n params: {\n origin: 'translateX(100%)',\n height: '100%',\n width: 'calc(100vw - 50px)',\n },\n },\n ),\n state(\n COLLAPSED_OVERLAY_STATE,\n style({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n height: '{{ height }}',\n width: '{{ width }}',\n transform: '{{ origin }}',\n 'overflow-x': 'hidden',\n zIndex: '9999',\n }),\n {\n params: {\n origin: 'translateX(0)',\n height: '100%',\n width: 'calc(100vw - 50px)',\n },\n },\n ),\n\n // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n\n transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),\n\n // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [\n // // query(':leave', animateChild(), { optional: true }),\n // // query(':enter', animateChild(), { optional: true }),\n // group([\n // query(':leave', animateChild(), { optional: true }),\n // query(':enter', animateChild(), { optional: true }),\n // query('@compactAnim', animateChild(), { optional: true }),\n // animate('5.2s ease-in-out')\n // ])\n // ]),\n ]),\n ],\n imports: [\n CommonModule,\n A11yModule,\n TheSeamOverlayScrollbarDirective,\n TheSeamLayoutModule,\n PortalModule,\n SideNavItemComponent,\n SideNavToggleComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class SideNavComponent\n implements OnInit, OnDestroy, TheSeamBaseLayoutNav\n{\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n faBars = faBars\n\n // @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE\n // _sideNavExpand = EXPANDED_STATE\n\n // @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE\n @HostBinding('@sideNavAnim') _sideNavExpand = 'initial'\n\n @Input() @InputBoolean() hasHeaderToggle = true\n\n @Input() toggleIcon: SeamIcon | null | undefined = faBars\n\n @Input() toggleTpl: TemplateRef<any> | undefined | null\n\n @Input()\n get items(): ISideNavItem[] {\n return this._items.value\n }\n set items(value: ISideNavItem[]) {\n this._items.next(value)\n }\n private _items = new BehaviorSubject<ISideNavItem[]>([])\n public readonly items$: Observable<ISideNavItem[]>\n\n @Input() hideEmptyIcon: boolean | null | undefined\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n get expanded(): boolean {\n return this._expanded.value\n }\n set expanded(value: boolean) {\n const expanded = coerceBooleanProperty(value)\n const emit = expanded !== this.expanded\n this._expanded.next(expanded)\n\n if (emit) {\n this.toggleExpand.emit(coerceBooleanProperty(value))\n }\n }\n private _expanded = new BehaviorSubject<boolean>(true)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input() expandOrigin: 'left' | 'right' | 'top' | 'bottom' = 'left'\n\n @Input() expandHeight = '100%'\n\n @Input() expandWidth = 'calc(100vw - 50px)'\n\n @Input()\n get overlay(): boolean {\n return this._overlay.value\n }\n set overlay(value: boolean) {\n this._overlay.next(coerceBooleanProperty(value))\n }\n private _overlay = new BehaviorSubject<boolean>(false)\n public readonly overlay$ = this._overlay.asObservable()\n\n private _menuItemTooltipConfig: SideNavItemMenuItemTooltipConfig = {\n placement: 'right',\n container: 'body',\n behavior: 'always',\n }\n\n @Input()\n get menuItemTooltipConfig() {\n return this._menuItemTooltipConfig\n }\n set menuItemTooltipConfig(\n value: SideNavItemMenuItemTooltipConfig | undefined | null,\n ) {\n this._menuItemTooltipConfig = {\n class: value?.class,\n placement: value?.placement || this._menuItemTooltipConfig.placement,\n container: value?.container || this._menuItemTooltipConfig.container,\n behavior: value?.behavior || this._menuItemTooltipConfig.behavior,\n }\n }\n\n public menuItemTooltipDisabled$: Observable<boolean> | undefined | null\n\n @Output() toggleExpand = new EventEmitter<boolean>()\n\n public readonly isMobile$: Observable<boolean>\n public readonly sideNavExpandedState$: Observable<string>\n public _backdropHidden = new BehaviorSubject<boolean>(true)\n\n @ContentChild(BaseLayoutSideBarHeaderDirective, {\n static: true,\n read: TemplateRef,\n })\n _sideBarHeaderTpl?: TemplateRef<any> | null\n _sideBarHeaderPortal?: TemplatePortal\n\n @ContentChild(BaseLayoutSideBarFooterDirective, {\n static: true,\n read: TemplateRef,\n })\n _sideBarFooterTpl?: TemplateRef<any> | null\n _sideBarFooterPortal?: TemplatePortal\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _layout: TheSeamLayoutService,\n private readonly _sideNav: TheSeamSideNavService,\n @Optional()\n @Inject(THESEAM_SIDE_NAV_CONFIG)\n private readonly _config?: SideNavConfig,\n @Optional()\n @Inject(THESEAM_BASE_LAYOUT_REF)\n private readonly _baseLayoutRef?: TheSeamBaseLayoutRef,\n ) {\n const config: SideNavConfig = {\n ...DEFAULT_SIDE_NAV_CONFIG,\n ...(this._config || {}),\n }\n\n this.items$ = this._items.asObservable().pipe(\n map((items) =>\n items && config ? items.map((itm) => applyItemConfig(itm, config)) : [],\n ),\n switchMap((items) =>\n items ? this._sideNav.createItemsObservable(items) : [],\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n\n this.isMobile$ = this._layout.isMobile$.pipe(\n tap((isMobile) => (isMobile ? this.collapse() : this.expand())),\n )\n\n this.sideNavExpandedState$ = combineLatest([\n this.expanded$,\n this.overlay$,\n ]).pipe(\n map(([expanded, overlay]) =>\n expanded\n ? overlay\n ? EXPANDED_OVERLAY_STATE\n : EXPANDED_STATE\n : overlay\n ? COLLAPSED_OVERLAY_STATE\n : COLLAPSED_STATE,\n ),\n distinctUntilChanged(),\n )\n\n this.menuItemTooltipDisabled$ = combineLatest([\n this.expanded$,\n this.overlay$,\n ]).pipe(\n map(([expanded, overlay]) => {\n // never display tooltip on mobile, it breaks the layout\n if (overlay) {\n return true\n }\n\n return this.menuItemTooltipConfig?.behavior === 'always'\n ? false\n : this.menuItemTooltipConfig?.behavior === 'never'\n ? true\n : this.menuItemTooltipConfig?.behavior === 'collapseOnly'\n ? expanded\n : true\n }),\n distinctUntilChanged(),\n )\n }\n\n ngOnInit() {\n if (this._baseLayoutRef) {\n this._baseLayoutRef.registerNav(this)\n }\n\n this.isMobile$\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((b) => (this.overlay = b))\n\n this.sideNavExpandedState$\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((v) => (this._sideNavExpand = v))\n\n if (this._sideBarHeaderTpl) {\n this._sideBarHeaderPortal = new TemplatePortal(\n this._sideBarHeaderTpl,\n this._viewContainerRef,\n )\n }\n\n if (this._sideBarFooterTpl) {\n this._sideBarFooterPortal = new TemplatePortal(\n this._sideBarFooterTpl,\n this._viewContainerRef,\n )\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n if (this._baseLayoutRef) {\n this._baseLayoutRef.unregisterNav(this)\n }\n }\n\n public expand() {\n this.expanded = true\n }\n\n public collapse() {\n this.expanded = false\n }\n\n public toggle() {\n this.expanded = !this.expanded\n }\n\n public animateStart() {\n if (this.expanded) {\n this._backdropHidden.next(false)\n }\n }\n\n public animateEnd() {\n if (!this.expanded) {\n this._backdropHidden.next(true)\n }\n }\n\n get expandOriginTransform(): string | null {\n switch (this.expandOrigin) {\n case 'right':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateX(100vw) translateX(-100%)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateX(100vw)'\n : null\n case 'top':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateY(0)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateY(-100%)'\n : null\n case 'bottom':\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateY(100vh) translateY(-100%)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateY(100vh)'\n : null\n case 'left':\n default:\n return this._sideNavExpand === EXPANDED_OVERLAY_STATE\n ? 'translateX(0)'\n : this._sideNavExpand === COLLAPSED_OVERLAY_STATE\n ? 'translateX(-100%)'\n : null\n }\n }\n}\n","<div\n class=\"side-nav-backdrop\"\n *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"\n></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>\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle\n *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\"\n >\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\n *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 >\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n","import { NgModule } from '@angular/core'\n\nimport { SideNavItemComponent } from './side-nav-item/side-nav-item.component'\nimport { SideNavToggleComponent } from './side-nav-toggle/side-nav-toggle.component'\nimport { SideNavComponent } from './side-nav.component'\n\n@NgModule({\n imports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],\n exports: [SideNavItemComponent, SideNavComponent, SideNavToggleComponent],\n})\nexport class TheSeamSideNavModule {}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core'\n\nimport { faAngleDown } from '@fortawesome/free-solid-svg-icons'\n\nimport {\n CanDisableCtor,\n InputBoolean,\n mixinDisabled,\n} from '@theseam/ui-common/core'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\n\nclass TopBarMenuButtonBase {}\n\nconst _TopBarMenuButtonMixinBase: CanDisableCtor & typeof TopBarMenuButtonBase =\n mixinDisabled(TopBarMenuButtonBase)\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[seamTopBarMenuButton]',\n templateUrl: './top-bar-menu-button.component.html',\n styleUrls: ['./top-bar-menu-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'seamButton',\n inputs: ['disabled'],\n host: {\n 'attr.type': 'button',\n class: 'btn border text-decoration-none py-0 top-bar-menu-button',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, NgTemplateOutlet, TheSeamIconModule],\n})\nexport class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {\n static ngAcceptInputType_compact: BooleanInput\n\n faAngleDown = faAngleDown\n\n /** Custom template to show in desktop mode. No default. */\n @Input() detailTpl: TemplateRef<any> | undefined | null\n\n /** Custom template to show in mobile mode. Defaults to icon. */\n @Input() compactDetailTpl: TemplateRef<any> | undefined | null\n\n @Input() @InputBoolean() compact = false\n\n /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null\n\n @HostBinding('class.top-bar-menu-button--compact') get _hasCompactClass() {\n return this.compact\n }\n @HostBinding('class.p-0') get _hasPadding0Class() {\n return this.compact\n }\n @HostBinding('class.rounded') get _hasRoundedClass() {\n return this.compact\n }\n @HostBinding('class.btn-link') get _hasBtnLinkClass() {\n return !this.compact\n }\n}\n","<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\n [icon]=\"profileIcon\"\n iconType=\"borderless-styled-square\"\n ></seam-icon>\n </ng-template>\n</ng-template>\n","import { NgIf, NgStyle } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core'\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\n@Component({\n selector: 'seam-top-bar-title',\n templateUrl: './top-bar-title.component.html',\n styleUrls: ['./top-bar-title.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, NgStyle, FlexLayoutModule],\n})\nexport class TopBarTitleComponent {\n @Input() titleText: string | undefined | null\n @Input() subTitleText: string | undefined | null\n}\n","<h2\n class=\"mb-0\"\n [ngStyle]=\"{ 'font-size.px': 32 }\"\n [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\"\n [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\"\n>\n {{ titleText }}\n <br fxHide.gt-sm />\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarCompactMenuBtnDetail]',\n exportAs: 'seamTopBarCompactMenuBtnDetail',\n})\nexport class TopBarCompactMenuBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarNavToggleBtnDetail]',\n exportAs: 'seamTopBarNavToggleBtnDetail',\n})\nexport class TopBarNavToggleBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject, Input, TemplateRef } from '@angular/core'\n\nexport type TopBarPosition = 'left' | 'right' | 'center'\n\n@Directive({\n selector: '[seamTopBarItem]',\n exportAs: 'seamTopBarItem',\n})\nexport class TopBarItemDirective {\n public readonly template = inject(TemplateRef<any>)\n\n position: TopBarPosition = 'right'\n\n @Input() set seamTopBarItem(value: any) {\n this.position = value\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarMenuBtnDetail]',\n exportAs: 'seamTopBarMenuBtnDetail',\n})\nexport class TopBarMenuBtnDetailDirective {\n public readonly template = inject(TemplateRef<any>)\n}\n","import { Directive, inject } from '@angular/core'\n\nimport { MenuComponent } from '@theseam/ui-common/menu'\n\n@Directive({\n selector: 'seam-menu[seamTopBarMenu]',\n exportAs: 'seamTopBarMenu',\n})\nexport class TopBarMenuDirective {\n public readonly menu = inject(MenuComponent, { self: true })\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { map, shareReplay, startWith, takeUntil } from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\nimport { faUserCircle } from '@fortawesome/free-regular-svg-icons'\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport {\n TheSeamLayoutModule,\n TheSeamLayoutService,\n} from '@theseam/ui-common/layout'\nimport { SeamIcon, TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\n\nimport { TopBarCompactMenuBtnDetailDirective } from './top-bar-compact-menu-btn-detail.directive'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\nimport { TopBarNavToggleBtnDetailDirective } from './top-bar-nav-toggle-btn-detail.directive'\nimport { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\nimport { TopBarMenuButtonComponent } from './top-bar-menu-button/top-bar-menu-button.component'\n// import { TheSeamBaseLayoutNavToggleDirective } from '../base-layout/directives/base-layout-nav-toggle.directive'\nimport { TheSeamBaseLayoutModule } from '../base-layout/base-layout.module'\n\n/**\n * Top bar of an app.\n *\n * The top bar is fairly opinionated, so most parts are not intended to be\n * customized unless there is an input.\n *\n * > If you have to make a change and apply it externally with a css class or js\n * > make sure there is an issue to get the feature changed, so we don't have\n * > different modifications across our apps. Also, this will help make sure\n * > your change should have even been done.\n */\n@Component({\n selector: 'seam-top-bar',\n templateUrl: './top-bar.component.html',\n styleUrls: ['./top-bar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'seamTopBar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n RouterModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamMenuModule,\n TheSeamBaseLayoutModule,\n TheSeamLayoutModule,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n // TheSeamBaseLayoutNavToggleDirective,\n ],\n})\nexport class TheSeamTopBarComponent implements OnDestroy, AfterContentInit {\n static ngAcceptInputType_hasTitle: BooleanInput\n\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject<void>()\n\n /** @ignore */\n readonly faBars = faBars\n\n /** @ignore */\n @ContentChild(TopBarMenuDirective, { static: true })\n _topBarMenu?: TopBarMenuDirective | null\n /** @ignore */\n @ContentChildren(TopBarItemDirective)\n _topBarItems?: QueryList<TopBarItemDirective>\n /** @ignore */\n @ContentChild(TopBarMenuBtnDetailDirective)\n _topBarMenuBtnDetailTpl?: TopBarMenuBtnDetailDirective | null\n /** @ignore */\n @ContentChild(TopBarCompactMenuBtnDetailDirective)\n _topBarCompactMenuBtnDetailTpl?: TopBarCompactMenuBtnDetailDirective | null\n /** @ignore */\n @ContentChild(TopBarNavToggleBtnDetailDirective)\n _topBarNavToggleBtnDetailTpl?: TopBarNavToggleBtnDetailDirective | null\n\n /** Logo displayed on the top bar. */\n @Input() logo: string | undefined | null\n /** Logo displayed on the top bar when a smaller logo is needed. */\n @Input() logoSm: string | undefined | null\n\n /** External url to link to when `logo` is clicked. */\n @Input() logoHref?: string | null\n\n /** Link target used when `logoHref` is specified. Defaults to `\"_blank\"` */\n @Input() logoHrefTarget = '_blank'\n\n /** Route to link to when `logo` is clicked. Defaults to `/`. */\n @Input() logoRoute = '/'\n\n /** Determines if the title should be displayed. */\n @Input() @InputBoolean() hasTitle = false\n\n /** Title text displayed when `hasTitle` is true. */\n @Input() titleText: string | undefined | null\n\n /** Sub Title text displayed when `hasTitle` is true. The sub title will be less prominent. */\n @Input() subTitleText: string | undefined | null\n\n /** Determines if the top bar button should be displayed. */\n @Input() @InputBoolean() hasTopBarMenuButton = true\n\n /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null = faUserCircle\n\n /** Icon to display for mobile nav toggle. Defaults to faBars. */\n @Input() toggleIcon: SeamIcon | undefined | null = faBars\n\n /** Display nav toggle on either left or right side of top bar. Defaults to left. */\n @Input() navToggleAlign: 'left' | 'right' | undefined | null = 'left'\n\n /** @ignore */\n readonly _leftItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display on left side of top bar */\n readonly leftItems$ = this._leftItems.asObservable()\n\n /** @ignore */\n readonly _centerItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display in center of top bar */\n readonly centerItems$ = this._centerItems.asObservable()\n\n /** @ignore */\n readonly _rightItems = new BehaviorSubject<TopBarItemDirective[]>([])\n /** Additional templates to display on right side of top bar */\n readonly rightItems$ = this._rightItems.asObservable()\n\n /** @ignore */\n readonly isMobile$: Observable<boolean>\n\n constructor(private readonly _layout: TheSeamLayoutService) {\n this.isMobile$ = this._layout.isMobile$\n }\n\n /** @ignore */\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /** @ignore */\n ngAfterContentInit() {\n if (this._topBarItems) {\n this._topBarItems.changes\n .pipe(\n startWith(undefined),\n map(() => {\n const items = this._topBarItems?.toArray() || []\n\n const left = items.filter((i) => i.position === 'left')\n const right = items.filter((i) => i.position === 'right')\n const center = items.filter((i) => i.position === 'center')\n\n this._leftItems.next(left)\n this._rightItems.next(right)\n this._centerItems.next(center)\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n }\n }\n}\n","<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\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div\n class=\"top-bar--logo d-flex flex-column justify-content-center\"\n [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\"\n >\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img\n *ngIf=\"logo\"\n [src]=\"logo\"\n [src.lt-md]=\"logoSm ? logoSm : logo\"\n alt=\"Logo\"\n />\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 >\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\n class=\"d-flex flex-column justify-content-center pr-2\"\n *ngIf=\"isMobile$ | async\"\n >\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template\n [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"\n ></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button\n seamBaseLayoutNavToggle\n seamIconBtn\n [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n ></button>\n </ng-template>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamTopBarComponent } from './top-bar.component'\nimport { TopBarCompactMenuBtnDetailDirective } from './top-bar-compact-menu-btn-detail.directive'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuButtonComponent } from './top-bar-menu-button/top-bar-menu-button.component'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\nimport { TopBarNavToggleBtnDetailDirective } from './top-bar-nav-toggle-btn-detail.directive'\nimport { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\n\n@NgModule({\n imports: [\n TheSeamTopBarComponent,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective,\n TopBarCompactMenuBtnDetailDirective,\n TopBarNavToggleBtnDetailDirective,\n ],\n exports: [\n TheSeamTopBarComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective,\n TopBarCompactMenuBtnDetailDirective,\n TopBarNavToggleBtnDetailDirective,\n ],\n})\nexport class TheSeamTopBarModule {}\n","import {\n animate,\n animateChild,\n group,\n keyframes,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations'\n\nexport const fader = trigger('routeAnimations', [\n transition('* <=> *', [\n // Set a default style for enter and leave\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n opacity: 0,\n transform: 'scale(0) translateY(100%)',\n }),\n ],\n { optional: true },\n ),\n // Animate the new page in\n query(\n ':enter',\n [\n animate(\n '600ms ease',\n style({ opacity: 1, transform: 'scale(1) translateY(0)' }),\n ),\n ],\n { optional: true },\n ),\n ]),\n])\n\n// function slideTo(direction) {\n// return [\n// query(':enter, :leave', [\n// style({\n// position: 'absolute',\n// top: 0,\n// [direction]: 0,\n// width: '100%'\n// })\n// ], { optional: true }),\n// query(':enter', [\n// style({ [direction]: '-100%'})\n// ], { optional: true }),\n// group([\n// query(':leave', [\n// animate('1000ms ease', style({ [direction]: '100%'}))\n// ], { optional: true }),\n// query(':enter', [\n// animate('1000ms ease', style({ [direction]: '0%'}))\n// ], { optional: true })\n// ]),\n// // Normalize the page style... Might not be necessary\n\n// // Required only if you have child animations on the page\n// query(':leave', animateChild(), { optional: true }),\n// query(':enter', animateChild(), { optional: true }),\n// ]\n// }\n\n// TODO: Refactor the slider animation, because AOT or ng-packagr, I haven't\n// looked into what exactly is preventing it, doesn't allow the function call.\n// export const slider =\n// trigger('routeAnimations', [\n// transition('* => isLeft', slideTo('left') ),\n// transition('* => isRight', slideTo('right') ),\n// transition('isRight => *', slideTo('left') ),\n// transition('isLeft => *', slideTo('right') )\n// ])\n\n// export const contentLeave =\n// trigger('contentLeave', [\n// transition(':leave', [\n\n// ])\n// ])\n\nexport const slider = trigger('routeAnimations', [\n transition('* => isLeft', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ left: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ left: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ left: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('* => isRight', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ right: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ right: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ right: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isRight => *', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ left: '-100%' })], {\n optional: true,\n }),\n query(\n '.hierarchy-router-outlet--content',\n [style({ left: '0%', position: 'absolute' })],\n { optional: true },\n ),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ left: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ left: '0%' }))],\n { optional: true },\n ),\n query(\n '.hierarchy-router-outlet--content',\n [animate('1000ms ease', style({ left: '-100%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isLeft => *', [\n query(\n '.router-container :enter, .router-container :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n query('.router-container :enter', [style({ right: '-100%' })], {\n optional: true,\n }),\n group([\n query(\n '.router-container :leave',\n [animate('1000ms ease', style({ right: '100%' }))],\n { optional: true },\n ),\n query(\n '.router-container :enter',\n [animate('1000ms ease', style({ right: '0%' }))],\n { optional: true },\n ),\n ]),\n // Normalize the page style... Might not be necessary\n\n // Required only if you have child animations on the page\n query('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n])\n\nexport const transformer = trigger('routeAnimations', [\n transition('* => isLeft', transformTo({ x: -100, y: -100, rotate: -720 })),\n transition('* => isRight', transformTo({ x: 100, y: -100, rotate: 90 })),\n transition('isRight => *', transformTo({ x: -100, y: -100, rotate: 360 })),\n transition('isLeft => *', transformTo({ x: 100, y: -100, rotate: -360 })),\n])\n\nfunction transformTo({ x = 100, y = 0, rotate = 0 }) {\n const optional = { optional: true }\n return [\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n }),\n ],\n optional,\n ),\n query(\n ':enter',\n [style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })],\n { optional: true },\n ),\n group([\n query(\n ':leave',\n [\n animate(\n '600ms ease-out',\n style({\n transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)`,\n }),\n ),\n ],\n optional,\n ),\n query(\n ':enter',\n [\n animate(\n '600ms ease-out',\n style({ transform: `translate(0, 0) rotate(0)` }),\n ),\n ],\n { optional: true },\n ),\n ]),\n ]\n}\n\nexport const stepper = trigger('routeAnimations', [\n transition('* <=> *', [\n query(\n ':enter, :leave',\n [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n }),\n ],\n { optional: true },\n ),\n group([\n query(\n ':enter',\n [\n animate(\n '2000ms ease',\n keyframes([\n style({ transform: 'scale(0) translateX(100%)', offset: 0 }),\n style({ transform: 'scale(0.5) translateX(25%)', offset: 0.3 }),\n style({ transform: 'scale(1) translateX(0%)', offset: 1 }),\n ]),\n ),\n ],\n { optional: true },\n ),\n query(\n ':leave',\n [\n animate(\n '2000ms ease',\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({\n transform: 'scale(0.5) translateX(-25%) rotate(0)',\n offset: 0.35,\n }),\n style({\n opacity: 0,\n transform: 'translateX(-50%) rotate(-180deg) scale(6)',\n offset: 1,\n }),\n ]),\n ),\n ],\n { optional: true },\n ),\n ]),\n ]),\n])\n\nexport const sideToSide = trigger('routeAnimations', [\n transition('* => *', [\n style({\n position: 'fixed',\n width: '100%',\n transform: 'translateX(-100%)',\n }),\n animate('1000ms ease', style({ transform: 'translateX(0%)' })),\n ]),\n transition(':leave', [\n style({\n position: 'fixed',\n width: '100%',\n transform: 'translateX(0%)',\n }),\n animate('1000ms ease', style({ transform: 'translateX(-100%)' })),\n ]),\n])\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnDestroy,\n} from '@angular/core'\nimport {\n ActivatedRoute,\n NavigationEnd,\n NavigationStart,\n Router,\n RouterOutlet,\n} from '@angular/router'\nimport { combineLatest, Subject } from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators'\n\nimport {\n fader,\n sideToSide,\n slider,\n stepper,\n transformer,\n} from './hierarchy-route-animations'\n\nexport function routeChanges(router: Router) {\n return router.events.pipe(\n filter(\n (event) =>\n event instanceof NavigationStart || event instanceof NavigationEnd,\n ),\n distinctUntilChanged((x: any, y: any) => x.id === y.id),\n map((event) => ({ url: event.url })),\n )\n}\n\n//\n// TODO: Animation improvement: Try adding a full component animation that\n// queries the <ng-content> and <router-outlet> blocks. When the outlet\n// activates, set the animation state to a transition that moves both blocks\n// together.\n//\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-hierarchy-router-outlet',\n templateUrl: './hierarchy-router-outlet.component.html',\n styleUrls: ['./hierarchy-router-outlet.component.scss'],\n animations: [\n // fader,\n slider,\n // transformer,\n // stepper,\n // sideToSide\n // contentLeave\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class HierarchyRouterOutletComponent implements OnDestroy {\n private _uid = _uid++\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n animState = 'isRight'\n // animState = ''\n\n outletActive = false\n\n ngContentVisible = true\n\n constructor(\n private _route: ActivatedRoute,\n private _router: Router,\n ) {\n this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n // tap(v => console.log(`_hasChildren()[${this._uid}]`, this._hasChildren())),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe()\n\n // routeChanges(this._router)\n // .pipe(\n // untilDestroyed(this),\n // tap(() => {\n // // if (this._hasChildren()) {\n // // this.animState = 'isLeft'\n // // } else {\n // // this.animState = 'isRight'\n // // }\n // })\n // )\n // .subscribe(v => console.log(`routeChanges[${this._uid}]`, v))\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n private _hasChildren() {\n const count = this._route.pathFromRoot.length - 1\n let countFull = 0\n if (this._router.parseUrl(this._router.url).root.children.primary) {\n countFull = this._router.parseUrl(this._router.url).root.children.primary\n .segments.length\n }\n // console.log(`_hasChildren[${this._uid}]`, { count, countFull })\n return countFull > count\n }\n\n prepareRoute(outlet: RouterOutlet) {\n // console.log(`outlet[${this._uid}]`, outlet, this.animState, this._hasChildren(), this.outletActive)\n if (outlet.isActivated) {\n // console.log(outlet.isActivated)\n // console.log(outlet.component)\n // console.log(this.animState)\n return this.animState\n } else {\n return undefined\n }\n // console.log(`prepareRoute[${this._uid}]`, this.animState, this._hasChildren())\n // console.log('activatedRouteData', outlet && outlet.activatedRouteData)\n // if (outlet && outlet.isActivated) {\n // console.log('activatedRoute', outlet.activatedRoute && outlet.activatedRoute.snapshot.url)\n // }\n // return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation']\n // console.log('')\n // return this.animState\n }\n\n outletActivate(event: any) {\n // console.log(`outletActivate[${this._uid}]`, event)\n this.outletActive = true\n }\n\n outletDeactivate(event: any) {\n // console.log(`outletDeactivate[${this._uid}]`, event)\n this.outletActive = false\n }\n\n routeAnimationsStart(event: any) {\n // console.log('routeAnimationsStart', event)\n this.ngContentVisible = true\n }\n\n routeAnimationsDone(event: any) {\n // console.log('routeAnimationsDone', event)\n this.ngContentVisible = !this.outletActive\n }\n}\n","<div\n class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\"\n>\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\" [class.h-100]=\"!ngContentVisible\">\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet\n #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\"\n >\n </router-outlet>\n </div>\n</div>\n","import { Injectable } from '@angular/core'\nimport {\n ActivatedRouteSnapshot,\n Resolve,\n RouterStateSnapshot,\n} from '@angular/router'\nimport { Observable } from 'rxjs'\nimport { map, take } from 'rxjs/operators'\n\n@Injectable({ providedIn: 'root' })\nexport class HierarchyLevelResolver implements Resolve<number> {\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<number> | Promise<number> | number {\n // console.log('[HierarchyLevelResolver]', route)\n // console.log('[HierarchyLevelResolver]', state)\n return this._getMaxHierLevel(route)\n }\n\n private _getMaxHierLevel(route: ActivatedRouteSnapshot) {\n let curr = route\n while (curr.parent) {\n curr = curr.parent\n if (curr.data['hierLevel']) {\n return curr.data['hierLevel'] + 1\n }\n }\n\n return 0\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { HierarchyRouterOutletComponent } from './hierarchy-router-outlet/hierarchy-router-outlet.component'\n\n@NgModule({\n declarations: [HierarchyRouterOutletComponent],\n imports: [CommonModule, RouterModule],\n exports: [HierarchyRouterOutletComponent],\n})\nexport class TheSeamDynamicRouterModule {}\n","import { Component, Input, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-checkbox',\n templateUrl: './schema-form-checkbox.component.html',\n styleUrls: ['./schema-form-checkbox.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamCheckboxComponent,\n ],\n})\nexport class TheSeamSchemaFormCheckboxComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n trueValue = true\n falseValue = false\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n if (this.controlValue === null || this.controlValue === undefined) {\n this.controlValue = this.options?.title\n }\n }\n\n updateValue(event: any) {\n event.preventDefault()\n this._jsf.updateValue(\n this,\n event.target.checked ? this.trueValue : this.falseValue,\n )\n }\n\n get isChecked() {\n return (this._jsf.getFormControlValue(this) as any) === this.trueValue\n }\n}\n","<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox\n 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 >\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-input',\n templateUrl: './schema-form-input.component.html',\n styleUrls: ['./schema-form-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n ],\n})\nexport class TheSeamSchemaFormInputComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n autoCompleteList: string[] = []\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\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 />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <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 [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 />\n <datalist\n *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n >\n <option\n *ngFor=\"let word of options?.typeahead?.source\"\n [value]=\"word\"\n ></option>\n </datalist>\n </seam-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\n@Component({\n selector: 'seam-schema-form-number',\n templateUrl: './schema-form-number.component.html',\n styleUrls: ['./schema-form-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n ],\n})\nexport class TheSeamSchemaFormNumberComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n allowNegative = true\n allowDecimal = true\n allowExponents = false\n lastValidNumber = ''\n\n constructor(private jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this.jsf.initializeControl(this)\n if (this.layoutNode?.dataType === 'integer') {\n this.allowDecimal = false\n }\n }\n\n updateValue(event: any) {\n this.jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n 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 [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 />\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input\n 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 [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 />\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport {\n buildTitleMap,\n isArray,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n} from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { NgSelectModule } from '@ng-select/ng-select'\n\n@Component({\n selector: 'seam-schema-form-select',\n templateUrl: './schema-form-select.component.html',\n styleUrls: ['./schema-form-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n NgSelectModule,\n ],\n})\nexport class TheSeamSchemaFormSelectComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n selectList: any[] = []\n isArray = isArray\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this.selectList = buildTitleMap(\n this.options.titleMap || this.options.enumNames,\n this.options.enum,\n !!this.options.required,\n !!this.options.flatList,\n )\n\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n 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 [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n ></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select\n 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 [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 >\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</div>\n","import { Component, Input, isDevMode, OnDestroy, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport {\n AbstractControl,\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport {\n buildTitleMap,\n hasOwn,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n TitleMapItem,\n} from '@ajsf/core'\nimport {\n observeControlStatus,\n observeControlValue,\n} from '@theseam/ui-common/utils'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\n\n// NOTE: This is aliasing TitleMapItem, because we may want to extend it's\n// options. For simplicity, I am letting this work similar to a 'select' widget.\nexport type TheSeamSchemaFormSubmitSplitItem = TitleMapItem\n\n// NOTE: This component is a little hacky, because I am basically creating a\n// data widget that acts like a data and 'submit' widget at the same time.\n//\n// TODO: Try and think of a nicer way to implement this, but still make sense\n// from a schema definition. The library may need to me forked to actually\n// support this in the way I expect, but maybe there is another way.\n@Component({\n selector: 'seam-schema-form-submit-split',\n templateUrl: './schema-form-submit-split.component.html',\n styleUrls: ['./schema-form-submit-split.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamMenuModule,\n TheSeamButtonsModule,\n ],\n})\nexport class TheSeamSchemaFormSubmitSplitComponent\n implements OnInit, OnDestroy, TheSeamSchemaFormControlWidget\n{\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject<void>()\n\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n _buttonLabel = ''\n\n _dropdownObj: any\n _dropdownDisabled = false\n _selectList: TheSeamSchemaFormSubmitSplitItem[] = []\n _selectedItem?: TheSeamSchemaFormSubmitSplitItem\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n /** @ignore */\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n\n // NOTE: This is commented out, because there is a bug with submit widgets\n // manually defined in layout. All nodes initialized from the provided\n // layout have their options populated from the defaults and 'disabled' is\n // on of the default properties, so the 'disableInvalidSubmit' condition\n // never gets reached.\n //\n // My initial idea for fixing would be to check if the disabled property\n // exists and is a boolean, or possibly anything defined that can coerce\n // into a boolean. I can't think of a reason disabled should be anything\n // else, so that may be an acceptable fix, but I don't want to enable that\n // yet.\n //\n // if (hasOwn(this.options, 'disabled')) {\n // console.log('[TheSeamSchemaFormSubmitSplitComponent] hasDisabled', this.options.disabled)\n // this.controlDisabled = this.options.disabled\n // } else\n if (this._jsf.formOptions.disableInvalidSubmit) {\n this.controlDisabled = !this._jsf.isValid\n this._jsf.isValidChanges.subscribe(\n (isValid) => (this.controlDisabled = !isValid),\n )\n }\n if (this.controlValue === null || this.controlValue === undefined) {\n this.controlValue = this.options.title\n }\n\n if (hasOwn(this.options, 'title')) {\n this._buttonLabel = this.options.title\n }\n\n this._initDropdown()\n\n // console.log('this', this)\n }\n\n /** @ignore */\n ngOnDestroy(): void {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n updateValue(event: any) {\n if (typeof this.options?.onClick === 'function') {\n this.options.onClick(event)\n } else {\n this._jsf.updateValue(this, event.target.value)\n }\n }\n\n private _initDropdown(): void {\n if (\n !hasOwn(this.layoutNode, 'items') ||\n !(this.layoutNode?.items || []).length\n ) {\n return\n }\n\n if (isDevMode()) {\n if (this.layoutNode?.items && this.layoutNode?.items.length > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `TheSeamSchemaFormSubmitSplitComponent only supports one item.` +\n ` items after index 0 will be ignored.`,\n )\n }\n }\n\n const idx = 0\n const item = (this.layoutNode?.items as any)[idx] || {}\n this._dropdownObj = {\n layoutNode: item,\n layoutIndex: (this.layoutIndex || []).concat(idx),\n dataIndex:\n this.layoutNode?.dataType === 'array'\n ? (this.dataIndex || []).concat(idx)\n : this.dataIndex,\n\n options: item.options || {},\n }\n\n this._jsf.initializeControl(this._dropdownObj)\n\n const items = buildTitleMap(\n this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames,\n this._dropdownObj.options.enum,\n !!this._dropdownObj.options.required,\n !!this._dropdownObj.options.flatList,\n )\n\n this._selectList = items\n\n // TODO: Should this be checking if the control is bound?\n const dropdownControl = this._getDropdownControl()\n if (!dropdownControl) {\n return\n }\n\n observeControlValue(dropdownControl)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((value) => {\n this._setSelectListCheckedProp(value)\n this._selectedItem = this._getSelectedItem()\n })\n\n observeControlStatus(dropdownControl)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((value) => {\n this._dropdownDisabled = dropdownControl.disabled\n })\n }\n\n private _getDropdownControl(): UntypedFormControl | undefined {\n return this._dropdownObj.formControl as UntypedFormControl\n }\n\n private _setSelectListCheckedProp(value: any) {\n const items = this._selectList\n for (const item of items) {\n if (item.value === value) {\n item.checked = true\n } else if (item.checked) {\n item.checked = false\n }\n }\n this._selectList = [...items]\n }\n\n private _getSelectedItem(): TheSeamSchemaFormSubmitSplitItem | undefined {\n return (this._selectList || []).find((x) => x.checked === true)\n }\n\n _setDropdownValue(value: any) {\n const formControl = this._getDropdownControl()\n formControl?.setValue(value)\n }\n}\n","<div [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button\n seamButton\n theme=\"primary\"\n 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 >\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\"> [{{ _selectedItem.name }}] </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\"\n >\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button\n seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\"\n >\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core'\n\nimport { TheSeamSchemaFormWidget } from '../../schema-form'\n\n@Component({\n selector: 'seam-schema-form-divider',\n template: `<hr [class]=\"options?.htmlClass\" />`,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n standalone: true,\n})\nexport class TheSeamSchemaFormDividerComponent\n implements OnInit, TheSeamSchemaFormWidget\n{\n options: TheSeamSchemaFormWidget['options']\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamTelInputModule } from '@theseam/ui-common/tel-input'\n\n@Component({\n selector: 'seam-schema-form-tel',\n templateUrl: './schema-form-tel.component.html',\n // styleUrls: ['./schema-form-tel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamTelInputModule,\n ],\n})\nexport class TheSeamSchemaFormTelComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n autoCompleteList: string[] = []\n\n constructor(private readonly _jsf: JsonSchemaFormService) {}\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\n </seam-tel-input>\n</seam-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { inject } from '@angular/core'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\nimport { Platform } from '@angular/cdk/platform'\n\nimport { JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport {\n TheSeamTiledSelectModule,\n TheSeamTiledSelectItem,\n TheSeamTiledSelectLayout,\n} from '@theseam/ui-common/tiled-select'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\n\nimport {\n TheSeamSchemaFormControlWidget,\n TheSeamSchemaFormWidgetLayoutNodeOptions,\n} from '../../schema-form'\n\n@Component({\n selector: 'seam-schema-form-tiled-select',\n templateUrl: './schema-form-tiled-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamTiledSelectModule,\n ],\n})\nexport class TheSeamSchemaFormTiledSelectComponent\n implements OnInit, TheSeamSchemaFormControlWidget\n{\n private readonly _jsf = inject(JsonSchemaFormService)\n private readonly _platform = inject(Platform)\n\n formControl?: AbstractControl\n controlName?: string\n controlValue?: any\n controlDisabled = false\n boundControl = false\n options?: TheSeamSchemaFormWidgetLayoutNodeOptions\n\n @Input() layoutNode: TheSeamSchemaFormControlWidget['layoutNode']\n @Input() layoutIndex: TheSeamSchemaFormControlWidget['layoutIndex']\n @Input() dataIndex: TheSeamSchemaFormControlWidget['dataIndex']\n\n tiles: TheSeamTiledSelectItem[] = []\n layout: TheSeamTiledSelectLayout = 'grid'\n multiple = false\n selectionToggleable = true\n tileBackdrop = false\n showSelectedIcon = true\n animationsDisabled: boolean = this._platform.IOS\n\n ngOnInit() {\n this.options =\n this.layoutNode?.options ||\n ({} as TheSeamSchemaFormWidgetLayoutNodeOptions)\n this._jsf.initializeControl(this)\n this.tiles = this.options.tiles || []\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\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\n }}<seam-form-field-required-indicator\n class=\"pl-1\"\n [required]=\"options?.required\"\n ></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 >\n </seam-tiled-select>\n</seam-form-field>\n","import { Component, Input } from '@angular/core'\n\nimport { JsonSchemaFormModule } from '@ajsf/core'\n\n@Component({\n selector: 'seam-schema-form-framework',\n templateUrl: './schema-form-framework.component.html',\n styleUrls: ['./schema-form-framework.component.scss'],\n host: {\n '[attr.data-name]': 'layoutNode?.node',\n '[attr.data-data-pointer]': 'layoutNode?.dataPointer',\n },\n imports: [JsonSchemaFormModule],\n})\nexport class TheSeamSchemaFormFrameworkComponent {\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n}\n","<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\"\n>\n</select-widget-widget>\n","import {\n Inject,\n Injectable,\n InjectionToken,\n Optional,\n inject,\n} from '@angular/core'\n\nimport { Framework } from '@ajsf/core'\n\nimport { TheSeamSchemaFormCheckboxComponent } from '../schema-form-controls/schema-form-checkbox/schema-form-checkbox.component'\nimport { TheSeamSchemaFormInputComponent } from '../schema-form-controls/schema-form-input/schema-form-input.component'\nimport { TheSeamSchemaFormNumberComponent } from '../schema-form-controls/schema-form-number/schema-form-number.component'\nimport { TheSeamSchemaFormSelectComponent } from '../schema-form-controls/schema-form-select/schema-form-select.component'\nimport { TheSeamSchemaFormSubmitSplitComponent } from '../schema-form-controls/schema-form-submit-split/schema-form-submit-split.component'\nimport { TheSeamSchemaFormSubmitComponent } from '../schema-form-controls/schema-form-submit/schema-form-submit.component'\nimport { TheSeamSchemaFormDividerComponent } from '../schema-form-controls/schema-form-divider/schema-form-divider.component'\nimport { TheSeamSchemaFormTelComponent } from '../schema-form-controls/schema-form-tel/schema-form-tel.component'\nimport { TheSeamSchemaFormTiledSelectComponent } from '../schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component'\n\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nexport type TheSeamSchemaFormFrameworkOverrides = Omit<\n Framework,\n 'name' | 'framework' | 'stylesheet' | 'scripts'\n>\n\nexport const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES =\n new InjectionToken<TheSeamSchemaFormFrameworkOverrides>(\n 'THESEAM_SCHEMA_FRAMEWORK_OVERRIDES',\n )\n\nexport function extendFramework(\n toExtend: Framework,\n extendFrameworkOrName: Framework | string,\n): void {\n // console.log('extendFramework', toExtend, extendFrameworkOrName)\n const _overrides: Framework[] | null = inject(Framework, {\n optional: true,\n }) as Framework[] | null\n const overrides =\n typeof extendFrameworkOrName === 'string'\n ? (_overrides || []).filter((x) => x.name === extendFrameworkOrName)\n : [extendFrameworkOrName]\n\n // console.log(_overrides, overrides)\n\n if (overrides) {\n for (const override of overrides) {\n // console.log('override', override)\n if (hasProperty(override, 'framework')) {\n toExtend.framework = override.framework\n }\n\n if (hasProperty(override, 'widgets')) {\n toExtend.widgets = { ...toExtend.widgets, ...override.widgets }\n }\n\n if (hasProperty(override, 'stylesheets')) {\n toExtend.stylesheets = {\n ...toExtend.stylesheets,\n ...override.stylesheets,\n }\n }\n\n if (hasProperty(override, 'scripts')) {\n toExtend.scripts = { ...toExtend.scripts, ...override.scripts }\n }\n }\n }\n}\n\n@Injectable()\nexport class TheSeamFramework extends Framework {\n name = 'seam-framework'\n\n framework = TheSeamSchemaFormFrameworkComponent\n\n widgets = {\n checkbox: TheSeamSchemaFormCheckboxComponent,\n // 'submit': TheSeamSchemaFormSubmitComponent,\n submit: TheSeamSchemaFormSubmitSplitComponent,\n text: TheSeamSchemaFormInputComponent,\n number: TheSeamSchemaFormNumberComponent,\n select: TheSeamSchemaFormSelectComponent,\n divider: TheSeamSchemaFormDividerComponent,\n tel: TheSeamSchemaFormTelComponent,\n 'tiled-select': TheSeamSchemaFormTiledSelectComponent,\n\n // 'date': // TODO: Implement\n // 'file': // TODO: Implement\n // 'image': // TODO: Implement\n // 'richtext': // TODO: Implement\n // 'tabs': // TODO: Implement\n // 'wizard': // TODO: Implement\n // 'card': // TODO: Implement\n // 'map': // TODO: Implement\n }\n\n constructor(\n @Optional()\n @Inject(THESEAM_SCHEMA_FRAMEWORK_OVERRIDES)\n _overrides?: TheSeamSchemaFormFrameworkOverrides[],\n ) {\n super()\n\n // console.log('TheSeamFramework', _overrides, this)\n\n if (_overrides) {\n for (const override of _overrides) {\n // console.log('override', override)\n if (hasProperty(override, 'widgets')) {\n this.widgets = { ...this.widgets, ...override.widgets }\n }\n }\n }\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport {\n Framework,\n FrameworkLibraryService,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n WidgetLibraryModule,\n WidgetLibraryService,\n} from '@ajsf/core'\n\nimport { TheSeamFramework } from './schema-form-framework'\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\n\n@NgModule({\n imports: [\n CommonModule,\n JsonSchemaFormModule,\n WidgetLibraryModule,\n TheSeamSchemaFormFrameworkComponent,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: TheSeamFramework, multi: true },\n ],\n exports: [TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule],\n})\nexport class TheSeamSchemaFormModule {}\n","import { hasProperty, isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n INavBasic,\n INavButton,\n INavDivider,\n INavItem,\n INavItemState,\n INavLink,\n INavTitle,\n NavItemCanHaveChildren,\n NavItemCanHaveState,\n} from './nav.models'\n\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'title',\n): item is INavTitle\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'divider',\n): item is INavDivider\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'basic',\n): item is INavBasic\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'link',\n): item is INavLink\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: 'button',\n): item is INavButton\nexport function isHorizontalNavItemType(\n item: INavItem,\n type: string,\n): item is INavItem {\n return item.itemType === type\n}\n\nexport function isHorizontalNavItemActive(item: INavItem): boolean {\n return item.__state?.active ?? false\n}\n\nexport function isHorizontalNavItemExpanded(item: INavItem): boolean {\n return item.__state?.expanded ?? false\n}\n\nexport function isHorizontalNavItemFocused(item: INavItem): boolean {\n return item.__state?.focused ?? false\n}\n\nexport function horizontalNavItemHasChildren(\n item: INavItem,\n): item is (INavBasic | INavLink) & Required<NavItemCanHaveChildren> {\n return (\n horizontalNavItemCanHaveChildren(item) &&\n hasProperty(item, 'children') &&\n item.children.length > 0\n )\n}\n\nexport function horizontalNavItemCanHaveChildren(\n item: INavItem,\n): item is INavBasic | INavLink {\n return (\n isHorizontalNavItemType(item, 'basic') ||\n isHorizontalNavItemType(item, 'link')\n )\n}\n\nexport function horizontalNavItemHasActiveChild(item: INavItem): boolean {\n if (!horizontalNavItemHasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (\n getHorizontalNavItemStateProp(child, 'active') ||\n horizontalNavItemHasActiveChild(child)\n ) {\n return true\n }\n }\n\n return false\n}\n\nexport function horizontalNavItemHasExpandedChild(item: INavItem): boolean {\n if (!horizontalNavItemHasChildren(item)) {\n return false\n }\n\n for (const child of item.children) {\n if (getHorizontalNavItemStateProp(child, 'expanded')) {\n return true\n }\n }\n\n return false\n}\n\nexport function horizontalNavItemCanBeActive(\n item: INavItem,\n): item is INavBasic | INavLink {\n return (\n isHorizontalNavItemType(item, 'basic') ||\n isHorizontalNavItemType(item, 'link')\n )\n}\n\nexport function horizontalNavItemCanExpand(\n item: INavItem,\n): item is INavBasic | INavLink {\n return horizontalNavItemCanHaveChildren(item)\n}\n\nexport function findHorizontalNavLinkItems(items: INavItem[]): INavLink[] {\n const linkItems: INavLink[] = []\n\n const _fn = (_items: INavItem[]) => {\n for (const item of _items) {\n if (isHorizontalNavItemType(item, 'link')) {\n linkItems.push(item)\n }\n if (\n horizontalNavItemCanHaveChildren(item) &&\n hasProperty(item, 'children')\n ) {\n _fn(item.children)\n }\n }\n }\n _fn(items)\n\n return linkItems\n}\n\nexport function setHorizontalNavItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n value: INavItemState[K],\n): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getHorizontalNavItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n): INavItemState[K] {\n return setDefaultHorizontalNavItemState(item).__state[prop]\n}\n\nexport function setDefaultHorizontalNavItemState(\n item: INavItem,\n): INavItem & Required<NavItemCanHaveState> {\n if (hasProperty(item, '__state')) {\n return item\n }\n\n item.__state = {\n active: false,\n expanded: false,\n focused: false,\n } as INavItemState\n\n // TODO: See if there is a nice way to fix the typing for this.\n return item as any\n}\n\nexport function areSameHorizontalNavItem(\n item1: INavItem | undefined,\n item2: INavItem | undefined,\n): boolean {\n if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {\n return false\n }\n\n if (item1.itemType !== item2.itemType) {\n return false\n }\n\n if (\n isHorizontalNavItemType(item1, 'title') &&\n isHorizontalNavItemType(item2, 'title')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'divider') &&\n isHorizontalNavItemType(item2, 'divider')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'basic') &&\n isHorizontalNavItemType(item2, 'basic')\n ) {\n return item1.label === item2.label\n } else if (\n isHorizontalNavItemType(item1, 'link') &&\n isHorizontalNavItemType(item2, 'link')\n ) {\n return item1.label === item2.label && item1.link === item2.link\n } else if (\n isHorizontalNavItemType(item1, 'button') &&\n isHorizontalNavItemType(item2, 'button')\n ) {\n return item1.onClick === item2.onClick\n }\n\n return false\n}\n","import { inject, Injectable } from '@angular/core'\nimport {\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n UrlCreationOptions,\n} from '@angular/router'\nimport { BehaviorSubject, defer, Observable, Subject, Subscriber } from 'rxjs'\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap,\n} from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n areSameHorizontalNavItem,\n getHorizontalNavItemStateProp,\n horizontalNavItemCanExpand,\n horizontalNavItemHasActiveChild,\n horizontalNavItemHasChildren,\n horizontalNavItemHasExpandedChild,\n isHorizontalNavItemActive,\n isHorizontalNavItemType,\n setDefaultHorizontalNavItemState,\n setHorizontalNavItemStateProp,\n} from './nav-utils'\nimport {\n INavItem,\n INavItemState,\n INavLink,\n NavItemStateChanged,\n} from './nav.models'\n\n@Injectable()\nexport class TheSeamNavService {\n private readonly _router = inject(Router)\n\n private readonly _updatingCount = new BehaviorSubject<number>(0)\n\n public readonly loading$: Observable<boolean>\n\n public readonly itemChanged = new Subject<NavItemStateChanged>()\n\n constructor() {\n this.loading$ = this._updatingCount.pipe(\n map((count) => count > 0),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public createItemsObservable(items: INavItem[]): Observable<INavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n this.updateRouterFocusedItem(items)\n return new Observable((subscriber: Subscriber<INavItem[]>) => {\n const stateChangeSub = this.itemChanged\n .pipe(\n switchMap((change) => {\n if (change.prop === 'focused' && change.newValue) {\n this.updateFocusedItem(items, change.item)\n }\n return this.loading$.pipe(filter((loading) => !loading))\n }),\n )\n .subscribe(() => {\n subscriber.next(items)\n })\n\n try {\n this.updateItemsStates(items)\n } catch (err) {\n subscriber.error(err)\n }\n\n const routeChangeSub = this._router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event) => {\n try {\n this.updateItemsStates(items)\n this.updateRouterFocusedItem(items)\n } catch (err) {\n subscriber.error(err)\n }\n })\n\n return () => {\n stateChangeSub.unsubscribe()\n routeChangeSub.unsubscribe()\n }\n }).pipe(startWith(items))\n })\n }\n\n private _incUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value + 1)\n }\n\n private _decrUpdatingCount(): void {\n this._updatingCount.next(this._updatingCount.value - 1)\n }\n\n public updateItemsStates(items: INavItem[]): void {\n this._incUpdatingCount()\n\n try {\n for (const item of items) {\n if (horizontalNavItemHasChildren(item)) {\n this.updateItemsStates(item.children)\n }\n\n this.updateItemState(item)\n }\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public updateItemState(item: INavItem): void {\n this._incUpdatingCount()\n\n try {\n setDefaultHorizontalNavItemState(item)\n\n this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item))\n\n // TODO: Implement this in a more optimized way. Unless our apps start\n // having large navs constantly updating their state, this shouldn't\n // have much impact on performance.\n this._updateItemExpandedState(item)\n\n this._decrUpdatingCount()\n } catch (err) {\n this._decrUpdatingCount()\n throw err\n }\n }\n\n public horizontalNavLinkActive(item: INavItem): boolean {\n if (isHorizontalNavItemType(item, 'link')) {\n const url = this._getUrl(item)\n if (notNullOrUndefined(url)) {\n const opts = this._getMatchOptions(item)\n return this._router.isActive(url, opts)\n }\n }\n return false\n }\n\n private _updateItemsExpandedState(items: INavItem[]): void {\n for (const item of items) {\n if (horizontalNavItemHasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n this._updateItemExpandedState(item)\n }\n }\n\n private _updateItemExpandedState(item: INavItem): void {\n if (!horizontalNavItemCanExpand(item)) {\n if (getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n return\n }\n\n if (horizontalNavItemHasChildren(item)) {\n this._updateItemsExpandedState(item.children)\n }\n\n if (\n horizontalNavItemHasActiveChild(item) ||\n horizontalNavItemHasExpandedChild(item)\n ) {\n if (!getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', true)\n }\n } else {\n if (getHorizontalNavItemStateProp(item, 'expanded')) {\n this.setItemStateProp(item, 'expanded', false)\n }\n }\n }\n\n public updateRouterFocusedItem(items: INavItem[]) {\n const focusedItem =\n items.find((i) => isHorizontalNavItemActive(i)) ||\n items.find((i) => horizontalNavItemHasActiveChild(i))\n if (notNullOrUndefined(focusedItem)) {\n this.updateFocusedItem(items, focusedItem)\n }\n }\n\n public updateFocusedItem(\n items: INavItem[],\n focusedItem: INavItem | undefined,\n ): void {\n for (const item of items) {\n if (areSameHorizontalNavItem(item, focusedItem)) {\n setHorizontalNavItemStateProp(item, 'focused', true)\n } else {\n setHorizontalNavItemStateProp(item, 'focused', false)\n }\n }\n }\n\n private _getNavExtras(item: INavLink): UrlCreationOptions {\n const navigationExtras: UrlCreationOptions = {}\n if (hasProperty(item, 'queryParams')) {\n navigationExtras.queryParams = item.queryParams\n }\n if (hasProperty(item, 'fragment')) {\n navigationExtras.fragment = item.fragment\n }\n if (hasProperty(item, 'queryParamsHandling')) {\n navigationExtras.queryParamsHandling = item.queryParamsHandling\n }\n if (hasProperty(item, 'preserveFragment')) {\n navigationExtras.preserveFragment = item.preserveFragment\n }\n return navigationExtras\n }\n\n private _getUrl(item: INavLink): string | null {\n const link = item.link\n\n if (typeof link === 'string') {\n return this._router\n .createUrlTree([link], this._getNavExtras(item))\n .toString()\n } else if (Array.isArray(link)) {\n return this._router\n .createUrlTree(link, this._getNavExtras(item))\n .toString()\n }\n\n return null\n }\n\n private _getMatchOptions(item: INavLink): IsActiveMatchOptions {\n const defaultMatchOpts: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n\n if (hasProperty(item, 'matchOptions')) {\n return {\n ...defaultMatchOpts,\n ...item.matchOptions,\n }\n }\n\n return defaultMatchOpts\n }\n\n public setItemStateProp<K extends keyof INavItemState>(\n item: INavItem,\n prop: K,\n value: INavItemState[K],\n ): void {\n const currentValue = getHorizontalNavItemStateProp(item, prop)\n if (currentValue !== value) {\n setHorizontalNavItemStateProp(item, prop, value)\n\n const changed: NavItemStateChanged = {\n item,\n prop,\n prevValue: currentValue,\n newValue: value,\n }\n this.itemChanged.next(changed)\n }\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations'\nimport {\n BooleanInput,\n coerceBooleanProperty,\n NumberInput,\n} from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core'\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { RouterModule } from '@angular/router'\nimport { BehaviorSubject, Subject } from 'rxjs'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport { TheSeamIconModule, type SeamIcon } from '@theseam/ui-common/icon'\nimport { ThemeTypes } from '@theseam/ui-common/models'\nimport { MenuComponent, TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\nimport { TheSeamTooltipModule } from '@theseam/ui-common/tooltip'\n\nimport { horizontalNavItemHasActiveChild } from '../nav-utils'\nimport {\n INavItem,\n NavItemBadgeTooltip,\n NavItemChildAction,\n NavItemExpandAction,\n} from '../nav.models'\nimport { TheSeamNavService } from '../nav.service'\n\n@Component({\n selector: 'seam-nav-item',\n templateUrl: './nav-item.component.html',\n styleUrls: ['./nav-item.component.scss'],\n exportAs: 'seamNavItem',\n animations: [\n trigger('childGroupAnim', [\n transition(':enter', [\n style({ height: 0 }),\n animate('0.2s ease-in-out', style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ height: '*' }),\n animate('0.2s ease-in-out', style({ height: 0 })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgFor,\n NgTemplateOutlet,\n AsyncPipe,\n RouterModule,\n A11yModule,\n TheSeamMenuModule,\n TheSeamIconModule,\n TheSeamTooltipModule,\n ],\n})\nexport class NavItemComponent implements OnDestroy {\n static ngAcceptInputType_hierLevel: NumberInput\n static ngAcceptInputType_indentSize: NumberInput\n static ngAcceptInputType_expanded: BooleanInput\n static ngAcceptInputType_compact: BooleanInput\n static ngAcceptInputType_active: BooleanInput\n\n private readonly _nav = inject(TheSeamNavService)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n readonly faAngleLeft = faAngleLeft\n\n @Input() item: INavItem | undefined | null\n\n @Input() itemType:\n | 'divider'\n | 'basic'\n | 'link'\n | 'button'\n | 'title'\n | undefined\n | null\n\n @Input() icon: SeamIcon | undefined | null\n\n @Input() hideEmptyIcon: boolean | undefined | null\n\n @Input() label: string | undefined | null\n\n @Input() @InputBoolean() active = false\n\n @Input()\n set link(value: string | undefined | null) {\n this._link.next(value)\n }\n get link() {\n return this._link.value\n }\n private readonly _link = new BehaviorSubject<string | undefined | null>(\n undefined,\n )\n public readonly link$ = this._link.asObservable()\n\n @Input() queryParams: { [k: string]: any } | undefined | null\n\n @Input() children: INavItem[] | undefined | null\n\n @Input() @InputNumber(0) hierLevel = 0\n\n @Input() @InputNumber(10) indentSize = 10\n\n @Input()\n set expanded(value: boolean) {\n this._expanded.next(coerceBooleanProperty(value))\n }\n get expanded() {\n return this._expanded.value\n }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) {\n this._compact.next(coerceBooleanProperty(value))\n }\n get compact() {\n return this._compact.value\n }\n private readonly _compact = new BehaviorSubject<boolean>(false)\n public readonly compact$ = this._compact.asObservable()\n\n @Input() focused = false\n\n @Input() badgeText: string | undefined | null\n @Input() badgeTheme: ThemeTypes | undefined | null = 'danger'\n\n /**\n * Content to provide to assistive technology, such as screen readers.\n */\n @Input() badgeSrContent: string | undefined | null\n\n @Input()\n get badgeTooltip() {\n return this._badgeTooltip\n }\n set badgeTooltip(value: string | NavItemBadgeTooltip | undefined | null) {\n if (value !== null && value !== undefined) {\n if (typeof value === 'string') {\n this._badgeTooltip = {\n tooltip: value,\n placement: 'auto',\n disabled: false,\n }\n } else {\n this._badgeTooltip = {\n ...value,\n placement: value.placement || 'auto',\n disabled:\n typeof value?.disabled === 'boolean'\n ? value.disabled\n : typeof value.tooltip !== 'string',\n }\n }\n } else {\n this._badgeTooltip = undefined\n }\n }\n private _badgeTooltip: NavItemBadgeTooltip | undefined | null\n\n @Input() childAction: NavItemChildAction = 'menu'\n\n @Input() expandAction: NavItemExpandAction = 'toggle'\n\n @Output() navItemExpanded = new EventEmitter<boolean>()\n\n @HostBinding('class.seam-nav-item--active') get _isActiveCssClass() {\n return this.active\n }\n\n @HostBinding('class.seam-nav-item--child-active')\n get _isChildActiveCssClass() {\n return this.hasActiveChild\n }\n\n @HostBinding('class.seam-nav-item--expanded') get _isExpandedCssClass() {\n return this.expanded\n }\n\n @HostBinding('class.seam-nav-item--focused') get _isFocusedCssClass() {\n return this.focused\n }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() {\n return this.hierLevel\n }\n\n @ViewChild(MenuComponent) _menu?: MenuComponent\n\n @ViewChildren(NavItemComponent) _navItems?: NavItemComponent[]\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n get hasChildren() {\n return Array.isArray(this.children) && this.children.length > 0\n }\n\n get hasActiveChild() {\n if (notNullOrUndefined(this.item)) {\n return horizontalNavItemHasActiveChild(this.item)\n }\n return false\n }\n\n get hasMenuToggle() {\n return this.hasChildren && this.childAction === 'menu'\n }\n\n get menuTpl(): MenuComponent | undefined {\n return this.hasMenuToggle ? this._menu : undefined\n }\n\n get hasExpandingChildren() {\n return this.hasChildren && this.childAction === 'expand'\n }\n\n public _toggleChildren(event: Event): void {\n let ex = !this.expanded\n if (this.expandAction === 'expandOnly') {\n ex = true\n }\n\n this.expanded = ex\n this.navItemExpanded.emit(this.expanded)\n if (this.item && this.expanded) {\n this._nav.setItemStateProp(this.item, 'focused', this.expanded)\n }\n\n // Prevents seam-menu from closing out when toggling child expand\n event.stopPropagation()\n }\n\n // Updates expanded state when user exits seam-menu\n _menuEvent(menuExpanded: any) {\n if (menuExpanded === false) {\n this.expanded = false\n\n // TODO: figure out why closing seam-menu with expanded submenu messes up animation\n if (this._navItems && this._navItems.length) {\n this._navItems.forEach((navItem) => {\n navItem.expanded = false\n })\n }\n }\n }\n\n get showIconBlock(): boolean {\n return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true\n }\n}\n","<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\n class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\"\n @childGroupAnim\n >\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button\n 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 >\n <div\n class=\"nav-link d-flex flex-row align-items-center w-100\"\n [class.nav-link__compact]=\"compact\"\n >\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\n *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\"\n >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a\n *ngIf=\"link; else noLink\"\n 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 >\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\n class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n >\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\n *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 >\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type\n >\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\n class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$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 >\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\n *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 >\n </seam-nav-item>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { shareReplay, switchMap } from 'rxjs/operators'\n\nimport {\n INavItem,\n NavItemChildAction,\n NavItemExpandAction,\n NavItemExpandedEvent,\n} from '../nav.models'\nimport { TheSeamNavService } from '../nav.service'\nimport { NavItemComponent } from '../nav-item/nav-item.component'\n\n@Component({\n selector: 'seam-horizontal-nav',\n templateUrl: './horizontal-nav.component.html',\n styleUrls: ['./horizontal-nav.component.scss'],\n providers: [TheSeamNavService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgFor, AsyncPipe, NavItemComponent],\n})\nexport class HorizontalNavComponent implements OnDestroy {\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _nav = inject(TheSeamNavService)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n get items(): INavItem[] {\n return this._items.value\n }\n set items(value: INavItem[]) {\n this._items.next(value)\n }\n private _items = new BehaviorSubject<INavItem[]>([])\n public readonly items$: Observable<INavItem[]>\n\n @Input() hideEmptyIcon: boolean | undefined | null = true\n\n @Input() hierLevel = 0\n\n @Input() childAction: NavItemChildAction = 'menu'\n\n @Input() expandAction: NavItemExpandAction = 'toggle'\n\n @Output() navItemExpanded = new EventEmitter<NavItemExpandedEvent>()\n\n constructor() {\n this.items$ = this._items.asObservable().pipe(\n switchMap((items) =>\n items ? this._nav.createItemsObservable(items) : [],\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n _navItemExpanded(item: INavItem, expanded: boolean) {\n this.navItemExpanded.emit({ navItem: item, expanded })\n }\n}\n","<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{ hierLevel }}\">\n <div class=\"nav-items-row\">\n <seam-nav-item\n *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 >\n </seam-nav-item>\n </div>\n</div>\n","import { NgModule } from '@angular/core'\n\nimport { HorizontalNavComponent } from './horizontal-nav/horizontal-nav.component'\nimport { NavItemComponent } from './nav-item/nav-item.component'\n\n@NgModule({\n imports: [NavItemComponent, HorizontalNavComponent],\n exports: [NavItemComponent, HorizontalNavComponent],\n})\nexport class TheSeamNavModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","EXPANDED_STATE","COLLAPSED_STATE","map","i2","i3","i2.TheSeamSideNavService","i4","i5","i6.TheSeamBaseLayoutNavToggleDirective","i7"],"mappings":"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"}
|