@theseam/ui-common 0.4.12 → 0.4.14
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.
- package/buttons/public-api.d.ts +1 -0
- package/buttons/testing/anchor-badge-button.harness.d.ts +16 -0
- package/buttons/testing/anchor-button.harness.d.ts +16 -0
- package/buttons/testing/badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-badge-button.harness.d.ts +15 -0
- package/buttons/testing/base-button.harness.d.ts +19 -0
- package/buttons/testing/button.harness.d.ts +15 -0
- package/buttons/testing/index.d.ts +5 -0
- package/buttons/testing/toggle-button.harness.d.ts +21 -0
- package/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/checkbox.module.d.ts +2 -3
- package/datatable/datatable.module.d.ts +1 -1
- package/esm2020/buttons/button/button.component.mjs +2 -1
- package/esm2020/buttons/public-api.mjs +2 -1
- package/esm2020/buttons/testing/anchor-badge-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/anchor-button.harness.mjs +18 -0
- package/esm2020/buttons/testing/badge-button.harness.mjs +14 -0
- package/esm2020/buttons/testing/base-badge-button.harness.mjs +29 -0
- package/esm2020/buttons/testing/base-button.harness.mjs +41 -0
- package/esm2020/buttons/testing/button.harness.mjs +16 -0
- package/esm2020/buttons/testing/index.mjs +6 -0
- package/esm2020/buttons/testing/toggle-button.harness.mjs +25 -0
- package/esm2020/checkbox/checkbox.component.mjs +8 -3
- package/esm2020/checkbox/checkbox.module.mjs +5 -12
- package/esm2020/datatable/datatable.module.mjs +5 -5
- package/esm2020/form-field/form-field.component.mjs +4 -4
- package/esm2020/framework/schema-form/index.mjs +2 -1
- package/esm2020/framework/schema-form/schema-form-framework.component.mjs +6 -3
- package/esm2020/framework/schema-form/schema-form-framework.mjs +62 -7
- package/esm2020/framework/schema-form/schema-form-widget.mjs +2 -0
- package/esm2020/framework/schema-form/schema-form.module.mjs +1 -8
- package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +21 -11
- package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +20 -0
- package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +17 -8
- package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +14 -5
- package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +19 -9
- package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +21 -13
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +30 -18
- package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +48 -0
- package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +57 -0
- package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
- package/esm2020/menu/menu-item.component.mjs +3 -3
- package/esm2020/menu/public-api.mjs +5 -1
- package/esm2020/menu/testing/menu-footer.harness.mjs +28 -0
- package/esm2020/menu/testing/menu-header.harness.mjs +23 -0
- package/esm2020/menu/testing/menu-item.harness.mjs +59 -0
- package/esm2020/menu/testing/menu.harness.mjs +163 -0
- package/esm2020/menu/testing/utils.mjs +13 -0
- package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
- package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
- package/esm2020/services/preferences/preferences-record.mjs +1 -1
- package/esm2020/services/preferences/preferences.models.mjs +1 -1
- package/esm2020/story-helpers/args-to-tpl.mjs +83 -0
- package/esm2020/story-helpers/public-api.mjs +2 -2
- package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
- package/esm2020/tel-input/public-api.mjs +2 -1
- package/esm2020/tel-input/tel-input/tel-input.component.mjs +22 -10
- package/esm2020/tel-input/tel-input.directive.mjs +12 -13
- package/esm2020/tel-input/tel-input.module.mjs +10 -9
- package/esm2020/tel-input/testing/tel-input.harness.mjs +49 -0
- package/esm2020/testing/harnesses/ng-select-dropdown.harness.mjs +39 -0
- package/esm2020/testing/harnesses/ng-select-option.harness.mjs +26 -0
- package/esm2020/testing/harnesses/ng-select.harness.mjs +104 -0
- package/esm2020/testing/public-api.mjs +4 -1
- package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +1 -1
- package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
- package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
- package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
- package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
- package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
- package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
- package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
- package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
- package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
- package/esm2020/widget/widget.models.mjs +1 -1
- package/fesm2015/theseam-ui-common-buttons.mjs +181 -3
- package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +4 -4
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-framework.mjs +248 -164
- package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-menu.mjs +331 -5
- package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs +86 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tel-input.mjs +105 -29
- package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-testing.mjs +197 -1
- package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-buttons.mjs +154 -2
- package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-checkbox.mjs +12 -14
- package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +4 -4
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-form-field.mjs +3 -3
- package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-framework.mjs +236 -162
- package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-menu.mjs +277 -4
- package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs +84 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tel-input.mjs +89 -29
- package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-testing.mjs +165 -1
- package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
- package/framework/schema-form/index.d.ts +1 -0
- package/framework/schema-form/schema-form-framework.d.ts +12 -1
- package/framework/schema-form/schema-form-widget.d.ts +61 -0
- package/framework/schema-form/schema-form.module.d.ts +1 -2
- package/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.d.ts +12 -11
- package/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.d.ts +12 -0
- package/framework/schema-form-controls/schema-form-input/schema-form-input.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-number/schema-form-number.component.d.ts +8 -7
- package/framework/schema-form-controls/schema-form-select/schema-form-select.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +10 -9
- package/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.d.ts +23 -0
- package/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.d.ts +32 -0
- package/menu/menu-footer-action/menu-footer-action.component.d.ts +1 -1
- package/menu/public-api.d.ts +4 -0
- package/menu/testing/menu-footer.harness.d.ts +22 -0
- package/menu/testing/menu-header.harness.d.ts +18 -0
- package/menu/testing/menu-item.harness.d.ts +37 -0
- package/menu/testing/menu.harness.d.ts +74 -0
- package/menu/testing/utils.d.ts +5 -0
- package/package.json +1 -1
- package/story-helpers/args-to-tpl.d.ts +25 -0
- package/story-helpers/public-api.d.ts +1 -0
- package/tel-input/public-api.d.ts +1 -0
- package/tel-input/tel-input/tel-input.component.d.ts +2 -2
- package/tel-input/tel-input.directive.d.ts +1 -1
- package/tel-input/tel-input.module.d.ts +7 -7
- package/tel-input/testing/tel-input.harness.d.ts +19 -0
- package/testing/harnesses/ng-select-dropdown.harness.d.ts +23 -0
- package/testing/harnesses/ng-select-option.harness.d.ts +18 -0
- package/testing/harnesses/ng-select.harness.d.ts +50 -0
- package/testing/public-api.d.ts +3 -0
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +10 -10
- package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +0 -79
- package/framework/schema-form-controls/schema-form-controls.module.d.ts +0 -20
|
@@ -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/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-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/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-controls/schema-form-submit/schema-form-submit.component.ts","../../../projects/ui-common/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.html","../../../projects/ui-common/framework/schema-form-controls/schema-form-controls.module.ts","../../../projects/ui-common/framework/schema-form/schema-form.module.ts","../../../projects/ui-common/framework/theseam-ui-common-framework.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentFooter]'\n})\nexport class BaseLayoutContentFooterDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentHeader]'\n})\nexport class BaseLayoutContentHeaderDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContent]'\n})\nexport class BaseLayoutContentDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamBaseLayoutRef } from './base-layout-ref'\n\nexport const THESEAM_BASE_LAYOUT_REF = new InjectionToken<ITheSeamBaseLayoutRef>('seamBaseLayoutRef')\n","import { Directive, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core'\n\nimport type { ITheSeamBaseLayoutRef } 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 BaseLayoutNavToggleDirective {\n\n public baseLayout: ITheSeamBaseLayoutRef | undefined\n\n @HostBinding('attr.type')\n get _attrType() { return this.type }\n\n @Input() type: string | undefined | null = 'button'\n\n @HostBinding('attr.aria-label')\n get _attrAriaLabel() { return this.ariaLabel || null }\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string | undefined | null = 'Navigation toggle'\n\n @HostListener('click')\n _onClick() {\n if (this.baseLayout && this.baseLayout.registeredNav) {\n this.baseLayout.registeredNav.toggle()\n }\n }\n\n constructor(\n @Optional() @Inject(THESEAM_BASE_LAYOUT_REF) _baseLayout: ITheSeamBaseLayoutRef\n ) {\n this.baseLayout = _baseLayout\n }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarFooter]'\n})\nexport class BaseLayoutSideBarFooterDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBar]'\n})\nexport class BaseLayoutSideBarDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutTopBar]'\n})\nexport class BaseLayoutTopBarDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n forwardRef,\n Input,\n isDevMode,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, from, isObservable, Observable } from 'rxjs'\n\nimport { faAngleDoubleLeft, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons'\n\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { BaseLayoutAction, IBaseLayoutActionButton } from './base-layout-action'\nimport { ITheSeamBaseLayoutNav } from './base-layout-nav'\nimport { ITheSeamBaseLayoutRef } 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 // tslint:disable-next-line:no-use-before-declare\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})\nexport class TheSeamBaseLayoutComponent implements OnInit, ITheSeamBaseLayoutRef {\n\n faAngleDoubleRight = faAngleDoubleRight\n faAngleDoubleLeft = faAngleDoubleLeft\n\n @Input() overlayNav = false\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 }) _topBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutSideBarDirective, { static: true, read: TemplateRef }) _sideBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentDirective, { static: true, read: TemplateRef }) _contentTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentHeaderDirective, { static: true, read: TemplateRef }) _contentHeaderTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentFooterDirective, { static: true, read: TemplateRef }) _contentFooterTpl?: TemplateRef<any> | null\n\n _topBarPortal?: TemplatePortal\n _sideBarPortal?: TemplatePortal\n _contentPortal?: TemplatePortal\n _contentHeaderPortal?: TemplatePortal\n _contentFooterPortal?: TemplatePortal\n\n private _hasSideBar = new BehaviorSubject<boolean>(false)\n\n public hasSideBar$: Observable<boolean>\n public isMobile$: Observable<boolean>\n\n get registeredNav() { return this._registeredNav.value }\n private _registeredNav = new BehaviorSubject<ITheSeamBaseLayoutNav | undefined>(undefined)\n public registeredNav$ = this._registeredNav.asObservable()\n\n get registeredActions() { return this._registeredActions.value }\n private _registeredActions = new BehaviorSubject<BaseLayoutAction[]>([])\n public registeredActions$: Observable<BaseLayoutAction[]>\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n private _layout: TheSeamLayoutService\n ) {\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._topBarTpl) {\n this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef)\n }\n\n if (this._sideBarTpl) {\n this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef)\n this._hasSideBar.next(true)\n }\n\n if (this._contentTpl) {\n this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef)\n }\n\n if (this._contentHeaderTpl) {\n this._contentHeaderPortal = new TemplatePortal(this._contentHeaderTpl, this._viewContainerRef)\n }\n\n if (this._contentFooterTpl) {\n this._contentFooterPortal = new TemplatePortal(this._contentFooterTpl, this._viewContainerRef)\n }\n }\n\n public registerNav(nav: ITheSeamBaseLayoutNav): 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: ITheSeamBaseLayoutNav): void {\n if (this.registeredNav === nav) {\n this._registeredNav.next(undefined)\n }\n }\n\n public registerAction(action: BaseLayoutAction): 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: BaseLayoutAction | 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: IBaseLayoutActionButton): void {\n this._execButtonAction(action).subscribe()\n }\n\n _execButtonAction(action: IBaseLayoutActionButton): Observable<void> {\n const fnRes = action.exec()\n return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes))\n }\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\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header\">\n <!-- <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template> -->\n\n <div class=\"d-flex d-flex-row\">\n <div class=\"flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div>\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n","import { 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 { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\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 { BaseLayoutNavToggleDirective } from './directives/base-layout-nav-toggle.directive'\nimport { BaseLayoutSideBarFooterDirective } from './directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\n@NgModule({\n declarations: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutTopBarDirective,\n BaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective\n ],\n imports: [\n CommonModule,\n PortalModule,\n TheSeamScrollbarModule,\n TheSeamIconModule,\n TheSeamButtonsModule\n ],\n exports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutTopBarDirective,\n BaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective\n ]\n})\nexport class TheSeamBaseLayoutModule { }\n","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } 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\n @Input() def: IDashboardWidgetsItemDef | undefined | null\n\n @ViewChild(TemplateRef) templateRef?: TemplateRef<any>\n\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 = new InjectionToken<DashboardWidgetsAccessor>(\n 'THESEAM_DASHBOARD_WIDGETS_ACCESSOR'\n)\n","import { ChangeDetectionStrategy, Component, Inject, Input, TemplateRef } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { DashboardWidgetsAccessor, THESEAM_DASHBOARD_WIDGETS_ACCESSOR } from '../dashboard-widgets-tokens'\nimport type { 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})\nexport class DashboardWidgetTemplateContainerComponent {\n\n @Input() item: IDashboardWidgetsItem | undefined | null\n\n public template$: Observable<TemplateRef<any> | undefined>\n\n constructor(\n @Inject(THESEAM_DASHBOARD_WIDGETS_ACCESSOR) private readonly _dashboardWidgetsComponent: DashboardWidgetsAccessor\n ) {\n this.template$ = this._dashboardWidgetsComponent.containers$.pipe(\n map(containers => containers.find((c: any) => c.def.widgetId === this.item?.widgetId)),\n map(container => container && container.templateRef)\n )\n }\n\n}\n","<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n","import { BasePortalOutlet, CdkPortalOutletAttachedRef, ComponentPortal, Portal, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\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 extends BasePortalOutlet implements OnInit, OnDestroy {\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 constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _elementRef: ElementRef\n ) {\n super()\n }\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 using the ComponentFactoryResolver.\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 = portal.viewContainerRef != null\n ? portal.viewContainerRef\n : this._viewContainerRef\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver\n const componentFactory = resolver.resolveComponentFactory(portal.component)\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector)\n\n super.setDisposeFn(() => ref.destroy())\n this._attachedPortal = portal\n this._attachedRef = ref\n this.attached.emit(ref)\n\n return ref\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(portal.templateRef, portal.context)\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 // static ngAcceptInputType_portal: Portal<any> | null | undefined | '';\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\n\nexport const THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR = new InjectionToken<ITheSeamDashboardWidgetsPreferencesAccessor>(\n 'ITheSeamDashboardWidgetsPreferencesAccessor'\n)\n","import { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { Observable, of, Subject } from 'rxjs'\nimport { auditTime, map, mapTo, shareReplay, startWith, switchMap, take, tap } 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({\n providedIn: 'root'\n})\nexport class DashboardWidgetsPreferencesService {\n\n private readonly _tablePrefsMap = new Map<string, IDashboardWidgetsPreferencesMapRecord>()\n // private _pending = false\n\n // public get pending() { return this._pending }\n\n constructor(\n @Optional() @Inject(THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR) private _prefsAccessor?: ITheSeamDashboardWidgetsPreferencesAccessor\n ) { }\n\n public preferences(preferenceKey: string): 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(refreshSubject: Subject<void>, prefKey: string): 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(() => 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 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(() => setTimeout(() => { prefs.refresh.next() }, 0)),\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(preferenceKey: string, layoutName: string): 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(preferenceKey: string, layout: IDashboardWidgetItemLayout): Observable<void> {\n if (!this._prefsAccessor) {\n return of(undefined)\n }\n\n if (!hasProperty(layout, 'name')) {\n throw Error(`Unable to save layout preference. 'name' is required for a layout preference.`)\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')) { _layoutPref.name = _layout.name }\n if (hasProperty(_layout, 'label')) { _layoutPref.label = _layout.label }\n if (hasProperty(_layout, 'items')) { _layoutPref.items = _layout.items }\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 => 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(layout: IDashboardWidgetItemLayout): 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(widgets: IDashboardWidgetsItem[]): 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}\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport { Injectable, Injector, isDevMode, ViewContainerRef } from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport { auditTime, map, mapTo, shareReplay, switchMap, take, tap } 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({\n providedIn: 'root'\n})\nexport class DashboardWidgetsService {\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[] { return this._widgets.value }\n set widgets(value: IDashboardWidgetsItemDef[]) { this._widgets.next(value) }\n private _widgets = new BehaviorSubject<IDashboardWidgetsItemDef[]>([])\n\n get numColumns(): number { return this._numColumns.value }\n set numColumns(value: number) {\n if (value !== this._numColumns.value) {\n this._numColumns.next(value)\n }\n }\n private _numColumns = new BehaviorSubject<number>(this.defaultNumColumns)\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<ViewContainerRef | undefined>(undefined)\n\n constructor(\n private readonly _dynamicComponentLoaderModule: TheSeamDynamicComponentLoader,\n private readonly _preferences: DashboardWidgetsPreferencesService\n ) {\n this.numColumns$ = this._numColumns.asObservable()\n\n // Widget items without preferences\n const _widgetItems$ = combineLatest([ this._widgets, this._viewContainerRefSubject ])\n .pipe(switchMap(([ defs, vcr ]) => this.createWidgetItems(defs, vcr)))\n\n // Widget items with preferences\n this.widgetItems$ = combineLatest([ _widgetItems$, this.numColumns$ ])\n .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.selectLayout(this.preferenceKey, this._layoutName(numColumns)).pipe(\n map(layout => layout ? this.withLayoutPreferences(items, layout) : items)\n )\n ),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.widgetColumns$ = this.widgetItems$\n .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(defs: IDashboardWidgetsItemDef[], vcr?: ViewContainerRef): Observable<IDashboardWidgetsItem[]> {\n const _createObservables = (defs || []).map(d => this.createWidgetItem(d, vcr))\n const items$ = _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(`[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`)\n }\n }\n })\n )\n }\n\n public createWidgetItem(def: IDashboardWidgetsItemDef, vcr?: ViewContainerRef): Observable<IDashboardWidgetsItem | undefined> {\n if (!def.widgetId || typeof def.widgetId !== 'string' || def.widgetId.length < 1) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`, def)\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(def: IDashboardWidgetsItemDef, vcr?: ViewContainerRef): Observable<ComponentPortal<any>> {\n const injector = Injector.create({ providers: [\n { provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } }\n ], parent: this._viewContainerRefSubject.value?.injector })\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 (componentFactory as any /* ComponentFactoryBoundToModule */).ngModule.componentFactoryResolver\n )\n }),\n take(1)\n )\n }\n\n return def.componentFactoryResolver\n ? of(new ComponentPortal(def.component, undefined, injector, def.componentFactoryResolver))\n : of(new ComponentPortal(def.component, undefined, injector))\n }\n\n public updateOrder(): Observable<void> {\n return this.widgetColumns$\n .pipe(\n take(1),\n tap(columns => columns.forEach(col => {\n let i = 0\n col.items.forEach(itm => itm.order = i++)\n })),\n mapTo(undefined)\n )\n }\n\n public toColumnRecords(items: IDashboardWidgetsItem[]): 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(c => c.column === item.col)\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\n .find(c => c.column === i % this.numColumns)\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(items: IDashboardWidgetsItem[], layout: IDashboardWidgetItemLayoutPreference): 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 => ([] as IDashboardWidgetsItem[])\n .concat(...(columns.map(c => c.items.map(itm => ({ ...itm, col: c.column })))))\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}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion'\nimport { CdkDrag, CdkDragDrop, moveItemInArray, transferArrayItem } 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 Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { auditTime, debounceTime, distinctUntilChanged, finalize, map, shareReplay, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faLock, faUnlock } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport type { IElementResizedEvent } from '@theseam/ui-common/shared'\nimport { THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common/widget'\n\nimport type { ITheSeamBaseLayoutRef } 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 { DashboardWidgetsAccessor, THESEAM_DASHBOARD_WIDGETS_ACCESSOR } from '../dashboard-widgets-tokens'\nimport type { IDashboardWidgetsColumnRecord, IDashboardWidgetsItem, IDashboardWidgetsItemDef } from './dashboard-widgets-item'\nimport { DashboardWidgetsService } from './dashboard-widgets.service'\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 // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DashboardWidgetsComponent)\n },\n {\n provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DashboardWidgetsComponent)\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DashboardWidgetsComponent implements OnInit, OnDestroy, AfterViewInit, DashboardWidgetsAccessor {\n static ngAcceptInputType_gapSize: NumberInput\n static ngAcceptInputType_numColumns: NumberInput\n static ngAcceptInputType_widgetsDraggable: BooleanInput\n static ngAcceptInputType_dragToggleVisible: BooleanInput\n static ngAcceptInputType_widgets: IDashboardWidgetsItemDef[] | undefined | null\n\n faLock = faLock\n 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 { return this._gapSize.value }\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 { return this._dragToggleVisible.value }\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 { return this._dashboardWidgets.numColumns }\n set numColumns(val: number) {\n this._dashboardWidgets.numColumns = coerceNumberProperty(val)\n }\n\n @Input()\n set widgets(value: IDashboardWidgetsItemDef[]) { this._dashboardWidgets.widgets = value || [] }\n get widgets(): IDashboardWidgetsItemDef[] { return this._dashboardWidgets.widgets }\n\n public widgetItems$: Observable<IDashboardWidgetsItem[]>\n public widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n public containers$: Observable<DashboardWidgetContainerComponent[]>\n\n readonly _gapStyleSize$: Observable<number>\n\n @ViewChildren(DashboardWidgetContainerComponent) containers?: QueryList<DashboardWidgetContainerComponent>\n @ViewChildren(CdkDrag) cdkDragDirectives?: QueryList<CdkDrag>\n\n @ViewChild('toggleBtnTpl', { static: true }) _toggleBtnTpl?: TemplateRef<any>\n\n private _containers = new BehaviorSubject<DashboardWidgetContainerComponent[]>([])\n private _layoutChange = new Subject<void>()\n\n @Output() widgetsChange = new EventEmitter<IDashboardWidgetsItem[]>()\n\n private readonly _widthChange = new Subject<number>()\n\n constructor(\n private _dashboardWidgets: DashboardWidgetsService,\n private _viewContainerRef: ViewContainerRef,\n private _cdr: ChangeDetectorRef,\n @Optional() @Inject(THESEAM_BASE_LAYOUT_REF) private _baseLayoutRef?: ITheSeamBaseLayoutRef\n ) {\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.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 ).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.pipe(\n switchMap(() => 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 takeUntil(this._ngUnsubscribe)\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.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 ).subscribe()\n }\n\n this.containers?.changes.pipe(\n startWith(undefined),\n map(() => this.containers?.toArray() || []),\n takeUntil(this._ngUnsubscribe),\n finalize(() => this._containers.next([]))\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(this._actionWidgetDragToggleName)\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex)\n this._dashboardWidgets.updateOrder().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.updateOrder().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: IElementResizedEvent) {\n this._widthChange.next(event.size.width)\n }\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 *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($event)\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n","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'\n\n@Component({\n selector: 'seam-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DashboardComponent {\n static ngAcceptInputType_val: BooleanInput\n\n @Input() widgets: IDashboardWidgetsItemDef[] | undefined | null\n @Input() @InputBoolean() widgetsDraggable = true\n\n}\n","<seam-dashboard-widgets [widgets]=\"widgets\" [widgetsDraggable]=\"widgetsDraggable\"></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 {\n DashboardWidgetTemplateContainerComponent\n} 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 DashboardWidgetContainerComponent,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetPortalOutletDirective\n ],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamSharedModule\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","import {\n animate,\n query,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations'\nimport { BooleanInput, coerceBooleanProperty, NumberInput } from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n Host,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n Optional,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport type { SeamIcon } from '@theseam/ui-common/icon'\nimport type { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { SideNavAccessor, THESEAM_SIDE_NAV_ACCESSOR } from '../side-nav-tokens'\nimport { ISideNavItem, SideNavItemMenuItemTooltipConfig } from '../side-nav.models'\n\nexport interface SideNavItemBadgeTooltip {\n tooltip?: string\n class?: string\n placement?: string\n container?: string\n disabled?: boolean\n}\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\nconst FULL_STATE = 'full'\nconst COMPACT_STATE = 'compact'\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, 'overflow-y': 'hidden', visibility: 'hidden' })),\n transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n ]),\n\n trigger('compactAnim', [\n // transition('* <=> *', [\n // query(':enter', [\n // style({ opacity: '0' }),\n // animate('5.2s ease-in-out', style({ opacity: '1' }))\n // ], { optional: true }),\n // query(':leave', [\n // style({ opacity: '1' }),\n // animate('5.2s ease-in-out', style({ opacity: '0' }))\n // ], { optional: true })\n // ])\n\n // state(FULL_STATE, style({ opacity: '1' })),\n // state(COMPACT_STATE, style({ opacity: '0' })),\n // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),\n // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [\n // transition('* <=> *', [\n // query(':leave', [\n // style({ opacity: '1' }),\n // animate('5.2s ease-in-out', style({ opacity: '0' }))\n // ], { optional: true })\n // ]),\n\n ])\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 @Input() itemType: 'divider' | 'basic' | 'link' | 'button' | 'title' | undefined | null\n\n @Input() icon: SeamIcon | 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) { this._link.next(value) }\n get link() { return this._link.value }\n private readonly _link = new BehaviorSubject<string | undefined | null>(undefined)\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) { this._expanded.next(coerceBooleanProperty(value)) }\n get expanded() { return this._expanded.value }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) { this._compact.next(coerceBooleanProperty(value)) }\n get compact() { return this._compact.value }\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() { return this._badgeTooltip }\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: 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: SideNavItemMenuItemTooltipConfig | undefined | null\n\n @Input() menuItemTooltipDisabled: boolean | undefined | null\n\n @HostBinding('class.seam-side-nav-item--active') get _isActiveCssClass() { return this.active }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() { return this.hierLevel }\n\n public readonly childGroupAnimState$: Observable<string>\n public readonly compactAnimState$: Observable<string>\n\n constructor(\n @Inject(THESEAM_SIDE_NAV_ACCESSOR) private readonly _sideNav: SideNavAccessor,\n @Optional() @SkipSelf() @Host() private readonly _parent?: SideNavItemComponent\n ) {\n this.childGroupAnimState$ = this.expanded$\n .pipe(map(expanded => expanded ? EXPANDED_STATE : COLLAPSED_STATE))\n\n this.compactAnimState$ = this.compact$\n .pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE))\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}\n","<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SideNavToggleComponent {\n static ngAcceptInputType_expanded: BooleanInput\n\n faBars = faBars\n\n @Input() @InputBoolean() expanded = false\n\n @Output() toggleExpand = new EventEmitter<void>()\n\n toggle() {\n this.toggleExpand.emit()\n }\n\n}\n","<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n","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'\n\nexport function isNavItemType(item: ISideNavItem, type: 'title'): item is ISideNavTitle\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'divider'): item is ISideNavDivider\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'basic'): item is ISideNavBasic\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'link'): item is ISideNavLink\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'button'): item is ISideNavButton\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: string): item is ISideNavItem {\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(item: ISideNavItem): item is (ISideNavBasic | ISideNavLink) & Required<SideNavItemCanHaveChildren> {\n return canHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0\n}\n\nexport function canHaveChildren(item: ISideNavItem): 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(item: ISideNavItem): item is (ISideNavBasic | ISideNavLink) {\n return isNavItemType(item, 'basic') || isNavItemType(item, 'link')\n}\n\nexport function canExpand(item: ISideNavItem): 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>(item: ISideNavItem, prop: K, value: ISideNavItemState[K]): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getItemStateProp<K extends keyof ISideNavItemState>(item: ISideNavItem, prop: K): ISideNavItemState[K] {\n return setDefaultState(item).__state[prop]\n}\n\nexport function setDefaultState(item: ISideNavItem): 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","import { Injectable } from '@angular/core'\nimport { ActivatedRoute, IsActiveMatchOptions, NavigationEnd, Router, UrlCreationOptions } from '@angular/router'\nimport { BehaviorSubject, combineLatest, defer, Observable, of, Subject, Subscriber } from 'rxjs'\nimport { distinctUntilChanged, filter, map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n canExpand,\n findLinkItems,\n getItemStateProp,\n hasActiveChild,\n hasChildren,\n hasExpandedChild,\n isNavItemType,\n setDefaultState,\n setItemStateProp\n} from './side-nav-utils'\nimport { ISideNavItem, ISideNavItemState, ISideNavLink, SideNavItemStateChanged } from './side-nav.models'\n\n@Injectable()\nexport class TheSeamSideNavService {\n\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(\n private readonly _router: Router\n ) {\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: ISideNavItem[]): Observable<ISideNavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n return new Observable((subscriber: Subscriber<ISideNavItem[]>) => {\n const stateChangeSub = this.itemChanged.pipe(\n switchMap(() => this.loading$.pipe(filter(loading => !loading)))\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.pipe(\n filter(event => event instanceof NavigationEnd),\n // ).subscribe(() => linkItems.forEach(itm => this.updateItemState(itm)))\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(item, 'active', this._router.isActive(url, opts))\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.createUrlTree([ link ], this._getNavExtras(item)).toString()\n } else if (Array.isArray(link)) {\n return this._router.createUrlTree(link, this._getNavExtras(item)).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>(item: ISideNavItem, prop: K, value: ISideNavItemState[K]): 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 { TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\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 { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, map, mapTo, pairwise, shareReplay, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { ITheSeamBaseLayoutNav, ITheSeamBaseLayoutRef, THESEAM_BASE_LAYOUT_REF } from '../base-layout/index'\n\nimport { BaseLayoutSideBarFooterDirective } from '../base-layout/directives/base-layout-side-bar-footer.directive'\nimport { THESEAM_SIDE_NAV_ACCESSOR } from './side-nav-tokens'\nimport { ISideNavItem, SideNavItemMenuItemTooltipConfig } from './side-nav.models'\nimport { TheSeamSideNavService } from './side-nav.service'\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 fromState !== toState &&\n (\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 (\n (EXPANDED_STATES.indexOf(fromState) !== -1 && COLLAPSED_STATES.indexOf(toState) !== -1) ||\n (EXPANDED_STATES.indexOf(toState) !== -1 && COLLAPSED_STATES.indexOf(fromState) !== -1)\n )\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 // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => SideNavComponent)\n },\n ],\n animations: [\n\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.\n state(EXPANDED_STATE, style({ width: '260px' })),\n state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),\n\n state(EXPANDED_OVERLAY_STATE, style({\n position: 'absolute',\n top: 0,\n height: '100%',\n bottom: 0,\n left: 0,\n float: 'left',\n zIndex: '9999',\n width: 'calc(100vw - 50px)',\n transform: 'translateX(0)'\n })),\n state(COLLAPSED_OVERLAY_STATE, style({\n position: 'absolute',\n top: 0,\n height: '100%',\n bottom: 0,\n left: 0,\n float: 'left',\n zIndex: '9999',\n width: 'calc(100vw - 50px)',\n transform: 'translateX(calc(-100vw + 50px))',\n 'overflow-x': 'hidden'\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SideNavComponent implements OnInit, OnDestroy, ITheSeamBaseLayoutNav {\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\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()\n get items(): ISideNavItem[] { return this._items.value }\n set items(value: ISideNavItem[]) { this._items.next(value) }\n private _items = new BehaviorSubject<ISideNavItem[]>([])\n public readonly items$: Observable<ISideNavItem[]>\n\n @Input()\n get expanded(): boolean { return this._expanded.value }\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()\n get overlay(): boolean { return this._overlay.value }\n set overlay(value: boolean) { this._overlay.next(coerceBooleanProperty(value)) }\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() { return this._menuItemTooltipConfig }\n set menuItemTooltipConfig(value: SideNavItemMenuItemTooltipConfig | undefined | null) {\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(BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }) _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() @Inject(THESEAM_BASE_LAYOUT_REF) private readonly _baseLayoutRef: ITheSeamBaseLayoutRef\n ) {\n this.items$ = this._items.asObservable().pipe(\n switchMap(items => this._sideNav.createItemsObservable(items)),\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([ this.expanded$, this.overlay$ ]).pipe(\n map(([ expanded, overlay ]) => expanded\n ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE\n : overlay ? COLLAPSED_OVERLAY_STATE : COLLAPSED_STATE\n ),\n distinctUntilChanged()\n )\n\n this.menuItemTooltipDisabled$ = combineLatest([ this.expanded$, this.overlay$ ]).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' ? false\n : this.menuItemTooltipConfig?.behavior === 'never' ? true\n : this.menuItemTooltipConfig?.behavior === 'collapseOnly' ? expanded : true\n }),\n distinctUntilChanged()\n )\n }\n\n ngOnInit() {\n if (this._baseLayoutRef) { this._baseLayoutRef.registerNav(this) }\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._sideBarFooterTpl) {\n this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef)\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n if (this._baseLayoutRef) { this._baseLayoutRef.unregisterNav(this) }\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}\n","<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n","import { PortalModule } from '@angular/cdk/portal'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'\n\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLayoutModule } from '@theseam/ui-common/layout'\nimport { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\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 declarations: [\n SideNavItemComponent,\n SideNavComponent,\n SideNavToggleComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TheSeamIconModule,\n A11yModule,\n TheSeamScrollbarModule,\n TheSeamLayoutModule,\n NgbTooltipModule,\n PortalModule\n ],\n exports: [\n SideNavItemComponent,\n SideNavComponent,\n SideNavToggleComponent\n ]\n})\nexport class TheSeamSideNavModule { }\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, TemplateRef, ViewEncapsulation } from '@angular/core'\n\nimport { faAngleDown } from '@fortawesome/free-solid-svg-icons'\n\nimport { CanDisableCtor, InputBoolean, mixinDisabled } from '@theseam/ui-common/core'\nimport { SeamIcon } 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',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {\n static ngAcceptInputType_compact: BooleanInput\n\n faAngleDown = faAngleDown\n\n @Input() detailTpl: TemplateRef<object> | 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() { return this.compact }\n @HostBinding('class.p-0') get _hasPadding0Class() { return this.compact }\n @HostBinding('class.rounded') get _hasRoundedClass() { return this.compact }\n @HostBinding('class.btn-link') get _hasBtnLinkClass() { 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 <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core'\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})\nexport class TopBarTitleComponent {\n\n @Input() titleText: string | undefined | null\n @Input() subTitleText: string | undefined | null\n\n}\n","<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarItem]'\n})\nexport class TopBarItemDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarMenuBtnDetail]'\n})\nexport class TopBarMenuBtnDetailDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, Self } from '@angular/core'\n\nimport { MenuComponent } from '@theseam/ui-common/menu'\n\n@Directive({\n selector: 'seam-menu[seamTopBarMenu]'\n})\nexport class TopBarMenuDirective {\n\n constructor(\n @Self() public menu: MenuComponent\n ) { }\n\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 { Observable, Subject } from 'rxjs'\nimport { map, shareReplay, startWith, takeUntil } from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { faUserCircle } from '@fortawesome/free-regular-svg-icons'\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\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})\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 faBars = faBars\n\n /** @ignore */\n @ContentChild(TopBarMenuDirective, { static: true }) _topBarMenu?: TopBarMenuDirective | null\n /** @ignore */\n @ContentChildren(TopBarItemDirective) _topBarItems?: QueryList<TopBarItemDirective>\n /** @ignore */\n @ContentChild(TopBarMenuBtnDetailDirective) _topBarMenuBtnDetailTpl?: TopBarMenuBtnDetailDirective | 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 /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null = faUserCircle\n\n /** @ignore */\n _items$?: Observable<TopBarItemDirective[]>\n\n /** @ignore */\n isMobile$: Observable<boolean>\n\n constructor(\n private _layout: TheSeamLayoutService\n ) {\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._items$ = this._topBarItems.changes.pipe(\n startWith(undefined),\n takeUntil(this._ngUnsubscribe),\n map(() => this._topBarItems?.toArray() || []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n }\n\n}\n","<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLayoutModule } from '@theseam/ui-common/layout'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamBaseLayoutModule } from '../base-layout/index'\n\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 { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\nimport { TheSeamTopBarComponent } from './top-bar.component'\n\n@NgModule({\n declarations: [\n TheSeamTopBarComponent,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective\n ],\n imports: [\n CommonModule,\n TheSeamLayoutModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamMenuModule,\n TheSeamBaseLayoutModule,\n RouterModule\n ],\n exports: [\n TheSeamTopBarComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TheSeamMenuModule,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective\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 =\n trigger('routeAnimations', [\n transition('* <=> *', [\n // Set a default style for enter and leave\n query(':enter, :leave', [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n opacity: 0,\n transform: 'scale(0) translateY(100%)',\n }),\n ], { optional: true }),\n // Animate the new page in\n query(':enter', [\n animate('600ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),\n ], { optional: true })\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 =\n trigger('routeAnimations', [\n transition('* => isLeft', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ left: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ left: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ left: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('* => isRight', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ right: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ right: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ right: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isRight => *', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ left: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ left: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ left: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isLeft => *', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ right: '-100%' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ right: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ right: '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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ])\n ])\n\nexport const transformer =\n 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(':enter, :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], optional),\n query(':enter', [\n style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })\n ], { optional: true }),\n group([\n query(':leave', [\n animate('600ms ease-out', style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` }))\n ], optional),\n query(':enter', [\n animate('600ms ease-out', style({ transform: `translate(0, 0) rotate(0)` }))\n ], { optional: true })\n ]),\n ]\n}\n\nexport const stepper =\n trigger('routeAnimations', [\n transition('* <=> *', [\n query(':enter, :leave', [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n }),\n ], { optional: true }),\n group([\n query(':enter', [\n animate('2000ms ease', 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 ], { optional: true }),\n query(':leave', [\n animate('2000ms ease', keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(0.5) translateX(-25%) rotate(0)', offset: 0.35 }),\n style({ opacity: 0, transform: 'translateX(-50%) rotate(-180deg) scale(6)', offset: 1 }),\n ])),\n ], { optional: true })\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 { ChangeDetectionStrategy, Component, HostBinding, OnDestroy } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router, RouterOutlet } from '@angular/router'\nimport { combineLatest, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { fader, sideToSide, slider, stepper, transformer } from './hierarchy-route-animations'\n\nexport function routeChanges(router: Router) {\n return router.events.pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\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})\nexport class HierarchyRouterOutletComponent implements OnDestroy {\n\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.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.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}\n","<div class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\">\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\"\n [class.h-100]=\"!ngContentVisible\"\n >\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\">\n </router-outlet>\n </div>\n</div>\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } 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\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}\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: [\n HierarchyRouterOutletComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n HierarchyRouterOutletComponent\n ]\n})\nexport class TheSeamDynamicRouterModule { }\n","import { Component, Input, OnInit } from '@angular/core'\nimport { AbstractControl } from '@angular/forms'\n\nimport { JsonSchemaFormService } from '@ajsf/core'\n\n@Component({\n selector: 'seam-schema-form-checkbox',\n templateUrl: './schema-form-checkbox.component.html',\n styleUrls: ['./schema-form-checkbox.component.scss']\n})\nexport class TheSeamSchemaFormCheckboxComponent implements OnInit {\n\n formControl?: AbstractControl\n controlName?: string\n controlValue: any\n controlDisabled = false\n boundControl = false\n options: any\n trueValue: any = true\n falseValue: any = false\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\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(this, event.target.checked ? this.trueValue : this.falseValue)\n }\n\n get isChecked() {\n return this.jsf.getFormControlValue(this) === this.trueValue\n }\n\n}\n","<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'\nimport { AbstractControl } from '@angular/forms'\n\nimport { JsonSchemaFormService } from '@ajsf/core'\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})\nexport class TheSeamSchemaFormInputComponent implements OnInit {\n\n formControl?: AbstractControl\n controlName?: string\n controlValue?: string\n controlDisabled = false\n boundControl = false\n options: any\n autoCompleteList: string[] = []\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n this.jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this.jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'\nimport { AbstractControl } from '@angular/forms'\n\nimport { JsonSchemaFormService } from '@ajsf/core'\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})\nexport class TheSeamSchemaFormNumberComponent implements OnInit {\n\n formControl?: AbstractControl\n controlName?: string\n controlValue: any\n controlDisabled = false\n boundControl = false\n options: any\n allowNegative = true\n allowDecimal = true\n allowExponents = false\n lastValidNumber = ''\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n this.jsf.initializeControl(this)\n if (this.layoutNode.dataType === 'integer') { this.allowDecimal = false }\n }\n\n updateValue(event: any) {\n this.jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'\nimport { AbstractControl } from '@angular/forms'\n\nimport { buildTitleMap, isArray, JsonSchemaFormService } from '@ajsf/core'\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})\nexport class TheSeamSchemaFormSelectComponent implements OnInit {\n\n formControl?: AbstractControl\n controlName?: string\n controlValue: any\n controlDisabled = false\n boundControl = false\n options: any\n selectList: any[] = []\n isArray = isArray\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n this.selectList = buildTitleMap(\n this.options.titleMap || this.options.enumNames,\n this.options.enum, !!this.options.required, !!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}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n","import { Component, Input, isDevMode, OnDestroy, OnInit } from '@angular/core'\nimport { AbstractControl, UntypedFormControl } from '@angular/forms'\nimport { Subject } from 'rxjs'\n\nimport { buildTitleMap, hasOwn, JsonSchemaFormService, TitleMapItem } from '@ajsf/core'\n\nimport { observeControlStatus, observeControlValue } from '@theseam/ui-common/utils'\nimport { takeUntil } from 'rxjs/operators'\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})\nexport class TheSeamSchemaFormSubmitSplitComponent implements OnInit, OnDestroy {\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: any\n\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n _buttonLabel = ''\n\n _dropdownObj: any\n _dropdownDisabled = false\n _selectList: TheSeamSchemaFormSubmitSplitItem[] = []\n _selectedItem?: TheSeamSchemaFormSubmitSplitItem\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n /** @ignore */\n ngOnInit() {\n this.options = this.layoutNode.options || {}\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(isValid => this.controlDisabled = !isValid)\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 (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode.items || []).length) {\n return\n }\n\n if (isDevMode()) {\n if (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[idx]\n this._dropdownObj = {\n layoutNode: item,\n layoutIndex: (this.layoutIndex || []).concat(idx),\n dataIndex: this.layoutNode?.dataType === 'array' ? (this.dataIndex || []).concat(idx) : 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).pipe(\n takeUntil(this._ngUnsubscribe)\n ).subscribe(value => {\n this._setSelectListCheckedProp(value)\n this._selectedItem = this._getSelectedItem()\n })\n\n observeControlStatus(dropdownControl).pipe(\n 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}\n","<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n","import { Component, Input } from '@angular/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})\nexport class TheSeamSchemaFormFrameworkComponent {\n\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n}\n","<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n","import { Injectable } 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'\n\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\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 }\n}\n","import { Component, Input, OnInit } from '@angular/core'\nimport { AbstractControl } from '@angular/forms'\n\nimport { hasOwn, JsonSchemaFormService } from '@ajsf/core'\n\n@Component({\n selector: 'seam-schema-form-submit',\n templateUrl: './schema-form-submit.component.html',\n styles: []\n})\nexport class TheSeamSchemaFormSubmitComponent implements OnInit {\n\n formControl?: AbstractControl\n controlName?: string\n controlValue: any\n controlDisabled = false\n boundControl = false\n options: any\n\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n constructor(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode.options || {}\n this.jsf.initializeControl(this)\n if (hasOwn(this.options, 'disabled')) {\n this.controlDisabled = this.options.disabled\n } else if (this.jsf.formOptions.disableInvalidSubmit) {\n this.controlDisabled = !this.jsf.isValid\n this.jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid)\n }\n if (this.controlValue === null || this.controlValue === undefined) {\n this.controlValue = this.options.title\n }\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","<div\n [class]=\"options?.htmlClass || ''\">\n <input\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [type]=\"layoutNode?.type\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { JsonSchemaFormModule } from '@ajsf/core'\nimport { NgSelectModule } from '@ng-select/ng-select'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamCheckboxModule } from '@theseam/ui-common/checkbox'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\n\nimport { TheSeamSchemaFormCheckboxComponent } from './schema-form-checkbox/schema-form-checkbox.component'\nimport { TheSeamSchemaFormInputComponent } from './schema-form-input/schema-form-input.component'\nimport { TheSeamSchemaFormNumberComponent } from './schema-form-number/schema-form-number.component'\nimport { TheSeamSchemaFormSelectComponent } from './schema-form-select/schema-form-select.component'\nimport { TheSeamSchemaFormSubmitSplitComponent } from './schema-form-submit-split/schema-form-submit-split.component'\nimport { TheSeamSchemaFormSubmitComponent } from './schema-form-submit/schema-form-submit.component'\n\nconst controls = [\n TheSeamSchemaFormCheckboxComponent,\n TheSeamSchemaFormSubmitComponent,\n TheSeamSchemaFormSelectComponent,\n TheSeamSchemaFormInputComponent,\n TheSeamSchemaFormNumberComponent,\n TheSeamSchemaFormSubmitSplitComponent\n]\n\n@NgModule({\n declarations: [\n ...controls\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamCheckboxModule,\n TheSeamMenuModule,\n TheSeamButtonsModule,\n NgSelectModule\n ],\n exports: [\n ...controls,\n JsonSchemaFormModule\n ],\n entryComponents: [\n ...controls\n ]\n})\nexport class TheSeamSchemaFormControlsModule { }\n","import { CommonModule } from '@angular/common'\nimport { Directive, NgModule } from '@angular/core'\n\nimport {\n Framework,\n FrameworkLibraryService,\n JsonSchemaFormModule,\n JsonSchemaFormService,\n WidgetLibraryModule, WidgetLibraryService\n} from '@ajsf/core'\n\nimport { TheSeamSchemaFormControlsModule } from '../schema-form-controls/schema-form-controls.module'\nimport { TheSeamFramework } from './schema-form-framework'\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\n\n@NgModule({\n declarations: [\n TheSeamSchemaFormFrameworkComponent\n ],\n imports: [\n CommonModule,\n JsonSchemaFormModule,\n TheSeamSchemaFormControlsModule,\n WidgetLibraryModule,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: TheSeamFramework, multi: true }\n ],\n exports: [\n TheSeamSchemaFormFrameworkComponent,\n JsonSchemaFormModule\n ],\n entryComponents: [\n TheSeamSchemaFormFrameworkComponent\n ]\n})\nexport class TheSeamSchemaFormModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DashboardWidgetsPreferencesService","i3","i4","i5","i7.DashboardWidgetContainerComponent","i8.DashboardWidgetTemplateContainerComponent","i9.DashboardWidgetPortalOutletDirective","i1.DashboardWidgetsComponent","EXPANDED_STATE","COLLAPSED_STATE","i2","i6.SideNavItemComponent","i7.SideNavToggleComponent","i6.BaseLayoutNavToggleDirective","i7","i8.TopBarTitleComponent","i9.TopBarMenuButtonComponent"],"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/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-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/theseam-ui-common-framework.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentFooter]'\n})\nexport class BaseLayoutContentFooterDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContentHeader]'\n})\nexport class BaseLayoutContentHeaderDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutContent]'\n})\nexport class BaseLayoutContentDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamBaseLayoutRef } from './base-layout-ref'\n\nexport const THESEAM_BASE_LAYOUT_REF = new InjectionToken<ITheSeamBaseLayoutRef>('seamBaseLayoutRef')\n","import { Directive, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core'\n\nimport type { ITheSeamBaseLayoutRef } 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 BaseLayoutNavToggleDirective {\n\n public baseLayout: ITheSeamBaseLayoutRef | undefined\n\n @HostBinding('attr.type')\n get _attrType() { return this.type }\n\n @Input() type: string | undefined | null = 'button'\n\n @HostBinding('attr.aria-label')\n get _attrAriaLabel() { return this.ariaLabel || null }\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string | undefined | null = 'Navigation toggle'\n\n @HostListener('click')\n _onClick() {\n if (this.baseLayout && this.baseLayout.registeredNav) {\n this.baseLayout.registeredNav.toggle()\n }\n }\n\n constructor(\n @Optional() @Inject(THESEAM_BASE_LAYOUT_REF) _baseLayout: ITheSeamBaseLayoutRef\n ) {\n this.baseLayout = _baseLayout\n }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBarFooter]'\n})\nexport class BaseLayoutSideBarFooterDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutSideBar]'\n})\nexport class BaseLayoutSideBarDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { Directive, ElementRef } from '@angular/core'\n\nimport { HasElementRef } from '@theseam/ui-common/core'\n\n@Directive({\n selector: '[seamBaseLayoutTopBar]'\n})\nexport class BaseLayoutTopBarDirective implements HasElementRef {\n\n constructor(\n public _elementRef: ElementRef\n ) { }\n\n}\n","import { TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n forwardRef,\n Input,\n isDevMode,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, from, isObservable, Observable } from 'rxjs'\n\nimport { faAngleDoubleLeft, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons'\n\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { BaseLayoutAction, IBaseLayoutActionButton } from './base-layout-action'\nimport { ITheSeamBaseLayoutNav } from './base-layout-nav'\nimport { ITheSeamBaseLayoutRef } 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 // tslint:disable-next-line:no-use-before-declare\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})\nexport class TheSeamBaseLayoutComponent implements OnInit, ITheSeamBaseLayoutRef {\n\n faAngleDoubleRight = faAngleDoubleRight\n faAngleDoubleLeft = faAngleDoubleLeft\n\n @Input() overlayNav = false\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 }) _topBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutSideBarDirective, { static: true, read: TemplateRef }) _sideBarTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentDirective, { static: true, read: TemplateRef }) _contentTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentHeaderDirective, { static: true, read: TemplateRef }) _contentHeaderTpl?: TemplateRef<any> | null\n @ContentChild(BaseLayoutContentFooterDirective, { static: true, read: TemplateRef }) _contentFooterTpl?: TemplateRef<any> | null\n\n _topBarPortal?: TemplatePortal\n _sideBarPortal?: TemplatePortal\n _contentPortal?: TemplatePortal\n _contentHeaderPortal?: TemplatePortal\n _contentFooterPortal?: TemplatePortal\n\n private _hasSideBar = new BehaviorSubject<boolean>(false)\n\n public hasSideBar$: Observable<boolean>\n public isMobile$: Observable<boolean>\n\n get registeredNav() { return this._registeredNav.value }\n private _registeredNav = new BehaviorSubject<ITheSeamBaseLayoutNav | undefined>(undefined)\n public registeredNav$ = this._registeredNav.asObservable()\n\n get registeredActions() { return this._registeredActions.value }\n private _registeredActions = new BehaviorSubject<BaseLayoutAction[]>([])\n public registeredActions$: Observable<BaseLayoutAction[]>\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n private _layout: TheSeamLayoutService\n ) {\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._topBarTpl) {\n this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef)\n }\n\n if (this._sideBarTpl) {\n this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef)\n this._hasSideBar.next(true)\n }\n\n if (this._contentTpl) {\n this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef)\n }\n\n if (this._contentHeaderTpl) {\n this._contentHeaderPortal = new TemplatePortal(this._contentHeaderTpl, this._viewContainerRef)\n }\n\n if (this._contentFooterTpl) {\n this._contentFooterPortal = new TemplatePortal(this._contentFooterTpl, this._viewContainerRef)\n }\n }\n\n public registerNav(nav: ITheSeamBaseLayoutNav): 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: ITheSeamBaseLayoutNav): void {\n if (this.registeredNav === nav) {\n this._registeredNav.next(undefined)\n }\n }\n\n public registerAction(action: BaseLayoutAction): 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: BaseLayoutAction | 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: IBaseLayoutActionButton): void {\n this._execButtonAction(action).subscribe()\n }\n\n _execButtonAction(action: IBaseLayoutActionButton): Observable<void> {\n const fnRes = action.exec()\n return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes))\n }\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\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header\">\n <!-- <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template> -->\n\n <div class=\"d-flex d-flex-row\">\n <div class=\"flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div>\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n","import { 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 { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\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 { BaseLayoutNavToggleDirective } from './directives/base-layout-nav-toggle.directive'\nimport { BaseLayoutSideBarFooterDirective } from './directives/base-layout-side-bar-footer.directive'\nimport { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive'\nimport { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive'\n\n@NgModule({\n declarations: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutTopBarDirective,\n BaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective\n ],\n imports: [\n CommonModule,\n PortalModule,\n TheSeamScrollbarModule,\n TheSeamIconModule,\n TheSeamButtonsModule\n ],\n exports: [\n TheSeamBaseLayoutComponent,\n BaseLayoutContentDirective,\n BaseLayoutSideBarDirective,\n BaseLayoutSideBarFooterDirective,\n BaseLayoutTopBarDirective,\n BaseLayoutNavToggleDirective,\n BaseLayoutContentHeaderDirective,\n BaseLayoutContentFooterDirective\n ]\n})\nexport class TheSeamBaseLayoutModule { }\n","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } 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\n @Input() def: IDashboardWidgetsItemDef | undefined | null\n\n @ViewChild(TemplateRef) templateRef?: TemplateRef<any>\n\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 = new InjectionToken<DashboardWidgetsAccessor>(\n 'THESEAM_DASHBOARD_WIDGETS_ACCESSOR'\n)\n","import { ChangeDetectionStrategy, Component, Inject, Input, TemplateRef } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { DashboardWidgetsAccessor, THESEAM_DASHBOARD_WIDGETS_ACCESSOR } from '../dashboard-widgets-tokens'\nimport type { 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})\nexport class DashboardWidgetTemplateContainerComponent {\n\n @Input() item: IDashboardWidgetsItem | undefined | null\n\n public template$: Observable<TemplateRef<any> | undefined>\n\n constructor(\n @Inject(THESEAM_DASHBOARD_WIDGETS_ACCESSOR) private readonly _dashboardWidgetsComponent: DashboardWidgetsAccessor\n ) {\n this.template$ = this._dashboardWidgetsComponent.containers$.pipe(\n map(containers => containers.find((c: any) => c.def.widgetId === this.item?.widgetId)),\n map(container => container && container.templateRef)\n )\n }\n\n}\n","<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n","import { BasePortalOutlet, CdkPortalOutletAttachedRef, ComponentPortal, Portal, TemplatePortal } from '@angular/cdk/portal'\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\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 extends BasePortalOutlet implements OnInit, OnDestroy {\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 constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _elementRef: ElementRef\n ) {\n super()\n }\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 using the ComponentFactoryResolver.\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 = portal.viewContainerRef != null\n ? portal.viewContainerRef\n : this._viewContainerRef\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver\n const componentFactory = resolver.resolveComponentFactory(portal.component)\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector)\n\n super.setDisposeFn(() => ref.destroy())\n this._attachedPortal = portal\n this._attachedRef = ref\n this.attached.emit(ref)\n\n return ref\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(portal.templateRef, portal.context)\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 // static ngAcceptInputType_portal: Portal<any> | null | undefined | '';\n}\n","import { InjectionToken } from '@angular/core'\n\nimport { ITheSeamDashboardWidgetsPreferencesAccessor } from './dashboard-widgets-preferences-accessor'\n\nexport const THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR = new InjectionToken<ITheSeamDashboardWidgetsPreferencesAccessor>(\n 'ITheSeamDashboardWidgetsPreferencesAccessor'\n)\n","import { Inject, Injectable, isDevMode, Optional } from '@angular/core'\nimport { Observable, of, Subject } from 'rxjs'\nimport { auditTime, map, mapTo, shareReplay, startWith, switchMap, take, tap } 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({\n providedIn: 'root'\n})\nexport class DashboardWidgetsPreferencesService {\n\n private readonly _tablePrefsMap = new Map<string, IDashboardWidgetsPreferencesMapRecord>()\n // private _pending = false\n\n // public get pending() { return this._pending }\n\n constructor(\n @Optional() @Inject(THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR) private _prefsAccessor?: ITheSeamDashboardWidgetsPreferencesAccessor\n ) { }\n\n public preferences(preferenceKey: string): 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(refreshSubject: Subject<void>, prefKey: string): 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(() => 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 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(() => setTimeout(() => { prefs.refresh.next() }, 0)),\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(preferenceKey: string, layoutName: string): 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(preferenceKey: string, layout: IDashboardWidgetItemLayout): Observable<void> {\n if (!this._prefsAccessor) {\n return of(undefined)\n }\n\n if (!hasProperty(layout, 'name')) {\n throw Error(`Unable to save layout preference. 'name' is required for a layout preference.`)\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')) { _layoutPref.name = _layout.name }\n if (hasProperty(_layout, 'label')) { _layoutPref.label = _layout.label }\n if (hasProperty(_layout, 'items')) { _layoutPref.items = _layout.items }\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 => 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(layout: IDashboardWidgetItemLayout): 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(widgets: IDashboardWidgetsItem[]): 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}\n","import { ComponentPortal } from '@angular/cdk/portal'\nimport { Injectable, Injector, isDevMode, ViewContainerRef } from '@angular/core'\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'\nimport { auditTime, map, mapTo, shareReplay, switchMap, take, tap } 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({\n providedIn: 'root'\n})\nexport class DashboardWidgetsService {\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[] { return this._widgets.value }\n set widgets(value: IDashboardWidgetsItemDef[]) { this._widgets.next(value) }\n private _widgets = new BehaviorSubject<IDashboardWidgetsItemDef[]>([])\n\n get numColumns(): number { return this._numColumns.value }\n set numColumns(value: number) {\n if (value !== this._numColumns.value) {\n this._numColumns.next(value)\n }\n }\n private _numColumns = new BehaviorSubject<number>(this.defaultNumColumns)\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<ViewContainerRef | undefined>(undefined)\n\n constructor(\n private readonly _dynamicComponentLoaderModule: TheSeamDynamicComponentLoader,\n private readonly _preferences: DashboardWidgetsPreferencesService\n ) {\n this.numColumns$ = this._numColumns.asObservable()\n\n // Widget items without preferences\n const _widgetItems$ = combineLatest([ this._widgets, this._viewContainerRefSubject ])\n .pipe(switchMap(([ defs, vcr ]) => this.createWidgetItems(defs, vcr)))\n\n // Widget items with preferences\n this.widgetItems$ = combineLatest([ _widgetItems$, this.numColumns$ ])\n .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.selectLayout(this.preferenceKey, this._layoutName(numColumns)).pipe(\n map(layout => layout ? this.withLayoutPreferences(items, layout) : items)\n )\n ),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n this.widgetColumns$ = this.widgetItems$\n .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(defs: IDashboardWidgetsItemDef[], vcr?: ViewContainerRef): Observable<IDashboardWidgetsItem[]> {\n const _createObservables = (defs || []).map(d => this.createWidgetItem(d, vcr))\n const items$ = _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(`[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`)\n }\n }\n })\n )\n }\n\n public createWidgetItem(def: IDashboardWidgetsItemDef, vcr?: ViewContainerRef): Observable<IDashboardWidgetsItem | undefined> {\n if (!def.widgetId || typeof def.widgetId !== 'string' || def.widgetId.length < 1) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`, def)\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(def: IDashboardWidgetsItemDef, vcr?: ViewContainerRef): Observable<ComponentPortal<any>> {\n const injector = Injector.create({ providers: [\n { provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } }\n ], parent: this._viewContainerRefSubject.value?.injector })\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 (componentFactory as any /* ComponentFactoryBoundToModule */).ngModule.componentFactoryResolver\n )\n }),\n take(1)\n )\n }\n\n return def.componentFactoryResolver\n ? of(new ComponentPortal(def.component, undefined, injector, def.componentFactoryResolver))\n : of(new ComponentPortal(def.component, undefined, injector))\n }\n\n public updateOrder(): Observable<void> {\n return this.widgetColumns$\n .pipe(\n take(1),\n tap(columns => columns.forEach(col => {\n let i = 0\n col.items.forEach(itm => itm.order = i++)\n })),\n mapTo(undefined)\n )\n }\n\n public toColumnRecords(items: IDashboardWidgetsItem[]): 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(c => c.column === item.col)\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\n .find(c => c.column === i % this.numColumns)\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(items: IDashboardWidgetsItem[], layout: IDashboardWidgetItemLayoutPreference): 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 => ([] as IDashboardWidgetsItem[])\n .concat(...(columns.map(c => c.items.map(itm => ({ ...itm, col: c.column })))))\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}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion'\nimport { CdkDrag, CdkDragDrop, moveItemInArray, transferArrayItem } 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 Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { auditTime, debounceTime, distinctUntilChanged, finalize, map, shareReplay, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\nimport { faLock, faUnlock } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport type { IElementResizedEvent } from '@theseam/ui-common/shared'\nimport { THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common/widget'\n\nimport type { ITheSeamBaseLayoutRef } 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 { DashboardWidgetsAccessor, THESEAM_DASHBOARD_WIDGETS_ACCESSOR } from '../dashboard-widgets-tokens'\nimport type { IDashboardWidgetsColumnRecord, IDashboardWidgetsItem, IDashboardWidgetsItemDef } from './dashboard-widgets-item'\nimport { DashboardWidgetsService } from './dashboard-widgets.service'\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 // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DashboardWidgetsComponent)\n },\n {\n provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DashboardWidgetsComponent)\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DashboardWidgetsComponent implements OnInit, OnDestroy, AfterViewInit, DashboardWidgetsAccessor {\n static ngAcceptInputType_gapSize: NumberInput\n static ngAcceptInputType_numColumns: NumberInput\n static ngAcceptInputType_widgetsDraggable: BooleanInput\n static ngAcceptInputType_dragToggleVisible: BooleanInput\n static ngAcceptInputType_widgets: IDashboardWidgetsItemDef[] | undefined | null\n\n faLock = faLock\n 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 { return this._gapSize.value }\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 { return this._dragToggleVisible.value }\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 { return this._dashboardWidgets.numColumns }\n set numColumns(val: number) {\n this._dashboardWidgets.numColumns = coerceNumberProperty(val)\n }\n\n @Input()\n set widgets(value: IDashboardWidgetsItemDef[]) { this._dashboardWidgets.widgets = value || [] }\n get widgets(): IDashboardWidgetsItemDef[] { return this._dashboardWidgets.widgets }\n\n public widgetItems$: Observable<IDashboardWidgetsItem[]>\n public widgetColumns$: Observable<IDashboardWidgetsColumnRecord[]>\n public containers$: Observable<DashboardWidgetContainerComponent[]>\n\n readonly _gapStyleSize$: Observable<number>\n\n @ViewChildren(DashboardWidgetContainerComponent) containers?: QueryList<DashboardWidgetContainerComponent>\n @ViewChildren(CdkDrag) cdkDragDirectives?: QueryList<CdkDrag>\n\n @ViewChild('toggleBtnTpl', { static: true }) _toggleBtnTpl?: TemplateRef<any>\n\n private _containers = new BehaviorSubject<DashboardWidgetContainerComponent[]>([])\n private _layoutChange = new Subject<void>()\n\n @Output() widgetsChange = new EventEmitter<IDashboardWidgetsItem[]>()\n\n private readonly _widthChange = new Subject<number>()\n\n constructor(\n private _dashboardWidgets: DashboardWidgetsService,\n private _viewContainerRef: ViewContainerRef,\n private _cdr: ChangeDetectorRef,\n @Optional() @Inject(THESEAM_BASE_LAYOUT_REF) private _baseLayoutRef?: ITheSeamBaseLayoutRef\n ) {\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.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 ).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.pipe(\n switchMap(() => 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 takeUntil(this._ngUnsubscribe)\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.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 ).subscribe()\n }\n\n this.containers?.changes.pipe(\n startWith(undefined),\n map(() => this.containers?.toArray() || []),\n takeUntil(this._ngUnsubscribe),\n finalize(() => this._containers.next([]))\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(this._actionWidgetDragToggleName)\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex)\n this._dashboardWidgets.updateOrder().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.updateOrder().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: IElementResizedEvent) {\n this._widthChange.next(event.size.width)\n }\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 *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($event)\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n","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'\n\n@Component({\n selector: 'seam-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DashboardComponent {\n static ngAcceptInputType_val: BooleanInput\n\n @Input() widgets: IDashboardWidgetsItemDef[] | undefined | null\n @Input() @InputBoolean() widgetsDraggable = true\n\n}\n","<seam-dashboard-widgets [widgets]=\"widgets\" [widgetsDraggable]=\"widgetsDraggable\"></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 {\n DashboardWidgetTemplateContainerComponent\n} 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 DashboardWidgetContainerComponent,\n DashboardWidgetTemplateContainerComponent,\n DashboardWidgetPortalOutletDirective\n ],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamSharedModule\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","import {\n animate,\n query,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations'\nimport { BooleanInput, coerceBooleanProperty, NumberInput } from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n Component,\n Host,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n Optional,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { faAngleLeft } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean, InputNumber } from '@theseam/ui-common/core'\nimport type { SeamIcon } from '@theseam/ui-common/icon'\nimport type { ThemeTypes } from '@theseam/ui-common/models'\n\nimport { SideNavAccessor, THESEAM_SIDE_NAV_ACCESSOR } from '../side-nav-tokens'\nimport { ISideNavItem, SideNavItemMenuItemTooltipConfig } from '../side-nav.models'\n\nexport interface SideNavItemBadgeTooltip {\n tooltip?: string\n class?: string\n placement?: string\n container?: string\n disabled?: boolean\n}\n\nconst EXPANDED_STATE = 'expanded'\nconst COLLAPSED_STATE = 'collapsed'\n\nconst FULL_STATE = 'full'\nconst COMPACT_STATE = 'compact'\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, 'overflow-y': 'hidden', visibility: 'hidden' })),\n transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n ]),\n\n trigger('compactAnim', [\n // transition('* <=> *', [\n // query(':enter', [\n // style({ opacity: '0' }),\n // animate('5.2s ease-in-out', style({ opacity: '1' }))\n // ], { optional: true }),\n // query(':leave', [\n // style({ opacity: '1' }),\n // animate('5.2s ease-in-out', style({ opacity: '0' }))\n // ], { optional: true })\n // ])\n\n // state(FULL_STATE, style({ opacity: '1' })),\n // state(COMPACT_STATE, style({ opacity: '0' })),\n // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, animate('5.2s ease-in-out')),\n // transition(`${FULL_STATE} <=> ${COMPACT_STATE}`, [\n // transition('* <=> *', [\n // query(':leave', [\n // style({ opacity: '1' }),\n // animate('5.2s ease-in-out', style({ opacity: '0' }))\n // ], { optional: true })\n // ]),\n\n ])\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 @Input() itemType: 'divider' | 'basic' | 'link' | 'button' | 'title' | undefined | null\n\n @Input() icon: SeamIcon | 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) { this._link.next(value) }\n get link() { return this._link.value }\n private readonly _link = new BehaviorSubject<string | undefined | null>(undefined)\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) { this._expanded.next(coerceBooleanProperty(value)) }\n get expanded() { return this._expanded.value }\n private readonly _expanded = new BehaviorSubject<boolean>(false)\n public readonly expanded$ = this._expanded.asObservable()\n\n @Input()\n set compact(value: boolean) { this._compact.next(coerceBooleanProperty(value)) }\n get compact() { return this._compact.value }\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() { return this._badgeTooltip }\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: 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: SideNavItemMenuItemTooltipConfig | undefined | null\n\n @Input() menuItemTooltipDisabled: boolean | undefined | null\n\n @HostBinding('class.seam-side-nav-item--active') get _isActiveCssClass() { return this.active }\n\n @HostBinding('attr.data-hier-level') get _attrDataHierLevel() { return this.hierLevel }\n\n public readonly childGroupAnimState$: Observable<string>\n public readonly compactAnimState$: Observable<string>\n\n constructor(\n @Inject(THESEAM_SIDE_NAV_ACCESSOR) private readonly _sideNav: SideNavAccessor,\n @Optional() @SkipSelf() @Host() private readonly _parent?: SideNavItemComponent\n ) {\n this.childGroupAnimState$ = this.expanded$\n .pipe(map(expanded => expanded ? EXPANDED_STATE : COLLAPSED_STATE))\n\n this.compactAnimState$ = this.compact$\n .pipe(map(compact => compact ? COMPACT_STATE : FULL_STATE))\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}\n","<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SideNavToggleComponent {\n static ngAcceptInputType_expanded: BooleanInput\n\n faBars = faBars\n\n @Input() @InputBoolean() expanded = false\n\n @Output() toggleExpand = new EventEmitter<void>()\n\n toggle() {\n this.toggleExpand.emit()\n }\n\n}\n","<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n","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'\n\nexport function isNavItemType(item: ISideNavItem, type: 'title'): item is ISideNavTitle\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'divider'): item is ISideNavDivider\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'basic'): item is ISideNavBasic\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'link'): item is ISideNavLink\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: 'button'): item is ISideNavButton\n// eslint-disable-next-line no-redeclare\nexport function isNavItemType(item: ISideNavItem, type: string): item is ISideNavItem {\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(item: ISideNavItem): item is (ISideNavBasic | ISideNavLink) & Required<SideNavItemCanHaveChildren> {\n return canHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0\n}\n\nexport function canHaveChildren(item: ISideNavItem): 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(item: ISideNavItem): item is (ISideNavBasic | ISideNavLink) {\n return isNavItemType(item, 'basic') || isNavItemType(item, 'link')\n}\n\nexport function canExpand(item: ISideNavItem): 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>(item: ISideNavItem, prop: K, value: ISideNavItemState[K]): void {\n if (hasProperty(item, '__state')) {\n item.__state[prop] = value\n }\n}\n\nexport function getItemStateProp<K extends keyof ISideNavItemState>(item: ISideNavItem, prop: K): ISideNavItemState[K] {\n return setDefaultState(item).__state[prop]\n}\n\nexport function setDefaultState(item: ISideNavItem): 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","import { Injectable } from '@angular/core'\nimport { ActivatedRoute, IsActiveMatchOptions, NavigationEnd, Router, UrlCreationOptions } from '@angular/router'\nimport { BehaviorSubject, combineLatest, defer, Observable, of, Subject, Subscriber } from 'rxjs'\nimport { distinctUntilChanged, filter, map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators'\n\nimport { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport {\n canExpand,\n findLinkItems,\n getItemStateProp,\n hasActiveChild,\n hasChildren,\n hasExpandedChild,\n isNavItemType,\n setDefaultState,\n setItemStateProp\n} from './side-nav-utils'\nimport { ISideNavItem, ISideNavItemState, ISideNavLink, SideNavItemStateChanged } from './side-nav.models'\n\n@Injectable()\nexport class TheSeamSideNavService {\n\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(\n private readonly _router: Router\n ) {\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: ISideNavItem[]): Observable<ISideNavItem[]> {\n return defer(() => {\n this.updateItemsStates(items)\n return new Observable((subscriber: Subscriber<ISideNavItem[]>) => {\n const stateChangeSub = this.itemChanged.pipe(\n switchMap(() => this.loading$.pipe(filter(loading => !loading)))\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.pipe(\n filter(event => event instanceof NavigationEnd),\n // ).subscribe(() => linkItems.forEach(itm => this.updateItemState(itm)))\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(item, 'active', this._router.isActive(url, opts))\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.createUrlTree([ link ], this._getNavExtras(item)).toString()\n } else if (Array.isArray(link)) {\n return this._router.createUrlTree(link, this._getNavExtras(item)).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>(item: ISideNavItem, prop: K, value: ISideNavItemState[K]): 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 { TemplatePortal } from '@angular/cdk/portal'\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\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 { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, map, mapTo, pairwise, shareReplay, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { ITheSeamBaseLayoutNav, ITheSeamBaseLayoutRef, THESEAM_BASE_LAYOUT_REF } from '../base-layout/index'\n\nimport { BaseLayoutSideBarFooterDirective } from '../base-layout/directives/base-layout-side-bar-footer.directive'\nimport { THESEAM_SIDE_NAV_ACCESSOR } from './side-nav-tokens'\nimport { ISideNavItem, SideNavItemMenuItemTooltipConfig } from './side-nav.models'\nimport { TheSeamSideNavService } from './side-nav.service'\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 fromState !== toState &&\n (\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 (\n (EXPANDED_STATES.indexOf(fromState) !== -1 && COLLAPSED_STATES.indexOf(toState) !== -1) ||\n (EXPANDED_STATES.indexOf(toState) !== -1 && COLLAPSED_STATES.indexOf(fromState) !== -1)\n )\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 // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => SideNavComponent)\n },\n ],\n animations: [\n\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.\n state(EXPANDED_STATE, style({ width: '260px' })),\n state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),\n\n state(EXPANDED_OVERLAY_STATE, style({\n position: 'absolute',\n top: 0,\n height: '100%',\n bottom: 0,\n left: 0,\n float: 'left',\n zIndex: '9999',\n width: 'calc(100vw - 50px)',\n transform: 'translateX(0)'\n })),\n state(COLLAPSED_OVERLAY_STATE, style({\n position: 'absolute',\n top: 0,\n height: '100%',\n bottom: 0,\n left: 0,\n float: 'left',\n zIndex: '9999',\n width: 'calc(100vw - 50px)',\n transform: 'translateX(calc(-100vw + 50px))',\n 'overflow-x': 'hidden'\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SideNavComponent implements OnInit, OnDestroy, ITheSeamBaseLayoutNav {\n static ngAcceptInputType_hasHeaderToggle: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\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()\n get items(): ISideNavItem[] { return this._items.value }\n set items(value: ISideNavItem[]) { this._items.next(value) }\n private _items = new BehaviorSubject<ISideNavItem[]>([])\n public readonly items$: Observable<ISideNavItem[]>\n\n @Input()\n get expanded(): boolean { return this._expanded.value }\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()\n get overlay(): boolean { return this._overlay.value }\n set overlay(value: boolean) { this._overlay.next(coerceBooleanProperty(value)) }\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() { return this._menuItemTooltipConfig }\n set menuItemTooltipConfig(value: SideNavItemMenuItemTooltipConfig | undefined | null) {\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(BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }) _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() @Inject(THESEAM_BASE_LAYOUT_REF) private readonly _baseLayoutRef: ITheSeamBaseLayoutRef\n ) {\n this.items$ = this._items.asObservable().pipe(\n switchMap(items => this._sideNav.createItemsObservable(items)),\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([ this.expanded$, this.overlay$ ]).pipe(\n map(([ expanded, overlay ]) => expanded\n ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE\n : overlay ? COLLAPSED_OVERLAY_STATE : COLLAPSED_STATE\n ),\n distinctUntilChanged()\n )\n\n this.menuItemTooltipDisabled$ = combineLatest([ this.expanded$, this.overlay$ ]).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' ? false\n : this.menuItemTooltipConfig?.behavior === 'never' ? true\n : this.menuItemTooltipConfig?.behavior === 'collapseOnly' ? expanded : true\n }),\n distinctUntilChanged()\n )\n }\n\n ngOnInit() {\n if (this._baseLayoutRef) { this._baseLayoutRef.registerNav(this) }\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._sideBarFooterTpl) {\n this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef)\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n if (this._baseLayoutRef) { this._baseLayoutRef.unregisterNav(this) }\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}\n","<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n","import { PortalModule } from '@angular/cdk/portal'\nimport { A11yModule } from '@angular/cdk/a11y'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'\n\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLayoutModule } from '@theseam/ui-common/layout'\nimport { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\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 declarations: [\n SideNavItemComponent,\n SideNavComponent,\n SideNavToggleComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TheSeamIconModule,\n A11yModule,\n TheSeamScrollbarModule,\n TheSeamLayoutModule,\n NgbTooltipModule,\n PortalModule\n ],\n exports: [\n SideNavItemComponent,\n SideNavComponent,\n SideNavToggleComponent\n ]\n})\nexport class TheSeamSideNavModule { }\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, TemplateRef, ViewEncapsulation } from '@angular/core'\n\nimport { faAngleDown } from '@fortawesome/free-solid-svg-icons'\n\nimport { CanDisableCtor, InputBoolean, mixinDisabled } from '@theseam/ui-common/core'\nimport { SeamIcon } 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',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {\n static ngAcceptInputType_compact: BooleanInput\n\n faAngleDown = faAngleDown\n\n @Input() detailTpl: TemplateRef<object> | 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() { return this.compact }\n @HostBinding('class.p-0') get _hasPadding0Class() { return this.compact }\n @HostBinding('class.rounded') get _hasRoundedClass() { return this.compact }\n @HostBinding('class.btn-link') get _hasBtnLinkClass() { 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 <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core'\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})\nexport class TopBarTitleComponent {\n\n @Input() titleText: string | undefined | null\n @Input() subTitleText: string | undefined | null\n\n}\n","<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarItem]'\n})\nexport class TopBarItemDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core'\n\n@Directive({\n selector: '[seamTopBarMenuBtnDetail]'\n})\nexport class TopBarMenuBtnDetailDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, Self } from '@angular/core'\n\nimport { MenuComponent } from '@theseam/ui-common/menu'\n\n@Directive({\n selector: 'seam-menu[seamTopBarMenu]'\n})\nexport class TopBarMenuDirective {\n\n constructor(\n @Self() public menu: MenuComponent\n ) { }\n\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 { Observable, Subject } from 'rxjs'\nimport { map, shareReplay, startWith, takeUntil } from 'rxjs/operators'\n\nimport { faBars } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { TheSeamLayoutService } from '@theseam/ui-common/layout'\n\nimport { faUserCircle } from '@fortawesome/free-regular-svg-icons'\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TopBarItemDirective } from './top-bar-item.directive'\nimport { TopBarMenuBtnDetailDirective } from './top-bar-menu-btn-detail.directive'\nimport { TopBarMenuDirective } from './top-bar-menu.directive'\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})\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 faBars = faBars\n\n /** @ignore */\n @ContentChild(TopBarMenuDirective, { static: true }) _topBarMenu?: TopBarMenuDirective | null\n /** @ignore */\n @ContentChildren(TopBarItemDirective) _topBarItems?: QueryList<TopBarItemDirective>\n /** @ignore */\n @ContentChild(TopBarMenuBtnDetailDirective) _topBarMenuBtnDetailTpl?: TopBarMenuBtnDetailDirective | 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 /** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */\n @Input() profileIcon: SeamIcon | undefined | null = faUserCircle\n\n /** @ignore */\n _items$?: Observable<TopBarItemDirective[]>\n\n /** @ignore */\n isMobile$: Observable<boolean>\n\n constructor(\n private _layout: TheSeamLayoutService\n ) {\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._items$ = this._topBarItems.changes.pipe(\n startWith(undefined),\n takeUntil(this._ngUnsubscribe),\n map(() => this._topBarItems?.toArray() || []),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n }\n\n}\n","<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamButtonsModule } from '@theseam/ui-common/buttons'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamLayoutModule } from '@theseam/ui-common/layout'\nimport { TheSeamMenuModule } from '@theseam/ui-common/menu'\nimport { TheSeamBaseLayoutModule } from '../base-layout/index'\n\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 { TopBarTitleComponent } from './top-bar-title/top-bar-title.component'\nimport { TheSeamTopBarComponent } from './top-bar.component'\n\n@NgModule({\n declarations: [\n TheSeamTopBarComponent,\n TopBarTitleComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective\n ],\n imports: [\n CommonModule,\n TheSeamLayoutModule,\n TheSeamButtonsModule,\n TheSeamIconModule,\n TheSeamMenuModule,\n TheSeamBaseLayoutModule,\n RouterModule\n ],\n exports: [\n TheSeamTopBarComponent,\n TopBarMenuButtonComponent,\n TopBarMenuDirective,\n TheSeamMenuModule,\n TopBarItemDirective,\n TopBarMenuBtnDetailDirective\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 =\n trigger('routeAnimations', [\n transition('* <=> *', [\n // Set a default style for enter and leave\n query(':enter, :leave', [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n opacity: 0,\n transform: 'scale(0) translateY(100%)',\n }),\n ], { optional: true }),\n // Animate the new page in\n query(':enter', [\n animate('600ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),\n ], { optional: true })\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 =\n trigger('routeAnimations', [\n transition('* => isLeft', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ left: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ left: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ left: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('* => isRight', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ right: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ right: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ right: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isRight => *', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ left: '-100%' })\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n style({ left: '0%', position: 'absolute' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ left: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ left: '0%' }))\n ], { optional: true }),\n query('.hierarchy-router-outlet--content', [\n animate('1000ms ease', style({ left: '-100%' }))\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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ]),\n transition('isLeft => *', [\n query('.router-container :enter, .router-container :leave', [\n style({\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%'\n })\n ], { optional: true }),\n query('.router-container :enter', [\n style({ right: '-100%' })\n ], { optional: true }),\n group([\n query('.router-container :leave', [\n animate('1000ms ease', style({ right: '100%' }))\n ], { optional: true }),\n query('.router-container :enter', [\n animate('1000ms ease', style({ right: '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('.router-container :leave', animateChild(), { optional: true }),\n query('.router-container :enter', animateChild(), { optional: true }),\n ])\n ])\n\nexport const transformer =\n 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(':enter, :leave', [\n style({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n })\n ], optional),\n query(':enter', [\n style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })\n ], { optional: true }),\n group([\n query(':leave', [\n animate('600ms ease-out', style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` }))\n ], optional),\n query(':enter', [\n animate('600ms ease-out', style({ transform: `translate(0, 0) rotate(0)` }))\n ], { optional: true })\n ]),\n ]\n}\n\nexport const stepper =\n trigger('routeAnimations', [\n transition('* <=> *', [\n query(':enter, :leave', [\n style({\n position: 'absolute',\n left: 0,\n width: '100%',\n }),\n ], { optional: true }),\n group([\n query(':enter', [\n animate('2000ms ease', 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 ], { optional: true }),\n query(':leave', [\n animate('2000ms ease', keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(0.5) translateX(-25%) rotate(0)', offset: 0.35 }),\n style({ opacity: 0, transform: 'translateX(-50%) rotate(-180deg) scale(6)', offset: 1 }),\n ])),\n ], { optional: true })\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 { ChangeDetectionStrategy, Component, HostBinding, OnDestroy } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router, RouterOutlet } from '@angular/router'\nimport { combineLatest, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { fader, sideToSide, slider, stepper, transformer } from './hierarchy-route-animations'\n\nexport function routeChanges(router: Router) {\n return router.events.pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\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})\nexport class HierarchyRouterOutletComponent implements OnDestroy {\n\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.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.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}\n","<div class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\">\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\"\n [class.h-100]=\"!ngContentVisible\"\n >\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\">\n </router-outlet>\n </div>\n</div>\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } 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\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}\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: [\n HierarchyRouterOutletComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n HierarchyRouterOutletComponent\n ]\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 { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private readonly _jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} 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(this, event.target.checked ? this.trueValue : this.falseValue)\n }\n\n get isChecked() {\n return this._jsf.getFormControlValue(this) as any === this.trueValue\n }\n\n}\n","<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n","import { ChangeDetectionStrategy, 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 { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private readonly _jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} as TheSeamSchemaFormWidgetLayoutNodeOptions\n this._jsf.initializeControl(this)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n</seam-form-field>\n","import { ChangeDetectionStrategy, 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 { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} as TheSeamSchemaFormWidgetLayoutNodeOptions\n this.jsf.initializeControl(this)\n if (this.layoutNode?.dataType === 'integer') { this.allowDecimal = false }\n }\n\n updateValue(event: any) {\n this.jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms'\n\nimport { buildTitleMap, isArray, JsonSchemaFormModule, JsonSchemaFormService } from '@ajsf/core'\nimport { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private readonly _jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} as TheSeamSchemaFormWidgetLayoutNodeOptions\n this.selectList = buildTitleMap(\n this.options.titleMap || this.options.enumNames,\n this.options.enum, !!this.options.required, !!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}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n</seam-form-field>\n","import { Component, Input, isDevMode, OnDestroy, OnInit } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { AbstractControl, ReactiveFormsModule, UntypedFormControl } from '@angular/forms'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { buildTitleMap, hasOwn, JsonSchemaFormModule, JsonSchemaFormService, TitleMapItem } from '@ajsf/core'\nimport { observeControlStatus, observeControlValue } from '@theseam/ui-common/utils'\nimport { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private readonly _jsf: JsonSchemaFormService\n ) { }\n\n /** @ignore */\n ngOnInit() {\n this.options = this.layoutNode?.options || {} 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(isValid => this.controlDisabled = !isValid)\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 (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode?.items || []).length) {\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: this.layoutNode?.dataType === 'array' ? (this.dataIndex || []).concat(idx) : 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).pipe(\n takeUntil(this._ngUnsubscribe)\n ).subscribe(value => {\n this._setSelectListCheckedProp(value)\n this._selectedItem = this._getSelectedItem()\n })\n\n observeControlStatus(dropdownControl).pipe(\n 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}\n","<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n","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: [`:host { display: block; }`],\n standalone: true,\n})\nexport class TheSeamSchemaFormDividerComponent 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}\n","import { ChangeDetectionStrategy, 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 { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } 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 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(\n private readonly _jsf: JsonSchemaFormService\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} as TheSeamSchemaFormWidgetLayoutNodeOptions\n this._jsf.initializeControl(this)\n console.log(this.controlValue)\n console.log(this.formControl?.value)\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\">\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\">\n </seam-tel-input>\n</seam-form-field>\n","import { ChangeDetectionStrategy, 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 { TheSeamSchemaFormControlWidget, TheSeamSchemaFormWidgetLayoutNodeOptions } from '../../schema-form'\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamTiledSelectModule, TiledSelectItem, TiledSelectLayout } from '@theseam/ui-common/tiled-select'\nimport { Platform } from '@angular/cdk/platform'\n\n@Component({\n selector: 'seam-schema-form-tiled-select',\n templateUrl: './schema-form-tiled-select.component.html',\n // styleUrls: ['./schema-form-tiled-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n JsonSchemaFormModule,\n TheSeamFormFieldModule,\n TheSeamTiledSelectModule,\n ],\n})\nexport class TheSeamSchemaFormTiledSelectComponent 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 tiles: TiledSelectItem[] = []\n layout: TiledSelectLayout = 'grid'\n multiple = false\n selectionToggleable = true\n tileBackdrop = false\n showSelectedIcon = true\n animationsDisabled: boolean = this._platform.IOS\n\n constructor(\n private readonly _jsf: JsonSchemaFormService,\n private readonly _platform: Platform,\n ) { }\n\n ngOnInit() {\n this.options = this.layoutNode?.options || {} as TheSeamSchemaFormWidgetLayoutNodeOptions\n this._jsf.initializeControl(this)\n console.log(this.options)\n console.log(this.layoutNode)\n this.tiles = this.options.tiles || []\n }\n\n updateValue(event: any) {\n this._jsf.updateValue(this, event.target.value)\n }\n\n}\n","<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n","import { Component, Input } from '@angular/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})\nexport class TheSeamSchemaFormFrameworkComponent {\n\n @Input() layoutNode: any\n @Input() layoutIndex: number[] | undefined | null\n @Input() dataIndex: number[] | undefined | null\n\n}\n","<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n","import { Inject, Injectable, InjectionToken, Optional, inject } 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<Framework, 'name' | 'framework' | 'stylesheet' | 'scripts'>\n\nexport const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES = new InjectionToken<TheSeamSchemaFormFrameworkOverrides>('THESEAM_SCHEMA_FRAMEWORK_OVERRIDES')\n\nexport function extendFramework(toExtend: Framework, extendFrameworkOrName: Framework | string): void {\n // console.log('extendFramework', toExtend, extendFrameworkOrName)\n const _overrides: Framework[] | null = inject(Framework, { optional: true }) as Framework[] | null\n const overrides = 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 = { ...toExtend.stylesheets, ...override.stylesheets }\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 // 'file': // TODO: Implement\n // 'date': // TODO: Implement\n // 'map': // TODO: Implement\n // 'wizard': // TODO: Implement\n // 'image': // TODO: Implement\n // 'tabs': // TODO: Implement\n // 'card': // TODO: Implement\n // 'richtext': // TODO: Implement\n }\n\n constructor(\n @Optional() @Inject(THESEAM_SCHEMA_FRAMEWORK_OVERRIDES) _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, WidgetLibraryService\n} from '@ajsf/core'\n\nimport { TheSeamFramework } from './schema-form-framework'\nimport { TheSeamSchemaFormFrameworkComponent } from './schema-form-framework.component'\n\n@NgModule({\n declarations: [\n TheSeamSchemaFormFrameworkComponent\n ],\n imports: [\n CommonModule,\n JsonSchemaFormModule,\n WidgetLibraryModule,\n ],\n providers: [\n JsonSchemaFormService,\n FrameworkLibraryService,\n WidgetLibraryService,\n { provide: Framework, useClass: TheSeamFramework, multi: true }\n ],\n exports: [\n TheSeamSchemaFormFrameworkComponent,\n JsonSchemaFormModule\n ],\n})\nexport class TheSeamSchemaFormModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DashboardWidgetsPreferencesService","i3","i4","i5","i7.DashboardWidgetContainerComponent","i8.DashboardWidgetTemplateContainerComponent","i9.DashboardWidgetPortalOutletDirective","i1.DashboardWidgetsComponent","EXPANDED_STATE","COLLAPSED_STATE","i2","i6.SideNavItemComponent","i7.SideNavToggleComponent","i6.BaseLayoutNavToggleDirective","i7","i8.TopBarTitleComponent","i9.TopBarMenuButtonComponent","i6"],"mappings":"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"}
|