@softheon/armature 19.0.2 → 19.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"softheon-armature.mjs","sources":["../../../../projects/armature/src/lib/alert-banner/models/constants.ts","../../../../projects/armature/src/lib/alert-banner/services/alert-banner.service.ts","../../../../projects/armature/src/lib/alert-banner/components/alert-banner/alert-banner.component.ts","../../../../projects/armature/src/lib/alert-banner/components/alert-banner/alert-banner.component.html","../../../../projects/armature/src/lib/alert-banner/alert-banner.module.ts","../../../../projects/armature/src/lib/core/client-generated/variables.ts","../../../../projects/armature/src/lib/core/client-generated/configuration.ts","../../../../projects/armature/src/lib/core/client-generated/api/session.service.ts","../../../../projects/armature/src/lib/core/models/constants.ts","../../../../projects/armature/src/lib/core/functions/route-to-pre-login-route.ts","../../../../projects/armature/src/lib/core/services/base-config.service.ts","../../../../projects/armature/src/lib/core/services/federated-module.service.ts","../../../../projects/armature/src/lib/core/services/banner.service.ts","../../../../projects/armature/src/lib/rbac/models/access-token-claims.ts","../../../../projects/armature/src/lib/rbac/models/decoded-access-token.ts","../../../../projects/armature/src/lib/oauth/models/constants.ts","../../../../projects/armature/src/lib/core/functions/naming-convention.ts","../../../../projects/armature/src/lib/oauth/models/hybrid-saml-oauth-config.ts","../../../../projects/armature/src/lib/oauth/services/hybrid-saml-oauth.service.ts","../../../../projects/armature/src/lib/oauth/oauth.module.ts","../../../../projects/armature/src/lib/oauth/models/generated/coverageDetail.ts","../../../../projects/armature/src/lib/oauth/models/generated/finance.ts","../../../../projects/armature/src/lib/oauth/models/generated/iSsoResponseModel.ts","../../../../projects/armature/src/lib/oauth/models/generated/person.ts","../../../../projects/armature/src/lib/oauth/oauth-api.ts","../../../../projects/armature/src/lib/core/services/custom-auth-config.service.ts","../../../../projects/armature/src/lib/core/services/authorization.service.ts","../../../../projects/armature/src/lib/navigation/components/navigation/navigation.component.ts","../../../../projects/armature/src/lib/navigation/components/navigation/navigation.component.html","../../../../projects/armature/src/lib/header/components/header/header.component.ts","../../../../projects/armature/src/lib/header/components/header/header.component.html","../../../../projects/armature/src/lib/footer/models/footer-config.ts","../../../../projects/armature/src/lib/footer/components/footer/footer.component.ts","../../../../projects/armature/src/lib/footer/components/footer/footer.component.html","../../../../projects/armature/src/lib/navigation/components/b2b-nav/b2b-nav.component.ts","../../../../projects/armature/src/lib/navigation/components/b2b-nav/b2b-nav.component.html","../../../../projects/armature/src/lib/core/components/app-template/app-template.component.ts","../../../../projects/armature/src/lib/core/components/app-template/app-template.component.html","../../../../projects/armature/src/lib/core/initializer/abstract-startup-service.ts","../../../../projects/armature/src/lib/theming/services/theme.service.ts","../../../../projects/armature/src/lib/core/initializer/initializer.service.ts","../../../../projects/armature/src/lib/core/interceptors/armature-auth-token-append.interceptor.ts","../../../../projects/armature/src/lib/core/models/session-config.ts","../../../../projects/armature/src/lib/core/services/default-config.service.ts","../../../../projects/armature/src/lib/core/models/http-verbs.ts","../../../../projects/armature/src/lib/core/functions/guid.ts","../../../../projects/armature/src/lib/core/services/session.service.ts","../../../../projects/armature/src/lib/core/models/user-entity-service-config.ts","../../../../projects/armature/src/lib/core/services/user-entity.service.ts","../../../../projects/armature/src/lib/footer/components/site-map/site-map.component.ts","../../../../projects/armature/src/lib/footer/components/site-map/site-map.component.html","../../../../projects/armature/src/lib/footer/footer.module.ts","../../../../projects/armature/src/lib/forms/models/enums/states.ts","../../../../projects/armature/src/lib/forms/directives/numbers-only/numbers-only.directive.ts","../../../../projects/armature/src/lib/forms/components/sof-address/sof-address.component.ts","../../../../projects/armature/src/lib/forms/components/sof-address/sof-address.component.html","../../../../projects/armature/src/lib/forms/directives/alphanumeric/alphanumeric.directive.ts","../../../../projects/armature/src/lib/forms/directives/input-trim/input-trim.directive.ts","../../../../projects/armature/src/lib/forms/directives/letters-characters/letters-characters.directive.ts","../../../../projects/armature/src/lib/forms/directives/letters-only/letters-only.directive.ts","../../../../projects/armature/src/lib/forms/pipes/phone-format.pipe.ts","../../../../projects/armature/src/lib/forms/models/constants.ts","../../../../projects/armature/src/lib/forms/services/alert.service.ts","../../../../projects/armature/src/lib/forms/directives/date-input-filter/date-input-filter.directive.ts","../../../../projects/armature/src/lib/forms/forms.module.ts","../../../../projects/armature/src/lib/header/components/mobile-header-menu/mobile-header-menu.component.ts","../../../../projects/armature/src/lib/header/components/mobile-header-menu/mobile-header-menu.component.html","../../../../projects/armature/src/lib/header/header.module.ts","../../../../projects/armature/src/lib/navigation/components/sof-tabs-navigation/sof-tabs.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-tabs-navigation/sof-tabs.component.html","../../../../projects/armature/src/lib/navigation/components/sof-sub-navigation/sof-sub-navigation.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-sub-navigation/sof-sub-navigation.component.html","../../../../projects/armature/src/lib/navigation/navigation.module.ts","../../../../projects/armature/src/lib/theming/directives/css-override.directive.ts","../../../../projects/armature/src/lib/theming/theme.module.ts","../../../../projects/armature/src/lib/base-components/sof-modal/sof-modal.component.ts","../../../../projects/armature/src/lib/base-components/sof-modal/sof-modal.component.html","../../../../projects/armature/src/lib/base-components/sof-handle/sof-handle.component.ts","../../../../projects/armature/src/lib/base-components/sof-handle/sof-handle.component.html","../../../../projects/armature/src/lib/base-components/sof-context/sof-context.component.ts","../../../../projects/armature/src/lib/base-components/sof-context/sof-context.component.html","../../../../projects/armature/src/lib/base-components/sof-alert/sof-alert.component.ts","../../../../projects/armature/src/lib/base-components/sof-alert/sof-alert.component.html","../../../../projects/armature/src/lib/base-components/sof-simple-alert/sof-simple-alert.component.ts","../../../../projects/armature/src/lib/base-components/sof-simple-alert/sof-simple-alert.component.html","../../../../projects/armature/src/lib/base-components/sof-banner/sof-banner.component.ts","../../../../projects/armature/src/lib/base-components/sof-banner/sof-banner.component.html","../../../../projects/armature/src/lib/base-components/sof-progress-bar/sof-progress-bar.component.ts","../../../../projects/armature/src/lib/base-components/sof-progress-bar/sof-progress-bar.component.html","../../../../projects/armature/src/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.ts","../../../../projects/armature/src/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.html","../../../../projects/armature/src/lib/base-components/sof-star-rating/sof-star-rating.component.ts","../../../../projects/armature/src/lib/base-components/sof-star-rating/sof-star-rating.component.html","../../../../projects/armature/src/lib/base-components/sof-badge/sof-badge.component.ts","../../../../projects/armature/src/lib/base-components/sof-badge/sof-badge.component.html","../../../../projects/armature/src/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.ts","../../../../projects/armature/src/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.html","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/compare-address-pipe/compare-address.pipe.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/sof-confirm-address.component.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/sof-confirm-address.component.html","../../../../projects/armature/src/lib/base-components/sof-radio-card/sof-radio-card.component.ts","../../../../projects/armature/src/lib/base-components/sof-radio-card/sof-radio-card.component.html","../../../../projects/armature/src/lib/base-components/sof-input-stepper/sof-input-stepper.component.ts","../../../../projects/armature/src/lib/base-components/sof-input-stepper/sof-input-stepper.component.html","../../../../projects/armature/src/lib/base-components/sof-utility-button/sof-utility-button.component.ts","../../../../projects/armature/src/lib/base-components/sof-utility-button/sof-utility-button.component.html","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component.html","../../../../projects/armature/src/lib/base-components/base-component.module.ts","../../../../projects/armature/src/lib/armature.module.ts","../../../../projects/armature/src/lib/core/models/data-store-config.ts","../../../../projects/armature/src/lib/core/models/typed-session.ts","../../../../projects/armature/src/lib/core/models/route-path.ts","../../../../projects/armature/src/lib/core/client-generated/model/errorModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/oAuthModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/themePaletteColorsModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/trackingModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/applicationUserModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/folderLink.ts","../../../../projects/armature/src/lib/core/client-generated/model/preferencesRow.ts","../../../../projects/armature/src/lib/core/client-generated/model/validationRecordsRow.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/variables.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/configuration.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/api/cache.service.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/api/api.ts","../../../../projects/armature/src/lib/distributed-cache/services/server-cache.service.ts","../../../../projects/armature/src/lib/distributed-cache/models/constants.ts","../../../../projects/armature/src/lib/distributed-cache/distributed-cache.module.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/cacheExpirationType.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.ts","../../../../projects/armature/src/lib/distributed-cache/models/policy-person.ts","../../../../projects/armature/src/lib/distributed-cache/distributed-cache-api.ts","../../../../projects/armature/src/lib/error/components/error-common/error-common.component.ts","../../../../projects/armature/src/lib/error/components/error-common/error-common.component.html","../../../../projects/armature/src/lib/error/error.module.ts","../../../../projects/armature/src/lib/error/models/error-common-config.ts","../../../../projects/armature/src/lib/error/error-api.ts","../../../../projects/armature/src/lib/faq/components/faq/faq.component.ts","../../../../projects/armature/src/lib/faq/components/faq/faq.component.html","../../../../projects/armature/src/lib/faq/faq.module.ts","../../../../projects/armature/src/lib/faq/models/faq.ts","../../../../projects/armature/src/lib/faq/models/faq-config.ts","../../../../projects/armature/src/lib/faq/faq-api.ts","../../../../projects/armature/src/lib/footer/models/enum/site-map-direction.ts","../../../../projects/armature/src/lib/footer/footer-api.ts","../../../../projects/armature/src/lib/forms/forms-api.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.html","../../../../projects/armature/src/lib/header/components/sof-header/user-initials-pipe/user-initials.pipe.ts","../../../../projects/armature/src/lib/header/components/sof-header/menu-prevent-close-directive/menu-prevent-close.directive.ts","../../../../projects/armature/src/lib/header/components/sof-header/sof-header.component.ts","../../../../projects/armature/src/lib/header/components/sof-header/sof-header.component.html","../../../../projects/armature/src/lib/header/models/header-auth.settings.ts","../../../../projects/armature/src/lib/header/header-api.ts","../../../../projects/armature/src/lib/navigation/models/breadcrumb.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.html","../../../../projects/armature/src/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.html","../../../../projects/armature/src/lib/navigation/navigation-api.ts","../../../../projects/armature/src/lib/rbac/models/rbac-config.ts","../../../../projects/armature/src/lib/rbac/services/role-nav.service.ts","../../../../projects/armature/src/lib/rbac/services/oauth2-role.service.ts","../../../../projects/armature/src/lib/rbac/services/tokens.ts","../../../../projects/armature/src/lib/rbac/services/ar-role-nav.service.ts","../../../../projects/armature/src/lib/rbac/directives/rbac-action.directive.ts","../../../../projects/armature/src/lib/rbac/rbac.module.ts","../../../../projects/armature/src/lib/rbac/models/constants.ts","../../../../projects/armature/src/lib/rbac/models/role-access.ts","../../../../projects/armature/src/lib/rbac/rbac-api.ts","../../../../projects/armature/src/lib/rum/services/rum.service.ts","../../../../projects/armature/src/lib/rum/models/arm-error.ts","../../../../projects/armature/src/lib/rum/services/shared-error.service.ts","../../../../projects/armature/src/lib/rum/rum.module.ts","../../../../projects/armature/src/lib/rum/models/rum-config.ts","../../../../projects/armature/src/lib/rum/services/softheon-error-handler.service.ts","../../../../projects/armature/src/lib/rum/rum-api.ts","../../../../projects/armature/src/lib/saml/services/send-off/abstract-saml.service.ts","../../../../projects/armature/src/lib/saml/components/redirect-saml/redirect-saml.component.ts","../../../../projects/armature/src/lib/saml/components/redirect-saml/redirect-saml.component.html","../../../../projects/armature/src/lib/saml/services/entry/abstract-saml-entry.service.ts","../../../../projects/armature/src/lib/saml/services/entry/sso-gateway-entry.service.ts","../../../../projects/armature/src/lib/saml/services/send-off/saml.service.ts","../../../../projects/armature/src/lib/saml/saml.module.ts","../../../../projects/armature/src/lib/saml/models/redirect-saml-request.ts","../../../../projects/armature/src/lib/saml/models/sso-gateway-model.ts","../../../../projects/armature/src/lib/saml/saml-api.ts","../../../../projects/armature/src/lib/theming/models/css-override.ts","../../../../projects/armature/src/lib/theming/theme-api.ts","../../../../projects/armature/src/lib/alert-banner/alert-banner-api.ts","../../../../projects/armature/src/lib/base-components/sof-callout/sof-callout.component.ts","../../../../projects/armature/src/lib/base-components/sof-callout/sof-callout.component.html","../../../../projects/armature/src/lib/base-components/sof-bottom-sheet/sof-bottom-sheet.component.ts","../../../../projects/armature/src/lib/base-components/sof-bottom-sheet/sof-bottom-sheet.component.html","../../../../projects/armature/src/lib/base-components/sof-chip/sof-chip.component.ts","../../../../projects/armature/src/lib/base-components/sof-chip/sof-chip.component.html","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/constants/constants.ts","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-date/sof-date.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/sof-pipe.module.ts","../../../../projects/armature/src/lib/sof-pipe/sof-pipe.api.ts","../../../../projects/armature/src/lib/resize-panels/components/resize-panels/resize-panels.component.ts","../../../../projects/armature/src/lib/resize-panels/components/resize-panels/resize-panels.component.html","../../../../projects/armature/src/lib/resize-panels/resize-panels.module.ts","../../../../projects/armature/src/lib/resize-panels/resize-panels-api.ts","../../../../projects/armature/src/lib/feedback-tool/components/feedback-tool/feedback-tool.component.ts","../../../../projects/armature/src/lib/feedback-tool/components/feedback-tool/feedback-tool.component.html","../../../../projects/armature/src/lib/feedback-tool/feedback-tool.module.ts","../../../../projects/armature/src/lib/feedback-tool/feedback-tool-api.ts","../../../../projects/armature/src/lib/component-save-print/services/component-save-print.service.ts","../../../../projects/armature/src/lib/component-save-print/components/component-save-print/component-save-print.component.ts","../../../../projects/armature/src/lib/component-save-print/components/component-save-print/component-save-print.component.html","../../../../projects/armature/src/lib/component-save-print/sof-ar-component-save-print.module.ts","../../../../projects/armature/src/lib/mfe/services/entity-helper.service.ts","../../../../projects/armature/src/lib/mfe/mfe.module.ts","../../../../projects/armature/src/lib/mfe/components/entity-base/entity-base.component.ts","../../../../projects/armature/src/lib/mfe/models/entity-dto.ts","../../../../projects/armature/src/lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component.ts","../../../../projects/armature/src/lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component.html","../../../../projects/armature/src/public-api.ts","../../../../projects/armature/src/softheon-armature.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nimport { AlertBannerConfig } from './alert-banner-config';\r\n\r\n/** The banner configs */\r\nexport const ALERT_BANNER_CONFIG: InjectionToken<AlertBannerConfig> = new InjectionToken<AlertBannerConfig>('AlertBannerConfig');\r\n\r\n/** Banner Type */\r\nexport enum BannerType {\r\n\r\n /** Error */\r\n Error = 'error',\r\n\r\n /** Warn */\r\n Warn = 'warn',\r\n\r\n /** Information */\r\n Information = 'information',\r\n\r\n /** Success */\r\n Success = 'success'\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AlertBannerContext } from '../models/alert-banner-context';\r\nimport { BannerType } from '../models/constants';\r\n\r\n/**\r\n * Alert Banner Service\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertBannerService {\r\n\r\n /** Banner context */\r\n public bannerContext: AlertBannerContext = { bannerType: BannerType.Information };\r\n\r\n /** Whether or not the show banner */\r\n public showBanner: boolean;\r\n\r\n /** Constructor */\r\n public constructor() { }\r\n\r\n /**\r\n * Show Message\r\n * @param bannerType Banner Type \r\n * @param isFilledBanner Is filled banner\r\n * @param bannerTitle Title \r\n * @param bannerText Text\r\n * @param translateParam Translate param\r\n * @param showClose Show close or not\r\n */\r\n public showMessage (\r\n bannerType: BannerType, \r\n isFilledBanner: boolean, \r\n bannerTitle: string = undefined, \r\n bannerText: string = undefined,\r\n translateParam: any = {},\r\n showClose: boolean = false\r\n ) {\r\n this.showBanner = true;\r\n this.bannerContext.bannerType = bannerType;\r\n this.bannerContext.isFilledBanner = isFilledBanner;\r\n this.bannerContext.bannerTitle = bannerTitle;\r\n this.bannerContext.bannerText = bannerText;\r\n this.bannerContext.translateParam = translateParam;\r\n this.bannerContext.showClose = showClose;\r\n }\r\n\r\n /** Close Message */\r\n public closeMessage(): void {\r\n this.showBanner = false;\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Inject, Input, Optional, Renderer2, ViewChild } from '@angular/core';\r\n\r\nimport { AlertBannerConfig } from '../../models/alert-banner-config';\r\nimport { AlertBannerContext } from '../../models/alert-banner-context';\r\nimport { ALERT_BANNER_CONFIG } from '../../models/constants';\r\nimport { AlertBannerService } from '../../services/alert-banner.service';\r\n\r\n/**\r\n * Alert Banner Component\r\n * @deprecated please use `SofCallout` instead\r\n */\r\n@Component({\r\n selector: 'sof-ar-alert-banner',\r\n templateUrl: './alert-banner.component.html',\r\n styleUrls: ['./alert-banner.component.scss'],\r\n standalone: false\r\n})\r\nexport class AlertBannerComponent implements AfterViewInit {\r\n\r\n /** Context, if provided, it will use the context data rather than the alert service context */\r\n @Input() context?: AlertBannerContext;\r\n\r\n /** Banner Container */\r\n @ViewChild(\"alertBannerContainer\") alertBannerContainer: ElementRef;\r\n\r\n /** Display context */\r\n public get displayContext(): AlertBannerContext {\r\n return this.context ? this.context : this.alertBannerService.bannerContext;\r\n }\r\n\r\n /** Should show banner */\r\n public get showBanner(): boolean {\r\n return !!this.context ? !this.context.hideBanner : this.alertBannerService.showBanner;\r\n }\r\n\r\n /**\r\n * Constructor\r\n * @param bannerConfig Banner Config\r\n * @param alertBannerService Alert Banner Service\r\n * @param renderer The Angular renderer\r\n */\r\n public constructor(\r\n @Optional() @Inject(ALERT_BANNER_CONFIG) private bannerConfig: AlertBannerConfig,\r\n private alertBannerService: AlertBannerService,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n /** Update style */\r\n public ngAfterViewInit(): void {\r\n const theme = this.bannerConfig || { lineColor: {}, outlineSidebar: {}, filledBackground: {} };\r\n\r\n this.updateStyle('--error-color', theme.lineColor.error);\r\n this.updateStyle('--info-color', theme.lineColor.information);\r\n this.updateStyle('--success-color', theme.lineColor.success);\r\n this.updateStyle('--warn-color', theme.lineColor.warn);\r\n\r\n this.updateStyle('--outline-side-error-color', theme.outlineSidebar.error);\r\n this.updateStyle('--outline-side-info-color', theme.outlineSidebar.information);\r\n this.updateStyle('--outline-side-success-color', theme.outlineSidebar.success);\r\n this.updateStyle('--outline-side-warn-color', theme.outlineSidebar.warn);\r\n\r\n this.updateStyle('--content-filled-error-color', theme.filledBackground.error);\r\n this.updateStyle('--content-filled-info-color', theme.filledBackground.information);\r\n this.updateStyle('--content-filled-success-color', theme.filledBackground.success);\r\n this.updateStyle('--content-filled-warn-color', theme.filledBackground.warn);\r\n }\r\n\r\n /** Hides the banner */\r\n public hideBanner(): void {\r\n !!this.context ? this.context.hideBanner = true : this.alertBannerService.closeMessage();\r\n }\r\n\r\n /**\r\n * Update Style\r\n * @param propertyName The property name \r\n * @param color The color\r\n */\r\n private updateStyle(propertyName: string, color: string): void {\r\n const nativeElement = this.alertBannerContainer?.nativeElement;\r\n if (color) {\r\n this.renderer.setStyle(nativeElement, propertyName, color, 2);\r\n }\r\n }\r\n}\r\n","<div #alertBannerContainer [ngClass]=\"{ 'sof-ar-alert-banner-container': showBanner }\">\r\n <div fxLayout=\"row\" *ngIf=\"showBanner\"\r\n class=\"sof-ar-alert-banner-{{displayContext.bannerType}} sof-ar-alert-banner-content {{(displayContext.isFilledBanner) ? 'filled' : 'outlined'}}-{{displayContext.bannerType}}\">\r\n <div class=\"sof-ar-alert-banner-sidebar\"></div>\r\n <div class=\"sof-ar-alert-banner-content-container\" fxLayout=\"row\">\r\n <div class=\"sof-ar-alert-banner-icon-container\">\r\n <ng-container [ngSwitch]=\"displayContext.bannerType\">\r\n <mat-icon *ngSwitchCase=\"'error'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-exclamation-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'warn'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-exclamation-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'information'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-info-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'success'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-check-circle'\"></mat-icon>\r\n </ng-container>\r\n </div>\r\n <div style=\"width: 100%\" fxLayout=\"column\" fxLayoutGap=\"10px\" fxLayoutAlign=\"center\">\r\n <div *ngIf=\"displayContext.bannerTitle\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <h4 class=\"sof-ar-alert-banner-title\" [innerHtml]=\"displayContext.bannerTitle | translate: displayContext.translateParam\"></h4>\r\n <span *ngIf=\"displayContext.showClose\" (click)=\"hideBanner()\">\r\n <i class=\"fal fa-2x fa-times\"></i>\r\n </span>\r\n </div>\r\n <div *ngIf=\"displayContext.bannerText\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <p class=\"sof-ar-alert-banner-text\" [innerHtml]=\"displayContext.bannerText | translate: displayContext.translateParam\"></p>\r\n <span (click)=\"hideBanner()\" *ngIf=\"!displayContext.bannerTitle && displayContext.showClose\">\r\n <i class=\"fal fa-2x fa-times\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { AlertBannerComponent } from './components/alert-banner/alert-banner.component';\r\nimport { AlertBannerService } from './services/alert-banner.service';\r\n\r\nconst materialModules = [\r\n MatIconModule\r\n]\r\n\r\n/** @deprecated use sof-alert | sof-simple-alert moving forward. */\r\n@NgModule({\r\n declarations: [AlertBannerComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n providers: [\r\n AlertBannerService\r\n ],\r\n exports: [\r\n AlertBannerComponent\r\n ]\r\n})\r\nexport class AlertBannerModule { }\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = contentTypes.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = accepts.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime != null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n *//* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { SessionGetResponseModel } from '../model/sessionGetResponseModel';\r\nimport { SessionPostRequestModel } from '../model/sessionPostRequestModel';\r\nimport { SessionPostResponseModel } from '../model/sessionPostResponseModel';\r\nimport { SessionPutRequestModel } from '../model/sessionPutRequestModel';\r\nimport { SessionPutResponseModel } from '../model/sessionPutResponseModel';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n@Injectable()\r\nexport class SessionService {\r\n\r\n protected basePath = '/';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n if (basePath) {\r\n this.basePath = basePath;\r\n }\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.basePath = basePath || configuration.basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Gets the session by id\r\n * \r\n * @param sessionId The session Id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<SessionGetResponseModel>;\r\n public getSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<SessionGetResponseModel>>;\r\n public getSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<SessionGetResponseModel>>;\r\n public getSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling getSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<SessionGetResponseModel>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the session\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refreshSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refreshSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refreshSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refreshSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling refreshSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/refresh`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Registers a session\r\n * \r\n * @param body The request model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'body', reportProgress?: boolean): Observable<SessionPostResponseModel>;\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<SessionPostResponseModel>>;\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<SessionPostResponseModel>>;\r\n public registerSession(body?: SessionPostRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<SessionPostResponseModel>('post',`${this.basePath}/v1/Session`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates the session with the given id\r\n * \r\n * @param sessionId The session id\r\n * @param body The model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling registerSessionById.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('post',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the session\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public removeSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public removeSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public removeSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public removeSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling removeSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('delete',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Syncs the session by id\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public syncSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public syncSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public syncSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public syncSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling syncSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/sync`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the Session\r\n * \r\n * @param sessionId The session id\r\n * @param body The request model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling updateSessionById.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('put',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport { SessionConfig } from './session-config';\r\nimport { UserEntityServiceConfig } from './user-entity-service-config';\r\n\r\n// Injection tokens\r\n/** The session configs */\r\nexport const SESSION_CONFIG: InjectionToken<SessionConfig> = new InjectionToken<SessionConfig>('SessionConfig');\r\n\r\n/** The window interface */\r\nexport const WINDOW: InjectionToken<Window> = new InjectionToken<Window>('Window');\r\n\r\n/** The user entity service configs */\r\nexport const USER_ENTITY_SERVICE_CONFIG: InjectionToken<UserEntityServiceConfig> = new InjectionToken<UserEntityServiceConfig>('UserEntityServiceConfig');\r\n\r\n/** The pre sign in route storage key */\r\nexport const preSignInRouteStorageKey: string = 'preSignInRoute';\r\n\r\n/** The language storage key */\r\nexport const languageStorageKey: string = 'language';\r\n\r\n/** The federated module configuration storage key */\r\nexport const federatedModuleConfigStorageKey: string = 'sofAr-federatedModule-config';\r\n\r\n/** The federated module id of the application, this should be set when the application is allowed to run as a federated module */\r\nexport const FEDERATED_MODULE_ID: InjectionToken<string> = new InjectionToken<string>('FederatedModuleId');\r\n","import { Router } from '@angular/router';\r\nimport { preSignInRouteStorageKey } from '../models/constants';\r\n\r\n/**\r\n * Routes to the pre login in route\r\n * @param router The router\r\n */\r\nexport const routeToPreLoginRoute = (router: Router) => {\r\n const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);\r\n if (preservedRoute) {\r\n router.navigateByUrl(preservedRoute);\r\n window.sessionStorage.removeItem(preSignInRouteStorageKey);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { BaseConfig } from '../models/base-config';\r\n\r\n/** The base config service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class BaseConfigService<T = BaseConfig> {\r\n\r\n /** The configuration behavior subject */\r\n private readonly configBs: BehaviorSubject<T> = new BehaviorSubject<T>(undefined);\r\n\r\n /** Gets the configurations */\r\n public get config(): T {\r\n return this.configBs.value;\r\n }\r\n\r\n /**\r\n * sets the configs\r\n * @param value The new configuration value\r\n */\r\n public set config(value: T) {\r\n this.configBs.next(value);\r\n }\r\n\r\n /** The configuration observable */\r\n public readonly config$: Observable<T>;\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n this.config$ = this.configBs.asObservable();\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { federatedModuleConfigStorageKey, FEDERATED_MODULE_ID, WINDOW } from '../models/constants';\r\nimport { FederatedModuleConfig } from '../models/federated-module-config';\r\n\r\n/** The federated module service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FederatedModuleService {\r\n\r\n /** The federated module configuration */\r\n public get federatedModuleConfig(): FederatedModuleConfig {\r\n if (this.federatedModuleId) {\r\n const configs = this.federatedModuleConfigDict;\r\n return configs.get(this.federatedModuleId);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** True when application is running as a federated module */\r\n public get isFederatedModule(): boolean {\r\n return !!this.federatedModuleConfig\r\n }\r\n\r\n /** Gets the federated module config dictionary */\r\n private get federatedModuleConfigDict(): Map<string, FederatedModuleConfig> {\r\n const storageItem = this.window.sessionStorage.getItem(federatedModuleConfigStorageKey);\r\n if (!storageItem) {\r\n return undefined;\r\n }\r\n const dict = JSON.parse(storageItem) as {[key: string]: FederatedModuleConfig};\r\n const result = new Map<string, FederatedModuleConfig>();\r\n Object.keys(dict).forEach(key => {\r\n result.set(key, dict[key]);\r\n });\r\n return result;\r\n }\r\n\r\n /** The window interface */\r\n private readonly window: Window\r\n\r\n /**\r\n * Constructs the service\r\n * @param _window The browser window\r\n * @param federatedModuleId The federated module id\r\n */\r\n constructor(\r\n @Optional() @Inject(WINDOW) private readonly _window: any,\r\n @Optional() @Inject(FEDERATED_MODULE_ID) public readonly federatedModuleId: string\r\n ) {\r\n this.window = _window || window;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service for managing the banner\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BannerService {\r\n\r\n /** Observable for whether the banner should be shown */\r\n public showBanner$: Observable<boolean>;\r\n\r\n /** Observable for the banner message */\r\n public message$: Observable<string>;\r\n\r\n /** Observable for whether of not to show the check mark on the banner */\r\n public showCheckMark$: Observable<boolean>;\r\n\r\n /** Behavior subject for show banner */\r\n private showBanner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** Behavior subject for banner message */\r\n private message: BehaviorSubject<string> = new BehaviorSubject<string>(undefined);\r\n\r\n /** Behavior subject for whether to show check mark or not */\r\n private showCheckMark: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n constructor(\r\n ) {\r\n this.showBanner$ = this.showBanner.asObservable();\r\n this.message$ = this.message.asObservable();\r\n this.showCheckMark$ = this.showCheckMark.asObservable();\r\n }\r\n\r\n /**\r\n * Shows the messaage in the banner\r\n * @param message The banner message\r\n */\r\n public showMessage(message: string, showCheckMark: boolean = true): void {\r\n this.showBanner.next(true);\r\n this.message.next(message);\r\n this.showCheckMark.next(showCheckMark);\r\n }\r\n\r\n /**\r\n * Hide Notification Message \r\n */\r\n public hideMessage(): void {\r\n this.showBanner.next(false);\r\n }\r\n\r\n}\r\n","// tslint:disable: variable-name\r\n/** The access token claims */\r\nexport class AccessTokenClaims {\r\n\r\n private role: string | Array<string>;\r\n\r\n /** The given name of the user */\r\n public given_name: string;\r\n\r\n /** The family name (last name) */\r\n public family_name: string;\r\n\r\n /** The name of the user */\r\n public name: string;\r\n\r\n /** The preferred username of the user */\r\n public preferred_username: string;\r\n\r\n /** The upn */\r\n public upn: string;\r\n\r\n /** The roles of the user */\r\n public get getRole(): Array<string> {\r\n if (typeof this.role === 'string') {\r\n this.role = [this.role];\r\n }\r\n\r\n return this.role;\r\n }\r\n\r\n /** constructs the claims from an existing claims object */\r\n constructor(claims?: AccessTokenClaims) {\r\n if (claims) {\r\n this.role = claims.role;\r\n this.given_name = claims.given_name;\r\n this.family_name = claims.family_name;\r\n this.name = claims.name;\r\n this.preferred_username = claims.preferred_username;\r\n this.upn = claims.upn;\r\n }\r\n }\r\n}\r\n","import { AccessTokenClaims } from './access-token-claims';\r\n\r\n// tslint:disable: variable-name no-unused-expression\r\n/** The access token claims class */\r\nexport class DecodedAccessToken {\r\n\r\n private aud: string | Array<string>;\r\n private scope: string | Array<string>;\r\n private _claims: AccessTokenClaims;\r\n\r\n /** The authentication methods array */\r\n public amr: Array<string>;\r\n\r\n /** Time when authentication occurred */\r\n public auth_time: number;\r\n\r\n /** The client used to get the token */\r\n public client_id: string;\r\n\r\n /** Expiration time, seconds since Unix epoch */\r\n public exp: number;\r\n\r\n /** The identity provider */\r\n public idp: string;\r\n\r\n /** Issuer, who created and signed this token */\r\n public iss: string;\r\n\r\n /** Not valid before, seconds since Unix epoch */\r\n public nbf: number;\r\n\r\n /** Subject, whom the token refers to */\r\n public sub: string;\r\n\r\n /** The scopes the token was requested with */\r\n public get getScope(): Array<string> {\r\n if (typeof this.scope === 'string') {\r\n this.scope = [this.scope];\r\n }\r\n\r\n return this.scope;\r\n }\r\n\r\n /** The audience, who or what the token is intended for */\r\n public get getAud(): Array<string> {\r\n if (typeof this.aud === 'string') {\r\n this.aud = [this.aud];\r\n }\r\n\r\n return this.aud;\r\n }\r\n\r\n /** Gets claims for the user associated with the access token */\r\n public get claims(): AccessTokenClaims {\r\n return this._claims;\r\n }\r\n\r\n /** Sets claims for the user associate with the access token */\r\n public set claims(value: AccessTokenClaims) {\r\n this._claims = new AccessTokenClaims(value);\r\n }\r\n\r\n /**\r\n * Constructs the access Token\r\n * @param encodedToken The encoded Auth Token\r\n */\r\n constructor(encodedToken: string) {\r\n const base64Url = encodedToken.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+')\r\n .replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64)\r\n .split('')\r\n .map(c =>\r\n // tslint:disable-next-line: restrict-plus-operands prefer-template\r\n '%' + ('00' + c.charCodeAt(0)\r\n .toString(16))\r\n .slice(-2))\r\n .join(''));\r\n const decodedToken: DecodedAccessToken = JSON.parse(jsonPayload);\r\n this.setAllProps(decodedToken);\r\n this.convertAllDualTypes();\r\n }\r\n\r\n /** Converts all the dual types to single types */\r\n private convertAllDualTypes(): void {\r\n this.getAud;\r\n this.getScope;\r\n }\r\n\r\n /**\r\n * Sets all the properties from an existing object\r\n * @param decodedToken The decoded token object\r\n */\r\n private setAllProps(decodedToken: DecodedAccessToken): void {\r\n this.amr = decodedToken.amr;\r\n this.aud = decodedToken.aud;\r\n this.auth_time = decodedToken.auth_time;\r\n this.client_id = decodedToken.client_id;\r\n this.exp = decodedToken.exp;\r\n this.idp = decodedToken.idp;\r\n this.iss = decodedToken.iss;\r\n this.nbf = decodedToken.nbf;\r\n this.scope = decodedToken.scope;\r\n this.sub = decodedToken.sub;\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { HybridSamlOAuthConfig } from './hybrid-saml-oauth-config';\r\n\r\n/** The hybrid saml oauth config injection token */\r\nexport const HYBRID_SAML_OAUTH_CONFIG: InjectionToken<HybridSamlOAuthConfig> = new InjectionToken<HybridSamlOAuthConfig>('HybridSamlOAuthConfig');\r\n\r\n/** The key path prefix */\r\nexport const keyPathPrefix: string = 'SsoGateway-';\r\n","/**\r\n * converts object keys to camel case\r\n * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase\r\n * @param o The object\r\n */\r\nexport const pascalToCamel = (o: any): any => {\r\n let newO;\r\n let origKey;\r\n let newKey;\r\n let value;\r\n if (o instanceof Array) {\r\n return o.map((value: any) => {\r\n if (typeof value === 'object') {\r\n value = pascalToCamel(value);\r\n }\r\n\r\n return value;\r\n });\r\n }\r\n newO = {};\r\n // tslint:disable-next-line: no-for-in\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (`${origKey.charAt(0).toLowerCase()}${origKey.slice(1) || origKey}`).toString();\r\n value = o[origKey];\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = pascalToCamel(value);\r\n }\r\n newO[newKey] = value;\r\n }\r\n }\r\n\r\n return newO;\r\n};\r\n","import { Observable } from 'rxjs';\r\n\r\n/** The hybrid saml oauth configuration */\r\nexport class HybridSamlOAuthConfig {\r\n /** The token endpoint observable */\r\n public tokenEndpoint$: Observable<string>;\r\n\r\n /** The key path suffix */\r\n public keyPathSuffix: string;\r\n\r\n /** The browser storage location to use */\r\n public browserStorageImplementation?: 'local' | 'session';\r\n\r\n /** The token refresh time in minutes */\r\n public tokenRefreshTimeMinutes?: number;\r\n\r\n /** The data format */\r\n public dataFormat?: 'camelCase' | 'PascalCase';\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { WINDOW } from '../../core/models/constants';\r\nimport { DecodedAccessToken } from '../../rbac/models/decoded-access-token';\r\nimport { HYBRID_SAML_OAUTH_CONFIG, keyPathPrefix } from '../models/constants';\r\nimport { ISsoResponseModel } from '../models/generated/iSsoResponseModel';\r\nimport { HybridSamlOAuthConfig } from '../models/hybrid-saml-oauth-config';\r\nimport { pascalToCamel } from '../../core/functions/naming-convention';\r\nimport { AccountManagementRefreshRequestModel } from '../models/generated/accountManagementRefreshRequestModel';\r\nimport { RefreshResponseModel } from '../models/generated/refreshResponseModel';\r\n\r\n/** The hybrid SAML Oauth Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HybridSamlOauthService {\r\n\r\n /** The key path used for getting values from local storage */\r\n public readonly keyPath: string;\r\n\r\n /** The oauth access token */\r\n public get accessToken(): string {\r\n return this._accessToken;\r\n }\r\n\r\n /** The access token observable */\r\n public accessToken$: Observable<string>;\r\n\r\n /** Gets the hash */\r\n public get hash(): string {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n return (this.rawData as any).Hash\r\n }\r\n\r\n return this.rawData.hash;\r\n }\r\n\r\n /** The raw data from local storage */\r\n private rawData: ISsoResponseModel;\r\n\r\n /** The access token */\r\n private _accessToken: string;\r\n\r\n /** The window */\r\n private readonly window: Window;\r\n\r\n /** The behavior subject for the access token */\r\n private readonly accessTokenBs: BehaviorSubject<string>;\r\n\r\n /** The armature access token key */\r\n private readonly accessTokenSessionStorageKey: string = 'Sof-Arm-Access-Token';\r\n\r\n /** The token endpoint */\r\n private tokenEndpoint: string;\r\n\r\n /**\r\n * constructs the service\r\n * @param windowGeneric The window interface\r\n * @param config The service configurations\r\n * @param httpClient The http client\r\n */\r\n constructor(\r\n @Optional() @Inject(WINDOW) private readonly windowGeneric: any,\r\n @Optional() @Inject(HYBRID_SAML_OAUTH_CONFIG) private readonly config: HybridSamlOAuthConfig,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n // set the window to be strongly typed, compile error makes it so it can't be done in the constructor\r\n this.window = this.windowGeneric || window;\r\n\r\n if (!this.config) {\r\n console.warn('HybridSamlOauthService skipping initialization, please add HYBRID_SAML_OAUTH_CONFIG to your providers to use the service');\r\n return;\r\n }\r\n const refreshTimeMinutes = this.config?.tokenRefreshTimeMinutes || 20; // use 20 min token refresh time if non provided\r\n\r\n // set the token endpoint\r\n if (this.config?.tokenEndpoint$) {\r\n this.config.tokenEndpoint$.subscribe(endpoint => this.tokenEndpoint = endpoint);\r\n }\r\n else {\r\n console.warn('HYBRID_SAML_OAUTH_CONFIG.tokenEndpoint$ is not provided');\r\n }\r\n\r\n // set the key path from the key path prefix and suffix\r\n this.keyPath = `${keyPathPrefix}${this.config?.keyPathSuffix}`;\r\n\r\n // read values from local storage based on the key path\r\n const rawData = this.getRawData();\r\n if (!rawData) {\r\n const token = this.window.sessionStorage.getItem(this.accessTokenSessionStorageKey);\r\n this._accessToken = token;\r\n }\r\n else {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n this.rawData = JSON.parse(rawData);\r\n this._accessToken = (this.rawData as any).AccessToken;\r\n }\r\n else {\r\n this.rawData = this.toCamel(JSON.parse(rawData));\r\n this._accessToken = this.rawData.accessToken;\r\n }\r\n // populate the access token\r\n this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, this._accessToken);\r\n }\r\n\r\n // set up the observable and behavior subject\r\n this.accessTokenBs = new BehaviorSubject(this._accessToken);\r\n this.accessToken$ = this.accessTokenBs.asObservable();\r\n\r\n try {\r\n if (this.accessToken) {\r\n const decoded = new DecodedAccessToken(this.accessToken);\r\n const currentDateMiliS = new Date().getTime();\r\n if ((decoded.exp * 1000) <= currentDateMiliS + (refreshTimeMinutes * 60000)) {\r\n this.refreshToken(this.tokenEndpoint);\r\n }\r\n }\r\n else {\r\n console.warn('Starting HybridSamlOAuthService without token');\r\n }\r\n }\r\n catch (e) {\r\n console.warn('starting HybridSamlOAuthService without token or malformed token', this.accessToken, e);\r\n }\r\n setInterval(() => {\r\n this.refreshToken(this.tokenEndpoint);\r\n }, refreshTimeMinutes * 60000); // x minutes times number of milliseconds in a minute\r\n }\r\n\r\n /** Returns the raw data casted to the provided type */\r\n public getAssertionData<T>(): T {\r\n if (this.config.dataFormat === 'PascalCase') {\r\n if (!this.rawData || !((this.rawData as any).Assertions)) {\r\n return undefined;\r\n }\r\n\r\n return (this.rawData as any).Assertions as T;\r\n }\r\n else {\r\n if (!this.rawData || !this.rawData.assertions) {\r\n return undefined;\r\n }\r\n\r\n return this.rawData.assertions as T;\r\n }\r\n }\r\n\r\n /**\r\n * Expires the session by clearing the service and local storage\r\n * @param shouldExpireBoth True if the both session and local storage should be expired\r\n */\r\n public expireSession(shouldExpireBoth: boolean = false): void {\r\n if (shouldExpireBoth) {\r\n this.window.localStorage.removeItem(this.keyPath);\r\n this.window.sessionStorage.removeItem(this.keyPath);\r\n this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);\r\n this.rawData = undefined;\r\n\r\n return;\r\n }\r\n\r\n if (this.config?.browserStorageImplementation === 'session') {\r\n this.window.sessionStorage.removeItem(this.keyPath);\r\n }\r\n else {\r\n this.window.localStorage.removeItem(this.keyPath);\r\n }\r\n this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);\r\n\r\n this.rawData = undefined;\r\n }\r\n\r\n /**\r\n * Refreshes the access token using the provided endpoint\r\n * @param tokenEndpoint The full token endpoint\r\n */\r\n private refreshToken(tokenEndpoint: string): void {\r\n if (!this.rawData) {\r\n console.warn('No sso response model');\r\n return;\r\n }\r\n // make api call to get a token, uses assertions, hash, and assertion provider implementation string\r\n const req: AccountManagementRefreshRequestModel = {\r\n ssoResponseModel: this.rawData\r\n };\r\n this.httpClient.post<RefreshResponseModel>(tokenEndpoint, req)\r\n .pipe(\r\n map(res => {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n (this.rawData as any).AccessToken = res.accessToken;\r\n }\r\n else {\r\n this.rawData.accessToken = res.accessToken;\r\n }\r\n this._accessToken = res.accessToken;\r\n this.window.localStorage.setItem(this.keyPath, JSON.stringify(this.rawData));\r\n this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, res.accessToken);\r\n this.accessTokenBs.next(this._accessToken);\r\n }),\r\n catchError(error => {\r\n console.error(error);\r\n\r\n return of(error);\r\n }))\r\n .subscribe(() => { });\r\n }\r\n\r\n /** gets the raw data */\r\n private getRawData(): any {\r\n const lsData = this.window.localStorage.getItem(this.keyPath);\r\n if (this.config?.browserStorageImplementation === 'session') {\r\n // first move local storage data if there is any\r\n if (lsData) {\r\n this.window.sessionStorage.setItem(this.keyPath, lsData);\r\n this.window.localStorage.removeItem(this.keyPath);\r\n }\r\n\r\n // return the session storage data\r\n return this.window.sessionStorage.getItem(this.keyPath);\r\n }\r\n\r\n // otherwise return local storage data\r\n return lsData;\r\n }\r\n\r\n /**\r\n * converts object keys to camel case\r\n * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase\r\n * @param o The object\r\n */\r\n private toCamel(o: any): any {\r\n return pascalToCamel(o);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { HybridSamlOauthService } from './services/hybrid-saml-oauth.service';\r\n\r\n/** The OAuth Module */\r\n@NgModule({\r\n imports: [CommonModule], \r\n providers: [\r\n HybridSamlOauthService,\r\n provideHttpClient(withInterceptorsFromDi())\r\n ]\r\n})\r\nexport class OauthModule { }\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The coverage detail model\r\n */\r\nexport interface CoverageDetail { \r\n /**\r\n * Gets or sets the start date.\r\n */\r\n startDate?: Date;\r\n /**\r\n * Gets or sets the end date.\r\n */\r\n endDate?: Date;\r\n /**\r\n * Gets or sets the premium amount.\r\n */\r\n premiumAmount?: number;\r\n /**\r\n * Gets or sets the tax credit amount.\r\n */\r\n taxCreditAmount?: number;\r\n /**\r\n * Gets or sets the CSR amount.\r\n */\r\n csrAmount?: number;\r\n /**\r\n * Gets or sets the status.\r\n */\r\n status?: CoverageDetail.StatusEnum;\r\n /**\r\n * Gets or sets the name of the plan.\r\n */\r\n planName?: string;\r\n /**\r\n * Gets or sets the name of the issuer.\r\n */\r\n issuerName?: string;\r\n /**\r\n * Gets or sets the plan identifier.\r\n */\r\n planId?: string;\r\n /**\r\n * Gets or sets the insurance line.\r\n */\r\n insuranceLine?: string;\r\n /**\r\n * Gets or sets the plan type.\r\n */\r\n planType?: string;\r\n}\r\nexport namespace CoverageDetail {\r\n export type StatusEnum = 'Effectuated' | 'NotEffectuated';\r\n export const StatusEnum = {\r\n Effectuated: 'Effectuated' as StatusEnum,\r\n NotEffectuated: 'NotEffectuated' as StatusEnum\r\n };\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The finance model\r\n */\r\nexport interface Finance { \r\n /**\r\n * Gets or sets the status.\r\n */\r\n status?: string;\r\n /**\r\n * Gets or sets the premium amount due.\r\n */\r\n premiumAmountDue?: number;\r\n /**\r\n * Gets or sets the current amount due.\r\n */\r\n currentAmountDue?: number;\r\n /**\r\n * Gets or sets the payment due date.\r\n */\r\n paymentDueDate?: Date;\r\n /**\r\n * Gets or sets a value indicating whether this instance has automatic pay.\r\n */\r\n hasAutoPay?: boolean;\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The SSO response model\r\n */\r\nexport interface ISsoResponseModel { \r\n /**\r\n * Gets or sets the assertions.\r\n */\r\n assertions?: any;\r\n /**\r\n * Gets or sets the issuer.\r\n */\r\n issuer?: string;\r\n /**\r\n * Gets or sets the audience.\r\n */\r\n audience?: string;\r\n /**\r\n * Gets or sets the destination.\r\n */\r\n destination?: string;\r\n /**\r\n * Gets or sets the hash.\r\n */\r\n hash?: string;\r\n /**\r\n * Gets or sets the key path.\r\n */\r\n keyPath?: string;\r\n /**\r\n * Gets or sets the access token.\r\n */\r\n accessToken?: string;\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nimport { Address } from \"../../../forms/forms-api\";\r\n\r\n\r\n/**\r\n * The person model\r\n */\r\nexport interface Person { \r\n /**\r\n * Gets or sets the exchange identifier.\r\n */\r\n exchangeId?: string;\r\n /**\r\n * Gets or sets the issuer id\r\n */\r\n issuerId?: string;\r\n /**\r\n * Gets or sets the dob.\r\n */\r\n dob?: Date;\r\n /**\r\n * Gets or sets the gender.\r\n */\r\n gender?: string;\r\n /**\r\n * Gets or sets the first name.\r\n */\r\n firstName?: string;\r\n /**\r\n * Gets or sets the last name.\r\n */\r\n lastName?: string;\r\n /**\r\n * Gets or sets the relationship.\r\n */\r\n relationship?: string;\r\n /**\r\n * Gets or sets the address.\r\n */\r\n address?: Address;\r\n /**\r\n * Gets or sets the SSN.\r\n */\r\n ssn?: string;\r\n}\r\n","/** Public API Surface of the oauth module */\r\nexport * from './oauth.module';\r\n\r\n// services\r\nexport * from './services/hybrid-saml-oauth.service';\r\n\r\n// models\r\nexport { keyPathPrefix, HYBRID_SAML_OAUTH_CONFIG } from './models/constants';\r\nexport * from './models/hybrid-saml-oauth-config';\r\n\r\nexport * from './models/generated/accountManagementAssertionModel';\r\nexport * from './models/generated/accountManagementResponseModel';\r\nexport * from './models/generated/coverageDetail';\r\nexport * from './models/generated/finance';\r\nexport * from './models/generated/iSsoResponseModel';\r\nexport * from './models/generated/person';\r\nexport * from './models/generated/policy';\r\n","import { AuthConfig } from 'angular-oauth2-oidc';\r\n\r\n/** Custom Authorization Service */\r\nexport abstract class CustomAuthConfigService {\r\n /** Configure Auth Settings */\r\n public abstract configureAuthSettings(): Promise<AuthConfig>\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\n\r\nimport { AuthConfig, OAuthService, OAuthStorage } from \"angular-oauth2-oidc\";\r\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nimport { HeaderAuthSettings } from \"../../header/models/header-auth.settings\";\r\nimport { HybridSamlOauthService } from \"../../oauth/oauth-api\";\r\nimport { AccessTokenClaims } from \"../../rbac/rbac-api\";\r\nimport { preSignInRouteStorageKey } from \"../models/constants\";\r\nimport { CustomAuthConfigService } from './custom-auth-config.service';\r\n\r\n/** The session service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizationService {\r\n\r\n /** The claims */\r\n private claims: AccessTokenClaims;\r\n\r\n /** Authorization settings.*/\r\n public authSettings: HeaderAuthSettings;\r\n\r\n /** IsloggedIn behaviour subject **/\r\n private readonly isLoggedInBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** IsloggedIn observable **/\r\n public isLoggedIn$: Observable<boolean>;\r\n\r\n /** Determined whether is user is logged in**/\r\n public IsLoggedIn: boolean;\r\n\r\n /**\r\n * Constructs authorization service\r\n * @param authService The OAuth Service\r\n * @param httpClient The HTTPClient\r\n * @param authStorage The AuthStorage\r\n * @param hybridAuthService The Hybrid Service\r\n * @param customAuthConfigService The Custom Authorization Service\r\n */\r\n constructor(\r\n private readonly authService: OAuthService,\r\n private readonly httpClient: HttpClient,\r\n private readonly authStorage: OAuthStorage,\r\n private readonly hybridAuthService: HybridSamlOauthService,\r\n @Optional() private readonly customAuthConfigService: CustomAuthConfigService\r\n ) {\r\n this.isLoggedIn$ = this.isLoggedInBs.asObservable();\r\n }\r\n\r\n /**\r\n * Initialize Authorization Settings.\r\n * @param authSettings The Authorization settings\r\n */\r\n public initializeAuthSettings(authSettings: HeaderAuthSettings, shouldTryLogin: boolean = true): void {\r\n this.authSettings = authSettings;\r\n\r\n if (this.customAuthConfigService) {\r\n this.customAuthConfigService.configureAuthSettings().then(authConfig => {\r\n // Overwrite initial header auth setting with custom resolver\r\n this.authSettings = {\r\n ...authSettings,\r\n ...authConfig\r\n };\r\n if (shouldTryLogin) {\r\n this.handleTryLogin(authSettings.authSetOnStartup);\r\n }\r\n });\r\n }\r\n else {\r\n const authConfig = new AuthConfig({\r\n clientId: authSettings.clientId,\r\n redirectUri: authSettings.redirectUri,\r\n issuer: authSettings.issuer,\r\n scope: authSettings.scope,\r\n skipIssuerCheck: authSettings.skipIssuerCheck,\r\n timeoutFactor: authSettings.timeoutFactor || 0.75,\r\n postLogoutRedirectUri: authSettings.postLogOutUrl,\r\n loginUrl: authSettings.loginUrl,\r\n responseType: authSettings.responseType || 'code'\r\n });\r\n this.authService.configure(authConfig);\r\n this.authService.issuer = authSettings.issuer;\r\n this.authService.strictDiscoveryDocumentValidation = false;\r\n this.authService.skipIssuerCheck = true;\r\n this.authService.tokenValidationHandler = new JwksValidationHandler();\r\n this.authService.setupAutomaticSilentRefresh({}, 'access_token');\r\n this.authService.timeoutFactor = authSettings.timeoutFactor || 0.75;\r\n this.authService.responseType = authSettings.responseType || 'code';\r\n\r\n if (shouldTryLogin) {\r\n this.handleTryLogin(authSettings.authSetOnStartup);\r\n }\r\n }\r\n }\r\n\r\n /** The user name */\r\n public userName(): string {\r\n let name = '';\r\n if (this.claims.given_name) {\r\n name += this.claims.given_name;\r\n }\r\n if (name && this.claims.family_name) {\r\n name += ` ${this.claims.family_name}`;\r\n }\r\n else if (this.claims.family_name) {\r\n name += this.claims.family_name;\r\n }\r\n return name || this.claims.upn;\r\n }\r\n\r\n /**\r\n * Authorize User.\r\n */\r\n public authorizeUser(): void {\r\n if (this.authSettings) {\r\n if (!this.IsLoggedIn) {\r\n if (this.customAuthConfigService) {\r\n this.customAuthConfigService.configureAuthSettings().then(_ => {\r\n this.handleLogin();\r\n });\r\n }\r\n else {\r\n if (this.authService.issuer !== this.authSettings.issuer) {\r\n this.authService.issuer = this.authSettings.issuer;\r\n }\r\n this.handleLogin();\r\n }\r\n } else {\r\n if (this.hybridAuthService) {\r\n this.hybridAuthService.expireSession(true);\r\n }\r\n this.authService.logOut();\r\n this.authStorage.removeItem('access_token');\r\n this.isLoggedInBs.next(false);\r\n this.IsLoggedIn = false;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handle Login\r\n * @param authSetOnStartup Is auth set on startup \r\n */\r\n private handleTryLogin(authSetOnStartup: boolean): void {\r\n if (!authSetOnStartup) {\r\n this.authService.loadDiscoveryDocumentAndTryLogin()\r\n .then(() => {\r\n const token = this.authService.getAccessToken();\r\n const isValid = !!token;\r\n this.claims = this.authService.getIdentityClaims() as AccessTokenClaims;\r\n this.isLoggedInBs.next(isValid);\r\n this.IsLoggedIn = isValid;\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n else {\r\n this.authService.loadDiscoveryDocument()\r\n .then(() => {\r\n const token = this.authService.getAccessToken();\r\n const isValid = !!token;\r\n this.claims = this.authService.getIdentityClaims() as AccessTokenClaims;\r\n this.isLoggedInBs.next(isValid);\r\n this.IsLoggedIn = isValid;\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n }\r\n\r\n /** Handle Login */\r\n private handleLogin(): void {\r\n window.sessionStorage.setItem(preSignInRouteStorageKey, window.location.pathname.toLowerCase());\r\n this.authService.loadDiscoveryDocumentAndLogin()\r\n .then(logInSuccess => {\r\n if (logInSuccess) {\r\n this.isLoggedInBs.next(true);\r\n this.IsLoggedIn = true;\r\n }\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n}\r\n","import { MediaMatcher } from '@angular/cdk/layout';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { BaseConfig } from '../../../core/models/base-config';\r\nimport { AuthorizationService } from '../../../core/services/authorization.service';\r\nimport { BannerService } from '../../../core/services/banner.service';\r\nimport { BaseConfigService } from '../../../core/services/base-config.service';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { NavigationThemeSettings } from '../../models/nav-theme.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings } from '../../models/nav.settings';\r\nimport { NavNode, SubNavNodes } from '../../models/navigation';\r\n\r\n/**\r\n * The Navigation Component\r\n * @deprecated \r\n */\r\n@Component({\r\n selector: 'sof-ar-navigation',\r\n templateUrl: './navigation.component.html',\r\n styleUrls: ['./navigation.component.scss'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }],\r\n standalone: false\r\n})\r\nexport class ArmatureNavigationComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /** The parent stepper */\r\n @ViewChild('vertStepper') public stepper: MatStepper;\r\n\r\n /** The side mobile nav */\r\n @ViewChild('snav') public sidenav: MatSidenav;\r\n\r\n /** The mobile expansion panel for progress menu */\r\n @ViewChild('panel') public expansionPanel: MatExpansionPanel;\r\n\r\n /** The child steppers */\r\n @ViewChildren('vertStepperInner') public innerSteppers: QueryList<MatStepper>;\r\n\r\n /** Component Input - the navigation data */\r\n @Input() public navigationData: NavNode[];\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public settings: NavigationSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public advancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public themeSettings: NavigationThemeSettings = {};\r\n\r\n /** Component Input - the navigation language settings */\r\n @Input() public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** logOut text **/\r\n @Input() public logOutText: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** gets the non used language */\r\n public get otherLangText(): string {\r\n return this.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** Whether side nav is open or not */\r\n public isNavOpen: boolean = false;\r\n\r\n /** Mobile SubNav - whether or not the mobile SubNav is open */\r\n public isMobileSubNavOpen: boolean = false;\r\n\r\n /** Mobile SubNav -the data to be passed to the mobile SubNav */\r\n public currentMobileNav: NavNode;\r\n\r\n /** Settings - the main menu text that appears in the mobile SubNav */\r\n public mainMenuText: string;\r\n\r\n /** the mobile query */\r\n public mobileQuery: MediaQueryList;\r\n\r\n /** The selected parent index */\r\n public selectedParentIndex: number = 0;\r\n\r\n /** The selected child index */\r\n public selectedChildIndexes: { [key: number]: number } = {};\r\n\r\n /** The navigation progress count */\r\n public navProgressCount: number = 0;\r\n\r\n /** The current active parent node */\r\n public activeParentNode: NavNode;\r\n\r\n /** The current active sub node */\r\n public activeSubNode: SubNavNodes;\r\n\r\n /** True if the expansion panel is open */\r\n public panelOpenState: boolean = false;\r\n\r\n /** The footer navigation data */\r\n public footerNavigationData: NavNode[]\r\n\r\n /** user name **/\r\n public userName: string;\r\n\r\n /** The config observable */\r\n public config$: Observable<BaseConfig>;\r\n\r\n /** The parent node index to be set when nav is toggled to progress menu style */\r\n public toggleProgressNavParentIndex: number;\r\n\r\n /** The child node index to be set when nav is toggled to progress menu style */\r\n public toggleProgressNavChildIndex: number;\r\n\r\n /** the mobile query listener2 */\r\n private readonly _mobileQueryListener: () => void;\r\n\r\n /** The nav bind subscription */\r\n private navBindSub: Subscription = new Subscription();\r\n\r\n /** The message to display */\r\n public message: string;\r\n\r\n /** Whether we should the message */\r\n public showMessage: boolean = false;\r\n\r\n /** Whether should show check mark or not */\r\n public showCheckMark: boolean = true;\r\n\r\n /** The nav bind subscription */\r\n private logInSubscription: Subscription = new Subscription();\r\n\r\n /** The count of footer items*/\r\n public footerItemCount: number;\r\n\r\n /** The banner subscription */\r\n private bannerSubscription: Subscription = new Subscription();\r\n\r\n /** The config subscription */\r\n public configSubscription: Subscription = new Subscription();\r\n\r\n /** The sidenav subscription */\r\n private sideNavSub: Subscription = new Subscription();\r\n\r\n /**\r\n * the constructor\r\n * @param changeDetectorRef the change detector reference\r\n * @param media the media matcher\r\n * @param router The router\r\n * @param bannerService The Banner Service\r\n * @param activatedRoute The activated route\r\n * @param configService The config service\r\n */\r\n constructor(\r\n readonly changeDetectorRef: ChangeDetectorRef,\r\n readonly media: MediaMatcher,\r\n private readonly router: Router,\r\n private bannerService: BannerService,\r\n private readonly authorizationService: AuthorizationService,\r\n @Optional() private readonly configService: BaseConfigService\r\n ) {\r\n this.mobileQuery = media.matchMedia('(max-width: 959px)');\r\n this._mobileQueryListener = () => {\r\n changeDetectorRef.detectChanges();\r\n // close the sidenav when screen size is changed\r\n if (!this.mobileQuery.matches && this.settings.menuStyle === 'progress') {\r\n this.sidenav.close();\r\n }\r\n };\r\n // below if statement is for edge support since addEventListener doesn't exist for MediaQueryLists\r\n if (this.mobileQuery.addEventListener) {\r\n this.mobileQuery.addEventListener('change', this._mobileQueryListener);\r\n }\r\n else {\r\n this.mobileQuery.addListener(this._mobileQueryListener);\r\n }\r\n }\r\n\r\n /** On Init - configure the settings */\r\n public ngOnInit(): void {\r\n\r\n this.bannerSubscription.add(this.bannerService.showBanner$.subscribe(val => this.showMessage = val));\r\n this.bannerSubscription.add(this.bannerService.message$.subscribe(val => this.message = val));\r\n this.bannerSubscription.add(this.bannerService.showCheckMark$.subscribe(val => this.showCheckMark = val));\r\n\r\n this.footerNavigationData = this.navigationData?.filter(node => node?.altLocation == true);\r\n this.footerItemCount = this.footerNavigationData ? this.footerNavigationData.length : 0;\r\n this.navigationData = this.navigationData?.filter(node => node?.altLocation != true);\r\n\r\n // if parents have no route, grab first route of child\r\n this.navigationData?.forEach(n => {\r\n if (!n.route) {\r\n n.route = n.subNodes && n.subNodes.length > 0 ? n.subNodes[0].route : undefined;\r\n }\r\n // enable all pages by default\r\n if (n.isDisabled == null) {\r\n n.isDisabled = false;\r\n }\r\n });\r\n\r\n this.initBasicSettings();\r\n this.initAdvancedSettings();\r\n this.initThemeSettings();\r\n\r\n // init binding for progress nav\r\n if (this.settings.menuStyle === 'progress') {\r\n // set the first node and child node as visited\r\n if (this.navigationData.length > 0) {\r\n this.navigationData[0].visited = true;\r\n this.navigate(this.navigationData[0].route);\r\n if (this.navigationData[0].subNodes && this.navigationData[0].subNodes.length > 0) {\r\n this.navigationData[0].subNodes[0].visited = true;\r\n this.navigate(this.navigationData[0].subNodes[0].route);\r\n }\r\n }\r\n\r\n // set initial progress bar\r\n this.navProgressCount = (this.selectedParentIndex + 1) / this.navigationData.length * 100;\r\n\r\n\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n this.getActiveParentAndChild(event.url);\r\n })\r\n );\r\n\r\n this.settings.allowNavToggle = false;\r\n }\r\n this.logInSubscription = this.authorizationService.isLoggedIn$.subscribe(value => {\r\n if (value) {\r\n this.userName = this.authorizationService.userName()\r\n }\r\n });\r\n\r\n if (this.configService) {\r\n this.configSubscription = this.configService.config$.subscribe(config => {\r\n if (config && config?.navigation?.nodes) {\r\n this.navigationData = config?.navigation?.nodes;\r\n if (config?.navigation?.settings?.resetNav) {\r\n this.navProgressCount = 0;\r\n this.selectedParentIndex = 0;\r\n this.navigate(this.navigationData[0].route);\r\n if (this.stepper) {\r\n this.stepper.selectedIndex = 0;\r\n setTimeout(() => {\r\n this.stepper.reset();\r\n this.innerSteppers?.forEach(stepper => {\r\n stepper.selectedIndex = 0;\r\n stepper.reset();\r\n });\r\n });\r\n }\r\n this.navigationData.forEach(n => {\r\n n.visited = false;\r\n n.complete = false;\r\n n.subNodes?.forEach(s => {\r\n s.visited = false;\r\n s.complete = false;\r\n })\r\n });\r\n // reset back to false to avoid multiple triggers on future calls\r\n config.navigation.settings.resetNav = false;\r\n this.configService.config = config;\r\n }\r\n\r\n // if the values were changed and not null, it means that the nav was toggled to progress\r\n if (config?.navigation?.settings?.toggleProgressNavParentIndex != null\r\n && this.toggleProgressNavParentIndex != config?.navigation?.settings?.toggleProgressNavParentIndex\r\n && this.toggleProgressNavChildIndex != config?.navigation?.settings?.toggleProgressNavChildIndex\r\n && config?.navigation?.settings?.toggleProgressNavChildIndex != null) {\r\n\r\n this.toggleProgressNavParentIndex = config.navigation.settings.toggleProgressNavParentIndex;\r\n this.toggleProgressNavChildIndex = config.navigation.settings.toggleProgressNavChildIndex;\r\n\r\n // add the router sub\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n this.getActiveParentAndChild(event.url);\r\n })\r\n );\r\n // if the child node index is valid\r\n if (config.navigation.nodes[this.toggleProgressNavParentIndex].subNodes?.length > this.toggleProgressNavChildIndex) {\r\n this.setNodeStates(config.navigation.nodes[this.toggleProgressNavParentIndex],\r\n config.navigation.nodes[this.toggleProgressNavParentIndex].subNodes[this.toggleProgressNavChildIndex]);\r\n }\r\n else {\r\n this.setNodeStates(config.navigation.nodes[this.toggleProgressNavParentIndex], null);\r\n }\r\n }\r\n else {\r\n // Update the indexes\r\n this.toggleProgressNavParentIndex = config?.navigation?.settings?.toggleProgressNavParentIndex\r\n this.toggleProgressNavChildIndex = config?.navigation?.settings?.toggleProgressNavChildIndex;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Life cycle hook for after component view initialization */\r\n public ngAfterViewInit(): void {\r\n if (this.settings.menuStyle === 'stepper') {\r\n this.bindStepperToRoutes();\r\n setTimeout(() => {\r\n this.stepper.steps.forEach((step, index) => {\r\n step.select = () => {\r\n this.selectedParentIndex = index;\r\n this.navigate(this.navigationData[index].route);\r\n }\r\n });\r\n this.innerSteppers.forEach((stepper, index) => {\r\n stepper.steps.forEach((step, jindex) => {\r\n step.select = () => {\r\n this.selectedChildIndexes[index] = jindex;\r\n this.navigate(this.navigationData[index].subNodes[jindex].route);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n this.sideNavSub = this.sidenav.openedChange.subscribe(drawerState => {\r\n this.isNavOpen = drawerState;\r\n });\r\n }\r\n\r\n /** On Destroy */\r\n public ngOnDestroy(): void {\r\n this.mobileQuery.removeEventListener('change', this._mobileQueryListener);\r\n this.navBindSub.unsubscribe();\r\n this.logInSubscription.unsubscribe();\r\n this.bannerSubscription.unsubscribe();\r\n this.configSubscription.unsubscribe();\r\n this.sideNavSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Mobile SubNav - open the SubNav\r\n * @param nav the nav data to be passed to the SubNav\r\n */\r\n public openMobileSubNav(nav: NavNode): void {\r\n this.isMobileSubNavOpen = true;\r\n this.currentMobileNav = nav;\r\n this.sidenav.open();\r\n }\r\n\r\n /**\r\n * Mobile SubNav - closes the SubNav\r\n */\r\n public closeMobileSubNav(): void {\r\n this.isMobileSubNavOpen = false;\r\n this.sidenav.close();\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-nav-${variable}`, color);\r\n }\r\n\r\n /**\r\n * Determines the step state\r\n * @param parentIndex The parent index\r\n * @param childIndex The child index\r\n * @returns The step state\r\n */\r\n public determineStepState(parentIndex: number, childIndex: number): string {\r\n // not passed && not active\r\n if (childIndex === -1) {\r\n if (!this.stepper) {\r\n return 'number';\r\n }\r\n // not passed && active\r\n if (parentIndex === this.stepper.selectedIndex) {\r\n this.navigationData[parentIndex].visited = true;\r\n\r\n return 'active';\r\n }\r\n // passed but nav back\r\n else if (parentIndex > this.stepper.selectedIndex && this.navigationData[parentIndex].visited) {\r\n this.stepper.steps.find((s, index) => index === parentIndex)\r\n .reset();\r\n\r\n return 'active';\r\n }\r\n // passed && not active\r\n else if (parentIndex < this.stepper.selectedIndex) {\r\n this.navigationData[parentIndex].visited = true;\r\n\r\n return 'done';\r\n }\r\n else {\r\n return 'number';\r\n }\r\n }\r\n else {\r\n if (!this.innerSteppers) {\r\n return 'none';\r\n }\r\n const innerStepper = this.innerSteppers.find((s, index) => index === parentIndex);\r\n if (childIndex === innerStepper.selectedIndex) {\r\n this.navigationData[parentIndex].subNodes[childIndex].visited = true;\r\n\r\n return 'active';\r\n }\r\n else if (childIndex > innerStepper.selectedIndex && this.navigationData[parentIndex].subNodes[childIndex].visited) {\r\n innerStepper.steps.find((s, index) => index === childIndex)\r\n .reset();\r\n\r\n return 'active';\r\n }\r\n else if (childIndex < innerStepper.selectedIndex) {\r\n this.navigationData[parentIndex].subNodes[childIndex].visited = true;\r\n\r\n return 'done';\r\n }\r\n else {\r\n return 'none';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Navigates to the provided route\r\n * @param route The route\r\n */\r\n public navigate(route: string): void {\r\n // tslint:disable-next-line: no-floating-promises\r\n this.router.navigateByUrl(route);\r\n }\r\n\r\n /**\r\n * Navigates to given step\r\n * @param stepNumber The step number to navigate to\r\n */\r\n public navigateToStep(stepNumber: number): void {\r\n if (stepNumber < this.selectedParentIndex) {\r\n // tslint:disable-next-line: no-floating-promises\r\n this.router.navigateByUrl(this.navigationData[stepNumber].route);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the active parent and child nodes \r\n * @param url The router url\r\n */\r\n public getActiveParentAndChild(url: string): void {\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => url.includes(s.route.replace('.', '')));\r\n return childIndex > -1 || this.router.url.includes(n.route.replace('.', ''));\r\n });\r\n\r\n if (parentIndex == -1) {\r\n parentIndex = 0\r\n }\r\n\r\n // set the active parent node and sub node\r\n this.activeParentNode = this.navigationData[parentIndex];\r\n this.activeSubNode = childIndex > -1 && this.activeParentNode.subNodes.length > 0 ? this.activeParentNode.subNodes[childIndex] : null;\r\n\r\n // if there are subnodes and we are on the first node, set the active sub node to be the first one, if there isnt one \r\n if (this.activeParentNode.subNodes.length > 0 && parentIndex == 0 && childIndex == -1) {\r\n this.activeSubNode = this.activeParentNode.subNodes[0];\r\n }\r\n // compute the progress bar\r\n this.navProgressCount = (parentIndex + 1) / this.navigationData.length * 100;\r\n\r\n // set the node states\r\n this.setNodeStates(this.activeParentNode, this.activeSubNode);\r\n }\r\n\r\n /**\r\n * Sets the complete and visited states for all NavNodes \r\n * @param parentNode The parent node\r\n * @param childNode The child node\r\n */\r\n public setNodeStates(parentNode: NavNode, childNode: SubNavNodes): void {\r\n if (childNode) {\r\n this.activeSubNode = childNode;\r\n let childIndex = parentNode.subNodes.indexOf(childNode) > -1 ? parentNode.subNodes.indexOf(childNode) : 0;\r\n // all subnodes before this were completed and visited\r\n parentNode.subNodes.slice(0, childIndex).forEach(element => {\r\n element.complete = true;\r\n element.visited = true;\r\n });\r\n }\r\n this.activeParentNode = parentNode;\r\n // set all previous nodes to complete\r\n let parentIndex = this.navigationData.indexOf(parentNode) > -1 ? this.navigationData.indexOf(parentNode) : 0;\r\n this.navigationData.slice(0, parentIndex).forEach(d => {\r\n d.complete = true;\r\n\r\n // set all subnodes of previous nodes to complete only if the node was not disabled\r\n if (!d.isDisabled) {\r\n d.subNodes.forEach(s => {\r\n s.complete = true;\r\n s.visited = true;\r\n })\r\n }\r\n })\r\n // set the current nodes as visited\r\n parentNode.visited = true;\r\n if (childNode) {\r\n childNode.visited = true;\r\n }\r\n }\r\n\r\n /**\r\n * Closes the expansion panel and navigates to the given node\r\n * @param el The mat expansion panel \r\n * @param index The parent node index \r\n */\r\n public disablePanel(el, index: number): void {\r\n el.close();\r\n this.navigate(this.navigationData[index].route);\r\n }\r\n\r\n /**\r\n * Hides the message\r\n */\r\n public hide(): void {\r\n this.showMessage = false;\r\n }\r\n\r\n /**\r\n * Logs out once user is authorized\r\n * */\r\n public logOut(): void {\r\n this.authorizationService.authorizeUser();\r\n }\r\n\r\n /**\r\n * Closes mobile navigation after selection.\r\n */\r\n public closeNavigationForMobile(): void {\r\n if (this.mobileQuery.matches) {\r\n this.sidenav.close();\r\n }\r\n }\r\n\r\n /**\r\n * Is the navigation selected\r\n */\r\n public isNavSelected(node: NavNode | SubNavNodes): boolean {\r\n return this.router.isActive(node.route, { paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored' });\r\n }\r\n\r\n /** Sets the width for the side nav */\r\n public setNavWidth(width: string): string {\r\n return width.includes('%') || width.includes('px') ? width : width + 'px';\r\n }\r\n\r\n /** Binds the stepper to the router */\r\n private bindStepperToRoutes(): void {\r\n // find parents\r\n setTimeout(() => {\r\n // find parent index with active child\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => this.router.url.includes(s.route.replace('.', '')));\r\n\r\n return childIndex > -1 || this.router.url.includes(n.route.replace('.', ''));\r\n });\r\n // if no children or no indexes activate first parent\r\n if (parentIndex === -1) {\r\n parentIndex = 0;\r\n }\r\n\r\n this.selectedParentIndex = parentIndex;\r\n if (childIndex > -1) {\r\n this.innerSteppers.find((is, index) => index === parentIndex).selectedIndex = childIndex;\r\n }\r\n });\r\n\r\n // find parents\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => event.urlAfterRedirects.includes(s.route.replace('.', '')));\r\n\r\n return childIndex > -1 || event.urlAfterRedirects.includes(n.route.replace('.', ''));\r\n });\r\n // if no children or no indexes activate first parent\r\n if (parentIndex === -1) {\r\n parentIndex = 0;\r\n }\r\n\r\n this.selectedParentIndex = parentIndex;\r\n if (childIndex > -1) {\r\n this.innerSteppers.find((is, index) => index === parentIndex).selectedIndex = childIndex;\r\n }\r\n })\r\n );\r\n }\r\n\r\n /** Initializes the advanced nav settings */\r\n private initAdvancedSettings(): void {\r\n this.advancedSettings.topGapDesktop = this.advancedSettings.topGapDesktop || 0;\r\n this.advancedSettings.topGapMobile = this.advancedSettings.topGapMobile || this.settings.headerHeight;\r\n this.advancedSettings.marginTopDesktop = this.advancedSettings.marginTopDesktop || 0;\r\n this.advancedSettings.marginTopMobile = this.advancedSettings.marginTopMobile || 0;\r\n\r\n }\r\n\r\n /** Initializes the nav theme settings */\r\n private initThemeSettings(): void {\r\n this.themeSettings.contentBgColor ? this.setThemeColor('content-bg-color', this.themeSettings.contentBgColor) : undefined;\r\n this.themeSettings.fontColor ? this.setThemeColor('font-color', this.themeSettings.fontColor) : undefined;\r\n this.themeSettings.fontColor = this.themeSettings.fontColor || '#000';\r\n this.themeSettings.mobileBgColor = this.themeSettings.mobileBgColor || '#ffffff';\r\n this.themeSettings.bgGradientColor1 ? this.setThemeColor('bg-gradient-color-1', this.themeSettings.bgGradientColor1) : undefined;\r\n this.themeSettings.bgGradientColor2 ? this.setThemeColor('bg-gradient-color-2', this.themeSettings.bgGradientColor2) : undefined;\r\n this.themeSettings.borderRightColor ? this.setThemeColor('border-right-color', this.themeSettings.borderRightColor) : undefined;\r\n this.themeSettings.listBorderColor ? this.setThemeColor('list-border-color', this.themeSettings.listBorderColor) : undefined;\r\n this.themeSettings.highlightGradient1 ? this.setThemeColor('highlight-gradient-1', this.themeSettings.highlightGradient1) : undefined;\r\n this.themeSettings.highlightGradient2 ? this.setThemeColor('highlight-gradient-2', this.themeSettings.highlightGradient2) : undefined;\r\n this.themeSettings.subHighlightBorderColor ?\r\n this.setThemeColor('sub-highlight-border-color', this.themeSettings.subHighlightBorderColor) : undefined;\r\n this.themeSettings.subHighlightBgColor ?\r\n this.setThemeColor('sub-highlight-bg-color', this.themeSettings.subHighlightBgColor) : undefined;\r\n }\r\n\r\n /** Initializes the basic nav settings */\r\n private initBasicSettings(): void {\r\n this.settings.fontAwesomeMenuIcon = this.settings.fontAwesomeMenuIcon || 'fas fa-angle-double-left';\r\n this.settings.fontAwesomeMenuIconClosed = this.settings.fontAwesomeMenuIconClosed || 'fas fa-angle-double-right';\r\n this.settings.allowNavToggle = this.settings.allowNavToggle == null ? true : this.settings.allowNavToggle;\r\n this.settings.mainMenuText ? this.mainMenuText = this.settings.mainMenuText : this.mainMenuText = 'Main Menu';\r\n this.settings.headerHeight = this.settings.headerHeight || 60;\r\n this.settings.menuButtonSRText = this.settings.menuButtonSRText || 'Menu Button';\r\n this.settings.menuStyle = this.settings.menuStyle || 'static';\r\n this.settings.displayNumbers = this.settings.displayNumbers == null ? true : this.settings.displayNumbers;\r\n this.settings.progressSectionCompleteIcon = this.settings.progressSectionCompleteIcon || 'fas fa-check-circle';\r\n this.settings.progressSectionFutureIcon = this.settings.progressSectionFutureIcon || 'far fa-circle';\r\n this.settings.progressSectionCurrentIcon = this.settings.progressSectionCurrentIcon || 'fas fa-circle';\r\n this.settings.progressMenuCompleteIcon = this.settings.progressMenuCompleteIcon || 'far fa-check';\r\n this.settings.showProgressBar = this.settings.showProgressBar == null ? true : this.settings.showProgressBar\r\n this.settings.sideNavWidthDesktop = this.settings.sideNavWidthDesktop || '350';\r\n this.settings.sideNavWidthMobile = this.settings.sideNavWidthMobile || '350';\r\n this.settings.overrideNavigation = this.settings.overrideNavigation || false;\r\n this.settings.progressMenuWidth = this.settings.progressMenuWidth || '280';\r\n this.settings.useCustomMobileFooter = this.settings.useCustomMobileFooter != null ? this.settings.useCustomMobileFooter : false;\r\n }\r\n}\r\n","<div class=\"sof-ar-nav-container\"\r\n [style.top]=\"mobileQuery.matches && advancedSettings.topGapMobile ? advancedSettings.topGapMobile + 'px' : settings.headerHeight + 'px'\"\r\n [class.sof-ar-nav-mobile]=\"mobileQuery.matches\">\r\n <div *ngIf=\"showMessage\" m-a-0 fxLayout=\"row\" fxLayoutAlign=\"space-between center\" sws-alert--secondary role=\"alert\">\r\n <div fxLayout=\"row\" aria-hidden=\"true\">\r\n <i *ngIf=\"showCheckMark\" m-r-5 m-l-5 class=\"fas fa-check-circle icon-container\"></i>\r\n <p class=\"message-container\" m-r-5 m-l-5 [innerHtml]=\"message | translate\"></p>\r\n </div>\r\n <div fxLayout=\"column\">\r\n <button id=\"btnClose\" (click)=\"hide()\" mat-icon-button [attr.aria-label]=\"'common.close' | translate\">\r\n <span aria-hidden=\"true\">\r\n <i class=\"fal fa-times fa-lg\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n <button id=\"sof-ar-nav-btn-menu\" aria-label=\"Menu Button\" mat-icon-button [disableRipple]=\"true\"\r\n (click)=\"snav.toggle()\" class=\"sof-ar-nav-menu-btn\"\r\n [class.hidden]=\"!(mobileQuery.matches || settings.allowNavToggle) || settings.hideNavigation\">\r\n <span *ngIf=\"isNavOpen; else closedIcon\" aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIcon}} menu-icon\"></i>\r\n </span>\r\n <ng-template #closedIcon>\r\n <span aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIconClosed}} menu-icon\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"sr-only\">{{settings.menuButtonSRText | translate}}</span>\r\n </button>\r\n\r\n <mat-sidenav-container autosize class=\"sof-ar-nav-sidenav-container\" [style.marginTop.px]=\"\r\n mobileQuery.matches ? advancedSettings.marginTopMobile : advancedSettings.marginTopDesktop\">\r\n <mat-sidenav [disableClose]=\"!mobileQuery.matches\" class=\"sof-ar-nav-sidenav\" #snav\r\n [mode]=\"mobileQuery.matches ? 'over' : 'side'\" [fixedInViewport]=\"mobileQuery.matches\"\r\n [fixedTopGap]=\"mobileQuery.matches ? advancedSettings.topGapMobile : advancedSettings.topGapDesktop\"\r\n [opened]=\"!mobileQuery.matches && !settings.hideNavigation && settings.menuStyle!=='progress' \"\r\n [style.width]=\"mobileQuery.matches ? setNavWidth(settings.sideNavWidthMobile) : setNavWidth(settings.sideNavWidthDesktop)\"\r\n [ngStyle]=\"{background:mobileQuery.matches ? themeSettings?.mobileBgColor : undefined}\">\r\n <div *ngIf=\"!settings.disableUsernameMobile\">\r\n <ng-container *ngIf=\"mobileQuery.matches && userName && !settings.customUserName\">\r\n <span class=\"user-name\">\r\n {{userName}}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"mobileQuery.matches && settings.customUserName\">\r\n <span class=\"user-name\">\r\n {{settings.customUserName | translate}}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <!-- Nav Header Content -->\r\n <div class=\"nav-header-content\">\r\n <ng-content select=\"[sof-ar-nav-header]\"> </ng-content>\r\n </div>\r\n\r\n <!-- Static Navigation -->\r\n <div class=\"nav-content-item sidenav-background\" *ngIf=\"settings.menuStyle === 'static'\"\r\n [ngStyle]=\"{'padding-bottom.px': (footerItemCount*64)+128}\">\r\n <nav *ngIf=\"settings.menuStyle === 'static'\" [attr.aria-label]=\"'main'\">\r\n <ul>\r\n <li *ngFor=\"let nav of navigationData\">\r\n <ng-container *ngIf=\"nav?.subNodes?.length && !nav.hidden\">\r\n <mat-accordion>\r\n <mat-expansion-panel [expanded]=\"nav.expanded\">\r\n <mat-expansion-panel-header [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(nav) }\">\r\n <!-- Navigation -->\r\n <ng-container>\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"{{nav?.fontAwesomeIcon}}\"></i>\r\n </span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"{{nav?.fontAwesomeIcon}}\"></i>\r\n </span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </mat-expansion-panel-header>\r\n <!-- SubNav -->\r\n <ng-container>\r\n <mat-nav-list [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(subnav) }\" class=\"subnav-content\"\r\n [disableRipple]=\"true\" *ngFor=\"let subnav of nav?.subNodes\" (click)=\"closeNavigationForMobile()\"\r\n [attr.role]=\"null\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item\r\n [routerLinkActive]=\"['sof-ar-nav-sub-active-route']\" [routerLink]=\"subnav.route\"\r\n [attr.aria-label]=\"(nav.text | translate) + ' ' + (subnav.text | translate)\">\r\n <span class=\"sof-ar-nav-header-text\"\r\n [attr.aria-label]=\"(nav.text | translate) + ' ' + (subnav.text | translate)\">\r\n {{subnav.text | translate}}\r\n </span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <!-- If subnodes are not there -->\r\n <ng-container>\r\n <ng-container *ngIf=\"!nav?.subNodes?.length && !nav?.hidden\">\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(nav) }\" class=\"nav-header\"\r\n [disableRipple]=\"true\" (click)=\"closeNavigationForMobile()\" [attr.role]=\"null\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n\r\n <!-- Stepper -->\r\n <mat-vertical-stepper *ngIf=\"settings.menuStyle === 'stepper'\" [selectedIndex]=\"selectedParentIndex\" #vertStepper\r\n [linear]=\"false\" class=\"sidenav-background\">\r\n <!-- Alternate step states for nav, icaons should always be white only worked with styles -->\r\n <ng-template matStepperIcon=\"create\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"active\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"done\">\r\n <span>\r\n <i class=\"fas fa-check\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <!-- nav steps -->\r\n <ng-container *ngFor=\"let nav of navigationData; let i = index\">\r\n <mat-step *ngIf=\"!nav?.hidden\" state=\"{{ determineStepState(i, -1) }}\">\r\n <ng-template matStepLabel *ngIf=\"!nav.hidden\">\r\n <div id=\"divStep{{ i }}\" style=\"height: 72px\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ nav.text | translate }}\" [matTooltipPosition]=\"'after'\" fxFlex=\"100%\">\r\n <a id=\"step{{ i }}\" fxFlex=\"100%\" class=\"mat-button step-link\" [routerLink]=\"nav.route\"\r\n [ngStyle]=\"{ color: themeSettings?.fontColor }\" [routerLinkActive]=\"['step-active']\">\r\n {{ nav.text | translate }}\r\n </a>\r\n </div>\r\n </ng-template>\r\n <p [innerHTML]=\"nav.stepContent | translate\"></p>\r\n <!-- sub nav -->\r\n <mat-vertical-stepper *ngIf=\"nav?.subNodes\" [selectedIndex]=\"selectedChildIndexes[i]\" [linear]=\"false\"\r\n #vertStepperInner>\r\n <!-- Alternate step states for sub nav, icons should always be white only worked with styles -->\r\n <ng-template matStepperIcon=\"create\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"done\">\r\n <span>\r\n <i class=\"fas fa-check\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"active\">\r\n <span>\r\n <i class=\"fas fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"none\">\r\n <span></span>\r\n </ng-template>\r\n <!-- sub nav steps -->\r\n <ng-container *ngFor=\"let subnav of nav?.subNodes; let j = index\">\r\n <mat-step state=\"{{ determineStepState(i, j) }}\" *ngIf=\"!subnav.hidden\">\r\n <ng-template matStepLabel>\r\n <div id=\"divSubStep{{ i }}-{{ j }}\" style=\"height: 72px\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ subnav.text | translate }}\" [matTooltipPosition]=\"'after'\" fxFlex=\"100%\">\r\n <a id=\"subStep{{ i }}-{{ j }}\" class=\"mat-button step-link\"\r\n [ngStyle]=\"{ color: themeSettings?.fontColor }\" [routerLink]=\"subnav.route\"\r\n [routerLinkActive]=\"['step-active']\">{{ subnav.text | translate }}</a>\r\n </div>\r\n </ng-template>\r\n <p [innerHTML]=\"subnav.stepContent | translate\"></p>\r\n </mat-step>\r\n </ng-container>\r\n\r\n </mat-vertical-stepper>\r\n </mat-step>\r\n </ng-container>\r\n\r\n </mat-vertical-stepper>\r\n\r\n <!-- Nav Footer -->\r\n <div class=\"nav-footer-item\">\r\n <ng-container *ngIf=\"settings.menuStyle === 'static'\">\r\n <ng-container *ngFor=\"let nav of footerNavigationData\">\r\n <ng-container>\r\n <!-- Desktop Nav -->\r\n <ng-container *ngIf=\"!nav?.subNodes?.length\">\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list class=\"nav-header\" [disableRipple]=\"true\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n {{nav.text | translate}}\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list>\r\n <button id=\"sof-ar-nav-btn-node\" class=\"nav-item\" mat-list-item\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n {{nav.text | translate}}\r\n </button>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template [ngTemplateOutlet]=\"navigationFooter\">\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- the mobile progress menu-->\r\n <ng-container *ngIf=\"settings?.menuStyle === 'progress'\">\r\n <div class=\"sidenav-background\" [ngStyle]=\"{'padding-bottom.px': (footerItemCount*64)+128}\">\r\n <mat-accordion>\r\n <div *ngFor=\"let step of navigationData; let i = index\">\r\n <ng-container *ngIf=\"step.subNodes && step.subNodes.length > 0 && !step.hidden\">\r\n <mat-expansion-panel hideToggle class=\"progress-mobile-expansion-panel\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n (opened)=\"panelOpenState = true\" (closed)=\"panelOpenState = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title class=\"progress-mobile-panel-title\">\r\n <div style=\"width: -webkit-fill-available;\"\r\n [ngClass]=\"{'disabled':(!step.visited || step.isDisabled) && !settings.overrideNavigation && !step.complete,'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\"\r\n [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">\r\n {{ step.text | translate }}\r\n </span>\r\n <span *ngIf=\"!panelOpenState\">\r\n <i class=\"fas fa-chevron-down panel-icon\"></i>\r\n </span>\r\n <span *ngIf=\"panelOpenState\">\r\n <i class=\"fas fa-chevron-up panel-icon\"></i>\r\n </span>\r\n </div>\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <!-- mobile sub menu -->\r\n <div class=\"progress-nav-menu\" *ngFor=\"let subNode of step.subNodes; let idx = index;\"\r\n [hidden]=\"step.subNodes[idx].hidden\">\r\n <button role=\"link\" id=\"mobileMenu{{ idx }}\" mat-button class=\"step-link progress-menu-mobile-btn\"\r\n [ngClass]=\"{'color-primary':subNode.complete && subNode!==activeSubNode}\"\r\n [routerLinkActive]=\"['progress-menu-active']\" [ngStyle]=\"{ ' color': themeSettings?.fontColor }\"\r\n [routerLink]=\"subNode.route\" [disabled]=\"!subNode.visited && !settings.overrideNavigation\">\r\n <ng-template [ngTemplateOutlet]=\"progressSubNodeIcons\"\r\n [ngTemplateOutletContext]=\"{subNode:subNode}\">\r\n </ng-template>\r\n <span class=\"nav-menu-btn-text\"\r\n [ngClass]=\"{'disabled':(!subNode.visited) && !settings.overrideNavigation && !subNode.complete,'color-primary':subNode.complete && subNode!==activeSubNode,'progress-menu-active':subNode===activeSubNode}\">{{\r\n subNode.text | translate }}</span>\r\n </button>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n <!-- if there are no subNodes -->\r\n <ng-container *ngIf=\"(!step.subNodes || step.subNodes.length===0) && !step.hidden\">\r\n <mat-expansion-panel #panel hideToggle (opened)=\"disablePanel(panel,i)\"\r\n class=\"progress-mobile-expansion-panel\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title class=\"progress-mobile-panel-title\">\r\n <div\r\n [ngClass]=\"{'disabled':(!step.visited || step.isDisabled) && !settings.overrideNavigation && !step.complete,'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\"\r\n [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">\r\n {{ step.text | translate }}\r\n </span>\r\n </div>\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n\r\n <!-- the progress menu language and logout buttons-->\r\n <div class=\"nav-footer-item progress-footer\">\r\n <ng-template [ngTemplateOutlet]=\"navigationFooter\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <!-- Horizontal Progress -->\r\n <ng-container *ngIf=\"settings?.menuStyle === 'progress'\">\r\n <mat-progress-bar *ngIf=\"settings?.showProgressBar\" mode=\"determinate\" [value]=\"navProgressCount\"\r\n style=\"height: 9px\" color=\"accent\">\r\n </mat-progress-bar>\r\n <nav [attr.aria-label]=\"'main'\" fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" style=\"justify-content:center !important\"\r\n [class.hidden]=\"settings.hideNavigation\">\r\n <div *ngFor=\"let step of navigationData; let i = index\" class=\"horizontal-progress-div\">\r\n <ng-container *ngIf=\"!step.subNodes?.length && !step.hidden\">\r\n <button mat-button [routerLink]=\"step.route\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n class=\"progress-menu-btn\"\r\n [ngClass]=\"{'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\" [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">{{ step.text | translate }}</span>\r\n </button>\r\n </ng-container>\r\n <!-- if there are subnodes create menus for each step -->\r\n <ng-container *ngIf=\"step.subNodes && step.subNodes.length && !step.hidden\">\r\n <button\r\n [ngClass]=\"{'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\"\r\n mat-button [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n class=\"progress-menu-btn\" [matMenuTriggerFor]=\"menu\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\" [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">{{ step.text | translate }}</span>\r\n </button>\r\n <mat-menu #menu=\"matMenu\" class=\"sof-ar-mat-menu progress-menu-panel\">\r\n <div class=\"progress-nav-menu\" *ngFor=\"let subNode of step.subNodes; let idx = index;\"\r\n [ngStyle]=\"{width:settings.progressMenuWidth+'px'}\" [hidden]=\"step.subNodes[idx].hidden\">\r\n <button role=\"link\" id=\"submenu{{ idx }}\" class=\"step-link progress-menu-btn\" mat-menu-item\r\n [ngClass]=\"{'color-primary':subNode.complete && subNode!==activeSubNode,'disabled':!subNode.visited && !settings.overrideNavigation}\"\r\n [routerLinkActive]=\"['progress-menu-active']\" [ngStyle]=\"{ ' color': themeSettings?.fontColor }\"\r\n [routerLink]=\"subNode.route\" [disabled]=\"!subNode.visited && !settings.overrideNavigation\">\r\n <div class=\"nav-menu-btn-div\">\r\n <ng-template [ngTemplateOutlet]=\"progressSubNodeIcons\"\r\n [ngTemplateOutletContext]=\"{subNode:subNode}\">\r\n </ng-template>\r\n <span class=\"nav-menu-btn-text\">{{ subNode.text |translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n </nav>\r\n <div class=\"mobile-progress-container\" fxHide.gt-sm>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content sof-ar-nav-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n <!-- The progress menu parent node icon template-->\r\n <ng-template #progressParentNodeIcons let-step='step'>\r\n <span *ngIf=\"step.complete && step !== activeParentNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.complete' | translate\">\r\n <i class=\"{{ settings.progressSectionCompleteIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n <span *ngIf=\"step === activeParentNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\">\r\n <i class=\"{{ settings.progressSectionCurrentIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\"></i>\r\n </span>\r\n <span *ngIf=\"!step.complete && step !== activeParentNode\"\r\n [ngClass]=\"{'disabled':!step.visited && !settings.overrideNavigation}\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\">\r\n <i class=\"{{ settings.progressSectionFutureIcon }} progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\"></i>\r\n </span>\r\n </ng-template>\r\n <!-- The progress menu sub node icon template-->\r\n <ng-template #progressSubNodeIcons let-subNode='subNode'>\r\n <span class=\"progress-menu-icon\" *ngIf=\"subNode.complete && activeSubNode !== subNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.complete' | translate\">\r\n <i class=\"{{settings.progressMenuCompleteIcon}} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n <span class=\"progress-menu-icon\" *ngIf=\"activeSubNode === subNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\">\r\n <i class=\"{{ settings.progressSectionCurrentIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\"></i>\r\n </span>\r\n <span class=\"progress-menu-icon\" *ngIf=\"!subNode.complete && activeSubNode !== subNode\"\r\n [ngClass]=\"{'disabled':!subNode.visited && !settings.overrideNavigation}\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\">\r\n <i class=\"{{ settings.progressSectionFutureIcon }} progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\"></i>\r\n </span>\r\n </ng-template>\r\n <!-- The navigation footer template for language and logout buttons -->\r\n <ng-template #navigationFooter>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"> </ng-content>\r\n <ng-container *ngIf=\"!settings.useCustomMobileFooter\">\r\n <!-- The language button -->\r\n <ng-container\r\n *ngIf=\"languageSettings?.displayLanguageOptions && languageSettings?.languages.length > 2 && mobileQuery.matches\">\r\n <button id=\"sof-ar-nav-lang-dropdown\" mat-stroked-button\r\n class=\"faded-button-50 language-button navigationFooter\" [matMenuTriggerFor]=\"headerLanguageMenu\"\r\n [attr.aria-label]=\"languageSettings.buttonText | translate\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n </span>\r\n {{languageSettings.buttonText | translate}}\r\n </button>\r\n <mat-menu #headerLanguageMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <button mat-menu-item *ngFor=\"let lang of languageSettings.languages\" (click)=\"setLanguage$.emit(lang)\"\r\n id=\"apply-lang-btn-{{lang}}\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n <div fxFlex=\"auto\">\r\n {{ lang | translate }}\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <i *ngIf=\"currentLang === lang\" class=\"fad fa-check selected-language-icon\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"languageSettings?.displayLanguageOptions && languageSettings?.languages.length === 2 && mobileQuery.matches\">\r\n <button *ngIf=\"languageSettings?.languages.length === 2\" id=\"sof-ar-nav-lang-button\" mat-stroked-button\r\n class=\"faded-button-50 language-button navigationFooter\"\r\n [attr.aria-label]=\"languageSettings.buttonText | translate\" (click)=\"setLanguage$.emit()\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n </span>\r\n {{otherLangText | translate}}\r\n </button>\r\n </ng-container>\r\n <!-- The logout button-->\r\n <ng-container *ngIf=\"mobileQuery.matches && userName\">\r\n <button id=\"sof-ar-header-lang-button\" mat-stroked-button class=\"navigationFooter\" (click)=\"logOut()\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"fas fa-sign-out-alt\"></i>\r\n </span>\r\n {{logOutText | translate}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>","import { MediaMatcher } from '@angular/cdk/layout';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Optional, Output, WritableSignal, signal } from '@angular/core';\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AuthorizationService } from '../../../core/services/authorization.service';\r\nimport { HybridSamlOauthService } from '../../../oauth/oauth-api';\r\nimport { AccessTokenClaims } from '../../../rbac/rbac-api';\r\nimport { HeaderAuthSettings } from '../../models/header-auth.settings';\r\nimport { HeaderLanguageSettings } from '../../models/header-language.settings';\r\nimport { HeaderThemeSettings } from '../../models/header-theme.settings';\r\nimport { HeaderSettings } from '../../models/header.settings';\r\nimport { HeaderExternalLinks } from '../../models/header-external-links';\r\n\r\n/** The Header Component */\r\n@Component({\r\n selector: 'sof-ar-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n standalone: false\r\n})\r\nexport class ArmatureHeaderComponent implements OnInit {\r\n\r\n /** Component Input - the header settings */\r\n @Input() public settings: HeaderSettings = {};\r\n\r\n /** Component Input - the header theme settings */\r\n @Input() public themeSettings: HeaderThemeSettings = {};\r\n\r\n /** Authorization settings.*/\r\n @Input() public authSettings: HeaderAuthSettings;\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** Event Emitter for if user is logged in. */\r\n @Output() public isLoggedInEE: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /** Gets the non used language */\r\n public get otherLangText(): string {\r\n return this.settings?.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** SETTINGS */\r\n\r\n /** if the header is being paired with the armature navigation. this will auto create the room on mobile for the navigation icon */\r\n public armatureNavigation: boolean;\r\n\r\n /**\r\n * Whether to use the armature header overlay, does not mix with armature navigation\r\n * This instead will hide the right header content and display what's passed to it within the side nav.\r\n */\r\n public armatureHeaderOverlay: boolean;\r\n\r\n /** whether or not to display the logo */\r\n public displayLogo: boolean;\r\n\r\n /** the logo url */\r\n public logoUrl: string;\r\n\r\n /** the logo alt text */\r\n public logoAltText: string;\r\n\r\n /** whether or not to show the logo text, default false */\r\n public displayLogoText: boolean;\r\n\r\n /** the header logo text */\r\n public headerLogoText: string;\r\n\r\n /** whether or not to show the built in drop down menu, default false */\r\n public displayDropDownMenu: boolean;\r\n\r\n /** the drop down menu screen reader text */\r\n public dropDownMenuSRText: string;\r\n\r\n /** the drop down menu aria text */\r\n public dropDownAriaText: string;\r\n\r\n /** the header menu drop down icon */\r\n public headerDropDownIcon: string;\r\n\r\n /** whether or not to show the super header, default false */\r\n public displaySuperHeader: boolean;\r\n\r\n /** THEME SETTINGS */\r\n\r\n /** the header color */\r\n public headerColor: string;\r\n\r\n /** using color string icon color, overrides iconMatColor */\r\n public iconColor: string;\r\n\r\n /** Whether or not to add a drop shadow to the header, default true */\r\n public headerDropShadow: boolean;\r\n\r\n /** The color of the super header */\r\n public superHeaderColor: string;\r\n\r\n /** AUTH SETTINGS */\r\n\r\n /** Flag if user is logged in. */\r\n public isLoggedIn: boolean = false;\r\n\r\n /** User name **/\r\n public userName: string;\r\n\r\n /** Authorization Button Text. */\r\n public get authBtnText(): string {\r\n if (!this.isLoggedIn) {\r\n return 'SIGN IN';\r\n }\r\n return this.isLoggedIn ? this.authSettings.logOutText : this.authSettings.logInText;\r\n }\r\n\r\n public get manageUrl(): string {\r\n // tslint:disable-next-line: no-string-literal\r\n return `${this.authService['config'].issuer}/manage`;\r\n }\r\n\r\n /** The header language settings */\r\n public headerLanguageSettings: HeaderLanguageSettings = {};\r\n\r\n /** The header external links */\r\n public externalLinks: WritableSignal<Array<HeaderExternalLinks>> = signal([]);\r\n\r\n /** the mobile query */\r\n public mobileQuery: MediaQueryList;\r\n\r\n /** the mobile query listener2 */\r\n private readonly _mobileQueryListener: () => void;\r\n\r\n /** The claims */\r\n private claims: AccessTokenClaims;\r\n\r\n /**\r\n * Constructor.\r\n * @param authService OAuth Service.\r\n * @param authStorage OAuth Storage.\r\n * @param hybridAuthService Hybrid SAML Oauth service.\r\n * @param media The media matcher\r\n * @param changeDetectorRef The change detector reference\r\n * @param authorizationService The Authorization Service.\r\n */\r\n constructor(\r\n private readonly authService: OAuthService,\r\n private readonly authStorage: OAuthStorage,\r\n private readonly translateService: TranslateService,\r\n private readonly media: MediaMatcher,\r\n private readonly changeDetectorRef: ChangeDetectorRef,\r\n private readonly authorizationService: AuthorizationService,\r\n @Optional() private readonly hybridAuthService: HybridSamlOauthService\r\n ) {\r\n this.mobileQuery = media.matchMedia('(max-width: 959px)');\r\n this._mobileQueryListener = () => {\r\n changeDetectorRef.detectChanges();\r\n };\r\n // below if statement is for edge support since addEventListener doesn't exist for MediaQueryLists\r\n if (this.mobileQuery.addEventListener) {\r\n this.mobileQuery.addEventListener('change', this._mobileQueryListener);\r\n }\r\n else {\r\n this.mobileQuery.addListener(this._mobileQueryListener);\r\n }\r\n }\r\n\r\n /** On Init */\r\n public ngOnInit(): void {\r\n // basic settings\r\n this.settings.armatureNavigation != undefined ? this.armatureNavigation = this.settings.armatureNavigation : this.armatureNavigation = true;\r\n this.settings.armatureHeaderOverlay ? this.armatureHeaderOverlay = this.settings.armatureHeaderOverlay : this.armatureHeaderOverlay = false;\r\n\r\n this.settings.displayLogo ? this.displayLogo = this.settings.displayLogo : this.displayLogo = false;\r\n this.settings.logoUrl ? this.logoUrl = this.settings.logoUrl : this.logoUrl = './assets/logos/logo.svg';\r\n this.settings.logoAltText ? this.logoAltText = this.settings.logoAltText : this.logoAltText = 'the header logo';\r\n\r\n this.settings.displayLogoText ? this.displayLogoText = this.settings.displayLogoText : this.displayLogoText = false;\r\n this.settings.headerLogoText ? this.headerLogoText = this.settings.headerLogoText : this.headerLogoText = 'Softheon';\r\n\r\n this.settings.displayDropDownMenu ? this.displayDropDownMenu = this.settings.displayDropDownMenu : this.displayDropDownMenu = false;\r\n this.settings.dropDownMenuSRText ? this.dropDownMenuSRText = this.settings.dropDownMenuSRText : this.dropDownMenuSRText = 'Header Dropdown Menu';\r\n this.settings.dropDownAriaText ? this.dropDownAriaText = this.settings.dropDownAriaText : this.dropDownAriaText = 'Header Dropdown Menu button icon';\r\n this.settings.headerDropDownIcon ? this.headerDropDownIcon = this.settings.headerDropDownIcon : this.headerDropDownIcon = 'fad fa-user-circle';\r\n this.settings.darkThemeText = this.settings.darkThemeText || 'Dark Theme';\r\n this.setHeaderThemeSettings();\r\n this.headerLanguageSettings = this.settings.languageSettings;\r\n\r\n this.externalLinks.set(this.settings.externalLinks || []);\r\n\r\n // set up oauth only when configs and issuer are provided\r\n if (this.authSettings && this.authSettings.issuer) {\r\n this.authorizationService.initializeAuthSettings(this.authSettings);\r\n this.authorizationService.isLoggedIn$.subscribe(value => {\r\n this.isLoggedIn = value;\r\n if (value) {\r\n this.userName = this.authorizationService.userName();\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the them of the application\r\n * @param event The event\r\n */\r\n public toggleTheme(event: MatSlideToggleChange): void {\r\n // WIP: different feature\r\n }\r\n\r\n /**\r\n * Authorize User.\r\n */\r\n public authorizeUser(): void {\r\n this.authorizationService.authorizeUser();\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-header-${variable}`, color);\r\n }\r\n\r\n /** Sets the header theme settings */\r\n private setHeaderThemeSettings(): void {\r\n // Super Header Settings\r\n this.settings.displaySuperHeader ? this.displaySuperHeader = this.settings.displaySuperHeader : this.displaySuperHeader = false;\r\n this.themeSettings && this.themeSettings.superHeaderColor\r\n ? this.superHeaderColor = this.themeSettings.superHeaderColor : this.superHeaderColor = '#000';\r\n\r\n // Header Theme Settings\r\n this.themeSettings && this.themeSettings.superHeaderColor ? this.headerColor = this.themeSettings.headerColor : this.headerColor = '#fff';\r\n this.headerColor = this.themeSettings.headerColor || '#fff';\r\n this.themeSettings && this.themeSettings.superHeaderColor ? this.iconColor = this.themeSettings.iconColor : this.iconColor = '#4DB6AC';\r\n this.themeSettings && this.themeSettings.superHeaderColor ?\r\n this.headerDropShadow = this.themeSettings.headerDropShadow : this.headerDropShadow = true;\r\n this.headerDropShadow = this.themeSettings.headerDropShadow == undefined ? true : this.themeSettings.headerDropShadow;\r\n\r\n this.themeSettings.borderBottomColor = this.themeSettings.borderBottomColor || '';\r\n this.themeSettings.borderBottomSize = this.themeSettings.borderBottomSize || '0px';\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"displaySuperHeader\">\r\n <div class=\"sof-super-header\" [ngStyle]=\"{'background-color' : superHeaderColor}\">\r\n <ng-content select=\"[sof-ar-super-header]\"></ng-content>\r\n </div>\r\n</ng-container>\r\n<header>\r\n <mat-toolbar class=\"sof-ar-header\" [class.sof-ar-header-shadow]=\"headerDropShadow\"\r\n [ngStyle]=\"{'height.px': settings?.headerStyles?.height, background: headerColor, 'border-bottom': themeSettings.borderBottomSize + ' solid ' + themeSettings.borderBottomColor }\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.headerStyles?.heightMobile || 64, background: headerColor, 'border-bottom': themeSettings.borderBottomSize + ' solid ' + themeSettings.borderBottomColor }\">\r\n <div class=\"sof-ar-header--left\"\r\n [class.sof-ar-toggle-navigation]=\"(mobileQuery.matches && (armatureNavigation || armatureHeaderOverlay)) || settings?.createSpaceForNavToggle\">\r\n <!-- external links -->\r\n @if(externalLinks().length) {\r\n <button class=\"external-link-button\" mat-button [matMenuTriggerFor]=\"menu\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <i class=\"ph ph-dots-nine external-link-button\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div fxLayout=\"row wrap\" class=\"external-link-container\">\r\n @for(link of externalLinks(); track link.translateKey) {\r\n <a mat-menu-item fxLayout=\"column\" fxFlex=\"auto\" fxLayoutAlign=\"center start\" href=\"{{link.uri}}\" target=\"_blank\" [matTooltip]=\"(link.iconAltTextTranslateKey | translate)\">\r\n @if(!!link.icon || !!link.logo) {\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n @if(!!link.icon) {\r\n <i class=\"{{link.icon}} external-link-icon\"></i>\r\n }\r\n @else if(!!link.logo){\r\n <img src=\"{{link.logo}}\" alt=\"{{link.iconAltTextTranslateKey | translate}}\" width=\"32px\" height=\"32px\" />\r\n }\r\n </div>\r\n }\r\n @if(!!link.translateKey) {\r\n <div fxFlex=\"auto\" class=\"link-text-container\">\r\n {{link.translateKey | translate}}\r\n </div>\r\n }\r\n </a>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n <!-- Logo Image -->\r\n <ng-container *ngIf=\"displayLogo\">\r\n <ng-container *ngIf=\"settings?.logoRouterLinkPath === 'internal'; else external\">\r\n <a [routerLink]=\"settings?.logoRouterLink\">\r\n <img class=\"sof-ar-header-logo\" [src]=\"logoUrl\" alt=\"{{logoAltText | translate}}\"\r\n [ngStyle]=\"{'height.px': settings?.logoStyles?.height, 'width.px': settings?.logoStyles?.width, 'max-width': settings?.logoStyles?.width + 'px' || '100%'}\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.logoStyles?.heightMobile, 'width.px': settings?.logoStyles?.widthMobile, 'max-width': settings?.logoStyles?.widthMobile + 'px' || '100%'}\" />\r\n </a>\r\n </ng-container>\r\n <ng-template #external>\r\n <a [href]=\"settings?.logoRouterLink\"><img class=\"sof-ar-header-logo\" [src]=\"logoUrl\"\r\n alt=\"{{logoAltText | translate}}\"\r\n [ngStyle]=\"{'height.px': settings?.logoStyles?.height, 'width.px': settings?.logoStyles?.width, 'max-width': settings?.logoStyles?.width + 'px' || '100%'}\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.logoStyles?.heightMobile, 'width.px': settings?.logoStyles?.widthMobile, 'max-width': settings?.logoStyles?.widthMobile + 'px' || '100%'}\" />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <!-- Logo Text -->\r\n <ng-container *ngIf=\"displayLogoText\">\r\n <p class=\"sof-ar-header-logo-text\">{{headerLogoText}}</p>\r\n </ng-container>\r\n <!-- NG-Content Left -->\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </div>\r\n <div class=\"sof-ar-header--center\">\r\n <!-- NG-Content Center -->\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </div>\r\n <div class=\"sof-ar-header--right\" fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\">\r\n <!-- NG-Content Right -->\r\n <span fxFlex=\"auto 0 1\" [fxHide.lt-sm]=\"!armatureNavigation && armatureHeaderOverlay\">\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </span>\r\n <div fxFlex=\"auto 0 1\" *ngIf=\"displayDropDownMenu\">\r\n <button id=\"sof-ar-header-btn-dropdown\" mat-icon-button [disableRipple]=\"true\"\r\n [matMenuTriggerFor]=\"sofArHeaderMenu\" [attr.aria-label]=\"dropDownAriaText | translate\">\r\n <span [style.color]=\"iconColor\">\r\n <i class=\"{{headerDropDownIcon}}\"></i>\r\n <span class=\"sr-only\">{{dropDownMenuSRText | translate}}</span>\r\n </span>\r\n </button>\r\n <mat-menu #sofArHeaderMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <!-- NG-Content Menu -->\r\n <ng-content select=\"[sof-ar-header-menu]\"></ng-content>\r\n </mat-menu>\r\n </div>\r\n <!-- Language button -->\r\n <div fxFlex=\"auto 0 1\"\r\n *ngIf=\"headerLanguageSettings?.displayLanguageOptions && headerLanguageSettings?.languages?.length > 2 && !mobileQuery.matches\">\r\n <button id=\"sof-ar-header-lang-dropdown\" mat-flat-button class=\"sof-flat-button\" color=\"primary\"\r\n [matMenuTriggerFor]=\"headerLanguageMenu\" [attr.aria-label]=\"headerLanguageSettings.buttonText | translate\">\r\n <span>\r\n <i class=\"far fa-globe language-globe\"></i>\r\n {{headerLanguageSettings.buttonText | translate}}\r\n </span>\r\n </button>\r\n <mat-menu #headerLanguageMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <button mat-menu-item *ngFor=\"let lang of headerLanguageSettings.languages\" (click)=\"setLanguage$.emit(lang)\"\r\n id=\"apply-lang-btn-{{lang}}\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n <div fxFlex=\"auto\">\r\n {{ lang | translate }}\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <i *ngIf=\"currentLang === lang\" class=\"fad fa-check selected-language-icon\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n <div\r\n *ngIf=\"headerLanguageSettings?.displayLanguageOptions && headerLanguageSettings?.languages?.length === 2 && !mobileQuery.matches\">\r\n <button *ngIf=\"headerLanguageSettings.languages.length === 2\" id=\"sof-ar-header-lang-button\" mat-flat-button\r\n class=\"sof-flat-button\" color=\"primary\" (click)=\"setLanguage$.emit()\">\r\n <span fxLayoutAlign=\"center center\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n {{otherLangText | translate}}\r\n </span>\r\n </button>\r\n </div>\r\n <!-- Authorization button -->\r\n <div fxFlex=\"auto 0 1\" *ngIf=\"settings?.displayAuthInfo\">\r\n <button *ngIf=\"!isLoggedIn;else loggedIn\" id=\"sof-ar-header-btn-auth\" mat-flat-button color=\"primary\"\r\n (click)=\"authorizeUser()\" [attr.aria-label]=\"authBtnText | translate\" class=\"sof-flat-button\">\r\n {{ authBtnText | translate }}\r\n </button>\r\n <ng-template #loggedIn>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\">\r\n <div fxFlex=\"auto 0 1\" fxHide.lt-md>\r\n <button [disabled]=\"settings?.makeUsernameUnclickable\" id=\"sof-ar-logged-in-btn-dropdown\"\r\n data-privacy=\"exclude\" [matMenuTriggerFor]=\"sofArLoginMenu\" mat-stroked-button\r\n style=\"padding-left:0px !important\" ngClass=\"left-radius-10 sof-stroked-button mobile-border\"\r\n color=\"primary\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"15px\">\r\n <div fxFlex=\"46px\" fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"absent-account-image\">\r\n <div fxFlex=\"100%\">\r\n {{ userName.charAt(0).toUpperCase() }}\r\n </div>\r\n </div>\r\n <div fxShow fxHide.lt-md fxFlex=\"auto\" class=\"signed-in-name\">\r\n {{ userName }}\r\n </div>\r\n </div>\r\n </button>\r\n <!-- Login menu -->\r\n <mat-menu #sofArLoginMenu=\"matMenu\" class=\"sof-ar-mat-menu\" id=\"loginMenu\">\r\n <a mat-menu-item href=\"{{manageUrl}}\" target=\"_blank\">\r\n {{ authSettings.myAccountText | translate }}\r\n </a>\r\n <div *ngIf=\"settings.displayDarkTheme\" mat-menu-item (click)=\"$event.stopPropagation()\" disabled>\r\n <mat-slide-toggle color=\"accent\" labelPosition=\"before\" [aria-label]=\"settings.darkThemeText\"\r\n [id]=\"'dark-theme-toggle-btn'\" (change)=\"toggleTheme($event)\">\r\n {{ settings.darkThemeText + '(coming soon!)' | translate }}\r\n <!-- TODO: determine if icon is liked <i class=\"fad fa-moon-cloud dark-theme-icon\"></i> -->\r\n </mat-slide-toggle>\r\n </div>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </mat-menu>\r\n </div>\r\n <div fxFlex=\"auto 0 1\">\r\n <button id=\"sof-ar-log-out-btn\" mat-flat-button class=\"sof-flat-icon-button\" color=\"primary\" size=\"medium\"\r\n (click)=\"authorizeUser()\" [attr.aria-label]=\"authBtnText | translate\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <i fxFlex=\"100%\" class=\"fas fa-sign-out-alt\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n</header>","/** The footer configurations */\r\nexport class FooterConfig {\r\n /** True if showing pre content 1 */\r\n public showPreContent1: boolean;\r\n\r\n /** True if showing pre content 2 */\r\n public showPreContent2: boolean;\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FooterConfig } from '../../models/footer-config';\r\n\r\n/** The Armature Footer Component */\r\n@Component({\r\n selector: 'sof-ar-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n standalone: false\r\n})\r\nexport class ArmatureFooterComponent implements OnInit {\r\n\r\n /** The footer config */\r\n @Input() public footerConfig: FooterConfig = new FooterConfig();\r\n\r\n /** the constructor */\r\n constructor() { }\r\n\r\n /** On Init */\r\n public ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<footer role=\"contentinfo\" class=\"sof-ar-footer-container\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\" fxLayoutGap=\"10px\">\r\n <div fxFlex=\"100%\" style=\"width: 100%\" fxLayoutAlign=\"center center\" fxLayoutAlign.lt-md=\"start start\" *ngIf=\"footerConfig.showPreContent1\">\r\n <ng-content select=\"[sof-ar-footer-pre-content-1]\"></ng-content>\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" *ngIf=\"footerConfig.showPreContent1\">\r\n <hr />\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" fxLayoutAlign=\"center center\" *ngIf=\"footerConfig.showPreContent2\">\r\n <ng-content select=\"[sof-ar-footer-pre-content-2]\"></ng-content>\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" *ngIf=\"footerConfig.showPreContent2\">\r\n <hr />\r\n </div>\r\n </div>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n</footer>\r\n","import { BreakpointObserver, BreakpointState, LayoutModule } from '@angular/cdk/layout';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, Signal, ViewChild, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatSidenavContent, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { filter } from 'rxjs';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { NavigationThemeSettings } from '../../models/nav-theme.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings } from '../../models/nav.settings';\r\nimport { NavNode, SubNavNodes } from '../../models/navigation';\r\nimport { NavPanelLogo } from '../sof-navigation-panel/models/nav-panel-logo';\r\n\r\n@Component({\r\n selector: 'sof-nav-b2b',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n RouterModule,\r\n TranslateModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n MatMenuModule\r\n ],\r\n providers: [\r\n LayoutModule\r\n ],\r\n templateUrl: './b2b-nav.component.html',\r\n styleUrl: './b2b-nav.component.scss'\r\n})\r\nexport class B2bNavComponent implements OnInit {\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** The router */\r\n private router: Router = inject(Router);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** The brand logo in the footer of the navigation panel */\r\n public brandLogo: NavPanelLogo;\r\n\r\n /**\r\n * Should scroll to top on `NavigationEnd` event?\r\n * @default true\r\n*/\r\n @Input() private scrollToTopOnNavigationEndEvent: boolean = true;\r\n\r\n /**\r\n * Is the nav panel open\r\n * @note this is needed to pass panel opened state to the SofHeaderPortalComponent\r\n */\r\n @Output() isNavPanelOpenedEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /**\r\n * Main content for scroll position\r\n * @note this is the element which has the apps 'main' scrollbar.\r\n */\r\n @ViewChild(MatSidenavContent) sidenavContent!: MatSidenavContent;\r\n\r\n /** Component Input - the navigation data */\r\n @Input() public navigationData: NavNode[];\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public settings: NavigationSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public advancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public themeSettings: NavigationThemeSettings = {};\r\n\r\n /** Component Input - the navigation language settings */\r\n @Input() public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** logOut text **/\r\n @Input() public logOutText: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The mat menu trigger */\r\n @ViewChild('navMenuTrigger') public trigger: MatMenuTrigger;\r\n\r\n /** True when the navigation is open */\r\n public isNavOpen: boolean = true;\r\n\r\n /** The selected navigation node */\r\n public currentMenuNode: NavNode = undefined;\r\n\r\n /** The selected nav node */\r\n public selectedNodeIndex: number = undefined;\r\n\r\n /** The selected sub nav node */\r\n public selectedSubNodeIndex: number = undefined;\r\n\r\n /** On Init - Initialize the settings */\r\n public ngOnInit(): void {\r\n this.initSettings();\r\n if (this.scrollToTopOnNavigationEndEvent) {\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd)\r\n ).subscribe((e: NavigationEnd) => {\r\n this.scrollToTop();\r\n this.listenForRouteChanges(e);\r\n });\r\n }\r\n }\r\n\r\n /** Shrinks the navigation */\r\n public shrinkNav(): void {\r\n this.isNavOpen = !this.isNavOpen;\r\n }\r\n\r\n /**\r\n * Opens the menu for the navigation\r\n * @param node The node\r\n * @param event The event\r\n * @returns void\r\n */\r\n public openMenu(node: NavNode, event: MouseEvent, index: number): void {\r\n if (this.isNavOpen || !node.subNodes || !node.subNodes.length || this.selectedNodeIndex === index) {\r\n return;\r\n }\r\n this.currentMenuNode = node;\r\n const button = document.getElementById('navMenuTrigger');\r\n button.style.position = 'fixed';\r\n button.style.top = event.pageY - 30 + 'px';\r\n button.style.left = event.pageX + 30 + 'px';\r\n this.trigger.openMenu();\r\n }\r\n\r\n /**\r\n * Initializes the nav panel settings, defaults will be set if `null` or `undefined`\r\n * @note The 'nullish coalescing assignment operator' `??=` assigns defaults for `boolean` and `number` types,\r\n * for `number` types this will allow for `0` to be accepted. For a `string`, use 'logical OR assignment' `||=` operator,\r\n * as this will also prevent empty strings `\" \"`.\r\n * @see `??=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment#using_nullish_coalescing_assignment)}\r\n * @see `||=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment#try_it)}\r\n */\r\n private initSettings(): void {\r\n this.settings ??= {};\r\n this.settings.allowNavToggle ??= true;\r\n this.initAdvancedSettings();\r\n this.initBasicSettings();\r\n this.initThemeSettings();\r\n }\r\n\r\n /**\r\n * Scrolls to the top of page\r\n * @note using `window.scrollTo` will not work if using this component as the main scrollbar does not live on the window level.\r\n * Configuring `scrollPositionRestoration` in the router module will not work either.\r\n */\r\n scrollToTop(): void {\r\n if (this.sidenavContent) {\r\n this.sidenavContent.scrollTo({ top: 0 });\r\n }\r\n }\r\n\r\n /** Listens for route changes */\r\n private listenForRouteChanges(e: NavigationEnd): void {\r\n const flattenSubNodes = new Map<string, SubNavNodes>();\r\n\r\n this.navigationData.forEach((n, index) => {\r\n if (n.subNodes?.length) {\r\n n.subNodes.forEach((sn, sIndex) => {\r\n flattenSubNodes.set(`${index}:${sIndex}`, sn);\r\n });\r\n }\r\n });\r\n\r\n flattenSubNodes.forEach((v, k) => {\r\n if (e.url.startsWith(v.route)) {\r\n const split = k.split(':');\r\n this.selectedNodeIndex = +split[0];\r\n this.selectedSubNodeIndex = +split[1];\r\n }\r\n });\r\n }\r\n\r\n /** Initializes the advanced nav settings */\r\n private initAdvancedSettings(): void {\r\n this.advancedSettings.topGapDesktop = this.advancedSettings.topGapDesktop || 0;\r\n this.advancedSettings.topGapMobile = this.advancedSettings.topGapMobile || this.settings.headerHeight;\r\n this.advancedSettings.marginTopDesktop = this.advancedSettings.marginTopDesktop || 0;\r\n this.advancedSettings.marginTopMobile = this.advancedSettings.marginTopMobile || 0;\r\n }\r\n\r\n /** Initializes the nav theme settings */\r\n private initThemeSettings(): void {\r\n this.themeSettings.contentBgColor ? this.setThemeColor('content-bg-color', this.themeSettings.contentBgColor) : undefined;\r\n this.themeSettings.fontColor ? this.setThemeColor('font-color', this.themeSettings.fontColor) : undefined;\r\n this.themeSettings.fontColor = this.themeSettings.fontColor || '#000';\r\n this.themeSettings.mobileBgColor = this.themeSettings.mobileBgColor || '#ffffff';\r\n this.themeSettings.bgGradientColor1 ? this.setThemeColor('bg-gradient-color-1', this.themeSettings.bgGradientColor1) : undefined;\r\n this.themeSettings.bgGradientColor2 ? this.setThemeColor('bg-gradient-color-2', this.themeSettings.bgGradientColor2) : undefined;\r\n this.themeSettings.borderRightColor ? this.setThemeColor('border-right-color', this.themeSettings.borderRightColor) : undefined;\r\n this.themeSettings.listBorderColor ? this.setThemeColor('list-border-color', this.themeSettings.listBorderColor) : undefined;\r\n this.themeSettings.highlightGradient1 ? this.setThemeColor('highlight-gradient-1', this.themeSettings.highlightGradient1) : undefined;\r\n this.themeSettings.highlightGradient2 ? this.setThemeColor('highlight-gradient-2', this.themeSettings.highlightGradient2) : undefined;\r\n this.themeSettings.subHighlightBorderColor ?\r\n this.setThemeColor('sub-highlight-border-color', this.themeSettings.subHighlightBorderColor) : undefined;\r\n this.themeSettings.subHighlightBgColor ?\r\n this.setThemeColor('sub-highlight-bg-color', this.themeSettings.subHighlightBgColor) : undefined;\r\n }\r\n\r\n /** Initializes the basic nav settings */\r\n private initBasicSettings(): void {\r\n this.settings.fontAwesomeMenuIcon = this.settings.fontAwesomeMenuIcon || 'fas fa-angle-double-left';\r\n this.settings.fontAwesomeMenuIconClosed = this.settings.fontAwesomeMenuIconClosed || 'fas fa-angle-double-right';\r\n this.settings.allowNavToggle = this.settings.allowNavToggle == null ? true : this.settings.allowNavToggle;\r\n this.settings.headerHeight = this.settings.headerHeight || 60;\r\n this.settings.menuButtonSRText = this.settings.menuButtonSRText || 'Menu Button';\r\n this.settings.menuStyle = this.settings.menuStyle || 'static';\r\n this.settings.displayNumbers = this.settings.displayNumbers == null ? true : this.settings.displayNumbers;\r\n this.settings.progressSectionCompleteIcon = this.settings.progressSectionCompleteIcon || 'fas fa-check-circle';\r\n this.settings.progressSectionFutureIcon = this.settings.progressSectionFutureIcon || 'far fa-circle';\r\n this.settings.progressSectionCurrentIcon = this.settings.progressSectionCurrentIcon || 'fas fa-circle';\r\n this.settings.progressMenuCompleteIcon = this.settings.progressMenuCompleteIcon || 'far fa-check';\r\n this.settings.showProgressBar = this.settings.showProgressBar == null ? true : this.settings.showProgressBar\r\n this.settings.sideNavWidthDesktop = this.settings.sideNavWidthDesktop || '350';\r\n this.settings.sideNavWidthMobile = this.settings.sideNavWidthMobile || '350';\r\n this.settings.overrideNavigation = this.settings.overrideNavigation || false;\r\n this.settings.progressMenuWidth = this.settings.progressMenuWidth || '280';\r\n this.settings.useCustomMobileFooter = this.settings.useCustomMobileFooter != null ? this.settings.useCustomMobileFooter : false;\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-nav-${variable}`, color);\r\n }\r\n}\r\n","<div class=\"sof-nav-panel-container\" style=\"top: 64px\">\r\n <mat-sidenav-container>\r\n <mat-sidenav #navPanel class=\"sof-nav-panel\" [ngClass]=\"{'sof-nav-panel-container-collapsed': !isNavOpen}\"\r\n [opened]=\"true\" [mode]=\"isSmallScreen().matches ? 'over' : 'side'\">\r\n\r\n <ng-content select=\"[sof-ar-nav-header]\"></ng-content>\r\n\r\n <nav [attr.aria-label]=\"'main'\" [style.paddingBottom.px]=\"!!brandLogo ? 0 : 40\" fxLayout=\"column\"\r\n style=\"height: 100%\">\r\n <ul class=\"sof-nav-panel-list\" [class.mobile]=\"isSmallScreen().matches\">\r\n @for (node of navigationData; track $index) {\r\n <li fxFlex=\"auto\" class=\"sof-nav-panel-list-item\"\r\n [class.has-subnodes]=\"node.subNodes?.length && isNavOpen\">\r\n @if (!node.route) {\r\n <div (click)=\"openMenu(node, $event, $index)\" class=\"sof-nav-panel-link primary\" matTooltip=\"{{node.text | translate}}\" matTooltipPosition=\"right\">\r\n <i [ngClass]=\"{'non-link-icon-collapsed': !isNavOpen}\" class=\"{{node.fontAwesomeIcon}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span *ngIf=\"isNavOpen\">{{node.text| translate}}</span>\r\n </div>\r\n }@else {\r\n <a (click)=\"openMenu(node, $event, $index)\" class=\"sof-nav-panel-link\" [routerLink]=\"node.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\" matTooltip=\"{{node.text | translate}}\" matTooltipPosition=\"right\">\r\n <i class=\"{{node.fontAwesomeIcon}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span *ngIf=\"isNavOpen\" class=\"sof-nav-panel-link-label primary\">{{node.text |\r\n translate}}</span>\r\n </a>\r\n }\r\n @if(isNavOpen || $index === selectedNodeIndex) {\r\n <ul class=\"sof-nav-panel-list sub-list\">\r\n @for (subNode of node.subNodes; track $index) {\r\n <li>\r\n <a (click)=\"isSmallScreen().matches ? navPanel.close() : null\"\r\n class=\"sof-nav-panel-link sof-sub-nav-panel-link\" [routerLink]=\"subNode.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\" matTooltip=\"{{subNode.text | translate}}\" matTooltipPosition=\"right\">\r\n <span class=\"sof-nav-panel-link-label\">\r\n <i class=\"{{subNode.icon || 'ph ph-files'}}\"></i>\r\n <span *ngIf=\"isNavOpen\" style=\"padding-left: 8px\">{{subNode.text | translate}} </span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n @if (brandLogo) {\r\n <div class=\"logo\" m-t-auto>\r\n <img [src]=\"brandLogo.url\" [alt]=\"brandLogo.altText\">\r\n </div>\r\n }\r\n </ul>\r\n <button id=\"navMenuTrigger\" #navMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"navMenu\"\r\n style=\"position: absolute; height: 1px; width: 1px; opacity: 0;\"></button>\r\n <mat-menu #navMenu=\"matMenu\" xPosition=\"after\">\r\n @if(currentMenuNode && currentMenuNode.subNodes?.length) {\r\n <a mat-menu-item [routerLink]=\"currentMenuNode.route\" routerLinkActive=\"sof-nav-panel-link-active\">\r\n <span class=\"sof-nav-panel-link-label menu-text bold\">{{currentMenuNode.text | translate}} </span>\r\n </a>\r\n @for(subnode of currentMenuNode.subNodes; track $index) {\r\n <a mat-menu-item [routerLink]=\"subnode.route\" routerLinkActive=\"sof-nav-panel-link-active\">\r\n <span class=\"sof-nav-panel-link-label menu-text\">{{subnode.text | translate}} </span>\r\n </a>\r\n }\r\n }\r\n </mat-menu>\r\n <div fxFlex=\"auto\" style=\"width: 100%\" fxLayoutAlign=\"end end\" fxLayout=\"row\">\r\n <button fxFlex=\"40px\" id=\"sof-ar-nav-btn-menu\" aria-label=\"Menu Button\" mat-icon-button\r\n [disableRipple]=\"true\" class=\"sof-ar-nav-menu-btn\" (click)=\"shrinkNav()\"\r\n [class.hidden]=\"!(settings.allowNavToggle) || settings.hideNavigation\">\r\n <span *ngIf=\"isNavOpen; else closedIcon\" aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIcon}} menu-icon\"></i>\r\n </span>\r\n <ng-template #closedIcon>\r\n <span aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIconClosed}} menu-icon\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"sr-only\">{{settings.menuButtonSRText | translate}}</span>\r\n </button>\r\n </div>\r\n </nav>\r\n </mat-sidenav>\r\n <mat-sidenav-content [ngClass]=\"{'nav-content-collapsed': !isNavOpen}\">\r\n <ng-content sof-ar-nav-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HeaderAuthSettings } from '../../../header/models/header-auth.settings';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { HeaderThemeSettings } from '../../../header/models/header-theme.settings';\r\nimport { HeaderSettings } from '../../../header/models/header.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings, NavigationThemeSettings, NavNode } from '../../../navigation/navigation-api';\r\nimport { routeToPreLoginRoute } from '../../functions/route-to-pre-login-route';\r\nimport { BaseConfig } from '../../models/base-config';\r\nimport { BaseConfigService } from '../../services/base-config.service';\r\nimport { FederatedModuleService } from '../../services/federated-module.service';\r\n\r\n/** The app template component */\r\n@Component({\r\n selector: 'sof-ar-app-template',\r\n templateUrl: './app-template.component.html',\r\n styleUrls: ['./app-template.component.scss'],\r\n standalone: false\r\n})\r\nexport class AppTemplateComponent implements OnInit {\r\n\r\n /** The config observable */\r\n public config$: Observable<BaseConfig>;\r\n\r\n /** The header settings */\r\n public headerSettings: HeaderSettings = {};\r\n\r\n /** The header theme settings */\r\n public headerThemeSettings: HeaderThemeSettings = {};\r\n\r\n /** The header auth settings */\r\n public headerAuthSettings: HeaderAuthSettings = {} as any;\r\n\r\n /** the navigation theme settings */\r\n public navigationTheme: NavigationThemeSettings = {};\r\n\r\n /** The navigation settings */\r\n public navigationSettings: NavigationSettings = {};\r\n\r\n /** The navigation nodes */\r\n public navigationNodes: Array<NavNode> = [];\r\n\r\n /** The navigation advanced settings */\r\n public navigationAdvancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** The language settings */\r\n public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** The current language */\r\n public currentLang: string;\r\n\r\n /** The log out text */\r\n public get logOutText(): string {\r\n return this.headerAuthSettings.logOutText;\r\n }\r\n\r\n /** gets the non used language */\r\n public get otherLangText(): string {\r\n return this.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** True when the application is running as a federated module */\r\n public isFederatedModule: boolean = false;\r\n\r\n /**\r\n * Constructs the component\r\n * @param configService The config service\r\n * @param translateService The translate service\r\n * @param federatedModuleService The federated module service\r\n * @param router The router\r\n * @param oauthService The OAuth service\r\n */\r\n constructor(\r\n private readonly configService: BaseConfigService,\r\n private readonly translateService: TranslateService,\r\n private readonly federatedModuleService: FederatedModuleService,\r\n private readonly router: Router,\r\n private readonly oauthService: OAuthService\r\n ) {\r\n }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.isFederatedModule = this.federatedModuleService.isFederatedModule;\r\n this.config$ = this.configService.config$;\r\n this.setDefaults();\r\n this.configService.config$.subscribe(config => {\r\n \r\n if (config && config.oAuthSettings.preserveRequestedRoute && this.oauthService.hasValidAccessToken()) {\r\n routeToPreLoginRoute(this.router);\r\n }\r\n // object assign is used here so the header doesn't have to re render with the new object reference\r\n // header\r\n Object.assign(this.headerSettings, config?.header?.settings);\r\n Object.assign(this.headerThemeSettings, config?.header?.theme);\r\n Object.assign(this.headerAuthSettings, config?.oAuthSettings);\r\n\r\n // navigation\r\n this.navigationNodes = config?.navigation?.nodes || this.getExampleNavNodes();\r\n Object.assign(this.navigationSettings, config?.navigation?.settings);\r\n Object.assign(this.navigationAdvancedSettings, config?.navigation?.advanced);\r\n this.assignDefaultNavTheme(config);\r\n Object.assign(this.navigationTheme, config?.navigation?.theme);\r\n\r\n // set dependent value\r\n this.headerSettings.armatureNavigation = !this.navigationSettings.hideNavigation;\r\n \r\n if (this.navigationSettings.menuStyle === 'progress' || this.navigationSettings.hideNavigation) {\r\n this.headerSettings.createSpaceForNavToggle = this.navigationSettings.allowNavToggle = false;\r\n }\r\n\r\n // Set both navigation toggle settings to true if either is true\r\n if (this.headerSettings.createSpaceForNavToggle || this.navigationSettings.allowNavToggle) {\r\n this.headerSettings.createSpaceForNavToggle = this.navigationSettings.allowNavToggle = true;\r\n }\r\n\r\n this.setLanguageOptions();\r\n });\r\n }\r\n\r\n /**\r\n * Applies the language to the translate service\r\n * @param lang the language\r\n */\r\n public applyLanguage(lang?: string): void {\r\n if (!lang) {\r\n lang = this.otherLangText;\r\n }\r\n this.translateService.use(lang);\r\n this.translateService.currentLang = lang;\r\n this.currentLang = lang;\r\n }\r\n\r\n /** Set the language options */\r\n private setLanguageOptions(): void {\r\n if (this.headerSettings.languageSettings) {\r\n Object.assign(this.languageSettings, this.headerSettings.languageSettings);\r\n }\r\n\r\n this.languageSettings.defaultLanguage = this.languageSettings.defaultLanguage || 'en';\r\n this.languageSettings.displayLanguageOptions = this.languageSettings.displayLanguageOptions || false;\r\n this.languageSettings.languages = this.languageSettings.languages || ['en', 'es'];\r\n this.languageSettings.buttonText = this.languageSettings.buttonText || 'Languages';\r\n\r\n this.translateService.addLangs(this.languageSettings.languages);\r\n this.currentLang = this.translateService.currentLang;\r\n this.headerSettings.languageSettings = this.languageSettings;\r\n }\r\n\r\n private setDefaults(): void {\r\n // header\r\n this.headerSettings = {\r\n armatureNavigation: true,\r\n createSpaceForNavToggle: true,\r\n displayLogo: true,\r\n logoUrl: 'https://softheoncdnstorage.blob.core.windows.net/images/softheon/logo.svg',\r\n logoAltText: 'the example portal header logo',\r\n displayLogoText: false,\r\n displayDropDownMenu: false,\r\n dropDownAriaText: 'the header drop down menu button icon',\r\n dropDownMenuSRText: 'the header account button drop down options',\r\n displayAuthInfo: true,\r\n languageSettings: {\r\n displayLanguageOptions: true\r\n }\r\n };\r\n this.headerThemeSettings = {\r\n headerColor: '',\r\n headerDropShadow: true,\r\n authorizationButtonColor: 'rgb(11, 81, 156)',\r\n authorizationButtonBackground: 'rgb(199, 219, 240)'\r\n };\r\n this.headerAuthSettings = {\r\n clientId: '',\r\n issuer: '',\r\n scope: 'openid profile',\r\n logInText: 'SIGN IN',\r\n logOutText: 'SIGN OUT',\r\n redirectUri: 'http://localhost:4200/',\r\n skipIssuerCheck: true,\r\n postLogOutUrl: 'http://localhost:4200/',\r\n loginUrl: '',\r\n returnRoute: '',\r\n timeoutFactor: 9,\r\n myAccountText: 'My Account',\r\n authSetOnStartup: false,\r\n responseType: 'code'\r\n };\r\n\r\n // navigation\r\n this.navigationSettings = {\r\n version: 'v1',\r\n mainMenuText: 'MAIN MENU',\r\n headerHeight: 64,\r\n menuButtonSRText: 'Navigation Menu Button',\r\n maxContentWidthDesktop: 100,\r\n maxContentWidthMobile: 100\r\n };\r\n }\r\n\r\n /** Gets the example navigation nodes */\r\n private getExampleNavNodes(): Array<NavNode> {\r\n return [\r\n {\r\n text: 'demo.nav_1',\r\n fontAwesomeIcon: 'fad fa-home',\r\n route: '/overview',\r\n subNodes: []\r\n },\r\n {\r\n text: 'demo.nav_2',\r\n fontAwesomeIcon: 'fad fa-file-alt',\r\n route: '/documents',\r\n subNodes: [\r\n {\r\n text: 'demo.nav_2a',\r\n route: '/documents/invoice'\r\n },\r\n {\r\n text: 'demo.nav_2b',\r\n route: '/documents/notice'\r\n },\r\n {\r\n text: 'demo.nav_2c',\r\n route: '/tax'\r\n }\r\n ]\r\n },\r\n {\r\n text: 'PAYMENTS',\r\n fontAwesomeIcon: 'fad fa-dollar-sign',\r\n subNodes: [\r\n {\r\n text: 'Make a Payment',\r\n route: '/payment'\r\n },\r\n {\r\n text: 'Autopay',\r\n route: '/autopay'\r\n },\r\n {\r\n text: 'Scheduled Payments',\r\n route: '/scheduled'\r\n },\r\n {\r\n text: 'Payment History',\r\n route: '/history'\r\n },\r\n {\r\n text: 'My Payment Methods',\r\n route: '/payment-methods'\r\n }\r\n ]\r\n },\r\n {\r\n text: 'SERVICE REQUEST',\r\n fontAwesomeIcon: 'fad fa-hands-helping',\r\n route: '/service-requests',\r\n subNodes: []\r\n },\r\n {\r\n text: 'PAPERLESS SETTINGS',\r\n fontAwesomeIcon: 'fad fa-leaf-heart',\r\n route: '/paperless',\r\n subNodes: []\r\n },\r\n {\r\n text: 'FAQs',\r\n fontAwesomeIcon: 'fad fa-question',\r\n route: '/faqs',\r\n subNodes: []\r\n },\r\n {\r\n text: 'Language Help',\r\n fontAwesomeIcon: 'far fa-language',\r\n route: '/language-help',\r\n subNodes: []\r\n }];\r\n }\r\n\r\n /** Assigns the default navigation theme */\r\n private assignDefaultNavTheme(config: BaseConfig): void {\r\n const defaultNavTheme = {\r\n bgGradientColor1: '#fff',\r\n bgGradientColor2: '#fff',\r\n borderRightColor: 'transparent',\r\n contentBgColor: '#ececec',\r\n fontColor: '#000',\r\n highlightGradient1: 'rgb(199, 219, 240)',\r\n highlightGradient2: 'rgb(11, 81, 156)',\r\n listBorderColor: '#CFD8DC',\r\n subHighlightBgColor: 'rgba(255,255,255, .20)',\r\n subHighlightBorderColor: '#00ACC1'\r\n };\r\n Object.assign(this.navigationTheme, defaultNavTheme);\r\n }\r\n\r\n}\r\n","<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n@if(navigationSettings.version === 'v2'){\r\n<sof-nav-b2b *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-nav-b2b>\r\n}\r\n@else {\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n}","/** The start up abstract class */\r\nexport abstract class AbstractStartupService {\r\n /** The load function */\r\n public abstract load(): Promise<any>;\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ThemePaletteColorsModel, ThemePaletteModel } from '../../core/client-generated/model/models';\r\n\r\n/** The color palette constant */\r\nconst COLOR_PALETTE = 'color';\r\n\r\n/** The contrast palette constant */\r\nconst CONTRAST_PALETTE = 'contrast';\r\n\r\n/** The Theme Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n\r\n private readonly document: Document = inject(DOCUMENT);\r\n\r\n /**\r\n * Initializes the palette\r\n * @param themeConfig The theme configurations\r\n */\r\n public initPalette(themeConfig: ThemePaletteModel): void {\r\n if (themeConfig) {\r\n // Setting up primary color & contrast palettes\r\n const primaryColor = themeConfig.primaryColor;\r\n const primaryContrast = themeConfig.primaryContrast;\r\n if (primaryColor && JSON.stringify(primaryColor) !== '{}') {\r\n this.updatePalette('primary', COLOR_PALETTE, primaryColor);\r\n }\r\n if (primaryContrast && JSON.stringify(primaryContrast) !== '{}') {\r\n this.updatePalette('primary', CONTRAST_PALETTE, primaryContrast);\r\n }\r\n // Setting up accent color & contrast palettes\r\n const accentColor = themeConfig.accentColor;\r\n const accentContrast = themeConfig.accentContrast;\r\n if (accentColor && JSON.stringify(accentColor) !== '{}') {\r\n this.updatePalette('accent', COLOR_PALETTE, accentColor);\r\n }\r\n if (accentContrast && JSON.stringify(accentContrast) !== '{}') {\r\n this.updatePalette('accent', CONTRAST_PALETTE, accentContrast);\r\n }\r\n // Setting up warning color & contrast palettes\r\n const warningColor = themeConfig.warningColor;\r\n const warningContrast = themeConfig.warningContrast;\r\n if (warningColor && JSON.stringify(warningColor) !== '{}') {\r\n this.updatePalette('warn', COLOR_PALETTE, warningColor);\r\n }\r\n if (warningContrast && JSON.stringify(warningContrast) !== '{}') {\r\n this.updatePalette('warn', CONTRAST_PALETTE, warningContrast);\r\n }\r\n this.initExtendedPalettes(themeConfig);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the theme\r\n * @param paletteName Palette name\r\n * @param paletteType Palette type\r\n * @param palette Palette values\r\n */\r\n public updatePalette(paletteName: string, paletteType: string, palette: ThemePaletteColorsModel): void {\r\n if (paletteType == COLOR_PALETTE) {\r\n this.updateColor(paletteName, '50', palette.fifty);\r\n this.updateColor(paletteName, '100', palette.oneHundred);\r\n this.updateColor(paletteName, '200', palette.twoHundred);\r\n this.updateColor(paletteName, '300', palette.threeHundred);\r\n this.updateColor(paletteName, '400', palette.fourHundred);\r\n this.updateColor(paletteName, '500', palette.fiveHundred);\r\n this.updateColor(paletteName, '600', palette.sixHundred);\r\n this.updateColor(paletteName, '700', palette.sevenHundred);\r\n this.updateColor(paletteName, '800', palette.eightHundred);\r\n this.updateColor(paletteName, '900', palette.nineHundred);\r\n this.updateColor(paletteName, 'A50', palette.a50);\r\n this.updateColor(paletteName, 'A100', palette.a100);\r\n this.updateColor(paletteName, 'A200', palette.a200);\r\n this.updateColor(paletteName, 'A300', palette.a300);\r\n this.updateColor(paletteName, 'A400', palette.a400);\r\n this.updateColor(paletteName, 'A500', palette.a500);\r\n this.updateColor(paletteName, 'A600', palette.a600);\r\n this.updateColor(paletteName, 'A700', palette.a700);\r\n this.updateColor(paletteName, 'A800', palette.a800);\r\n this.updateColor(paletteName, 'A900', palette.a900);\r\n }\r\n else if (paletteType == CONTRAST_PALETTE) {\r\n this.updateContrast(paletteName, '50', palette.fifty);\r\n this.updateContrast(paletteName, '100', palette.oneHundred);\r\n this.updateContrast(paletteName, '200', palette.twoHundred);\r\n this.updateContrast(paletteName, '300', palette.threeHundred);\r\n this.updateContrast(paletteName, '400', palette.fourHundred);\r\n this.updateContrast(paletteName, '500', palette.fiveHundred);\r\n this.updateContrast(paletteName, '600', palette.sixHundred);\r\n this.updateContrast(paletteName, '700', palette.sevenHundred);\r\n this.updateContrast(paletteName, '800', palette.eightHundred);\r\n this.updateContrast(paletteName, '900', palette.nineHundred);\r\n this.updateContrast(paletteName, 'A50', palette.a50);\r\n this.updateContrast(paletteName, 'A100', palette.a100);\r\n this.updateContrast(paletteName, 'A200', palette.a200);\r\n this.updateContrast(paletteName, 'A300', palette.a300);\r\n this.updateContrast(paletteName, 'A400', palette.a400);\r\n this.updateContrast(paletteName, 'A500', palette.a500);\r\n this.updateContrast(paletteName, 'A600', palette.a600);\r\n this.updateContrast(paletteName, 'A700', palette.a700);\r\n this.updateContrast(paletteName, 'A800', palette.a800);\r\n this.updateContrast(paletteName, 'A900', palette.a900);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the color CSS variable for the given theme\r\n * @param palette Palette to update\r\n * @param part Part number\r\n * @param value Value to replace with\r\n */\r\n public updateColor(palette: string, part: string, value: string): void {\r\n if (!value) {\r\n return;\r\n }\r\n const cssVar = `--${palette}-color-${part}-parts`;\r\n if (value.includes('#')) {\r\n const rgb = this.hexToRgb(value);\r\n this.document.documentElement.style.setProperty(`${cssVar}-rgb`, `${rgb.r}, ${rgb.g}, ${rgb.b}`);\r\n }\r\n this.document.documentElement.style.setProperty(cssVar, value);\r\n }\r\n\r\n /**\r\n * Updates the color contrast CSS variable for the given theme\r\n * @param palette Palette to update\r\n * @param part Part number\r\n * @param value Value to replace with\r\n */\r\n public updateContrast(palette: string, part: string, value: string): void {\r\n if (!value) {\r\n return;\r\n }\r\n if (value === '#000000' || value === '#000') value = '#000000de'; // updates to black with 87% opacity per design best practices ...\r\n this.document.documentElement.style.setProperty(`--${palette}-color-contrast-${part}-parts`, value);\r\n }\r\n\r\n /**\r\n * initializes the extended palettes\r\n * @param themeConfig The theme config\r\n */\r\n private initExtendedPalettes(themeConfig: ThemePaletteModel): void {\r\n // Setting up error color & contrast palettes\r\n const errorColor = themeConfig.errorColor;\r\n const errorContrast = themeConfig.errorContrast;\r\n if (errorColor && JSON.stringify(errorColor) !== '{}') {\r\n this.updatePalette('error', COLOR_PALETTE, errorColor);\r\n }\r\n if (errorContrast && JSON.stringify(errorContrast) !== '{}') {\r\n this.updatePalette('error', CONTRAST_PALETTE, errorContrast);\r\n }\r\n // Setting up info color & contrast palettes\r\n const infoColor = themeConfig.infoColor;\r\n const infoContrast = themeConfig.infoContrast;\r\n if (infoColor && JSON.stringify(infoColor) !== '{}') {\r\n this.updatePalette('info', COLOR_PALETTE, infoColor);\r\n }\r\n if (infoContrast && JSON.stringify(infoContrast) !== '{}') {\r\n this.updatePalette('info', CONTRAST_PALETTE, infoContrast);\r\n }\r\n // Setting up success color & contrast palettes\r\n const successColor = themeConfig.successColor;\r\n const successContrast = themeConfig.successContrast;\r\n if (successColor && JSON.stringify(successColor) !== '{}') {\r\n this.updatePalette('success', COLOR_PALETTE, successColor);\r\n }\r\n if (successContrast && JSON.stringify(successContrast) !== '{}') {\r\n this.updatePalette('success', CONTRAST_PALETTE, successContrast);\r\n }\r\n }\r\n\r\n /**\r\n * Converts the hex code to RGB\r\n * https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\r\n * @param hex The hex code\r\n */\r\n private hexToRgb(hex: string): {r: number, g: number, b: number} {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : undefined;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Optional, Inject } from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\r\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\r\nimport * as _ from 'lodash';\r\nimport { BehaviorSubject, lastValueFrom, Observable, throwError } from 'rxjs';\r\n\r\nimport { ThemeService } from '../../theming/services/theme.service';\r\nimport { federatedModuleConfigStorageKey, languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';\r\nimport { OidcAuthSettings } from '../models/oidc-auth-settings';\r\nimport { BaseConfigService } from '../services/base-config.service';\r\nimport { CustomAuthConfigService } from '../services/custom-auth-config.service';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { FederatedModuleService } from '../services/federated-module.service';\r\n\r\n/**\r\n * The startup service is used to call methods that should be run when initially loading the application\r\n */\r\n@Injectable(\r\n {\r\n providedIn: 'root'\r\n }\r\n)\r\nexport class Initializer {\r\n\r\n /** The configuration behavior subject */\r\n private readonly isInitializedBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** The browser window */\r\n private readonly window: Window;\r\n\r\n /** The example the subdomain substring */\r\n private readonly exampleSubdomain: string = 'example';\r\n\r\n /** The www substring for subdomain route finding */\r\n private readonly wwwSubstring: string = 'www';\r\n\r\n /** The lvh substring for subdomain route finding */\r\n private readonly lvhSubstring: string = 'lvh'\r\n\r\n /** Gets the configurations */\r\n public get isInitialized(): boolean {\r\n return this.isInitializedBs.value;\r\n }\r\n\r\n /** The configuration observable */\r\n public readonly isInitialized$: Observable<boolean>;\r\n\r\n /**\r\n * Constructs the startup service. Include any services that should be used during startup\r\n * @param http The http client\r\n * @param translateService The translate service\r\n * @param themeService The theme service\r\n * @param configService The config service\r\n * @param oAuthService The oauth service\r\n * @param router The router\r\n * @param location The location\r\n * @param federatedModuleService The federated module service\r\n * @param customAuthConfigService The custom auth config service\r\n * @param _window The window injection\r\n */\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly translateService: TranslateService,\r\n private readonly themeService: ThemeService,\r\n private readonly configService: BaseConfigService,\r\n private readonly oAuthService: OAuthService,\r\n private readonly router: Router,\r\n private readonly location: Location,\r\n private readonly federatedModuleService: FederatedModuleService,\r\n @Optional() private readonly customAuthConfigService: CustomAuthConfigService,\r\n @Optional() @Inject(WINDOW) readonly _window: any\r\n ) {\r\n this.isInitialized$ = this.isInitializedBs.asObservable();\r\n this.window = _window || window;\r\n }\r\n\r\n /**\r\n * Loads all data that is needed upon initial loading of the website\r\n */\r\n public async initialize(): Promise<any> {\r\n // reads the language from local storage set in the parent app\r\n // language loading\r\n\r\n // Set languages for translation service\r\n const lang = this.window.localStorage.getItem(languageStorageKey) || this.window.sessionStorage.getItem(languageStorageKey) || 'en';\r\n this.translateService.setDefaultLang(lang);\r\n this.translateService.use(lang);\r\n\r\n // Adapted from https://stackoverflow.com/a/41636880\r\n // Adapted from https://stackoverflow.com/a/41736293\r\n\r\n // A callback used to initialize the promise. This callback is passed two arguments:\r\n // a resolve callback used resolve the promise with a value or the result of another promise,\r\n // and a reject callback used to reject the promise with a provided reason or error.\r\n return new Promise(async (resolve, reject) => {\r\n // Go through all services and complete any API calls necessary.\r\n // At the end, if all works and loads as expected, resolve the promise and set startup success to true.\r\n // If an issue is encountered, you can call reject() to hit the catch() code below.\r\n\r\n // First, load the configurations\r\n const assetPartial = !this.federatedModuleService.isFederatedModule ? './assets' : `./assets/federation/${this.federatedModuleService.federatedModuleId}/assets`;\r\n let [baseConfig, overrideConfig, baseLang, overrideLang, theme] = [JSON, JSON, JSON, JSON, JSON];\r\n try {\r\n [baseConfig, overrideConfig, baseLang, overrideLang, theme] = await Promise.all([\r\n this.http.get<JSON>(`${assetPartial}/baseline/appsettings.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/appsettings.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/i18n/${this.translateService.currentLang}.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/${this.translateService.currentLang}.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/theme.json`).toPromise()\r\n ]);\r\n this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);\r\n const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);\r\n this.translateService.setTranslation(this.translateService.currentLang, mergedLanguage);\r\n\r\n const configurePartial = (t) => {\r\n const configSnapShot = this.configService.config;\r\n configSnapShot.theme = t as any;\r\n this.configService.config = configSnapShot;\r\n this.themeService.initPalette(t as any);\r\n }\r\n const subdomain = this.getSubdomain();\r\n if (subdomain && this.configService.config.subdomain) {\r\n try {\r\n let [subdomainConfigs, subdomainLanguage, subdomainTheme] = await Promise.all([\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.${this.translateService.currentLang}.json`)),\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.appsettings.json`)),\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.theme.json`))\r\n ]);\r\n this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);\r\n this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));\r\n const mergedTheme = _.mergeWith(theme, subdomainTheme, this.mergeCustomizer);\r\n configurePartial(mergedTheme);\r\n }\r\n catch (e) {\r\n if (this.configService.config.subdomain && this.configService.config.subdomain.subdomains.length && !this.configService.config.subdomain.subdomains.includes(subdomain)) {\r\n this.router.dispose();\r\n const error = `Invalid subdomain: ${subdomain}`;\r\n console.error(error);\r\n throw new Error(error);\r\n }\r\n else if (this.configService.config.subdomain?.requireConfiguredSubdomain && this.configService.config.subdomain?.subdomains.includes(subdomain)) {\r\n this.router.dispose();\r\n const error = `Configured subdomain: ${subdomain} does not have any subdomain specific configurations`;\r\n reject(error);\r\n console.error(error);\r\n throw new Error(error);\r\n }\r\n configurePartial(theme);\r\n }\r\n }\r\n else {\r\n configurePartial(theme);\r\n }\r\n this.trySetUpFederatedModules();\r\n }\r\n catch (error) {\r\n // Catch any errors during the get configurations API call\r\n console.error('Error Loading Configurations or Languages');\r\n // Reject the promise\r\n reject('error');\r\n\r\n return throwError(error.error || 'Server error');\r\n }\r\n try {\r\n if (this.customAuthConfigService) {\r\n await this.customAuthConfigService.configureAuthSettings().then(authConfig => {\r\n if (authConfig) {\r\n const config = this.configService.config.oAuthSettings;\r\n\r\n return this.login(config);\r\n }\r\n else {\r\n return Promise.resolve(false);\r\n }\r\n });\r\n }\r\n else {\r\n const oAuth = await this.setUpOAuth();\r\n }\r\n }\r\n catch (error) {\r\n reject(error);\r\n\r\n return throwError(error);\r\n }\r\n\r\n // Navigate to the requested route\r\n if (this.configService.config.oAuthSettings?.preserveRoute) {\r\n this.router.navigateByUrl(this.oAuthService.state);\r\n }\r\n\r\n this.isInitializedBs.next(true);\r\n resolve(true);\r\n }).catch((error) => {\r\n // Catch the error\r\n console.error('There was an error loading the startup configurations.');\r\n });\r\n }\r\n\r\n /**\r\n * Configure implicit flow\r\n */\r\n private async setUpOAuth(): Promise<boolean> {\r\n if (this.configService.config?.oAuthSettings?.issuer) {\r\n const config = this.configService.config.oAuthSettings;\r\n const authConfig = new AuthConfig({\r\n clientId: config.clientId,\r\n redirectUri: config.redirectUri,\r\n issuer: config.issuer,\r\n scope: config.scope,\r\n skipIssuerCheck: config.skipIssuerCheck != undefined ? config.skipIssuerCheck : true,\r\n timeoutFactor: config.timeoutFactor || 0.75,\r\n postLogoutRedirectUri: config.postLogoutRedirectUri,\r\n loginUrl: config.loginUrl,\r\n strictDiscoveryDocumentValidation: false,\r\n responseType: config.responseType || 'code'\r\n });\r\n this.oAuthService.configure(authConfig);\r\n this.oAuthService.skipIssuerCheck = true;\r\n this.oAuthService.responseType = config.responseType || 'code';\r\n this.oAuthService.strictDiscoveryDocumentValidation = false;\r\n this.oAuthService.tokenValidationHandler = new JwksValidationHandler();\r\n this.oAuthService.timeoutFactor = 0.75;\r\n this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token');\r\n\r\n // set initialized on start up to true\r\n config.authSetOnStartup = true;\r\n const parentConfig = this.configService.config;\r\n parentConfig.oAuthSettings = config;\r\n this.configService.config = parentConfig;\r\n\r\n return this.login(config);\r\n }\r\n\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * Handle Login\r\n * @param config The Oidc Auth Settings\r\n */\r\n private async login(config: OidcAuthSettings): Promise<boolean> {\r\n const isValid = this.validateExistingTokenAgainstConfigs();\r\n const preservedRoute = this.window.sessionStorage.getItem(preSignInRouteStorageKey);\r\n if (!preservedRoute) {\r\n this.window.sessionStorage.setItem(preSignInRouteStorageKey, this.location.path());\r\n }\r\n if (config.requireLoginOnStartup || !isValid) {\r\n return this.oAuthService.loadDiscoveryDocumentAndLogin({state: this.location.path()})\r\n // handles the case for expired access token or invalid nonce or people bookmarking the ids login page\r\n .catch(async (res) => {\r\n this.oAuthService.initLoginFlow(this.location.path());\r\n\r\n return Promise.resolve(true);\r\n });\r\n }\r\n else {\r\n return this.oAuthService.loadDiscoveryDocumentAndTryLogin()\r\n // handles the case for expired access token or invalid nonce or people bookmarking the ids login page\r\n .catch(async (res) => {\r\n this.oAuthService.initLoginFlow();\r\n\r\n return Promise.resolve(true);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Merges the two config objects ignoring the array type\r\n * @param objValue The default config value\r\n * @param srcValue The target switchboard config value\r\n * @returns The merge of the two configs provided\r\n */\r\n private mergeCustomizer(objValue: any, srcValue: any): any {\r\n if (_.isArray(objValue) && srcValue) {\r\n return srcValue;\r\n }\r\n }\r\n\r\n /**\r\n * Validates the existing token against the configurations\r\n * @returns true when token is valid\r\n */\r\n private validateExistingTokenAgainstConfigs(): boolean {\r\n if (this.configService.config.oAuthSettings.disableStartupTokenValidation) {\r\n return true;\r\n }\r\n if (!this.window.sessionStorage.getItem('access_token')) {\r\n return true;\r\n }\r\n const grantedScopes: Array<string> = this.oAuthService.getGrantedScopes() as Array<string>;\r\n const configuredScopes = this.configService.config.oAuthSettings.scope.split(' ');\r\n const diffs = grantedScopes.filter(x => !configuredScopes.includes(x))\r\n .concat(configuredScopes.filter(x => !grantedScopes.includes(x)));\r\n if (diffs.length || this.oAuthService.getIdentityClaims()['aud'] !== this.configService.config.oAuthSettings.clientId) {\r\n this.window.sessionStorage.removeItem('access_token');\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** Getting the subdomain from url */\r\n private getSubdomain(): string {\r\n const domain = this.window.location.hostname;\r\n if (domain.indexOf('.') < 0 ||\r\n domain.split('.')[0] === this.exampleSubdomain || domain.split('.')[0] === this.lvhSubstring || domain.split('.')[0] === this.wwwSubstring) {\r\n return '';\r\n } else {\r\n return domain.split('.')[0];\r\n }\r\n }\r\n\r\n /**\r\n * Tries to set up the federated modules when configured\r\n */\r\n private trySetUpFederatedModules(): boolean {\r\n if (this.federatedModuleService.isFederatedModule || !this.configService.config.federatedModules || !Object.keys(this.configService.config.federatedModules).length) {\r\n return false;\r\n }\r\n this.window.sessionStorage.setItem(federatedModuleConfigStorageKey, JSON.stringify(this.configService.config.federatedModules));\r\n return true;\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, isDevMode, Optional } from '@angular/core';\r\nimport { OAuthModuleConfig, OAuthResourceServerErrorHandler, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n/** The Custom OAuth Interceptor Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArmatureAuthTokenAppendInterceptor {\r\n /**\r\n * The Constructor\r\n * @param authStorage The Authorization storage\r\n * @param errorHandler The Error handler \r\n * @param moduleConfig The Authorization module config\r\n */\r\n constructor(\r\n private readonly authStorage: OAuthStorage,\r\n private readonly errorHandler: OAuthResourceServerErrorHandler,\r\n @Optional() private readonly moduleConfig: OAuthModuleConfig\r\n ) { }\r\n\r\n /**\r\n * Checks if the given url starts with the current website url\r\n * @param url The url\r\n */\r\n public checkUrl(url: string): boolean {\r\n // don't append token to non softheon calls for dev mode\r\n if (isDevMode() && (url.indexOf('.softheon.com') > -1 || url.indexOf('localhost') > -1)) {\r\n return true;\r\n }\r\n if (!this.moduleConfig.resourceServer\r\n || !this.moduleConfig.resourceServer.allowedUrls\r\n || !this.moduleConfig.resourceServer.sendAccessToken) {\r\n return false;\r\n }\r\n const currentUrl = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`;\r\n\r\n // still append token to local url refs\r\n return url.startsWith(currentUrl) || url.indexOf('http') === -1;\r\n }\r\n\r\n /**\r\n * Intercepts the http requests and appends the authorization token to the header if the endpoint matches the current base uri\r\n * @param req The request\r\n * @param next The Next\r\n * https://manfredsteyer.github.io/angular-oauth2-oidc/angular-oauth2-oidc/docs/additional-documentation/working-with-httpinterceptors.html\r\n */\r\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // request url\r\n const url = req.url.toLowerCase();\r\n\r\n // checks the url and determines if sending the access token is allowed\r\n if ((this.checkUrl(url) && this.moduleConfig.resourceServer.sendAccessToken)) {\r\n let headers = req.headers;\r\n\r\n let token = this.authStorage.getItem('access_token');\r\n const ssoToken = window.sessionStorage.getItem('Sof-Arm-Access-Token');\r\n if (ssoToken) {\r\n token = ssoToken;\r\n }\r\n const header = `Bearer ${token}`;\r\n if (token) {\r\n headers = headers.set('Authorization', header);\r\n }\r\n\r\n req = req.clone({ headers });\r\n }\r\n\r\n return next.handle(req)\r\n .pipe(\r\n catchError(err => this.errorHandler.handleError(err))\r\n );\r\n }\r\n}\r\n","import { DataStoreConfig } from './data-store-config';\r\n\r\n/** The session configurations */\r\nexport class SessionConfig<T = any> {\r\n /** The browser storage implementation */\r\n public browserStorageImplementation: string;\r\n\r\n /** The session management implementation */\r\n public sessionManagementImplementation: string;\r\n\r\n /** The data store configurations */\r\n public dataStoreConfig: DataStoreConfig<T>;\r\n\r\n /** The transfer base path */\r\n public transferBasePath: string;\r\n\r\n /** The key path used for browser storage */\r\n public keyPath: string;\r\n\r\n /** The session management base path */\r\n public sessionManagementBasePath: string;\r\n\r\n /** The session refresh time in minutes */\r\n public sessionRefreshTimeMinutes: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseConfigService } from './base-config.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultConfigService extends BaseConfigService {\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n super();\r\n };\r\n}\r\n","/** The http verb types */\r\nexport type HttpVerb = 'POST' | 'GET' | 'PUT' | 'PATCH' | 'DELETE';\r\n\r\n/** The http verb constants */\r\nexport const httpVerb = {\r\n POST: 'POST' as HttpVerb,\r\n GET: 'GET' as HttpVerb,\r\n PUT: 'PUT' as HttpVerb,\r\n PATCH: 'PATCH' as HttpVerb,\r\n DELETE: 'DELETE' as HttpVerb,\r\n}\r\n","/**\r\n * Creates a new guid\r\n */\r\n// tslint:disable: no-bitwise\r\n// tslint:disable-next-line: only-arrow-functions\r\nexport const newGuid = (): string =>\r\n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = (c == 'x') ? r : (r & 0x3 | 0x8);\r\n\r\n return v.toString(16);\r\n });\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\nimport { SessionPostRequestModel, SessionPutRequestModel, SessionResponseModel } from '../client-generated/model/models';\r\nimport { SESSION_CONFIG, WINDOW } from '../models/constants';\r\nimport { HttpVerb, httpVerb } from '../models/http-verbs';\r\nimport { SessionConfig } from '../models/session-config';\r\nimport { TypedSession } from '../models/typed-session';\r\nimport { newGuid } from '../functions/guid';\r\n\r\n/** the data store retrieve complete session key */\r\nconst dataStoreRetrieveCompleteSessionKey = 'dataStoreRetrieve';\r\n\r\n/** The session service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService<T = any> {\r\n\r\n /** The session id */\r\n private _sessionId: string;\r\n\r\n /** True when the data store retrieve is complete */\r\n private isDataStoreRetrieveComplete: boolean = false;\r\n\r\n /** The local storage key */\r\n private readonly storageKey: string = 'Sof-Arm-Session-Id';\r\n\r\n /** Teh current update data store call */\r\n private readonly currentUpdateDataStoreCall: Observable<any> = of({});\r\n\r\n /** The session data behavior subject */\r\n private readonly sessionData: BehaviorSubject<TypedSession<T>> = new BehaviorSubject<TypedSession<T>>(undefined);\r\n\r\n /** True when the service has finished initializing */\r\n private readonly isInitializedBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** True if the data store is initialized */\r\n private readonly isDataStoreInitBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** True if client side session management */\r\n private get isClientSessionManagement(): boolean {\r\n return this.sessionConfig.sessionManagementImplementation === 'client';\r\n }\r\n\r\n /** True if server side session management */\r\n private get isServerSessionManagement(): boolean {\r\n return this.sessionConfig.sessionManagementImplementation === 'server';\r\n }\r\n\r\n /** True if using browser local storage */\r\n private get useBrowserLocalStorage(): boolean {\r\n return this.sessionConfig.browserStorageImplementation === 'local';\r\n }\r\n\r\n /** True if using browser session storage */\r\n private get useBrowserSessionStorage(): boolean {\r\n return this.sessionConfig.browserStorageImplementation === 'session';\r\n }\r\n\r\n /** The window */\r\n private readonly window: Window;\r\n\r\n /** True if data store is provided */\r\n private readonly isDataStoreProvided: boolean = false;\r\n\r\n /** The session id */\r\n public get sessionId(): string {\r\n if (!this._sessionId) {\r\n this.isClientSessionManagement ? this.initClientSessionId() : this.initServerSessionId();\r\n }\r\n\r\n return this._sessionId;\r\n }\r\n\r\n /** The session */\r\n public session$: Observable<TypedSession<T>>;\r\n\r\n /** The session refresh observable */\r\n public sessionRefresh$: Observable<any>;\r\n\r\n /** Indicates when the service has finished initializing */\r\n public isInitialized$: Observable<boolean>;\r\n\r\n /** True if the data store is initialized */\r\n public isDataStoreInit$: Observable<boolean>;\r\n\r\n /** gets the session */\r\n public get session(): TypedSession<T> {\r\n return this.sessionData.value;\r\n }\r\n\r\n /** sets the session */\r\n public set session(value: TypedSession<T>) {\r\n this.sessionData.next(value);\r\n this.window.sessionStorage.setItem(this.sessionConfig.keyPath, this.encode(value));\r\n }\r\n\r\n /**\r\n * Constructs the service\r\n * @param sessionConfig The session configurations\r\n * @param _window The window interface\r\n * @param authService The OAuth odic 2 service\r\n * @param httpClient The http client\r\n */\r\n constructor(\r\n @Optional() @Inject(SESSION_CONFIG) readonly sessionConfig: SessionConfig,\r\n @Optional() @Inject(WINDOW) readonly _window: any,\r\n @Optional() private readonly authService: OAuthService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.isInitialized$ = this.isInitializedBs.asObservable();\r\n this.isDataStoreInit$ = this.isDataStoreInitBs.asObservable();\r\n if (!this.sessionConfig) {\r\n this.sessionConfig = new SessionConfig();\r\n }\r\n this.isDataStoreProvided = !!this.sessionConfig?.dataStoreConfig;\r\n this.window = _window;\r\n if (!this.window) {\r\n this.window = window;\r\n }\r\n const dataStoreLoadedValue = this.window.sessionStorage.getItem(dataStoreRetrieveCompleteSessionKey);\r\n this.isDataStoreRetrieveComplete = !!dataStoreLoadedValue ? dataStoreLoadedValue.toLowerCase() === 'true' : false;\r\n // if not using a data store, update the initialized to true for it\r\n if (!this.isDataStoreProvided) {\r\n this.isDataStoreInitBs.next(true);\r\n }\r\n if (!this.sessionConfig?.browserStorageImplementation) {\r\n this.sessionConfig.browserStorageImplementation = 'session';\r\n }\r\n if (!this.sessionConfig?.sessionManagementImplementation) {\r\n this.sessionConfig.sessionManagementImplementation = 'client';\r\n }\r\n if (this.isServerSessionManagement && !this.sessionConfig) {\r\n throw new Error('Cannot user server session management with null sessionConfig please provide: GlobalInjectionTokens.sessionConfig');\r\n }\r\n if (this.isClientSessionManagement) {\r\n this.initClientSessionManagement();\r\n\r\n return;\r\n }\r\n\r\n this.initServerSessionManagement();\r\n }\r\n\r\n /**\r\n * Redirects to a url with a ref to the existing session\r\n * @param uri The uri to redirect to\r\n * @param syncSession Sync session.\r\n * @param configs Redirect configs.\r\n */\r\n public redirect(uri: string, syncSession: boolean = false, configs: RedirectSessionConfigs = {}): void {\r\n // if the host name isn't in the uri, we are going to a different domain, so use the gateway on the other domain's server\r\n let formAction = `${this.sessionConfig.transferBasePath}/ssogateway/v2/sso/inbound-transfer/${this.sessionConfig.keyPath}`;\r\n if (uri.indexOf(window.location.hostname) === -1) {\r\n const uriParts = uri.split('/');\r\n // this results in ['https:', '', 'domain.host'], use 0 and 2 to get the base url of the redirect uri\r\n formAction = `${uriParts[0]}//${uriParts[2]}/ssogateway/v2/sso/inbound-transfer/${this.sessionConfig.keyPath}`;\r\n }\r\n const form = document.createElement('form');\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n const inputDestination = document.createElement('input');\r\n inputDestination.type = 'hidden';\r\n form.method = 'POST';\r\n form.action = formAction;\r\n if (configs.targetNewTab) {\r\n // The parent session should already be present in child window as per browsing context rules, but for whatever reason form.target = '_blank' does not do that.\r\n // Need to use window.open here so the parent window's session also gets carried over to the new tab.\r\n // For reference: https://stackoverflow.com/questions/17297287/sessionstorage-on-new-window-isnt-empty-when-following-a-link-with-target-bl\r\n form.target = 'customWindow';\r\n window.open('', 'customWindow');\r\n }\r\n\r\n input.name = 'data';\r\n input.value = this.window.sessionStorage.getItem(this.sessionConfig.keyPath);\r\n inputDestination.name = 'destination';\r\n inputDestination.value = uri;\r\n form.appendChild(input);\r\n form.appendChild(inputDestination);\r\n document.body.appendChild(form);\r\n form.submit();\r\n }\r\n\r\n /**\r\n * Updates the session\r\n * @param body The session put request body\r\n */\r\n public updateSession(\r\n body: TypedSession<T>,\r\n securableDelegate: Array<(arg: any) => any> | ((arg: any) => any),\r\n skipDataStore?: boolean): Observable<any> {\r\n if (!this._sessionId) {\r\n console.error('No session has been initialized, skipping update call');\r\n\r\n return undefined;\r\n }\r\n if (!securableDelegate) {\r\n throw new Error('SessionService:updateSession -> Argument is null or undefined, arg: securableDelegate');\r\n }\r\n if (Array.isArray(body.sessionData) && !Array.isArray(securableDelegate)) {\r\n throw new Error(\r\n 'SessionService:updateSession -> Type miss match, arg: body.SessionData (type of Array) and arg: securableDelegate (type of (arg: any) => any) both must be array or non-array'\r\n );\r\n }\r\n if (!Array.isArray(body.sessionData) && Array.isArray(securableDelegate)) {\r\n throw new Error(\r\n 'SessionService:updateSession -> Type miss match, arg: body.SessionData (type of any) and arg: securableDelegate (type of Array) both must be array or non-array'\r\n );\r\n }\r\n // create response model and update observable to emit new session value\r\n const model: SessionResponseModel = {\r\n initializingOrigin: body.initializingOrigin,\r\n branding: body.branding,\r\n oAuth: body.oAuth,\r\n sessionId: this._sessionId,\r\n tracking: body.tracking,\r\n sessionData: body.sessionData\r\n };\r\n this.session = model;\r\n\r\n const putModel: SessionPutRequestModel = {\r\n initializingOrigin: body.initializingOrigin,\r\n sessionData:\r\n (Array.isArray(body.sessionData)\r\n ? body.sessionData.map((d, index) => securableDelegate[index](d)) : (securableDelegate as ((arg: any) => any))(body.sessionData)),\r\n branding: body.branding,\r\n tracking: body.tracking,\r\n oAuth: body.oAuth\r\n };\r\n\r\n // if data store is provided run the delegate to determine the body and the uri to use for the update\r\n if (this.isDataStoreProvided && !skipDataStore) {\r\n const updateTuple =\r\n this.sessionConfig?.dataStoreConfig.updateRequestDelegate(this.sessionConfig?.dataStoreConfig.baseUri, body.sessionData);\r\n // switch map to cancel existing calls with newer ones to avoid reverting data\r\n if (this.sessionConfig?.dataStoreConfig.shouldUpdateDataStoreDelegate(body.sessionData)) {\r\n this.currentUpdateDataStoreCall.pipe(switchMap(() => {\r\n switch (this.sessionConfig?.dataStoreConfig.updateVerb) {\r\n case httpVerb.POST:\r\n return this.httpClient.post(updateTuple.uri, updateTuple.body);\r\n case httpVerb.PUT:\r\n default:\r\n return this.httpClient.put(updateTuple.uri, updateTuple.body);\r\n }\r\n }))\r\n .subscribe(() => {\r\n this.isDataStoreRetrieveComplete = true;\r\n this.window.sessionStorage.setItem(dataStoreRetrieveCompleteSessionKey, 'true');\r\n });\r\n }\r\n }\r\n\r\n return this.session$;\r\n }\r\n\r\n /** Removes the session */\r\n public removeSession(): void {\r\n this.sessionData.next(undefined);\r\n this.window.sessionStorage.removeItem(dataStoreRetrieveCompleteSessionKey);\r\n this.window.sessionStorage.removeItem(this.sessionConfig.keyPath);\r\n }\r\n\r\n /**\r\n * @deprecated removing in the next version\r\n * Syncs the session\r\n * Returns the observable indicating when the session has been synced\r\n */\r\n public syncSession(): Observable<any> {\r\n return of(true);\r\n }\r\n\r\n /**\r\n * @deprecated removing in the next version\r\n * Refreshes the session\r\n */\r\n public refreshSession(): void {\r\n }\r\n\r\n /** Initialize server session management */\r\n private initServerSessionManagement(): void {\r\n this.session$ = this.sessionData.asObservable();\r\n\r\n const getFromDataStore = (): any => {\r\n if (!this.sessionConfig?.dataStoreConfig || !this.authService || this.isDataStoreRetrieveComplete) {\r\n return;\r\n }\r\n\r\n // load data from data store anon\r\n const loadDataStore = () =>\r\n this.determineDataStoreFunction(this.sessionConfig?.dataStoreConfig.retrieveVerb,\r\n this.sessionConfig?.dataStoreConfig.retrieveRequestDelegate,\r\n this.sessionConfig?.dataStoreConfig.baseUri,\r\n undefined)\r\n .subscribe(res => {\r\n this.isInitialized$.subscribe(isInit => {\r\n if (!isInit) {\r\n return;\r\n }\r\n this.session$.pipe(take(1))\r\n .subscribe(ses => {\r\n this.updateSession(this.sessionConfig?.dataStoreConfig.retrieveResponseDelegate(res, ses),\r\n this.sessionConfig?.dataStoreConfig.retrieveSecurableDelegate(res), true);\r\n this.isDataStoreInitBs.next(true);\r\n this.isDataStoreRetrieveComplete = true;\r\n this.window.sessionStorage.setItem(dataStoreRetrieveCompleteSessionKey, 'true');\r\n });\r\n });\r\n });\r\n\r\n if (!this.authService.hasValidAccessToken()) {\r\n // HACK: I couldn't do this based on an event so I had to get creative\r\n const interval = setInterval(() => {\r\n if (this.authService.hasValidAccessToken()) {\r\n loadDataStore();\r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n }\r\n else {\r\n return loadDataStore();\r\n }\r\n };\r\n\r\n const body: SessionPostRequestModel = {\r\n sessionData: undefined,\r\n branding: undefined\r\n };\r\n\r\n const encodedSession = this.window.sessionStorage.getItem(this.sessionConfig.keyPath);\r\n this._sessionId = `Session-${newGuid()}`;\r\n if (!encodedSession) {\r\n this.session = body;\r\n this.isInitializedBs.next(true);\r\n getFromDataStore();\r\n }\r\n else {\r\n this.session = this.decode(encodedSession);\r\n this.isInitializedBs.next(true);\r\n getFromDataStore();\r\n }\r\n }\r\n\r\n /** Initializes the server side session id */\r\n private initServerSessionId(): void {\r\n if (!this._sessionId) {\r\n console.warn('Session Initializing, subscribe to session$ to get the session info. Session Id will be populated upon initialization');\r\n\r\n return;\r\n }\r\n }\r\n\r\n /** Initializes client side session management */\r\n private initClientSessionManagement(): void {\r\n if (this.useBrowserSessionStorage) {\r\n const sesId = this.window.sessionStorage.getItem(this.storageKey);\r\n this._sessionId = sesId || newGuid();\r\n this.setSessionStorage();\r\n }\r\n else if (this.useBrowserLocalStorage) {\r\n const sesId = this.window.localStorage.getItem(this.storageKey);\r\n this._sessionId = sesId || newGuid();\r\n this.setLocalStorage();\r\n }\r\n this.isInitializedBs.next(true);\r\n }\r\n\r\n private getSessionIdFromStorage(): string {\r\n if (this.useBrowserLocalStorage) {\r\n return this.window.localStorage.getItem(this.storageKey);\r\n }\r\n else if (this.useBrowserSessionStorage) {\r\n return this.window.sessionStorage.getItem(this.storageKey);\r\n }\r\n }\r\n\r\n /** Initialize the client side session id */\r\n private initClientSessionId(): void {\r\n this._sessionId = newGuid();\r\n if (this.useBrowserSessionStorage) {\r\n this.setSessionStorage();\r\n }\r\n else if (this.useBrowserLocalStorage) {\r\n this.setLocalStorage();\r\n }\r\n }\r\n\r\n /** Sets session storage */\r\n private setSessionStorage(): void {\r\n this.window.sessionStorage.setItem(this.storageKey, this._sessionId);\r\n }\r\n\r\n /** Sets local storage */\r\n private setLocalStorage(): void {\r\n this.window.localStorage.setItem(this.storageKey, this._sessionId);\r\n }\r\n\r\n /**\r\n * Determines the type of http call to make for the data store\r\n * @param verb The verb\r\n * @param delegate The delegate\r\n * @param uri The uri\r\n */\r\n private determineDataStoreFunction(\r\n verb: HttpVerb,\r\n delegate: (baseUri: string, body: T) => { uri: string, body?: any },\r\n uri: string,\r\n body: any\r\n ): Observable<any> {\r\n const tuple = delegate(uri, body);\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n });\r\n switch (verb) {\r\n case httpVerb.PUT:\r\n return this.httpClient.put(tuple.uri, tuple.body, { headers });\r\n case httpVerb.POST:\r\n return this.httpClient.post(tuple.uri, tuple.body, { headers });\r\n case httpVerb.GET:\r\n return this.httpClient.get(tuple.uri, { headers });\r\n case httpVerb.PATCH:\r\n return this.httpClient.patch(tuple.uri, tuple.body, { headers });\r\n case httpVerb.DELETE:\r\n return this.httpClient.delete(tuple.uri, { headers });\r\n default:\r\n throw new Error('Http verb must be one of: PATCH, PUT, POST, DELETE, GET');\r\n }\r\n }\r\n\r\n /**\r\n * Encodes the object\r\n * @param value The object\r\n */\r\n private encode(value: any): string {\r\n return window.btoa(unescape(encodeURIComponent(JSON.stringify(value))));\r\n }\r\n\r\n /**\r\n * Decodes the string\r\n * @param str The string\r\n */\r\n private decode(str: string): any {\r\n return JSON.parse(decodeURIComponent(escape(window.atob(str))));\r\n }\r\n}\r\n\r\n/**\r\n * Redirect Session Configs.\r\n */\r\nexport class RedirectSessionConfigs {\r\n /** If session should be synced. */\r\n syncSession?: boolean;\r\n\r\n /** If new tab should be targeted. */\r\n targetNewTab?: boolean;\r\n}","import { AssertedUserModel } from '../client-generated/model/assertedUserModel';\r\n\r\n/** The user entity service config */\r\nexport class UserEntityServiceConfig {\r\n /** true if getting user on start up */\r\n public getUserOnInit: boolean = true;\r\n\r\n /** The user entity base url */\r\n public userEntityBaseUrl: string;\r\n\r\n /** True when including links */\r\n public includeLinks: boolean = true;\r\n\r\n /** The partial for the get user call */\r\n public getUserPartial: string;\r\n\r\n /** The validate function */\r\n public validate: (user: AssertedUserModel) => boolean = (user: AssertedUserModel): boolean => true;\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\n\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, filter, first, share, take } from 'rxjs/operators';\r\n\r\nimport { AssertedUserModel } from '../client-generated/model/models';\r\nimport { USER_ENTITY_SERVICE_CONFIG } from '../models/constants';\r\nimport { UserEntityServiceConfig } from '../models/user-entity-service-config';\r\n\r\n/** The user entity service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserEntityService {\r\n\r\n /** The user observable */\r\n public readonly user$: Observable<AssertedUserModel>;\r\n\r\n /** True if the service is available for use */\r\n private isServiceAvailable: boolean;\r\n\r\n /** The get user partial url */\r\n private readonly getUserPartial: string = 'api/userManagement/v1/user';\r\n\r\n /** The user call */\r\n private userCall: Promise<Array<AssertedUserModel>>;\r\n\r\n /** The user model and hash */\r\n private get _user(): AssertedUserModel {\r\n return this.userBS.value;\r\n }\r\n private set _user(val: AssertedUserModel) {\r\n this.userBS.next(val);\r\n }\r\n\r\n /** the user behavior subject */\r\n private readonly userBS: BehaviorSubject<AssertedUserModel> = new BehaviorSubject<AssertedUserModel>(undefined);\r\n\r\n /**\r\n * Constructs the service\r\n * @param oauthService The oauth oidc 2 service\r\n * @param httpClient The http client\r\n * @param userEntityServiceConfig The user entity service configurations\r\n */\r\n constructor(\r\n private readonly oauthService: OAuthService,\r\n private readonly httpClient: HttpClient,\r\n @Optional() @Inject(USER_ENTITY_SERVICE_CONFIG) readonly userEntityServiceConfig: UserEntityServiceConfig\r\n ) {\r\n this.userEntityServiceConfig = !this.userEntityServiceConfig ? new UserEntityServiceConfig() : this.getConfigWithDefaults();\r\n // tslint:disable-next-line: no-parameter-reassignment\r\n this.userEntityServiceConfig.userEntityBaseUrl = this.userEntityServiceConfig.userEntityBaseUrl || '/';\r\n this.getUserPartial = this.userEntityServiceConfig.getUserPartial || this.getUserPartial;\r\n this.user$ = this.userBS.asObservable()\r\n .pipe(filter(val => !!val));\r\n\r\n if (this.userEntityServiceConfig.getUserOnInit) {\r\n const interval = setInterval(() => {\r\n this.isServiceAvailable = this.oauthService.hasValidAccessToken();\r\n if (!this.isServiceAvailable) {\r\n return;\r\n }\r\n this.getUserFromApi()\r\n .then()\r\n .catch();\r\n clearInterval(interval);\r\n }, 100);\r\n }\r\n }\r\n\r\n /** Gets the user */\r\n public async getUser(): Promise<AssertedUserModel> {\r\n return new Promise((resolve, reject) => {\r\n this.user$.pipe(\r\n take(1),\r\n share(),\r\n catchError(e => {\r\n reject(e);\r\n\r\n return of(e);\r\n }))\r\n .subscribe(user => {\r\n resolve(user);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Updates the user\r\n * @param user The new user model\r\n */\r\n public async updateUser(user?: AssertedUserModel): Promise<AssertedUserModel> {\r\n if (user) {\r\n this._user = user;\r\n\r\n return Promise.resolve(this._user);\r\n }\r\n\r\n await this.getUserFromApi();\r\n\r\n return Promise.resolve(this._user);\r\n }\r\n\r\n /** Returns true if the user meets the validation function provided */\r\n public validateUser(): boolean {\r\n if (this.userEntityServiceConfig && this._user) {\r\n return this.userEntityServiceConfig.validate(this._user);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Gets the user from the api */\r\n private async getUserFromApi(): Promise<void> {\r\n // use the local path if there is not base path provided\r\n return this.oauthService.events.pipe(first(e => e.type === 'discovery_document_loaded'))\r\n .toPromise()\r\n .then(async () => {\r\n if (!this.oauthService.hasValidAccessToken()) {\r\n let errormessage = \"Could not make get user from api call because no valid token!\";\r\n console.error(errormessage);\r\n return Promise.reject(errormessage);\r\n }\r\n // append the issuer to the header of the request so the api knows what tenant to use\r\n const headers = new HttpHeaders(\r\n {\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n Authorization: `Bearer ${this.oauthService.getAccessToken()}`,\r\n 'Authorization-Tenant': (\r\n // tslint:disable-next-line: no-string-literal\r\n this.oauthService['config']?.loginUrl || this.oauthService['config']?.issuer\r\n || this.oauthService?.loginUrl || this.oauthService?.issuer || '')\r\n .replace('/account/login', '')\r\n .replace('/connect/authorize', '')\r\n }\r\n );\r\n this.userCall = this.httpClient.get<Array<AssertedUserModel>>(\r\n `${this.userEntityServiceConfig.userEntityBaseUrl}${this.getUserPartial}?subIdFromToken=true&createEmpty=true&withoutChildLinks=${!this.userEntityServiceConfig.includeLinks}`,\r\n { headers }\r\n )\r\n .toPromise();\r\n\r\n return this.userCall.then(res => {\r\n if (!res || res.length === 0) {\r\n console.error('No user entities found');\r\n }\r\n this._user = res[0];\r\n this.validateUser();\r\n })\r\n .catch(e => {\r\n console.error('UserEntityService encountered an error', e);\r\n throw e;\r\n });\r\n });\r\n }\r\n\r\n /** Sets the default values of the config */\r\n private getConfigWithDefaults(): UserEntityServiceConfig {\r\n const config = this.userEntityServiceConfig;\r\n config.validate = config.validate || ((user: AssertedUserModel): boolean => true);\r\n // tslint:disable-next-line: triple-equals\r\n config.getUserOnInit = config.getUserOnInit == undefined ? true : config.getUserOnInit;\r\n config.includeLinks = config.includeLinks == undefined ? true : config.includeLinks;\r\n config.getUserPartial = config.getUserPartial == undefined ? this.getUserPartial : config.getUserPartial;\r\n\r\n return config;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { SiteMapConfig } from '../../models/site-map-models';\r\n\r\n@Component({\r\n selector: 'sof-ar-site-map',\r\n templateUrl: './site-map.component.html',\r\n styleUrls: ['./site-map.component.scss'],\r\n standalone: false\r\n})\r\nexport class SiteMapComponent implements OnInit {\r\n\r\n /** Site map config */\r\n @Input() public config: SiteMapConfig;\r\n \r\n /** Creates an instance of SiteMapComponent. */\r\n public constructor() { }\r\n\r\n /** Init */\r\n public ngOnInit(): void { \r\n if (!this.config) {\r\n throw new Error('sof-ar-site-map: [config] input is required');\r\n }\r\n }\r\n}\r\n","<div fxLayout=\"row\" class=\"site-map-container\" fxLayoutAlign=\"space-around\">\r\n <div class=\"sof-ar-site-map-column\" *ngFor=\"let column of config.graph\" fxLayout=\"column\" fxLayoutGap=\"10px\">\r\n <ng-container *ngFor=\"let row of column\">\r\n <h2 class=\"{{config.sectionTitleClass ? config.sectionTitleClass : 'default-header-color'}}\">\r\n {{row.sectionTitle | translate}}\r\n </h2>\r\n <ng-container *ngIf=\"row.direction === 'Vertical' else horizontalLinks\">\r\n <ng-container *ngIf=\"!row.iconLinks else logoButton\">\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a h4 routerLink=\"{{link.routerLink}}\" *ngIf=\"link.routePath === 'internal' else externalLink\">\r\n {{link.text | translate}}\r\n </a>\r\n <ng-template #externalLink>\r\n <a href=\"{{link.routerLink}}\" target=\"_blank\" h4>\r\n {{link.text | translate}}\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template #logoButton>\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a routerLink=\"{{link.routerLink}}\" *ngIf=\"link.routePath === 'internal' else externalLogoLink\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n <ng-template #externalLogoLink>\r\n <a target=\"_blank\" href=\"{{link.routerLink}}\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #horizontalLinks>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\r\n <ng-container *ngIf=\"!row.iconLinks else logoButton\">\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a h4 routerLink=\"{{link.routerLink}}\"\r\n *ngIf=\"link.routePath === 'internal' else externalLink\">\r\n {{link.text | translate}}\r\n </a>\r\n <ng-template #externalLink>\r\n <a href=\"{{link.routerLink}}\" target=\"_blank\" h4>\r\n {{link.text | translate}}\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template #logoButton>\r\n <div *ngFor=\"let link of row.links\" class=\"{{link.linkClass ? link.linkClass : config.linkClass}}\">\r\n <a routerLink=\"{{link.routerLink}}\"\r\n *ngIf=\"link.routePath === 'internal' else externalLogoLink\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n <ng-template #externalLogoLink>\r\n <a target=\"_blank\" href=\"{{link.routerLink}}\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ArmatureFooterComponent } from './components/footer/footer.component';\r\nimport { SiteMapComponent } from './components/site-map/site-map.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureFooterComponent,\r\n SiteMapComponent\r\n];\r\n\r\n/** The Footer Module */\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n MatButtonModule\r\n ],\r\n exports: [...components]\r\n})\r\nexport class ArmatureFooterModule { }\r\n","/**\r\n * The States enum\r\n */\r\nexport enum States {\r\n AL = 'Alabama',\r\n AK = 'Alaska',\r\n AS = 'American Samoa',\r\n AZ = 'Arizona',\r\n AR = 'Arkansas',\r\n CA = 'California',\r\n CO = 'Colorado',\r\n CT = 'Connecticut',\r\n DE = 'Delaware',\r\n DC = 'District of Columbia',\r\n FL = 'Florida',\r\n FM = 'Micronesia',\r\n GA = 'Georgia',\r\n GU = 'Guam',\r\n HI = 'Hawaii',\r\n ID = 'Idaho',\r\n IL = 'Illinois',\r\n IN = 'Indiana',\r\n IA = 'Iowa',\r\n KS = 'Kansas',\r\n KY = 'Kentucky',\r\n LA = 'Louisiana',\r\n ME = 'Maine',\r\n MD = 'Maryland',\r\n MA = 'Massachusetts',\r\n MH = 'Marshall Islands',\r\n MI = 'Michigan',\r\n MN = 'Minnesota',\r\n MP = 'Northern Mariana Islands',\r\n MS = 'Mississippi',\r\n MO = 'Missouri',\r\n MT = 'Montana',\r\n NE = 'Nebraska',\r\n NV = 'Nevada',\r\n NH = 'New Hampshire',\r\n NJ = 'New Jersey',\r\n NM = 'New Mexico',\r\n NY = 'New York',\r\n NC = 'North Carolina',\r\n ND = 'North Dakota',\r\n OH = 'Ohio',\r\n OK = 'Oklahoma',\r\n OR = 'Oregon',\r\n PA = 'Pennsylvania',\r\n PR = 'Puerto Rico',\r\n PW = 'Palau',\r\n RI = 'Rhode Island',\r\n SC = 'South Carolina',\r\n SD = 'South Dakota',\r\n TN = 'Tennessee',\r\n TX = 'Texas',\r\n UT = 'Utah',\r\n VT = 'Vermont',\r\n VA = 'Virginia',\r\n VI = 'Virgin Islands',\r\n WA = 'Washington',\r\n WV = 'West Virginia',\r\n WI = 'Wisconsin',\r\n WY = 'Wyoming'\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * Numbers only directive\r\n */\r\n@Directive({\r\n selector: '[sofArNumbersOnly]',\r\n standalone: false\r\n})\r\nexport class NumbersOnlyDirective {\r\n\r\n /** True if only numbers allowed */\r\n @Input() public sofArNumbersOnly: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n /**\r\n * Only allows number inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n const e = event as KeyboardEvent;\r\n\r\n if (this.sofArNumbersOnly) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: Ctrl+V\r\n (e.keyCode === 86 && e.ctrlKey) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, FormBuilder } from '@angular/forms';\r\n\r\nimport { States } from '../../models/enums/states';\r\nimport { Address } from '../../models/address';\r\nimport { County } from '../../models/county';\r\n\r\n/** \r\n * Address component \r\n * @deprecated\r\n*/\r\n@Component({\r\n selector: 'sof-ar-address',\r\n templateUrl: './sof-address.component.html',\r\n styleUrls: ['./sof-address.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofAddressComponent implements OnInit {\r\n\r\n /** Identifier for this address component */\r\n @Input() public id: string = '';\r\n\r\n /** Verbiage for street 1 */\r\n @Input() public street1Verbiage: string = 'Street 1';\r\n\r\n /** Verbiage for street 2 */\r\n @Input() public street2Verbiage: string = 'Street 2';\r\n\r\n /** Verbiage for city */\r\n @Input() public cityVerbiage: string = 'City';\r\n\r\n /** Verbiage for ZIP Code */\r\n @Input() public zipCodeVerbiage: string = 'Zip Code';\r\n\r\n /** Verbiage for the state input */\r\n @Input() public stateVerbiage: string = 'State';\r\n\r\n /** Verbiage for the title */\r\n @Input() public titleVerbiage: string;\r\n\r\n /** Verbiage for the required input verbiage */\r\n @Input() public requiredErrorVerbiage: string = 'Field is required';\r\n\r\n /** Address Form group */\r\n public addressFG: FormGroup;\r\n\r\n /** The state options */\r\n public readonly states: Array<string> = Object.keys(States);\r\n\r\n /** Form control for street 1 */\r\n public readonly street1FC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for street 2 */\r\n private readonly street2FC: FormControl = new FormControl();\r\n\r\n /** Form control for city */\r\n public readonly cityFC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for state */\r\n public readonly stateFC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for zip code */\r\n public readonly zipCodeFC: FormControl = new FormControl(\r\n undefined,\r\n [Validators.required, Validators.maxLength(5), Validators.minLength(5)]\r\n );\r\n\r\n /**\r\n * Constructor for the component\r\n * @param formBuilder The form builder\r\n */\r\n constructor(private readonly formBuilder: FormBuilder) { }\r\n\r\n /** Actions to take upon initialization */\r\n public ngOnInit(): void {\r\n this.createAddressGroup();\r\n }\r\n\r\n /** Creates the address form group */\r\n public createAddressGroup(): FormGroup {\r\n if (this.addressFG) {\r\n return this.addressFG;\r\n }\r\n\r\n this.addressFG = this.formBuilder.group({\r\n street1: this.street1FC,\r\n street2: this.street2FC,\r\n city: this.cityFC,\r\n state: this.stateFC,\r\n zipCode: this.zipCodeFC\r\n });\r\n\r\n return this.addressFG;\r\n }\r\n\r\n /** Maps and returns the address */\r\n public getAddress(): Address {\r\n if (!this.addressFG.valid) {\r\n return undefined;\r\n }\r\n\r\n const county: County = {\r\n zipCode: this.zipCodeFC.value,\r\n state: this.stateFC.value\r\n };\r\n const address: Address = {\r\n street1: this.street1FC.value,\r\n street2: this.street2FC.value,\r\n city: this.cityFC.value,\r\n county\r\n };\r\n\r\n return address;\r\n }\r\n\r\n /** Checks if the form is valid */\r\n public isValid(): boolean {\r\n return this.addressFG && this.addressFG.valid;\r\n }\r\n\r\n}\r\n","<p class=\"address-title\" *ngIf=\"titleVerbiage && titleVerbiage !== ''\" [innerHtml]=\"titleVerbiage\"></p>\r\n<form [formGroup]=\"addressFG\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1% grid\">\r\n <!-- Address 1 -->\r\n <mat-form-field class=\"address-input\" fxFlex=\"auto\">\r\n <input matInput formControlName=\"street1\" id=\"{{id}}street1\" placeholder=\"{{street1Verbiage}}\" required>\r\n <mat-error *ngIf=\"street1FC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- Address 2 -->\r\n <mat-form-field class=\"address-input\" fxFlex=\"auto\">\r\n <input matInput formControlName=\"street2\" id=\"{{id}}street2\" placeholder=\"{{street2Verbiage}}\">\r\n </mat-form-field>\r\n </div>\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1%\">\r\n <!-- City -->\r\n <mat-form-field fxFlex=\"49.5%\" fxFlex.lt-md=\"60%\">\r\n <input matInput formControlName=\"city\" id=\"{{id}}city\" placeholder=\"{{cityVerbiage}}\" required>\r\n <mat-error *ngIf=\"cityFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- State -->\r\n <mat-form-field fxFlex=\"20%\" fxFlex.lt-md=\"auto\">\r\n <mat-label>{{stateVerbiage}}</mat-label>\r\n <mat-select formControlName=\"state\" required>\r\n <mat-option *ngFor=\"let state of states\" id=\"{{id}}{{state}}\" [value]=\"state\">{{state}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"stateFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- Zip Code -->\r\n <mat-form-field fxFlex=\"28.5%\" fxFlex.lt-md=\"50%\">\r\n <input matInput formControlName=\"zipCode\" id=\"{{id}}zipCode\" mask=\"00000\" [sofArNumbersOnly]\r\n placeholder=\"{{zipCodeVerbiage}}\" required minlength=\"5\" maxlength=\"5\">\r\n <mat-error *ngIf=\"zipCodeFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n</form>\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n/**\r\n * The alphanumeric directive\r\n */\r\n@Directive({\r\n selector: '[alphanumeric]',\r\n standalone: false\r\n})\r\nexport class AlphaNumericDirective {\r\n\r\n /** The array of allowed keys */\r\n private allowedKeys: Array<string> = ['backspace', 'delete', 'escape', 'enter', 'tab'];\r\n\r\n /** Whether or not the entered value is a letter */\r\n private isLetter: boolean;\r\n\r\n /** Whether or not the entered value is a number */\r\n private isNumber: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n /**\r\n * Only allows alphanumeric inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent): void {\r\n const e = event as KeyboardEvent;\r\n\r\n // Reset values each time\r\n this.isNumber = false;\r\n this.isLetter = false;\r\n\r\n if (this.allowedKeys.indexOf(e.code.toLowerCase()) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.code.toLowerCase() === 'keya' && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.code.toLowerCase() === 'keyc' && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.code.toLowerCase() === 'keyx' && e.ctrlKey)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.code.toLowerCase().includes('digit') || e.code.toLowerCase().includes('numpad')) {\r\n this.isLetter = false;\r\n this.isNumber = true;\r\n }\r\n // Ensure that it is a number and stop the keypress\r\n let letterRegexMatch = e.code.toLowerCase().match(/key[a-zA-Z]/g);\r\n if (letterRegexMatch) {\r\n this.isNumber = false;\r\n this.isLetter = true;\r\n }\r\n // If the event is shift key and its not with a letter, its going to be a special character we want to prevent\r\n if (e.shiftKey && !letterRegexMatch) {\r\n this.isNumber = false;\r\n this.isLetter = false;\r\n }\r\n // Ensure that it is either a letter or a number\r\n if (!this.isLetter && !this.isNumber) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent copy pasted inputs\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) blockPaste(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Inject, Input, Optional, Renderer2 } from \"@angular/core\";\r\nimport { COMPOSITION_BUFFER_MODE, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Directive({\r\n selector: \"input[trim], textarea[trim]\",\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }],\r\n standalone: false\r\n})\r\nexport class InputTrimDirective implements ControlValueAccessor {\r\n\r\n private get _type(): string {\r\n return this._sourceElementRef.nativeElement.type || \"text\";\r\n }\r\n\r\n // Get a value of the trim attribute if it was set.\r\n @Input() trim: string;\r\n\r\n /**\r\n * Keep the value of input element in a cache.\r\n * @type {string}\r\n * @private\r\n */\r\n private _value: string;\r\n\r\n // Source services to modify elements.\r\n private _sourceRenderer: Renderer2;\r\n private _sourceElementRef: ElementRef;\r\n \r\n /**\r\n * Updates the value on the blur event.\r\n */\r\n @HostListener(\"blur\", [\"$event.type\", \"$event.target.value\"])\r\n onBlur(event: string, value: string): void {\r\n this.updateValue(event, value.trim());\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * Updates the value on the input event.\r\n */\r\n @HostListener(\"input\", [\"$event.type\", \"$event.target.value\"])\r\n onInput(event: string, value: string): void {\r\n this.updateValue(event, value);\r\n }\r\n\r\n onChange = (_: any) => {};\r\n\r\n onTouched = () => {};\r\n\r\n /**\r\n * Constructs the directive\r\n * @param renderer The renderer\r\n * @param ElementRef The elementRef\r\n * @param compositionMode The composition mode\r\n */\r\n constructor(\r\n @Inject(Renderer2) renderer: Renderer2,\r\n @Inject(ElementRef) elementRef: ElementRef,\r\n @Optional() @Inject(COMPOSITION_BUFFER_MODE) compositionMode: boolean\r\n ) {\r\n this._sourceRenderer = renderer;\r\n this._sourceElementRef = elementRef;\r\n }\r\n\r\n registerOnChange(fn: (_: any) => void): void {this.onChange = fn;}\r\n\r\n registerOnTouched(fn: () => void): void {this.onTouched = fn;}\r\n\r\n /**\r\n * Writes a new value to the element based on the type of input element.\r\n * @param value new value\r\n */\r\n public writeValue(value: any): void {\r\n\r\n this._value = value === \"\" ? \"\" : value || null;\r\n this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, \"value\", this._value);\r\n\r\n if (this._type !== \"text\") {\r\n this._sourceRenderer.setAttribute(this._sourceElementRef.nativeElement, \"value\", this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Sets state disabled.\r\n * @param isDisabled boolean value for state\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n \r\n /**\r\n * Writes the cursor position\r\n * @param cursorPosition the cursor current position\r\n * @param hasTypedSymbol\r\n */\r\n private setCursorPointer(cursorPosition: any, hasTypedSymbol: boolean): void {\r\n if (hasTypedSymbol && [\"text\", \"search\", \"url\", \"tel\", \"password\"].indexOf(this._type) >= 0) {\r\n this._sourceElementRef.nativeElement.setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n /**\r\n * Trims an input value, and sets it to the model and element.\r\n * @param value input value\r\n * @param event input event\r\n */\r\n private updateValue(event: string, value: string): void {\r\n\r\n if (this._value == value){\r\n value = this.trim !== \"\" && event !== this.trim ? value : value.trim();\r\n }\r\n\r\n const previous = this._value;\r\n const cursorPosition = this._sourceElementRef.nativeElement.selectionStart;\r\n \r\n this.writeValue(value);\r\n \r\n if ((this._value || previous) && this._value.trim() !== previous) {\r\n this.onChange(this._value);\r\n }\r\n \r\n const hasTypedSymbol = value && previous && value !== previous;\r\n \r\n this.setCursorPointer(cursorPosition, hasTypedSymbol);\r\n }\r\n}","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * The letters and special characters directive\r\n */\r\n@Directive({\r\n selector: '[sofArLettersAndSpecialCharacters]',\r\n standalone: false\r\n})\r\nexport class LettersCharactersDirective {\r\n\r\n /** True if letters and special characters allowed */\r\n @Input() public sofArLettersAndSpecialCharacters: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n\r\n /**\r\n * Only allows letter and special character inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (this.sofArLettersAndSpecialCharacters) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: spaces\r\n (e.keyCode === 32) ||\r\n // Allow: - (minus sign) on numpad or alphabet keyboard key\r\n (e.keyCode === 109 || e.keyCode === 189) ||\r\n // Allow: apostrophes\r\n (e.keyCode === 48) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.keyCode < 65 || e.keyCode > 90) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Allow user to copy and paste letters except special characters\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) allowPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n let pasteData = event.clipboardData.getData('text/plain');\r\n pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\\[\\];:\"<>,.?\\/\\\\|_+=]*/g, '');\r\n const inputElement = event.target as HTMLInputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const originalValue = inputElement.value;\r\n\r\n const newValue = [\r\n originalValue.slice(0, start),\r\n pasteData,\r\n originalValue.slice(end)\r\n ].join('');\r\n\r\n inputElement.value = newValue;\r\n inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;\r\n\r\n const evt = new Event('input', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n inputElement.dispatchEvent(evt);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * The letters only directive\r\n */\r\n@Directive({\r\n selector: '[sofArLettersOnly]',\r\n standalone: false\r\n})\r\nexport class LettersOnlyDirective {\r\n\r\n /** True if only letters allowed */\r\n @Input() public sofArLettersOnly: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n\r\n /**\r\n * Only allows letter inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (this.sofArLettersOnly) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: spaces\r\n (e.keyCode === 32) ||\r\n // Allow: - (minus sign) on numpad or alphabet keyboard key\r\n (e.keyCode === 109 || e.keyCode === 189) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.keyCode < 65 || e.keyCode > 90) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Allow user to copy and paste letters except special characters\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) allowPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n let pasteData = event.clipboardData.getData('text/plain');\r\n pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\\[\\];:’\"'<>,.?\\/\\\\|_+=-]*/g, '');\r\n const inputElement = event.target as HTMLInputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const originalValue = inputElement.value;\r\n\r\n const newValue = [\r\n originalValue.slice(0, start),\r\n pasteData,\r\n originalValue.slice(end)\r\n ].join('');\r\n\r\n inputElement.value = newValue;\r\n inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;\r\n\r\n const evt = new Event('input', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n inputElement.dispatchEvent(evt);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * A pipe that takes a simple string phone number and formats it\r\n */\r\n@Pipe({\r\n name: 'sofArPhone',\r\n standalone: false\r\n})\r\nexport class PhoneFormatPipe implements PipeTransform {\r\n transform(phoneNumber: string): string {\r\n\r\n // If input is undefined, then return empty string\r\n if (!phoneNumber) {\r\n return '';\r\n }\r\n\r\n // Check for more than 10 digits\r\n let formattedPhoneNumber = ('' + phoneNumber).replace(/\\D/g, '');\r\n if (formattedPhoneNumber.length > 10){\r\n return '';\r\n }\r\n\r\n // Check for correct pattern\r\n let formattedPhoneArray = formattedPhoneNumber.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (!!formattedPhoneArray) {\r\n return ['(', formattedPhoneArray[2], ') ', formattedPhoneArray[3], '-', formattedPhoneArray[4]].join('');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}","/** The validation key constants */\r\nexport class ValidationKeys {\r\n public static required: string = 'required';\r\n public static minLength: string = 'minlength';\r\n public static maxLength: string = 'maxlength';\r\n public static pattern: string = 'pattern';\r\n public static maskError: string = 'maskError';\r\n public static email: string = 'email';\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ValidationKeys } from '../models/constants';\r\n\r\n/**\r\n * Service to handle error alerts\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n /** the translation ket for close text */\r\n public readonly closeTextKey: string = 'common.dismiss';\r\n\r\n /**\r\n * The constructor\r\n * @param snackBar the angular material snackbar\r\n * @param translateService the translate service\r\n */\r\n constructor(\r\n public snackBar: MatSnackBar,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n /**\r\n * Opens a generic snack bar alert\r\n * @param detailsTextKey text to show in the alert\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public openCustomSnackBarAlert(detailsTextKey: string, params: any = {}, durationLength: number = 3000): void {\r\n\r\n const snackBarConfig = new MatSnackBarConfig();\r\n snackBarConfig.duration = durationLength;\r\n snackBarConfig.panelClass = ['red-snackbar'];\r\n\r\n this.snackBar.open(this.translateService.instant(detailsTextKey, params), this.translateService.instant(this.closeTextKey), snackBarConfig);\r\n }\r\n\r\n /**\r\n * Opens an alert with a the specific form validation error\r\n * @param form the form to validate\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public openFormInvalidSnackBarAlert(form: FormGroup, el: ElementRef, durationLength: number = 5000): void {\r\n this.getWhatIsNotFilledOut(form, el, durationLength);\r\n }\r\n\r\n /**\r\n * Iterates through a form (form group/form array) recursively to get the individual form control that is invalid\r\n * @param form the form to validate\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public getWhatIsNotFilledOut(form: FormGroup, el: ElementRef, durationLength: number): string {\r\n for (let field in form.controls) {\r\n let control = form.get(field);\r\n if (!control.invalid) {\r\n continue;\r\n }\r\n if (control instanceof FormArray) {\r\n for (let formArrayField in control.controls) {\r\n let formArrayControl = control.get(formArrayField);\r\n if (!formArrayControl.invalid) {\r\n continue;\r\n }\r\n if (formArrayControl instanceof FormGroup) {\r\n return this.getWhatIsNotFilledOut(formArrayControl, el, durationLength)\r\n }\r\n else {\r\n return this.getErrorMessage(formArrayControl, formArrayField, el, durationLength);\r\n }\r\n }\r\n }\r\n else if (control instanceof FormGroup) {\r\n for (let formGroupField in control.controls) {\r\n let formGroupControl = control.get(formGroupField);\r\n if (!formGroupControl.invalid) {\r\n continue;\r\n }\r\n if (formGroupControl instanceof FormGroup) {\r\n return this.getWhatIsNotFilledOut(formGroupControl, el, durationLength)\r\n }\r\n else {\r\n return this.getErrorMessage(formGroupControl, formGroupField, el, durationLength);\r\n }\r\n }\r\n }\r\n else {\r\n return this.getErrorMessage(control, field, el, durationLength);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the error message based on the form control that is invalid\r\n * @param control the invalid form control\r\n * @param field the field name that is invalid\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public getErrorMessage(control: AbstractControl, field: string, el: ElementRef, durationLength: number): string {\r\n let errorText = '';\r\n const error = control.errors;\r\n const errorKey = Object.keys(control.errors)[0]; // will only ever be one at a time even if multiple validation errors\r\n\r\n const formattedFieldText = this.getFieldFormattedText(field);\r\n switch (errorKey) {\r\n case ValidationKeys.required: {\r\n errorText = this.translateService.instant('error.requiredError', { 'fieldName': formattedFieldText });\r\n break;\r\n }\r\n case ValidationKeys.maxLength: {\r\n const errorValues = Object.values(error)[0];\r\n const requiredLength = Object.values(errorValues)[0];\r\n const actualValue = Object.values(errorValues)[1];\r\n errorText = this.translateService.instant('error.maxLengthError', { 'fieldName': formattedFieldText, 'actualValue': actualValue, 'requiredLength': requiredLength });\r\n break;\r\n }\r\n case ValidationKeys.minLength: {\r\n let errorValues = Object.values(error)[0];\r\n let requiredLength = Object.values(errorValues)[0];\r\n let actualValue = Object.values(errorValues)[1];\r\n errorText = this.translateService.instant('error.minLengthError', { 'fieldName': formattedFieldText, 'actualValue': actualValue, 'requiredLength': requiredLength });\r\n break;\r\n }\r\n case ValidationKeys.pattern:\r\n case ValidationKeys.maskError:\r\n case ValidationKeys.email: {\r\n errorText = this.translateService.instant('error.formatError', { 'fieldName': formattedFieldText });\r\n break;\r\n }\r\n default: {\r\n errorText = this.translateService.instant('error.allFieldsRequired');\r\n break;\r\n }\r\n }\r\n this.setFocusToFormControl(el);\r\n this.openCustomSnackBarAlert(errorText, durationLength);\r\n return;\r\n }\r\n\r\n /**\r\n * Formats the form control name to readable text to display to the user in an error alert\r\n * @param field The field\r\n */\r\n public getFieldFormattedText(field: string): string {\r\n let split = field.split(/(?=[A-Z])/); // splits a string by word\r\n let formattedFieldText = '';\r\n for (let i = 0; i < split.length; i++) {\r\n split[i] = split[i].charAt(0).toUpperCase() + split[i].substring(1);\r\n formattedFieldText += split[i] + ' ';\r\n }\r\n\r\n return formattedFieldText;\r\n }\r\n\r\n /**\r\n * Sets focus to the first invalid form control element\r\n * @param el Element to focus on\r\n */\r\n public setFocusToFormControl(el: ElementRef): void {\r\n // find all invalid controls and focus the first control found\r\n const invalidElements = el.nativeElement.querySelectorAll('input.ng-invalid, select.ng-invalid');\r\n if (invalidElements.length > 0) {\r\n invalidElements[0].focus(); // [0] will always be the form itself [1] will be the first control\r\n }\r\n\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sofArDateInputFilter]',\r\n standalone: false\r\n})\r\nexport class DateInputFilterDirective {\r\n @HostListener('input', ['$event'])\r\n onInput(event: any) : void {\r\n const input = event.target.value;\r\n event.target.value = input.replace(/[^0-9\\/]/g, '');\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { SofAddressComponent } from './components/sof-address/sof-address.component';\r\nimport { AlphaNumericDirective } from './directives/alphanumeric/alphanumeric.directive';\r\nimport { InputTrimDirective } from './directives/input-trim/input-trim.directive';\r\nimport { LettersCharactersDirective } from './directives/letters-characters/letters-characters.directive';\r\nimport { LettersOnlyDirective } from './directives/letters-only/letters-only.directive';\r\nimport { NumbersOnlyDirective } from './directives/numbers-only/numbers-only.directive';\r\nimport { PhoneFormatPipe } from './pipes/phone-format.pipe';\r\nimport { AlertService } from './services/alert.service';\r\nimport { DateInputFilterDirective } from './directives/date-input-filter/date-input-filter.directive';\r\n\r\n/** The components */\r\nconst components = [\r\n SofAddressComponent\r\n];\r\n\r\n/** The directives */\r\nconst directives = [\r\n LettersCharactersDirective,\r\n LettersOnlyDirective,\r\n NumbersOnlyDirective,\r\n AlphaNumericDirective,\r\n InputTrimDirective,\r\n DateInputFilterDirective\r\n];\r\n\r\nconst pipes = [\r\n PhoneFormatPipe\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatSnackBarModule\r\n];\r\n\r\n/** Armature forms module */\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n ...materialModules\r\n ],\r\n providers: [\r\n AlertService\r\n ],\r\n exports: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ]\r\n})\r\nexport class FormsModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MobileHeaderNavSettings } from '../../models/mobile-header-nav.settings';\r\n\r\n/** The mobile header navigation component */\r\n@Component({\r\n selector: 'sof-ar-mobile-header-menu',\r\n templateUrl: './mobile-header-menu.component.html',\r\n styleUrls: ['./mobile-header-menu.component.scss'],\r\n standalone: false\r\n})\r\nexport class MobileHeaderMenuComponent implements OnInit {\r\n /** Component Input - the mobile header nav settings */\r\n @Input() public settings: MobileHeaderNavSettings = {};\r\n\r\n /** The menu icon */\r\n public menuIcon: string;\r\n\r\n /** The icon to close the menu */\r\n public closeMenuIcon: string;\r\n\r\n /** The icon color for the menu open/close */\r\n public iconColor: string;\r\n\r\n /** The current icon that should be displayed */\r\n public currentIcon: string;\r\n\r\n /** The mobile header height */\r\n public mobileHeaderHeight: number;\r\n\r\n /** Initializes the component */\r\n public ngOnInit(): void {\r\n this.settings.menuIcon ? this.menuIcon = this.settings.menuIcon : this.menuIcon = 'fas fa-bars';\r\n this.settings.closeMenuIcon ? this.closeMenuIcon = this.settings.closeMenuIcon : this.closeMenuIcon = 'fas fa-times';\r\n this.settings.iconColor ? this.iconColor = this.settings.iconColor : this.iconColor = '#808080';\r\n this.settings.mobileHeaderHeight ? this.mobileHeaderHeight = this.settings.mobileHeaderHeight : this.mobileHeaderHeight = 56;\r\n this.currentIcon = this.menuIcon;\r\n }\r\n\r\n /** Change the icon to the close menu icon */\r\n public changeToCloseIcon(): void {\r\n this.currentIcon = this.closeMenuIcon;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n /** Change the icon to the menu icon */\r\n public changeToMenuIcon(): void {\r\n this.currentIcon = this.menuIcon;\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div fxHide.gt-xs>\r\n <div>\r\n <button class=\"sof-ar-menu-btn\" mat-icon-button aria-label=\"menu-button\" (click)=\"snav.toggle()\">\r\n <span class=\"sof-ar-menu-icon\" [style.color]=\"iconColor\">\r\n <i class=\"{{currentIcon}}\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n <div>\r\n <mat-sidenav-container>\r\n <mat-sidenav #snav fixedInViewport [fixedTopGap]=\"mobileHeaderHeight\" (openedStart)=\"changeToCloseIcon()\" (closedStart)=\"changeToMenuIcon()\">\r\n <!-- NG-Content Mobile Headers Items -->\r\n <ng-content select=\"[sof-ar-mobile-header-menu-items]\"></ng-content>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <!-- NG Content Main Content -->\r\n <ng-content sof-ar-mobile-header-main-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ArmatureHeaderComponent } from './components/header/header.component';\r\nimport { MobileHeaderMenuComponent } from './components/mobile-header-menu/mobile-header-menu.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureHeaderComponent,\r\n MobileHeaderMenuComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatToolbarModule,\r\n MatMenuModule,\r\n MatButtonToggleModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatSlideToggleModule,\r\n MatSidenavModule,\r\n MatTooltipModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n ...components,\r\n ...materialModules\r\n ],\r\n providers: [TranslateService]\r\n})\r\nexport class ArmatureHeaderModule { }\r\n","import { Component, Input } from '@angular/core';\r\n/** \r\n * The Softheon tabs component \r\n * @input navLinks, The nav links for the mat tabs *required\r\n * */\r\n@Component({\r\n selector: 'sof-tabs',\r\n templateUrl: './sof-tabs.component.html',\r\n styleUrl: './sof-tabs.component.scss',\r\n standalone: false\r\n})\r\nexport class SofTabsComponent {\r\n /** The nav links for the mat tabs *required */\r\n @Input({required:true}) public navLinks: Array<TabNavLink>;\r\n}\r\n/** \r\n * The navigation links for tabs interface \r\n * @property path: string, The URL to navigate to \r\n * @property label: string, The text to display on the tab\r\n * @property disabled (optional): boolean, Is the tab disabled\r\n * @property queryParams (optional): Object, The queryParams to add to the path\r\n * */\r\nexport interface TabNavLink {\r\n path: string;\r\n label: string;\r\n disabled?: boolean;\r\n queryParams?: { [key:string] : string | string[] };\r\n};","<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (link of navLinks; track $index) {\r\n <a mat-tab-link \r\n [routerLink]=\"link.path\" [disabled]=\"link.disabled\" \r\n class=\"tab-link\" [class.disabled]=\"link.disabled\" routerLinkActive=\"active\" \r\n #rla=\"routerLinkActive\" [active]=\"rla.isActive\" [queryParams]=\"link.queryParams\" \r\n [id]=\"'tab-' + $index\" [disableRipple]=\"true\">\r\n {{link.label | translate}}\r\n </a>\r\n }\r\n</nav>\r\n<!-- *The corresponding <router-outlet> must be wrapped in an <mat-tab-nav-panel> component -->\r\n<mat-tab-nav-panel #tabPanel>\r\n <router-outlet/>\r\n</mat-tab-nav-panel>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * The Softheon Sub Navigation component \r\n */\r\n@Component({\r\n selector: 'sof-sub-navigation',\r\n templateUrl: './sof-sub-navigation.component.html',\r\n styleUrl: './sof-sub-navigation.component.scss',\r\n standalone: false\r\n})\r\nexport class SofSubNavigationComponent {\r\n /** The nav links for the sub navigation. *required */\r\n @Input({required:true}) public subNavigationData: Array<SubNavigationData>;\r\n /** Whether to use route navigation indicator */\r\n @Input() public useRouteNavigation : boolean = true;\r\n /** Emit the current active index */\r\n @Output() public activeIndex: EventEmitter<number> = new EventEmitter<number>();\r\n /** The current active option index */\r\n public currentActiveOptionIndex: number = 0;\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** On component init */\r\n public ngOnInit() {}\r\n\r\n /**\r\n * Handle navigation link click event\r\n * @param index the nav link index in the subNavigationData config array\r\n * @param disabled whether the clicked navigation is disabled\r\n */\r\n public handleNavLinkClick(index:number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.currentActiveOptionIndex = index;\r\n this.activeIndex.emit(index);\r\n }\r\n }\r\n\r\n /**\r\n * Handle selection option click event\r\n * @param value the nav link label value\r\n */\r\n public handleOptionClick(value: string): void {\r\n this.subNavigationData.forEach( (nav, index) => {\r\n if (nav.label == value) {\r\n this.currentActiveOptionIndex = index;\r\n this.activeIndex.emit(index);\r\n }\r\n }) \r\n }\r\n}\r\n/** \r\n * The navigation data for sub navigation interface \r\n * @property label: string, The text to display on the link\r\n * @property path (optional): string, The URL to navigate to \r\n * @property disabled (optional): boolean, Is the nav link disabled\r\n * @property queryParams (optional): Object, The queryParams to add to the path\r\n * @property icon (optional): string, The icon class tag to define the icon\r\n * */\r\nexport interface SubNavigationData {\r\n label: string;\r\n path?: string;\r\n disabled?: boolean;\r\n queryParams?: { [key:string] : string | string[] };\r\n icon?: string;\r\n};","<div fxLayout=\"row\" p-a-40>\r\n @if (useRouteNavigation) {\r\n <mat-nav-list fxLayout=\"column\" fxLayoutGap=\"5px\" [attr.aria-label]=\"'armature.sof-sub-navigation.aria.nav-list'|translate\">\r\n @for (nav of subNavigationData; track $index) {\r\n <a mat-list-item tabindex=\"0\" [id]=\"'sub-nav-' + $index\"\r\n [routerLink]=\"!nav.disabled && nav.path ? nav.path : null\" [disabled]=\"nav.disabled\" \r\n class=\"sub-nav-item\" [class.disabled]=\"nav.disabled\" routerLinkActive=\"active\" \r\n #rla=\"routerLinkActive\" [activated]=\"rla.isActive\" [queryParams]=\"nav.queryParams\" \r\n [disableRipple]=\"true\" (click)=\"handleNavLinkClick($index, nav.disabled)\">\r\n <div fxLayout=\"row\">\r\n <div class=\"selected-indicator-container\"></div>\r\n <div fxFlex class=\"nav-item-content-container\">\r\n @if (nav?.icon) {\r\n <span aria-hidden=\"true\" class=\"sub-nav-icon-styling\">\r\n <i class=\"{{nav?.icon}}\"></i>\r\n </span>\r\n }\r\n <span class=\"nav-label-text\">{{nav.label | translate}}</span>\r\n </div>\r\n </div>\r\n </a>\r\n }\r\n </mat-nav-list>\r\n } \r\n @else {\r\n <mat-selection-list #subNavSelection [multiple]=\"false\" fxLayout=\"column\" fxLayoutGap=\"5px\" \r\n [attr.aria-label]=\"'armature.sof-sub-navigation.aria.selection-list'|translate\" \r\n (selectionChange)=\"handleOptionClick(subNavSelection.selectedOptions.selected[0].value)\">\r\n @for (nav of subNavigationData; track $index) {\r\n <mat-list-option [value]=\"nav.label\" [disabled]=\"nav.disabled\" [id]=\"'sub-nav-' + $index\" #navOption\r\n class=\"sub-nav-item\" [class.active]=\"navOption.selected\" [class.disabled]=\"nav.disabled\"\r\n [disableRipple]=\"true\">\r\n <div fxLayout=\"row\">\r\n <div class=\"selected-indicator-container\"></div>\r\n <div fxFlex class=\"nav-item-content-container\">\r\n @if (nav?.icon) {\r\n <span aria-hidden=\"true\" class=\"sub-nav-icon-styling\">\r\n <i class=\"{{nav?.icon}}\"></i>\r\n </span>\r\n }\r\n <span class=\"nav-label-text\">{{nav.label | translate}}</span>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n }\r\n <ng-content/>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { BannerService } from '../core/services/banner.service';\r\n\r\nimport { ArmatureNavigationComponent } from './components/navigation/navigation.component';\r\nimport { SofTabsComponent } from './components/sof-tabs-navigation/sof-tabs.component';\r\nimport { SofSubNavigationComponent } from './components/sof-sub-navigation/sof-sub-navigation.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureNavigationComponent,\r\n SofTabsComponent,\r\n SofSubNavigationComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatTooltipModule,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatStepperModule,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatStepperModule,\r\n MatSelectModule,\r\n MatProgressBarModule,\r\n MatTabsModule\r\n];\r\n\r\n/** The Navigation Module */\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n ...components,\r\n ...materialModules\r\n ],\r\n providers: [TranslateService, BannerService]\r\n})\r\nexport class NavigationModule { }\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { CssOverride } from '../models/css-override';\r\n\r\n// tslint:disable: prefer-for-of\r\n// tslint:disable: prefer-function-over-method\r\n/** The css override service */\r\n@Directive({\r\n selector: '[sofArCssOverride]',\r\n standalone: false\r\n})\r\nexport class CssOverrideDirective {\r\n\r\n /** The css overrides */\r\n @Input() public sofArCssOverride: Array<CssOverride> = [];\r\n\r\n /** The changes mutation observer */\r\n private readonly changes: MutationObserver;\r\n\r\n /**\r\n * Constructs the directive\r\n */\r\n constructor(\r\n ) {\r\n this.changes = new MutationObserver((mutations: Array<MutationRecord>) => {\r\n this.overrideCss(this.sofArCssOverride);\r\n });\r\n this.changes.observe(document.body, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n\r\n /**\r\n * Overrides the css on the page\r\n * @param overrides the css overrides\r\n */\r\n private overrideCss(overrides: Array<CssOverride>): void {\r\n overrides.forEach(cssOverride => {\r\n switch (cssOverride.selector) {\r\n case 'class':\r\n const elementsByClass = document.getElementsByClassName(cssOverride.parameter);\r\n for (let i = 0; i < elementsByClass.length; i++) {\r\n const e: HTMLElement = elementsByClass[i] as HTMLElement;\r\n cssOverride.attributes.forEach(attr => {\r\n e.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n }\r\n break;\r\n case 'tag':\r\n const elementsByTag = document.getElementsByTagName(cssOverride.parameter);\r\n for (let i = 0; i < elementsByTag.length; i++) {\r\n const e: HTMLElement = elementsByTag[i] as HTMLElement;\r\n cssOverride.attributes.forEach(attr => {\r\n e.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n }\r\n break;\r\n case 'id':\r\n default:\r\n const element = document.getElementById(cssOverride.parameter);\r\n cssOverride.attributes.forEach(attr => {\r\n element.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { CssOverrideDirective } from './directives/css-override.directive';\r\n\r\nimport { ThemeService } from './services/theme.service';\r\n\r\n/** Armature theme module */\r\n@NgModule({\r\n declarations: [\r\n CssOverrideDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n ThemeService\r\n ],\r\n exports: [\r\n CssOverrideDirective\r\n ]\r\n})\r\nexport class ThemeModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n/**\r\n * ⚠️ this component needs to be audited ... \r\n*/\r\n@Component({\r\n selector: 'sof-modal',\r\n templateUrl: './sof-modal.component.html',\r\n styleUrls: ['./sof-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofModalComponent implements OnInit {\r\n\r\n /** The value of the dont show this message again checkbox */\r\n public dontShowAgainCheckboxValue: boolean = false;\r\n\r\n /** The dialog result object to return once closed */\r\n public dialogResult: DialogResult;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: ModalData,\r\n private dialogRef: MatDialogRef<SofModalComponent>\r\n ) { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.data.cancelButtonText = !this.data.cancelButtonText ? 'common.cancel' : this.data.cancelButtonText;\r\n this.data.confirmButtonText = !this.data.confirmButtonText ? 'common.okay' : this.data.confirmButtonText;\r\n }\r\n\r\n /**\r\n * Closes the dialog with the given value\r\n * @param value The value\r\n */\r\n public close(value: boolean): void {\r\n this.dialogResult = {\r\n closeDialogConfirm: value,\r\n showDontShowAgainCheckbox: this.data.showDontShowAgainCheckbox,\r\n dontShowAgainCheckboxValue: this.data.showDontShowAgainCheckbox ? this.dontShowAgainCheckboxValue : null\r\n } as DialogResult;\r\n\r\n this.dialogRef.close(this.dialogResult);\r\n }\r\n}\r\n\r\n/**\r\n * The dialog result object\r\n */\r\nexport class DialogResult {\r\n /** The value of the dialog closing */\r\n public closeDialogConfirm: boolean;\r\n /** Whether or not the dont show this message again checkbox was checked */\r\n public showDontShowAgainCheckbox: boolean;\r\n /** The value of the dont show this message again checkbox */\r\n public dontShowAgainCheckboxValue: boolean;\r\n}\r\n\r\n/**\r\n * The modal data class\r\n */\r\nexport class ModalData {\r\n /** The header text */\r\n public headerText: string;\r\n /** The content text */\r\n public contentText: string;\r\n /** The indicator for being a delete modal */\r\n public isDelete?: boolean;\r\n /** The indicator to show the don't show popup again checkbox */\r\n public showDontShowAgainCheckbox?: boolean;\r\n /** The cancel button text */\r\n public cancelButtonText?: string;\r\n /** The confirm button text */\r\n public confirmButtonText?: string;\r\n /** The indicator for hiding the cancel button */\r\n public hideCancel: boolean\r\n}","<div role=\"modal\" aria-labelledby=\"modal-heading\">\r\n <mat-toolbar class=\"dialog-header-container\" fxLayoutAlign=\"space-between\">\r\n <h2 id=\"modal-heading\" class=\"sof-dialog-header\" [innerHTML]=\"data.headerText | translate\"></h2>\r\n <button id=\"modal-close\" (click)=\"close(false)\" mat-icon-button mat-dialog-close\r\n aria-label=\"{{data.cancelButtonText | translate}}\">\r\n <mat-icon mat-list-icon [attr.aria-hidden]=\"true\">close</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n <div fxLayout=\"column\" class=\"dialog-body-container\">\r\n <div fxFlex=\"auto\" fxLayout=\"column\" fxLayoutAlign=\"center\">\r\n <div class=\"sof-dialog-body\" [innerHTML]=\"data.contentText | translate\" fxFlex=\"80%\" fxFlex.lt-md=\"auto\">\r\n </div>\r\n <mat-checkbox *ngIf=\"data.showDontShowAgainCheckbox\" [(ngModel)]=\"dontShowAgainCheckboxValue\"\r\n color=\"primary\">\r\n {{ 'armature.sof-modal.dont-show-this-message-again' | translate }}\r\n </mat-checkbox>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayout.lt-sm=\"column\" fxLayoutAlign=\"center center\" fxLayoutGap=\"5%\"\r\n fxLayoutGap.lt-sm=\"2%\" class=\"dialog-buttons-container\">\r\n <button *ngIf=\"!data.hideCancel\" mat-flat-button fxFlexOrder.lt-sm=\"2\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"primary\" emphasis=\"contained\" (click)=\"close(false)\"\r\n id=\"dialog-cancel\">\r\n {{ data.cancelButtonText | translate }}\r\n </button>\r\n <button *ngIf=\"!data.isDelete\" mat-flat-button fxFlexOrder.lt-sm=\"1\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"primary\" emphasis=\"solid\" (click)=\"close(true)\"\r\n id=\"dialog-accept\">\r\n {{ data.confirmButtonText | translate }}\r\n </button>\r\n <button *ngIf=\"data.isDelete\" mat-flat-button fxFlexOrder.lt-sm=\"1\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"destroy\" emphasis=\"solid\" (click)=\"close(true)\"\r\n id=\"dialog-error\">\r\n {{ data.confirmButtonText | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { Component, EventEmitter, inject, Input, OnDestroy, Output } from \"@angular/core\";\r\nimport { DOCUMENT } from \"@angular/common\";\r\n\r\n/** The handle component */\r\n@Component({\n selector: \"sof-handle\",\n templateUrl: \"./sof-handle.component.html\",\n styleUrls: [\"./sof-handle.component.scss\"],\n standalone: false\n})\r\nexport class SofHandleComponent implements OnDestroy {\r\n\r\n /** The checkmark color */\r\n @Input() public checkmarkColor: string = \"rgba(0, 0, 0, 0.87)\";\r\n\r\n /** The input */\r\n @Input() public handleList: Array<HandleInput> = [];\r\n\r\n /** The label text */\r\n @Input() public labelText: string = \"\";\r\n\r\n /** The handle order changed event */\r\n @Output() public orderChanged: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /** The checkbox toggled event */\r\n @Output() public checkboxToggled: EventEmitter<number> = new EventEmitter();\r\n\r\n /** The handle that's in focus */\r\n public handleInFocus: number = null;\r\n\r\n private document: Document = inject(DOCUMENT);\r\n\r\n /** The body element */\r\n private bodyElement: HTMLElement = this.document.body;\r\n\r\n /** Component Destruction */\r\n public ngOnDestroy(): void {\r\n window.removeEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /**\r\n * Moves the item in the array as per the drop\r\n * @param event The drop event\r\n */\r\n public drop(event: CdkDragDrop<string[]>): void {\r\n this.bodyElement.classList.remove('inheritCursors');\r\n this.bodyElement.style.cursor = 'unset';\r\n moveItemInArray(this.handleList, event.previousIndex, event.currentIndex);\r\n this.orderChanged.next(true);\r\n }\r\n\r\n /**\r\n * Handles drag start event\r\n */\r\n public dragStart(): void {\r\n this.bodyElement.classList.add('inheritCursors');\r\n this.bodyElement.style.cursor = 'grabbing';\r\n }\r\n\r\n /**\r\n * Manually changes order using keyboard events\r\n * @param currIdx The current index of the element\r\n * @param isDown If the order is down or not\r\n */\r\n public manualOrderChange(currIdx: number, isDown: boolean): void {\r\n const newIdx = isDown ? currIdx + 1 : currIdx - 1;\r\n if (newIdx >= 0 && newIdx <= this.handleList.length - 1) {\r\n moveItemInArray(this.handleList, currIdx, newIdx);\r\n this.handleInFocus = newIdx;\r\n setTimeout(() => {\r\n this.document.getElementById('drag' + newIdx)?.focus();\r\n }, 50);\r\n this.orderChanged.next(true);\r\n } else {\r\n this.document.getElementById('drag' + currIdx)?.blur();\r\n this.handleInFocus = null;\r\n }\r\n }\r\n\r\n /**\r\n * Checkbox change event\r\n * @param index The checkbox index\r\n * @param eventVal The checkbox event value\r\n */\r\n public checkboxChanged(index: number, eventVal: boolean): void {\r\n this.handleList[index].isChecked = eventVal;\r\n this.checkboxToggled.next(index);\r\n }\r\n\r\n /**\r\n * Triggered when a handle is in focus\r\n * @param idx The index of handle in focus\r\n */\r\n public onFocus(idx: number): void {\r\n this.handleInFocus = idx;\r\n window.addEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /** When handle goes out of focus */\r\n public outFocus(): void {\r\n this.handleInFocus = null;\r\n window.removeEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /** The custom keydown listener */\r\n private keydownListener(event: KeyboardEvent): void {\r\n if (event.code == 'ArrowDown' || event.code == 'ArrowUp') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n\r\n/** The handle input model */\r\nexport interface HandleInput {\r\n /** The text */\r\n text?: string;\r\n /** Is checked or not */\r\n isChecked?: boolean;\r\n}","<div \r\n cdkDropList \r\n class=\"handle-list full-width\" \r\n cdkDropListLockAxis=\"y\"\r\n cdkDropListAutoScrollStep=\"5\"\r\n (cdkDropListDropped)=\"drop($event)\">\r\n @if (labelText) {\r\n <span class=\"droplist-label\">{{ labelText | translate }}</span>\r\n }\r\n @for (item of handleList; track item; let idx = $index) {\r\n <div \r\n cdkDrag \r\n class=\"box-container\" \r\n cdkDragBoundary=\".handle-list\"\r\n (cdkDragStarted)=\"dragStart()\" \r\n [ngClass]=\"{'drag-in-focus': handleInFocus == idx}\">\r\n <div class=\"handle-box\" [ngClass]=\"{'checked': item.isChecked}\">\r\n <div \r\n cdkDragHandle\r\n tabindex=\"0\" \r\n class=\"drag-handle\" \r\n [id]=\"'drag'+idx\" \r\n (keyup.arrowup)=\"manualOrderChange(idx, false)\"\r\n (keyup.arrowdown)=\"manualOrderChange(idx, true)\" \r\n (keyup.enter)=\"checkboxChanged(idx, !item.isChecked)\" \r\n (focus)=\"onFocus(idx)\" \r\n (focusout)=\"outFocus()\">\r\n <i class=\"ph-bold ph-dots-six-vertical\"></i>\r\n </div>\r\n <div \r\n *cdkDragPlaceholder\r\n class=\"handle-custom-placeholder\">\r\n <i class=\"ph-bold ph-dots-six-vertical\"></i>\r\n </div>\r\n <div \r\n (click)=\"checkboxChanged(idx, !item.isChecked)\" \r\n [title]=\"item.text | translate\" \r\n class=\"check-container full-width\"\r\n fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <span fxFlex=\"90%\" class=\"handle-label\">{{ item.text | translate }}</span>\r\n @if(item.isChecked) {\r\n <i \r\n fxFlex=\"10%\" fxLayoutAlign=\"end center\" \r\n [style.color]=\"checkmarkColor\" class=\"check-icon ph-fill ph-check-circle\">\r\n </i>\r\n }\r\n @else {\r\n <i fxFlex=\"10%\" fxLayoutAlign=\"end center\" class=\"check-icon ph-bold ph-circle\"></i>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * The Context component for ag grid\r\n * @note You can use it like this:\r\n * \r\n * `<sof-context-menu></sof-context-menu>`\r\n*/\r\n@Component({\r\n selector: 'sof-context-menu',\r\n templateUrl: './sof-context.component.html',\r\n styleUrls: ['./sof-context.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\nexport class SofContextComponent {\r\n /** List of menu items */\r\n public menuItems: ContextMenuItem[] = [];\r\n\r\n /** Menu position (x, y) */\r\n public position = { x: '0px', y: '0px' };\r\n\r\n /** Selected row data */\r\n public selectedRowData: any = null;\r\n\r\n /** Whether the menu is visible */\r\n public isMenuVisible = false;\r\n\r\n /** Tooltip text */\r\n public tooltipText: string = '';\r\n\r\n /** Whether tooltip is visible */\r\n public tooltipVisible = false;\r\n\r\n /** The position of the tooltip */\r\n public tooltipPosition = { x: '0px', y: '0px' };\r\n\r\n /** The tooltip timer */\r\n private tooltipTimer: any;\r\n\r\n /**\r\n * Constructs the component\r\n * @param cdRef The change detector\r\n */\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) { }\r\n\r\n /**\r\n * Sets the menu items\r\n * @param items List of context menu items\r\n */\r\n public setMenuItems(items: ContextMenuItem[]): void {\r\n this.menuItems = [...items];\r\n }\r\n\r\n /**\r\n * Shows the context menu at the mouse position\r\n * @param event Mouse event\r\n * @param rowData Data of the clicked row\r\n */\r\n public showContextMenu(event: MouseEvent, rowData: any): void {\r\n event.preventDefault();\r\n this.selectedRowData = rowData;\r\n this.position = { x: `${event.clientX}px`, y: `${event.clientY}px` };\r\n\r\n this.isMenuVisible = true;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Handles menu item click event\r\n * @param item Clicked menu item\r\n */\r\n public onMenuItemClick(item: ContextMenuItem): void {\r\n if (!item.disabled) {\r\n item.action(this.selectedRowData);\r\n this.isMenuVisible = false;\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Shows tooltip when hovering over a menu item\r\n * @param event Mouse event\r\n * @param description Tooltip text\r\n */\r\n public showTooltip(event: MouseEvent, description: string): void {\r\n if (description) {\r\n if (this.tooltipTimer) {\r\n clearTimeout(this.tooltipTimer);\r\n }\r\n\r\n this.tooltipTimer = setTimeout(() => {\r\n this.tooltipText = description;\r\n this.tooltipVisible = true;\r\n\r\n const cursorX = event.clientX;\r\n const cursorY = event.clientY;\r\n const tooltipOffset = 10;\r\n\r\n let tooltipX = cursorX + tooltipOffset - 320;\r\n let tooltipY = cursorY + tooltipOffset - 60;\r\n\r\n if (tooltipX + 200 > window.innerWidth) {\r\n tooltipX = cursorX - 210;\r\n }\r\n\r\n if (tooltipY + 50 > window.innerHeight) {\r\n tooltipY = cursorY - 55;\r\n }\r\n\r\n this.tooltipPosition = { x: `${tooltipX}px`, y: `${tooltipY}px` };\r\n this.cdRef.detectChanges();\r\n }, 1000);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Hides the tooltip when the user moves the mouse away\r\n */\r\n public hideTooltip(): void {\r\n if (this.tooltipTimer) {\r\n clearTimeout(this.tooltipTimer);\r\n this.tooltipTimer = null;\r\n }\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Hides the menu when clicking outside\r\n */\r\n @HostListener('document:click')\r\n public onOutsideClick(): void {\r\n this.isMenuVisible = false;\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n\r\n/** Defines the structure of a context menu item */\r\nexport interface ContextMenuItem {\r\n type: string;\r\n text: string;\r\n iconClasses: string[];\r\n action: (data: any, mailbox?: string) => void;\r\n disabled?: boolean;\r\n description?: string;\r\n hidden?: boolean;\r\n}\r\n","<div class=\"sof-context-menu\" *ngIf=\"isMenuVisible\" [style.left]=\"position.x\" [style.top]=\"position.y\">\r\n <ng-container *ngFor=\"let item of menuItems\">\r\n <div *ngIf=\"!item.hidden\" class=\"sof-context-item\" [class.disabled]=\"item.disabled\" (click)=\"onMenuItemClick(item)\" (mouseenter)=\"showTooltip($event, item.description)\" (mouseleave)=\"hideTooltip()\">\r\n <mat-icon class=\"context-icon\" [ngClass]=\"item.iconClasses\"></mat-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<!-- Tooltip -->\r\n<div class=\"tooltip\" *ngIf=\"tooltipVisible\" [style.left]=\"tooltipPosition.x\" [style.top]=\"tooltipPosition.y\">\r\n {{ tooltipText }}\r\n</div>\r\n","import { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n/** \r\n * The softheon alert component \r\n * @deprecated please use `SofCallout` instead\r\n*/\r\n@Component({\r\n selector: 'sof-alert',\r\n templateUrl: './sof-alert.component.html',\r\n styleUrls: ['./sof-alert.component.scss'],\r\n animations: [\r\n trigger('animateExpand', [\r\n state('collapsed', style({ height: '0px', minHeight: '0' })),\r\n state('expanded', style({ height: '*' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\r\n ])\r\n ],\r\n host: { 'role': 'alert' },\r\n standalone: false\r\n})\r\nexport class SofAlertComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public alertText: string = \"\";\r\n\r\n /** Whether to show background color not */\r\n @Input() public hideBackground: boolean = false;\r\n\r\n /**\r\n * The alert color\r\n * Possible Values: 'information', 'success', 'warning', 'error', 'theme'\r\n */\r\n @Input() public alertColor: string = \"theme\";\r\n\r\n /** The icon class- this should be a font awesome class */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** Title for mobile banner text expand button */\r\n @Input() public mobileBannerExpandableTextTitle: string = \"\";\r\n\r\n /** Sub text for alert when mobileBannerExpandableTextTitle is provided */\r\n @Input() public alertSubText: string = \"\";\r\n\r\n /** If the screen is mobile size or not */\r\n public get isMobile(): boolean {\r\n return window.screen.width < 600;\r\n }\r\n\r\n /** If the mobile banner text is expanded or not */\r\n public expandedBanner: boolean = false;\r\n\r\n /** The default icons for the banner colors */\r\n public alertColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /** Implements on init */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.alertColorIconMapping[this.alertColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"alert-box\" [ngClass]=\"alertColor\" [class.alert-box-override]=\"hideBackground\">\r\n <div class=\"alert-inner\" [ngClass]=\"alertColor\" [class.no-background]=\"hideBackground\">\r\n <span class=\"alert-container\">\r\n @if (!(isMobile && mobileBannerExpandableTextTitle)) {\r\n <i class=\"alert-icon\" [ngClass]=\"[iconClass, alertColor]\"></i>\r\n }\r\n @if (true) {\r\n <span class=\"alert-title full-width\">\r\n <p class=\"alert-header\" [innerHtml]=\"(alertText | translate)\"></p>\r\n <div fxHide.gt-xs>\r\n <button (click)=\"expandedBanner = !expandedBanner\" id=\"expand-banner-text\"\r\n class=\"mobile-banner-expand\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span [innerHtml]=\"mobileBannerExpandableTextTitle | translate\"></span>\r\n <i class=\"fas\" [ngClass]=\"expandedBanner ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\r\n </button>\r\n <p class=\"alert-description m-t-10\" class=\"hidden-overflow\"\r\n [@animateExpand]=\"expandedBanner ? 'expanded' : 'collapsed'\" [innerHtml]=\"alertSubText | translate\"></p>\r\n </div>\r\n <div fxHide.xs>\r\n <p class=\"alert-description\" [innerHtml]=\"alertSubText | translate\"></p>\r\n </div>\r\n </span>\r\n } @else {\r\n <span class=\"alert-title\" [innerHTML]=\"(alertText | translate)\"></span>\r\n }\r\n </span>\r\n </div>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n/** \r\n * The softheon simplified alert component \r\n * @deprecated please use `SofCallout` instead\r\n*/\r\n@Component({\n selector: 'sof-simple-alert',\n templateUrl: './sof-simple-alert.component.html',\n styleUrls: ['./sof-simple-alert.component.scss'],\n host: { 'role': 'alert' },\n standalone: false\n})\r\nexport class SofSimpleAlertComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public alertText: string = \"\";\r\n\r\n /** Whether to show background color not */\r\n @Input() public hideBackground: boolean = false;\r\n\r\n /** The alert color */\r\n @Input() public alertColor: 'information' | 'success' | 'warning' | 'error' | 'theme' = \"theme\";\r\n\r\n /** The icon class - this should be a font awesome class */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** The default icons for the banner colors */\r\n public alertColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /** Implements on init */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.alertColorIconMapping[this.alertColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"sof-simple-alert\" fxLayout=\"row\" fxLayoutAlign=\"start\" [ngClass]=\"alertColor\" [class.no-background]=\"hideBackground\">\r\n <i class=\"simple-alert-icon\" [ngClass]=\"[iconClass, alertColor]\"></i>\r\n <div fxFlex=\"100%\" fxLayoutAlign=\"space-between center\" >\r\n <span class=\"simple-alert-text\" [innerHtml]=\"alertText | translate\"></span>\r\n <ng-content select=\"[sof-simple-alert-right]\"></ng-content>\r\n </div>\r\n</div>","import { OnInit, Component, Input } from '@angular/core';\r\n\r\n/** The softheon banner component */\r\n@Component({\r\n selector: 'sof-banner',\r\n templateUrl: './sof-banner.component.html',\r\n styleUrls: ['./sof-banner.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofBannerComponent implements OnInit {\r\n\r\n /** The primary banner information key to be translated */\r\n @Input() public primaryInfoKey: string;\r\n\r\n /** The secondary banner information key to be translated */\r\n @Input() public secondaryInfoKey?: string;\r\n\r\n /** The indicator to show the secondary banner */\r\n @Input() public showSecondaryBanner?: boolean = false;\r\n\r\n /**\r\n * The banner color\r\n * Possible Values: 'information', 'success', 'warning', 'error', 'theme'\r\n */\r\n @Input() public bannerColor?: string = \"theme\";\r\n\r\n /** The banner icon class name*/\r\n @Input() public iconClass?: string;\r\n\r\n /** The default icons for the banner colors */\r\n public bannerColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /**\r\n * Constructs the component\r\n */\r\n public constructor() { }\r\n\r\n /** Component initialization */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.bannerColorIconMapping[this.bannerColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"banner primary\" [ngClass]=\"bannerColor\">\r\n <i class=\"text-align-center banner-icon\" [ngClass]=\"[iconClass, bannerColor]\"></i> \r\n <p>{{ primaryInfoKey | translate }}</p>\r\n</div>\r\n<div *ngIf=\"showSecondaryBanner\" class=\"banner secondary\" [ngClass]=\"bannerColor\">\r\n <p>{{ secondaryInfoKey | translate }}</p>\r\n</div>","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/** The softheon progress bar component */\r\n@Component({\r\n selector: 'sof-progress-bar',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './sof-progress-bar.component.html',\r\n styleUrls: ['./sof-progress-bar.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofProgressBarComponent implements OnInit, OnChanges {\r\n /** The navigation route keys */\r\n @Input() public navbarStepKeys: Array<string> = [];\r\n\r\n /** The current active step */\r\n @Input() public stepActive: number = -1;\r\n\r\n /** The type of progress bar */\r\n @Input() public progressBarType: string = \"dot\";\r\n\r\n /** The navigation step titles */\r\n public navbarTitles: Array<string>;\r\n\r\n\r\n /**\r\n * Constructs the component\r\n * @param router The router\r\n */\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n /** Component initialization */\r\n public ngOnInit(): void {\r\n this.setNavbarTitles();\r\n }\r\n\r\n /**\r\n * On component @Input() changes\r\n * @param changes the changes\r\n */\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.setNavbarTitles();\r\n }\r\n\r\n /** Navigates to given step\r\n * @param stepNumber The step number to navigate to\r\n */\r\n public navigateToStep(stepNumber: number): void {\r\n if (stepNumber <= this.stepActive) {\r\n this.router.navigateByUrl(this.navbarStepKeys[stepNumber]);\r\n }\r\n }\r\n\r\n /** Navigates to step\r\n * @param step The step to navigate to\r\n */\r\n public navigateTo(step: string): void {\r\n this.router.navigateByUrl(step);\r\n }\r\n\r\n /** Sets the progress navigation bar step titles\r\n */\r\n public setNavbarTitles(): void {\r\n let tempTitlesArray: Array<string> = [];\r\n this.navbarStepKeys.forEach(key => {\r\n let stepPath = key.split(\"/\");\r\n let stepLanguageKey = `armature.sof-progress-bar.titles`;\r\n stepPath.forEach((step, i) => {\r\n if (i !== 0) {\r\n stepLanguageKey = `${stepLanguageKey}.${step}`;\r\n }\r\n });\r\n tempTitlesArray.push(stepLanguageKey);\r\n });\r\n this.navbarTitles = tempTitlesArray;\r\n }\r\n}","<ng-container *ngIf=\"progressBarType === 'slider'\">\r\n <div class=\"shopping-navbar\"\r\n [ngStyle]=\"{'background': 'linear-gradient(to right, #407BFF ' \r\n + (stepActive + 1) / navbarStepKeys.length * 100 + '%, #f0f0f0 ' + (stepActive + 1) / navbarStepKeys.length * 100 + '%)'}\">\r\n </div>\r\n <div fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" fxLayoutAlign=\"center\" fxLayoutGap=\"12%\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"3px\" *ngFor=\"let step of navbarStepKeys; let i = index\" (click)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\"\r\n [attr.aria-current]=\"i === stepActive ? 'step' : null\">\r\n <div class=\"step-title\"\r\n [ngClass]=\"{ 'step-title-active': i === stepActive, 'step-title-done': i < stepActive, 'step-title-not-reached': i > stepActive}\"\r\n [attr.role]=\"i < stepActive ? 'button' : null\" [attr.aria-pressed]=\"null\">\r\n {{ navbarTitles[i] | translate }}\r\n </div>\r\n </div>\r\n </div>\r\n <div fxHide.gt-sm>\r\n <mat-select class=\"step-titles-mobile\" disableOptionCentering panelClass=\"step-option\"\r\n [value]=\"navbarStepKeys[stepActive]\">\r\n <mat-option *ngFor=\"let step of navbarStepKeys; let i = index\" (click)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\" [disabled]=\"i > stepActive\"\r\n [value]=\"step\">\r\n {{ navbarTitles[i] | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"progressBarType === 'dot'\">\r\n <div fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" fxLayoutAlign=\"center\" fxLayoutGap=\"5%\">\r\n <div *ngFor=\"let step of navbarStepKeys; let i = index\" (keydown.enter)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n (click)=\"i <= stepActive ? navigateToStep(i) : null\" fxLayout=\"row\" fxLayoutGap=\"3px\" tabindex=\"0\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\"\r\n [attr.aria-current]=\"i === stepActive ? 'step' : null\">\r\n <div>\r\n <span *ngIf=\"i >= stepActive\" class=\"dot\" [ngClass]=\"{ 'dot-active': i === stepActive }\"\r\n [attr.aria-label]=\"i === stepActive ? ('armature.sof-progress-bar.step-labels.in-progress'|translate):('armature.sof-progress-bar.step-labels.not-done'|translate)\">\r\n </span>\r\n <span *ngIf=\"i < stepActive\">\r\n <i class=\"fas fa-check-circle dot-done\" color=\"primary\" [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n </div>\r\n <div class=\"step-title\"\r\n [ngClass]=\"{ 'step-title-active': i === stepActive, 'step-title-done': i < stepActive, 'step-title-not-reached': i > stepActive}\"\r\n [attr.role]=\"i < stepActive ? 'button' : null\" [attr.aria-pressed]=\"null\">\r\n {{ navbarTitles[i] | translate }}\r\n </div>\r\n </div>\r\n </div>\r\n <div fxHide.gt-sm fxLayout=\"row\">\r\n <div class=\"dot-mobile\"></div>\r\n <mat-select class=\"sof-stepper step-titles-mobile\" disableOptionCentering panelClass=\"step-option\"\r\n [value]=\"navbarStepKeys[stepActive]\" (selectionChange)=\"navigateTo($event.value)\">\r\n <mat-option fxHide.gt-sm *ngFor=\"let step of navbarStepKeys; let i = index\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\" [disabled]=\"i > stepActive\"\r\n [value]=\"step\">\r\n <div class=\"dot\" [ngClass]=\"{ 'dot-active': i === stepActive, 'dot-done': i < stepActive}\"></div>\r\n {{ navbarTitles[i] | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</ng-container>","import { \r\n Component, \r\n Host, \r\n Input, \r\n OnDestroy, \r\n OnInit, \r\n Optional, \r\n Output, \r\n Self, \r\n EventEmitter, \r\n HostListener, \r\n ChangeDetectionStrategy \r\n} from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/** The sof button toggle group component */\r\n@Component({\r\n selector: 'sof-button-toggle-group',\r\n templateUrl: './sof-button-toggle-group.component.html',\r\n styleUrls: ['./sof-button-toggle-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofButtonToggleGroupComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n /** The label text */\r\n @Input() labelText: string = '';\r\n\r\n /** Any custom classes for the label */\r\n @Input() labelClass: string = '';\r\n\r\n /** Whether the field is required or not */\r\n @Input() isRequired: boolean = true;\r\n\r\n /** The toggle button data */\r\n @Input() buttonData!: ButtonToggleData;\r\n\r\n /** The tooltip data */\r\n @Input() tooltipData?: ButtonToggleTooltipData = {};\r\n\r\n /** The layout align input for styling */\r\n @Input() layoutAlign: { label?: string, toggle?: string } = {};\r\n\r\n /** Whether the toggle is disabled or not */\r\n @Input(\"disabled\") public isDisabled: boolean = false;\r\n\r\n /** The error message text */\r\n @Input() errorMessage: string = '';\r\n\r\n /** The aria-label for the button group */\r\n @Input() ariaLabel: string = '';\r\n\r\n /** Emits toggle change event */\r\n @Output() toggleChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The toggle value */\r\n public value: any = undefined;\r\n\r\n /** The form control name */\r\n public controlName: string | number = \"\";\r\n\r\n /** If the form control was touched or not */\r\n private touched: boolean = false;\r\n\r\n /** The OnChange form control method */\r\n private onChange = (toggleVal: any): void => { };\r\n\r\n /** The OnTouched form control method */\r\n private onTouched = (): void => { };\r\n\r\n /** The component subscription */\r\n private subscription: Subscription = new Subscription();\r\n\r\n /** Whether show error message or not */\r\n public showErrorMessage: boolean = false;\r\n\r\n /**\r\n * Constructor.\r\n * @param control The ng control\r\n */\r\n constructor(@Self() @Optional() @Host() private control: NgControl) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n setTimeout(() => {\r\n this.controlName = this.control.name;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Key down event\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (!this.showErrorMessage && !this.touched && this.errorMessage && this.errorMessage.length > 0 && this.value != ' ') {\r\n this.showErrorMessage = true;\r\n }\r\n }\r\n\r\n /** Component on init lifecycle method */\r\n public ngOnInit(): void {\r\n // Set default tooltip values\r\n this.tooltipData.position = this.tooltipData.position ?? 'right'; \r\n // Set default layout aligns\r\n this.layoutAlign.label = this.layoutAlign.label ?? 'start center';\r\n this.layoutAlign.toggle = this.layoutAlign.toggle ?? 'start center';\r\n if (!this.ariaLabel) {\r\n this.ariaLabel = this.labelText;\r\n }\r\n this.setIsRequired();\r\n // Subscribe to form control's validation\r\n this.subscription.add(this.control?.control?.valueChanges?.subscribe(() => {\r\n this.setIsRequired();\r\n }));\r\n }\r\n\r\n /** Component on destroy lifecycle method */\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Triggered when a value is selected\r\n * @param toggleVal The toggle value.\r\n */\r\n public valueSelected(toggleVal: any): void {\r\n if (toggleVal != undefined) {\r\n this.markAsTouched();\r\n this.value = toggleVal;\r\n this.showErrorMessage = false;\r\n this.onChange(this.value);\r\n this.toggleChange.emit(toggleVal);\r\n }\r\n }\r\n\r\n /** Triggered when the control is touched */\r\n private markAsTouched() {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n /** Triggered when the form control value is set outside the component\r\n * @param toggleVal The toggle value.\r\n */\r\n public writeValue(toggleVal: any): void {\r\n this.value = toggleVal;\r\n }\r\n\r\n /** Triggered when control is changed\r\n * @param fn The callback function.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /** Triggered when control is touched\r\n * @param fn The callback function.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** Sets the disabled state\r\n * @param isDisabled If the control is disabled or not\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n /** Updates the isRequired field based on the control */\r\n private setIsRequired(): void {\r\n // Only update if a control is available\r\n if (this.control?.control) {\r\n const controlValidator = this.control.control.validator;\r\n // Set the required state false when no control validator function is provided\r\n if (!controlValidator) {\r\n this.isRequired = false;\r\n return;\r\n }\r\n // Set the required state of the validator\r\n const validator = controlValidator({} as AbstractControl) || {};\r\n this.isRequired = validator && validator.required;\r\n }\r\n }\r\n}\r\n\r\n/** Possible values for the toggle position */\r\nconst enum ButtonToggleType {\r\n LEFT = 'left',\r\n MIDDLE = 'middle',\r\n RIGHT = 'right'\r\n}\r\n\r\nexport type ButtonToggleData = { [key in ButtonToggleType]?: { text: string, value: any } };\r\n\r\nexport interface ButtonToggleTooltipData {\r\n text?: string;\r\n position?: string\r\n}\r\n","<fieldset>\r\n <legend>\r\n <p fxLayout=\"row\" [fxLayoutAlign]=\"layoutAlign.label\" class=\"toggle-label\">\r\n <span [attr.aria-label]=\"labelText | translate\" [class]=\"labelClass\" \r\n [innerHtml]=\"(labelText | translate) + (isRequired ? ' *' : '')\"></span>\r\n @if (tooltipData?.text) {\r\n <i \r\n class=\"ph-bold ph-info more-information m-l-5\"\r\n [matTooltip]=\"tooltipData.text | translate\" \r\n [matTooltipPosition]=\"tooltipData.position\" tabindex=\"0\">\r\n </i>\r\n }\r\n </p>\r\n </legend>\r\n <div fxLayout=\"row wrap\" [fxLayoutAlign]=\"layoutAlign.toggle\">\r\n <mat-button-toggle-group \r\n #group=\"matButtonToggleGroup\"\r\n [name]=\"controlName\" \r\n class=\"sof-toggle-group\" \r\n [value]=\"value\" \r\n [disabled]=\"isDisabled\"\r\n [attr.aria-label]=\"ariaLabel | translate\" \r\n [hideSingleSelectionIndicator]=\"true\" \r\n (click)=\"valueSelected(group.value)\" \r\n ngDefaultControl>\r\n @if (buttonData.left) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-left\" [value]=\"buttonData.left.value\" \r\n aria-describedby=\"left-desc\" id=\"left-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"left-desc\">{{ buttonData.left.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n @if (buttonData.middle) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-middle\" [value]=\"buttonData.middle.value\" \r\n aria-describedby=\"middle-desc\" id=\"middle-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"middle-desc\">{{ buttonData.middle.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n @if (buttonData.right) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-right\" [value]=\"buttonData.right.value\" \r\n aria-describedby=\"right-desc\" id=\"right-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"right-desc\">{{ buttonData.right.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n </div>\r\n</fieldset>\r\n@if (showErrorMessage && !isDisabled) {\r\n <mat-error class=\"error-message\">{{ errorMessage | translate }}</mat-error>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n/** \r\n * The progress bar page component \r\n * @todo this component needs a design update\r\n * stars should be yellow/gold and smaller font-size ... \r\n * \r\n * see if any apps are using this, consumer is not ...\r\n*/\r\n@Component({\r\n selector: 'sof-star-rating',\r\n templateUrl: './sof-star-rating.component.html',\r\n styleUrls: ['./sof-star-rating.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofStarRatingComponent {\r\n\r\n /** The number of stars */\r\n @Input() public rating: number;\r\n\r\n /** The max number of stars */\r\n @Input() public maxStars: number = 5;\r\n \r\n // @todo getters are not good for Angular change detection ... \r\n\r\n /** Get full stars */\r\n get fullStars(): number[] {\r\n return Array(Math.floor(this.rating)).fill(0);\r\n }\r\n\r\n /** Get half stars */\r\n get hasHalfStar(): boolean {\r\n return this.rating % 1 > 0;\r\n }\r\n\r\n /** Get empty stars */\r\n get emptyStars(): number[] {\r\n return Array(Math.floor(this.maxStars - this.rating)).fill(0);\r\n }\r\n}\r\n","<!-- Star Ratings -->\r\n<div>\r\n <ng-container *ngTemplateOutlet=\"starRatings\"></ng-container>\r\n</div>\r\n\r\n<!-- Star Ratings Template -->\r\n<ng-template #starRatings>\r\n <div>\r\n <ng-container *ngIf=\"!!rating\">\r\n <!-- @todo this div below is really the only element needed for this component -->\r\n <div>\r\n <i *ngFor=\"let fullStar of fullStars\" class=\"ph-star ph-fill star-icon-fill\"></i>\r\n <i class=\"ph-fill ph-star-half star-icon-fill\" *ngIf=\"hasHalfStar\"></i>\r\n <i class=\"ph-star ph star-icon-empty\" *ngFor=\"let emptyStar of emptyStars\"></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-badge',\r\n templateUrl: './sof-badge.component.html',\r\n styleUrls: ['./sof-badge.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofBadgeComponent {\r\n\r\n /** Whether to show bold background color not */\r\n @Input() public bold: boolean = false;\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public badgeText: string = \"\";\r\n\r\n /**\r\n * The alert color\r\n * Possible Values: 'info, 'success', 'warn', 'error', 'theme', 'neutral', 'metal-tier'\r\n */\r\n @Input() public badgeColor: 'info' | 'success' | 'warn' | 'error' | 'theme' | 'neutral' | 'metal-tier' = \"theme\";\r\n\r\n /** Whether or not to use default icons */\r\n @Input() public useIcon: boolean = false;\r\n\r\n /** The icon class- this should be a Phosphor Icons class, type bold */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** The badge aria label */\r\n @Input() public badgeAria = \"\";\r\n\r\n /** The icon aria label */\r\n @Input() public iconAria = \"\";\r\n\r\n /** Whether or not the component has been init */\r\n public initialized: boolean;\r\n\r\n /** \r\n * Any logic related to ag grid cell renderer data can be added here \r\n * @note All `@Inputs` should be accepted through `params`\r\n */\r\n public agInit(params: any & SofBadgeComponent): void {\r\n this.iconClass = params.iconClass ?? this.iconClass;\r\n this.useIcon = params.useIcon ?? this.useIcon;\r\n this.bold = params.bold ?? this.bold;\r\n this.badgeColor = params.badgeColor ?? this.badgeColor;\r\n this.badgeAria = params.badgeAria ?? this.badgeAria;\r\n this.iconAria = params.iconAria ?? this.iconAria;\r\n this.badgeText = params.value;\r\n }\r\n\r\n /** On component init */\r\n public ngOnInit() {\r\n if (!this.badgeAria) {\r\n this.badgeAria = this.badgeText;\r\n }\r\n this.setIcon();\r\n this.initialized = true;\r\n }\r\n\r\n /** \r\n * On component changes \r\n * This method is used to help show the toggle in the Armature documentation\r\n * TODO: Implement using signals\r\n */\r\n public ngOnChanges(changes: any) {\r\n if (this.initialized) {\r\n if (changes.useIcon || changes.badgeColor || changes.badgeText) {\r\n this.iconClass = \"\";\r\n this.setIcon();\r\n } \r\n }\r\n }\r\n\r\n /** Sets the icon based on badge type */\r\n private setIcon() {\r\n if (this.useIcon && this.iconClass == \"\") {\r\n if (Object.values<string>(STATUS).includes(this.badgeColor.toLowerCase())) {\r\n switch(this.badgeColor.toLowerCase()) {\r\n case STATUS.INFO:\r\n this.iconClass = \"ph-bold ph-info\";\r\n break;\r\n case STATUS.SUCCESS:\r\n this.iconClass = \"ph-bold ph-check-circle\";\r\n break;\r\n case STATUS.WARNING:\r\n this.iconClass = \"ph-bold ph-warning\";\r\n break;\r\n case STATUS.ERROR:\r\n this.iconClass = \"ph-bold ph-warning-circle\";\r\n break;\r\n }\r\n }\r\n if (Object.values<string>(LINE_OF_COVERAGE).includes(this.badgeText.toLowerCase())) {\r\n switch(this.badgeText.toLowerCase()) {\r\n case LINE_OF_COVERAGE.MEDICAL:\r\n this.iconClass = \"ph-bold ph-first-aid\";\r\n break;\r\n case LINE_OF_COVERAGE.DENTAL:\r\n this.iconClass = \"ph-bold ph-tooth\";\r\n break;\r\n case LINE_OF_COVERAGE.VISION:\r\n this.iconClass = \"ph-bold ph-eye\";\r\n break;\r\n case LINE_OF_COVERAGE.MEDICARE:\r\n this.iconClass = \"ph-bold ph-first-aid\";\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport enum STATUS {\r\n INFO = 'info',\r\n SUCCESS = 'success',\r\n WARNING = 'warn',\r\n ERROR = 'error'\r\n}\r\n\r\nexport enum LINE_OF_COVERAGE {\r\n MEDICAL = \"medical\",\r\n DENTAL = 'dental',\r\n VISION = 'vision',\r\n MEDICARE = 'medicare'\r\n}","\r\n<div \r\n class=\"badge-container\" \r\n [attr.aria-label]=\"(badgeAria | translate)\" \r\n [ngClass]=\"{\r\n 'default': !bold, \r\n 'bold': bold,\r\n 'theme': (badgeColor === 'theme'), \r\n 'success': (badgeColor === 'success'), \r\n 'error': (badgeColor === 'error'),\r\n 'warn': (badgeColor === 'warn'),\r\n 'info': (badgeColor === 'info'),\r\n 'neutral': (badgeColor === 'neutral'),\r\n 'metal-tier': (badgeColor === 'metal-tier')\r\n }\">\r\n @if (iconClass) {\r\n <div class=\"badge-icon\">\r\n @switch (iconClass) {\r\n @case ('catastrophic') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14433)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14433\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E43030\"/>\r\n <stop offset=\"0.26\" stop-color=\"#EF5C5C\"/>\r\n <stop offset=\"0.85\" stop-color=\"#F48D8D\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('bronze') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14420)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14420\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#912E0D\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B15220\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CD8C66\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('expanded-bronze') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14420)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14420\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#912E0D\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B15220\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CD8C66\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('silver') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14428)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14428\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#778592\"/>\r\n <stop offset=\"0.26\" stop-color=\"#89939C\"/>\r\n <stop offset=\"0.85\" stop-color=\"#B8C5D1\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('gold') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14430)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14430\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#D79B32\"/>\r\n <stop offset=\"0.26\" stop-color=\"#E7BF5F\"/>\r\n <stop offset=\"0.85\" stop-color=\"#EED28F\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('platinum') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13449_7911)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13449_7911\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#909090\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B0B0B0\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CCCCCC\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @default {\r\n <i \r\n [ngClass]=\"[iconClass + ' ' + badgeColor]\"\r\n [attr.aria-label]=\"iconAria !== '' ? (iconAria | translate) : null\" \r\n [attr.aria-hidden]=\"iconAria === '' ? true : null\">\r\n </i>\r\n }\r\n }\r\n </div>\r\n }\r\n <label \r\n [ngClass]=\"{\r\n 'coloredLabel': !bold,\r\n 'theme': (badgeColor === 'theme'), \r\n 'success': (badgeColor === 'success'), \r\n 'error': (badgeColor === 'error'),\r\n 'warn': (badgeColor === 'warn'),\r\n 'info': (badgeColor === 'info'),\r\n 'neutral': (badgeColor === 'neutral'),\r\n 'metal-tier': (badgeColor === 'metal-tier')\r\n }\" \r\n [innerHtml]=\"(badgeText | translate)\">\r\n </label>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-image-checkbox',\r\n templateUrl: './sof-image-checkbox.component.html',\r\n styleUrls: ['./sof-image-checkbox.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class SofImageCheckboxComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public imageTitle: string = \"\";\r\n\r\n /** If Checkbox is checked */\r\n public isChecked: boolean = false;\r\n\r\n /** The image url of image */\r\n @Input() public imageUrl: string = \"\";\r\n\r\n /** Height of image */\r\n @Input() public imageHeight: string = \"200\";\r\n\r\n /** Width of image */\r\n @Input() public imageWidth: string = \"200\";\r\n\r\n /** Height of container */\r\n @Input() public containerHeight: string = \"300\";\r\n\r\n /** Width of container */\r\n @Input() public containerWidth: string = \"200\";\r\n\r\n /** Color theme */\r\n @Input() public matColor: string = \"primary\";\r\n\r\n /** Whether the image checkbox is disabled or not */\r\n @Input(\"disabled\") public isDisabled: boolean = false;\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** Component on init lifecycle method */\r\n public ngOnInit(): void { }\r\n}\r\n","<mat-card [ngStyle]=\"{'height.px': containerHeight, 'width.px': containerWidth}\" [ngClass]=\"{'checked': isChecked, 'disabled': isDisabled, \r\n'primary': (matColor === 'primary'), \r\n'success': (matColor === 'success'), \r\n'error': (matColor === 'error'), \r\n'accent': (matColor === 'accent'), \r\n'warn': (matColor === 'warn'),\r\n'info': (matColor === 'info')}\" appearance=\"outlined\" class=\"mat-elevation-z1 image-checkbox\">\r\n <mat-card-header>\r\n <mat-checkbox class=\"sof-checkbox\" color=\"{{matColor}}\" [disabled]=\"isDisabled\"\r\n [(ngModel)]=\"isChecked\"></mat-checkbox>\r\n </mat-card-header>\r\n <mat-card-content text-center fxLayoutAlign=\"center center\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"10px\" fxLayoutAlign=\"center center\">\r\n <div>\r\n <img [ngStyle]=\"{'height.px': imageHeight, 'width.px': imageWidth}\" [src]='imageUrl'>\r\n </div>\r\n <div>\r\n <div [innerHTML]=\"(imageTitle | translate)\"> </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n</mat-card>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** \r\n * Compares 2 address fields, returns true if different. \r\n * Used in the 'SofConfirmAddressComponent' to add a class to highlight any differences in address.\r\n*/\r\n@Pipe({\r\n name: 'compareAddress',\r\n standalone: false\r\n})\r\nexport class SofCompareAddressPipe implements PipeTransform {\r\n transform(givenAddressField: string, recommendAddressField: string): boolean {\r\n return givenAddressField?.toLowerCase() !== recommendAddressField?.toLowerCase();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n/** The ConfirmAddress Component shown on the dialog */\r\n@Component({\r\n selector: 'sof-confirm-address',\r\n templateUrl: './sof-confirm-address.component.html',\r\n styleUrls: ['./sof-confirm-address.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofConfirmAddressComponent implements OnInit {\r\n /** The selected option */\r\n public selectedOption = '';\r\n\r\n /** The confirmed address form */\r\n public confirmedAddressForm: FormGroup;\r\n\r\n /** Confirmed Address Form Control */\r\n public confirmedAddress: FormControl;\r\n\r\n /** Recommend address not found indicator */\r\n public recommendAddressNotFound: boolean;\r\n\r\n /**\r\n * class constructor\r\n * @param dialogRef the reference of the mat dialog\r\n * @param data injected data to the mat dialog data token\r\n */\r\n constructor(\r\n public dialogRef: MatDialogRef<any>, \r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmAddressData\r\n ) { }\r\n\r\n /** Life cycle hook on component init */\r\n public ngOnInit(): void {\r\n this.confirmedAddress = new FormControl(\"\", [Validators.required]);\r\n if (!this.data.recommendAddress || JSON.stringify(this.data.recommendAddress) === \"{}\") {\r\n this.recommendAddressNotFound = true;\r\n this.confirmedAddress.setValue(\"entered\");\r\n }\r\n this.confirmedAddressForm = new FormGroup({\r\n confirmedAddress: this.confirmedAddress\r\n });\r\n }\r\n\r\n /** On click of the cancel btn this function gets fired */\r\n public onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /** On click of the use address btn this function gets fired */\r\n public confirmAddr(): void {\r\n this.dialogRef.close(this.confirmedAddress.value);\r\n }\r\n}\r\n\r\n/**\r\n * The confirm address data class\r\n*/\r\nexport class ConfirmAddressData {\r\n /** The address type */\r\n public addressType?: string;\r\n /** The header text */\r\n public headerText?: string;\r\n /** The header text for recommend address not found */\r\n public headerTextRecommendAddressNotFound?: string;\r\n /** The content text */\r\n public contentText?: string;\r\n /** The content text for recommend address not found */\r\n public contentTextRecommendAddressNotFound?: string;\r\n /** The given address subtitle*/\r\n public givenAddressSubtitle?: string;\r\n /** The given address */\r\n public givenAddress?: any;\r\n /** The recommend address subtitle*/\r\n public recommendAddressSubtitle?: string;\r\n /** The recommend address */\r\n public recommendAddress?: any;\r\n /** The cancel button text */\r\n public cancelButtonText?: string;\r\n /** The confirm button text for select given address*/\r\n public confirmButtonTextGivenAddress?: string;\r\n /** The confirm button text for select recommend address*/\r\n public confirmButtonTextRecommendAddress?: string;\r\n /** The confirm button text for recommend address not found*/\r\n public confirmButtonTextRecommendAddressNotFound?: string;\r\n}\r\n","<div class=\"confirm-address-modal\">\r\n <div class=\"header\">\r\n @if (recommendAddressNotFound) {\r\n <h4 fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_11814_783)\">\r\n <path d=\"M11.1256 3.14219L17.9584 15.007C18.4373 15.843 17.8186 16.875 16.8326 16.875H3.16702C2.18108 16.875 1.56233 15.843 2.04124 15.007L8.87405 3.14219C9.36624 2.28594 10.6334 2.28594 11.1256 3.14219Z\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11.25V8.125\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 15C10.5178 15 10.9375 14.5803 10.9375 14.0625C10.9375 13.5447 10.5178 13.125 10 13.125C9.48223 13.125 9.0625 13.5447 9.0625 14.0625C9.0625 14.5803 9.48223 15 10 15Z\" fill=\"#E86E17\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_11814_783\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span m-l-10>{{data?.headerTextRecommendAddressNotFound}}</span>\r\n </h4>\r\n } @else {\r\n <h4>{{data?.headerText}}</h4>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <form [formGroup]=\"confirmedAddressForm\" autocomplete=\"off\">\r\n @if (recommendAddressNotFound) {\r\n <p>{{data?.contentTextRecommendAddressNotFound}}</p>\r\n } @else {\r\n <p>{{data?.contentText}}</p>\r\n }\r\n <mat-radio-group \r\n class=\"address-cards\" formControlName=\"confirmedAddress\" \r\n fxLayout=\"row\" fxLayoutGap=\"16px\">\r\n <div fxLayout=\"column\">\r\n <p class=\"temp-label text-medium-emphasis\">{{data?.givenAddressSubtitle | uppercase}}</p>\r\n <mat-card appearance=\"outlined\" fxLayout=\"row\" class=\"radio-box-grey text-medium-emphasis\">\r\n @if (!recommendAddressNotFound) {\r\n <mat-radio-button value=\"entered\" color=\"primary\">\r\n <span [hidden]=\"true\">{{data?.givenAddressSubtitle}}</span>\r\n </mat-radio-button>\r\n }\r\n <div>\r\n <p>{{data?.givenAddress?.address1}}</p>\r\n <p>{{data?.givenAddress?.address2}}</p>\r\n <p>{{data?.givenAddress?.city}}, {{data?.givenAddress?.state}}</p>\r\n <p>{{data?.givenAddress?.zip5}}</p>\r\n </div>\r\n </mat-card>\r\n </div>\r\n @if (!recommendAddressNotFound) {\r\n <div fxLayout=\"column\">\r\n <p class=\"temp-label text-medium-emphasis\">{{data?.recommendAddressSubtitle | uppercase}}</p>\r\n <mat-card appearance=\"outlined\" fxLayout=\"row\" class=\"radio-box\">\r\n <mat-radio-button value=\"recommended\" color=\"primary\">\r\n <span [hidden]=\"true\">{{data?.recommendAddressSubtitle}}</span>\r\n </mat-radio-button>\r\n <div>\r\n <p [class.highlight]=\"data?.givenAddress?.street | compareAddress: data?.recommendAddress?.street\">\r\n {{data?.recommendAddress?.address1}}\r\n </p>\r\n <p [class.highlight]=\"data?.givenAddress?.address2 | compareAddress: data?.recommendAddress?.address2\">\r\n {{data?.recommendAddress?.address2}}\r\n </p>\r\n <p>\r\n <span [class.highlight]=\"data?.givenAddress?.city | compareAddress: data?.recommendAddress?.city\">\r\n {{data?.recommendAddress?.city}}\r\n </span>, \r\n <span [class.highlight]=\"data?.givenAddress?.state | compareAddress: data?.recommendAddress?.state\">\r\n {{data?.recommendAddress?.state}}\r\n </span>\r\n </p>\r\n <p>\r\n <span [class.highlight]=\"data?.givenAddress?.zip5 | compareAddress: data?.recommendAddress?.zip5\">\r\n {{data?.recommendAddress?.zip5}}\r\n </span>\r\n <span [class.highlight]=\"data?.givenAddress?.zip4 | compareAddress: data?.recommendAddress?.zip4\">\r\n -{{data?.recommendAddress?.zip4}}\r\n </span>\r\n </p>\r\n </div>\r\n </mat-card>\r\n </div>\r\n }\r\n </mat-radio-group>\r\n </form>\r\n <div class=\"button-group\">\r\n <button \r\n (click)=\"onNoClick()\" id=\"cancelAddressSelection\" \r\n mat-flat-button class=\"sof-button-v2\" theme=\"primary\" emphasis=\"floating\">\r\n {{data?.cancelButtonText}}\r\n </button>\r\n @if (confirmedAddress.value === 'entered' && !recommendAddressNotFound) {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseGivenAddress\" \r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"secondary\">\r\n {{data?.confirmButtonTextGivenAddress}}\r\n </button>\r\n }\r\n @if (confirmedAddress.value === 'recommended') {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseRecommendedAddress\"\r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"solid\">\r\n {{data?.confirmButtonTextRecommendAddress}}\r\n </button>\r\n }\r\n @if (recommendAddressNotFound) {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseAddressNotFound\"\r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"solid\">\r\n {{data?.confirmButtonTextRecommendAddressNotFound}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\n\r\n/** The softheon radio card component */\r\n@Component({\r\n selector: 'sof-radio-card',\r\n templateUrl: './sof-radio-card.component.html',\r\n styleUrls: ['./sof-radio-card.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofRadioCardComponent implements OnInit {\r\n\r\n /** The title */\r\n @Input() public title: string;\r\n\r\n /** The id */\r\n @Input() public id: string;\r\n\r\n /** The value of the radio button */\r\n @Input() public value: any;\r\n\r\n /** True if the radio button should be disabled */\r\n @Input() public disabled: boolean = false;\r\n\r\n /** The color of the radio button */\r\n @Input() public color: ThemePalette = \"primary\";\r\n\r\n /** On component init */\r\n public ngOnInit() { }\r\n}\r\n","<mat-card appearance=\"outlined\" fxLayout=\"row\" fxFlex=\"100%\" class=\"sof-radio-card radio-box\">\r\n <mat-radio-button class=\"sof-radio-button\" id=\"radio-card-btn{{id}}\" name=\"radio-card{{id}}\" [value]=\"value\" [color]=\"color\" [disabled]=\"disabled\">\r\n </mat-radio-button>\r\n <div class=\"m-r-16\">\r\n <h4 *ngIf=\"title\">{{title | translate}}</h4>\r\n <ng-content select=\"[radio-card-content]\"></ng-content>\r\n </div>\r\n</mat-card>","import { Component, EventEmitter, Host, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Custom Input Stepper Component\r\n */\r\n@Component({\n selector: 'sof-input-stepper',\n templateUrl: 'sof-input-stepper.component.html',\n styleUrls: ['./sof-input-stepper.component.scss'],\n standalone: false\n})\r\nexport class SofInputStepperComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n /** The value */\r\n @Input() public customValue: number;\r\n\r\n /** The minimum value */\r\n @Input() public min: number = null;\r\n\r\n /** The max value */\r\n @Input() public max: number = null;\r\n\r\n /** The step by which the number increases/decreases */\r\n @Input() public step: number = 1;\r\n\r\n /** The label text */\r\n @Input() public labelText: string = '';\r\n\r\n /** If the input is required or not */\r\n @Input(\"required\") public isRequired: boolean = true;\r\n\r\n /** The error message */\r\n @Input() public requiredErrorMessage: string = '';\r\n\r\n /** The min max error message */\r\n @Input() public minMaxErrorMessage: string = '';\r\n\r\n /** The aria label */\r\n @Input() public ariaLabel: string = '';\r\n\r\n /** The value change event emitter */\r\n @Output() public valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n /** If the input is disabled or not */\r\n public isDisabled: boolean = false;\r\n\r\n /** The control name */\r\n public controlName: string | number = \"\";\r\n\r\n /** The derived form control */\r\n public get derivedFormControl(): AbstractControl {\r\n return this.control?.control;\r\n }\r\n\r\n /** The OnChange form control method */\r\n private onChange = (toggleVal: any): void => { };\r\n\r\n /** The OnTouched form control method */\r\n private onTouched = (): void => { };\r\n\r\n /** The component subscription */\r\n private subscription: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructor.\r\n * @param control The ng control\r\n */\r\n constructor(@Self() @Optional() @Host() private control: NgControl) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n setTimeout(() => {\r\n this.controlName = this.control.name;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Component Initialization\r\n */\r\n public ngOnInit(): void {\r\n if (!this.ariaLabel) {\r\n this.ariaLabel = this.labelText;\r\n }\r\n\r\n this.setDefinedValidators();\r\n\r\n // Subscribe to form control's validation\r\n this.subscription.add(this.derivedFormControl?.valueChanges?.subscribe(x => {\r\n this.customValue = x;\r\n this.setDefinedValidators();\r\n }));\r\n }\r\n\r\n /** Triggered when control is changed\r\n * @param fn The callback function.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /** Triggered when control is touched\r\n * @param fn The callback function.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n \r\n /** Sets the disabled state\r\n * @param isDisabled If the control is disabled or not\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n \r\n /** Component Destruction */\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Triggered when the form control value is set outside the component\r\n * @param newVal The new value.\r\n */\r\n public writeValue(newVal: any): void {\r\n this.customValue = newVal;\r\n }\r\n\r\n /** Increase the value by step */\r\n public increaseVal(): void {\r\n let newVal = this.customValue;\r\n if (!newVal) {\r\n newVal = 0;\r\n }\r\n newVal += this.step;\r\n if (this.max != null && newVal > this.max) {\r\n newVal = this.max;\r\n }\r\n this.customValue = newVal;\r\n this.derivedFormControl.setValue(this.customValue);\r\n this.derivedFormControl.markAsTouched();\r\n }\r\n\r\n /** Decrease the value by step */\r\n public decreaseVal(): void {\r\n let newVal = this.customValue;\r\n if (!newVal) {\r\n newVal = 0;\r\n }\r\n newVal -= this.step;\r\n if (this.min != null && newVal < this.min) {\r\n newVal = this.min;\r\n }\r\n this.customValue = newVal;\r\n this.derivedFormControl.setValue(this.customValue);\r\n this.derivedFormControl.markAsTouched();\r\n }\r\n\r\n /** Updates the isRequired field based on the control */\r\n private setDefinedValidators(): void {\r\n // Only update if a control is available\r\n if (this.derivedFormControl) {\r\n const controlValidator = this.control.control.validator;\r\n // Set the required state false when no control validator function is provided\r\n if (!controlValidator) {\r\n this.isRequired = false;\r\n return;\r\n }\r\n this.isRequired = this.derivedFormControl?.hasValidator(Validators.required);\r\n }\r\n }\r\n}","<div *ngIf=\"derivedFormControl\" fxLayoutAlign=\"row\" class=\"input-stepper-container\">\r\n <mat-form-field appearance=\"outline\" class=\"full-width sof-form-field\">\r\n <mat-label>{{ labelText | translate}}</mat-label>\r\n <input [formControl]=\"derivedFormControl\" matInput type=\"number\" [name]=\"controlName\" id=\"stepper-{{controlName}}\"\r\n attr.aria-label=\"{{ariaLabel | translate}}\" [required]=\"isRequired\" [value]=\"customValue\" [step]=\"step\"\r\n placeholder=\"{{ labelText | translate}}\" [disabled]=\"isDisabled\">\r\n <mat-error *ngIf=\"derivedFormControl?.errors?.required\">{{ requiredErrorMessage | translate}}</mat-error>\r\n <mat-error *ngIf=\"derivedFormControl?.errors?.min || derivedFormControl?.errors?.max\">{{ minMaxErrorMessage | translate}}</mat-error>\r\n <span matSuffix class=\"error\" *ngIf=\"derivedFormControl?.touched && derivedFormControl?.invalid\">\r\n <i class=\"fa-light fa-circle-exclamation\"></i>\r\n </span>\r\n </mat-form-field>\r\n <button mat-flat-button [ngClass]=\"{'invalid': derivedFormControl?.touched && derivedFormControl?.invalid}\" [disabled]=\"isDisabled\"\r\n class=\"sof-flat-icon-button\" size=\"large\" id=\"decrease-step-{{controlName}}\" (click)=\"decreaseVal()\">\r\n <i class=\"fa-regular fa-minus\"></i>\r\n </button>\r\n <button mat-flat-button [ngClass]=\"{'invalid': derivedFormControl?.touched && derivedFormControl?.invalid}\" [disabled]=\"isDisabled\"\r\n class=\"sof-flat-icon-button\" size=\"large\" id=\"increase-step-{{controlName}}\" (click)=\"increaseVal()\">\r\n <i class=\"fa-regular fa-plus\"></i>\r\n </button>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-utility-button',\r\n templateUrl: './sof-utility-button.component.html',\r\n styleUrls: ['./sof-utility-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofUtilityButtonComponent {\r\n\r\n /* Button Id */\r\n @Input() buttonId: string = '';\r\n\r\n /* Button Id */\r\n @Input() buttonAriaLabel: string = '';\r\n\r\n /* Button Theme */\r\n @Input() buttonTheme: 'primary' | 'neutral' | 'destroy' = \"primary\";\r\n\r\n /* Button Color Text */\r\n @Input() buttonEmphasis: 'solid' | 'secondary' | 'floating' | 'contained' = \"solid\";\r\n\r\n /* Button Is Disabled */\r\n @Input() buttonDisabled: boolean = false;\r\n\r\n /* Button Icon Class */\r\n @Input() buttonIconClass: string = '';\r\n\r\n /* Menu Dropdown Size */\r\n @Input() menuDropDown: ButtonData[] = [];\r\n\r\n /** Individual Button Click */\r\n @Input() buttonClick: Function;\r\n\r\n /** \r\n * Any logic related to ag grid cell renderer data can be added here \r\n * @note All `@Inputs` should be accepted through `params`\r\n */\r\n agInit(params: any & SofUtilityButtonComponent): void {\r\n this.buttonId = params.buttonId ?? this.buttonId;\r\n this.buttonTheme = params.buttonTheme ?? this.buttonTheme;\r\n this.buttonEmphasis = params.buttonEmphasis ?? this.buttonEmphasis;\r\n this.buttonAriaLabel = params.buttonAriaLabel ?? this.buttonAriaLabel;\r\n this.buttonDisabled = params.buttonDisabled ?? this.buttonDisabled;\r\n this.buttonIconClass = params.buttonIconClass ?? this.buttonIconClass;\r\n this.menuDropDown = params.menuDropDown ?? this.menuDropDown;\r\n this.buttonClick = params.buttonClick ?? this.buttonClick;\r\n }\r\n}\r\n\r\nexport interface ButtonData {\r\n name: string,\r\n icon: string,\r\n isDisabled: boolean,\r\n action: Function\r\n}\r\n","<!-- Menu Dropdown -->\r\n@if (menuDropDown.length) {\r\n <button \r\n mat-flat-button \r\n class=\"button-icon-utility\" \r\n [id]=\"buttonId\" \r\n [attr.theme]=\"buttonTheme\" \r\n [attr.emphasis]=\"buttonEmphasis\"\r\n [disabled]=\"buttonDisabled\" \r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"buttonAriaLabel\">\r\n <i [ngClass]=\"buttonIconClass\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (item of menuDropDown; track $index) {\r\n <button \r\n mat-menu-item \r\n (click)=\"item.action()\"\r\n [disabled]=\"item.isDisabled\" \r\n disableRipple=\"true\">\r\n @if (item.icon) {\r\n <i [ngClass]=\"item.icon\" aria-hidden=\"true\"></i>\r\n }\r\n {{item.name | translate}}\r\n </button>\r\n }\r\n </mat-menu>\r\n <!-- Single Button -->\r\n} @else {\r\n <button \r\n mat-flat-button \r\n (click)=\"buttonClick()\" \r\n class=\"button-icon-utility\" \r\n [id]=\"buttonId\" \r\n [attr.theme]=\"buttonTheme\" \r\n [attr.emphasis]=\"buttonEmphasis\" \r\n [disabled]=\"buttonDisabled\"\r\n [attr.aria-label]=\"buttonAriaLabel\">\r\n <i [ngClass]=\"buttonIconClass\" aria-hidden=\"true\"></i>\r\n </button>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSelectChange } from '@angular/material/select';\r\n\r\n/** \r\n * The SofConfirmAddressCountyChangeComponent Component shown on the dialog \r\n * @description This component takes a list of counties and outputs the selected county \r\n * @note If there is only one county, can either confirm this county or go back to form\r\n*/\r\n@Component({\r\n selector: 'sof-confirm-address-county-change',\r\n templateUrl: './sof-confirm-address-county-change.component.html',\r\n styleUrls: ['./sof-confirm-address-county-change.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofConfirmAddressCountyChangeComponent implements OnInit { \r\n\r\n /** The selected county to emit on close */\r\n public selectedCounty: string;\r\n\r\n /**\r\n * class constructor\r\n * @param dialogRef the reference of the mat dialog\r\n * @param data injected data to the mat dialog data token\r\n */\r\n constructor(\r\n public dialogRef: MatDialogRef<any>, \r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmAddressCountyChangeData\r\n ) { }\r\n\r\n /** Life cycle hook on component init */ \r\n public ngOnInit(): void {\r\n if (this.data.counties.length === 1) {\r\n this.selectedCounty = this.data.counties[0];\r\n }\r\n }\r\n\r\n /** \r\n * Selects the county \r\n * @param county the select the county \r\n */\r\n public selectCounty(county: MatSelectChange): void {\r\n this.selectedCounty = county.value;\r\n }\r\n\r\n /** On click of the 'continue' || 'confirm' button */\r\n public confirmCounty(): void {\r\n this.dialogRef.close(this.selectedCounty);\r\n }\r\n\r\n /** Go back to form / close dialog */ \r\n public goBack(): void {\r\n this.dialogRef.close();\r\n }\r\n} \r\n\r\n/**\r\n * The confirm address county update data class\r\n*/\r\nexport interface ConfirmAddressCountyChangeData {\r\n /** The corrected county / counties to display */\r\n counties?: Array<string>;\r\n}\r\n","<div class=\"county-modal\">\r\n <div class=\"header\">\r\n @if (data.counties.length > 1) {\r\n <h4>{{'armature.confirm-address.county-change-modal.headings.multiple-counties' | translate}}</h4>\r\n } @else {\r\n <h4>{{'armature.confirm-address.county-change-modal.headings.single-county' | translate}}</h4>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"warning\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_11814_783)\">\r\n <path d=\"M11.1256 3.14219L17.9584 15.007C18.4373 15.843 17.8186 16.875 16.8326 16.875H3.16702C2.18108 16.875 1.56233 15.843 2.04124 15.007L8.87405 3.14219C9.36624 2.28594 10.6334 2.28594 11.1256 3.14219Z\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11.25V8.125\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 15C10.5178 15 10.9375 14.5803 10.9375 14.0625C10.9375 13.5447 10.5178 13.125 10 13.125C9.48223 13.125 9.0625 13.5447 9.0625 14.0625C9.0625 14.5803 9.48223 15 10 15Z\" fill=\"#E86E17\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_11814_783\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"warning-message\">\r\n <p class=\"bold\">{{'armature.confirm-address.county-change-modal.warning-message.reason' | translate}}</p>\r\n <p>{{'armature.confirm-address.county-change-modal.warning-message.review' | translate}}</p>\r\n </div>\r\n </div>\r\n <div class=\"action-description\">\r\n @if (data.counties.length > 1) {\r\n <p>{{'armature.confirm-address.county-change-modal.action-description.multiple-counties' | translate}}</p>\r\n } @else {\r\n <p>{{'armature.confirm-address.county-change-modal.action-description.single-county' | translate}}</p>\r\n }\r\n </div>\r\n <div class=\"action\"> \r\n @if (data.counties.length > 1) {\r\n <mat-form-field appearance=\"outline\" class=\"sof-form-field county-select\">\r\n <mat-label>{{'armature.confirm-address.county-change-modal.county' | translate}}</mat-label>\r\n <mat-select \r\n (selectionChange)=\"selectCounty($event)\" \r\n id=\"countySelect\" ngDefaultControl>\r\n @for (county of data.counties; track $index) {\r\n <mat-option [value]=\"county\" class=\"county-option-override\">\r\n {{county | lowercase}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field> \r\n } @else {\r\n <div class=\"changed-county-single\">\r\n <p class=\"county-label\">{{'armature.confirm-address.county-change-modal.county' | translate | uppercase}}</p>\r\n <p class=\"county\">{{selectedCounty | lowercase}}</p>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"button-group\">\r\n <button \r\n (click)=\"goBack()\" mat-flat-button id=\"goBackBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"floating\">\r\n {{'armature.confirm-address.county-change-modal.buttons.go-back' | translate}}\r\n </button>\r\n @if (data.counties.length > 1) {\r\n <button \r\n (click)=\"confirmCounty()\" mat-flat-button id=\"confirmBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"solid\" [disabled]=\"!selectedCounty\">\r\n {{'armature.confirm-address.county-change-modal.buttons.confirm' | translate}}\r\n </button>\r\n } @else {\r\n <button \r\n (click)=\"confirmCounty()\" mat-flat-button id=\"continueBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"solid\">\r\n {{'armature.confirm-address.county-change-modal.buttons.continue' | translate}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule, MatIconButton } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { MatMenuModule} from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\n\r\nimport { SofModalComponent } from './sof-modal/sof-modal.component';\r\nimport { SofHandleComponent } from './sof-handle/sof-handle.component'\r\nimport { SofContextComponent} from './sof-context/sof-context.component';\r\nimport { SofAlertComponent } from './sof-alert/sof-alert.component';\r\nimport { SofSimpleAlertComponent } from './sof-simple-alert/sof-simple-alert.component';\r\nimport { SofBannerComponent } from './sof-banner/sof-banner.component';\r\nimport { SofProgressBarComponent } from './sof-progress-bar/sof-progress-bar.component';\r\nimport { SofButtonToggleGroupComponent } from './sof-button-toggle-group/sof-button-toggle-group.component';\r\nimport { SofStarRatingComponent } from './sof-star-rating/sof-star-rating.component';\r\nimport { SofBadgeComponent } from './sof-badge/sof-badge.component';\r\nimport { SofImageCheckboxComponent } from './sof-image-checkbox/sof-image-checkbox.component';\r\nimport { SofConfirmAddressComponent } from './confirm-address/sof-confirm-address/sof-confirm-address.component';\r\nimport { SofRadioCardComponent } from './sof-radio-card/sof-radio-card.component';\r\nimport { SofInputStepperComponent } from './sof-input-stepper/sof-input-stepper.component';\r\nimport { SofUtilityButtonComponent } from './sof-utility-button/sof-utility-button.component';\r\nimport { SofConfirmAddressCountyChangeComponent } from './confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component';\r\nimport { SofCompareAddressPipe } from './confirm-address/sof-confirm-address/compare-address-pipe/compare-address.pipe';\r\n\r\n\r\n/** The components */\r\nconst components = [\r\n SofProgressBarComponent,\r\n SofRadioCardComponent,\r\n SofBannerComponent,\r\n SofAlertComponent,\r\n SofModalComponent,\r\n SofButtonToggleGroupComponent,\r\n SofStarRatingComponent,\r\n SofBadgeComponent,\r\n SofUtilityButtonComponent, \r\n SofImageCheckboxComponent,\r\n SofSimpleAlertComponent,\r\n SofConfirmAddressComponent,\r\n SofConfirmAddressCountyChangeComponent,\r\n SofInputStepperComponent,\r\n SofHandleComponent,\r\n SofCompareAddressPipe,\r\n SofContextComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatRadioModule,\r\n MatPaginator,\r\n MatMenu,\r\n MatMenuModule,\r\n MatInputModule,\r\n MatIconButton,\r\n MatListModule\r\n];\r\n\r\nconst cdkModules = [\r\n CdkDropList,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n CdkDragHandle\r\n];\r\n\r\n/** The BaseComponentModule Module */\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslateModule,\r\n ...materialModules,\r\n ...cdkModules\r\n ],\r\n exports: [...components]\r\n})\r\nexport class BaseComponentModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\nimport { AlertBannerModule } from './alert-banner/alert-banner.module';\r\n\r\nimport { SessionService as ServerSessionService } from './core/client-generated/api/session.service';\r\nimport { BASE_PATH } from './core/client-generated/variables';\r\n\r\nimport { AppTemplateComponent } from './core/components/app-template/app-template.component';\r\n\r\nimport { AbstractStartupService } from './core/initializer/abstract-startup-service';\r\nimport { Initializer } from './core/initializer/initializer.service';\r\n\r\nimport { ArmatureAuthTokenAppendInterceptor } from './core/interceptors/armature-auth-token-append.interceptor';\r\n\r\nimport { SESSION_CONFIG } from './core/models/constants';\r\nimport { SessionConfig } from './core/models/session-config';\r\n\r\nimport { BaseConfigService } from './core/services/base-config.service';\r\nimport { DefaultConfigService } from './core/services/default-config.service';\r\nimport { SessionService } from './core/services/session.service';\r\nimport { UserEntityService } from './core/services/user-entity.service';\r\n\r\nimport { ArmatureFooterModule } from './footer/footer.module';\r\n\r\nimport { FormsModule } from './forms/forms.module';\r\n\r\nimport { ArmatureHeaderModule } from './header/header.module';\r\n\r\nimport { NavigationModule } from './navigation/navigation.module';\r\n\r\nimport { ThemeModule } from './theming/theme.module';\r\n\r\nimport { BaseComponentModule } from './base-components/base-component.module';\r\n\r\nimport { FederatedModuleService } from './core/services/federated-module.service';\r\n\r\nimport { B2bNavComponent } from './navigation/components/b2b-nav/b2b-nav.component';\r\n\r\n/** The package modules */\r\nconst packageModules = [\r\n FormsModule,\r\n NavigationModule,\r\n ArmatureHeaderModule,\r\n ArmatureFooterModule,\r\n BaseComponentModule,\r\n ThemeModule,\r\n AlertBannerModule\r\n];\r\n\r\n/**\r\n * Session base path factory\r\n * @param injector The angular injector\r\n */\r\nexport function sessionBasePathFactory(injector: Injector): string {\r\n const sesConfigDefault = new SessionConfig();\r\n sesConfigDefault.sessionManagementBasePath = 'not-found';\r\n const sessionConfig: SessionConfig = injector.get<SessionConfig>(SESSION_CONFIG, sesConfigDefault);\r\n if (sessionConfig.sessionManagementBasePath !== 'not-found') {\r\n return sessionConfig.sessionManagementBasePath;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * The initializer factory\r\n * This needs to return a const instead of simplifying to return in one line\r\n * returning in one line causes compilation errors\r\n * @param initializer The initializer service\r\n */\r\nexport function initializerFactory(initializer: Initializer): () => Promise<any> {\r\n const result = () => initializer.initialize();\r\n\r\n return result;\r\n}\r\n\r\n/** The armature root module */\r\n@NgModule({\r\n declarations: [\r\n AppTemplateComponent\r\n],\r\n imports: [\r\n ...packageModules,\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n B2bNavComponent\r\n ],\r\n providers: [\r\n FederatedModuleService,\r\n Initializer,\r\n ServerSessionService,\r\n SessionService,\r\n UserEntityService,\r\n {\r\n provide: BASE_PATH,\r\n useFactory: sessionBasePathFactory,\r\n deps: [Injector]\r\n },\r\n { provide: BaseConfigService, useClass: DefaultConfigService },\r\n { provide: HTTP_INTERCEPTORS, useClass: ArmatureAuthTokenAppendInterceptor, multi: true }\r\n ],\r\n exports: [\r\n ...packageModules,\r\n AppTemplateComponent\r\n ]\r\n})\r\nexport class ArmatureModule {\r\n\r\n /**\r\n * Constructs the module\r\n * Used to initialize services at module construction time\r\n * @param userEntityService The user entity service\r\n */\r\n // tslint:disable-next-line: unnecessary-constructor\r\n constructor(\r\n userEntityService: UserEntityService\r\n ) { }\r\n\r\n /**\r\n * Builds the module with custom arguments\r\n * This replace the armature config service with user provided custom one\r\n * It will also call the user provided start up service after default initialization has finished\r\n * @param configServiceClass The config service class for the parent application\r\n */\r\n public static forRoot(configServiceClass?: any, ignoreCustomAppInitializer: boolean = false): ModuleWithProviders<ArmatureModule> {\r\n const initFactory = (initService: AbstractStartupService, initializer: Initializer) => {\r\n const result = async () =>\r\n new Promise((resolve, reject) => {\r\n initializer.initialize()\r\n .then(() => {\r\n initService.load()\r\n .then(resolve)\r\n .catch(e => {\r\n console.error(e);\r\n reject(e);\r\n });\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n reject(e);\r\n });\r\n });\r\n\r\n return result;\r\n };\r\n return {\r\n ngModule: ArmatureModule,\r\n providers: [\r\n { provide: BaseConfigService, useExisting: configServiceClass == null ? DefaultConfigService : configServiceClass },\r\n { provide: APP_INITIALIZER,\r\n useFactory: ignoreCustomAppInitializer ? initializerFactory : initFactory,\r\n deps: ignoreCustomAppInitializer ? [Initializer] : [AbstractStartupService, Initializer],\r\n multi: true }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","import { HttpVerb } from './http-verbs';\r\nimport { TypedSession } from '../../core/models/typed-session';\r\n\r\n/** The data store configurations */\r\nexport class DataStoreConfig<T = any> {\r\n /** The data store base uri */\r\n public baseUri: string;\r\n\r\n /** The retrieve http verb */\r\n public retrieveVerb: HttpVerb;\r\n\r\n /** The retrieve request delegate */\r\n public retrieveRequestDelegate: (baseUri: string, data: TypedSession<T>) => { uri: string, body?: any };\r\n\r\n /** The retrieve response delegate */\r\n public retrieveResponseDelegate: (response: any, session: TypedSession<T>) => TypedSession<T>;\r\n\r\n /** The retrieve securable delegate */\r\n public retrieveSecurableDelegate: (response: any) => Array<(arg: any) => any> | ((arg: any) => any);\r\n\r\n /** The update http verb */\r\n public updateVerb: HttpVerb;\r\n\r\n /** The update request delegate */\r\n public updateRequestDelegate: (baseUri: string, data: T) => { uri: string, body?: any};\r\n\r\n /** Delegate for determining when to make a call to update the data store */\r\n public shouldUpdateDataStoreDelegate: (data: T) => boolean;\r\n}\r\n","import { SessionResponseModel } from '../../core/client-generated/model/sessionResponseModel';\r\nimport { BrandingModel, TrackingModel, OAuthModel } from '../../core/client-generated/model/models';\r\n\r\n/** The session class */\r\nexport class TypedSession<T> implements SessionResponseModel {\r\n /** The initalizing origin */\r\n public initializingOrigin?: string;\r\n\r\n /** The session id */\r\n public sessionId?: string;\r\n\r\n /** The typed session data */\r\n public sessionData?: T;\r\n\r\n /** The branding model */\r\n public branding?: BrandingModel;\r\n\r\n /** The tracking model */\r\n public tracking?: TrackingModel;\r\n\r\n /** The oauth model */\r\n public oAuth?: OAuthModel;\r\n}","/** The route path enum */\r\nexport enum RoutePath {\r\n Internal = 'internal',\r\n External = 'external'\r\n}\r\n","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The error model\r\n */\r\nexport interface ErrorModel { \r\n /**\r\n * The error message\r\n */\r\n message?: string;\r\n /**\r\n * The response status\r\n */\r\n status?: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The OAuth Session Data\r\n */\r\nexport interface OAuthModel { \r\n /**\r\n * The Client ID\r\n */\r\n clientId: string;\r\n /**\r\n * The issuer\r\n */\r\n issuer: string;\r\n /**\r\n * The scope\r\n */\r\n scope: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The theme palette\r\n */\r\nexport interface ThemePaletteColorsModel { \r\n /**\r\n * The 50 palette color\r\n */\r\n fifty?: string;\r\n /**\r\n * The 100 palette color\r\n */\r\n oneHundred?: string;\r\n /**\r\n * The 200 palette color\r\n */\r\n twoHundred?: string;\r\n /**\r\n * The 300 palette color\r\n */\r\n threeHundred?: string;\r\n /**\r\n * The 400 palette color\r\n */\r\n fourHundred?: string;\r\n /**\r\n * The 500 palette color\r\n */\r\n fiveHundred?: string;\r\n /**\r\n * The 600 palette color\r\n */\r\n sixHundred?: string;\r\n /**\r\n * The 700 palette color\r\n */\r\n sevenHundred?: string;\r\n /**\r\n * The 800 palette color\r\n */\r\n eightHundred?: string;\r\n /**\r\n * The 900 palette color\r\n */\r\n nineHundred?: string;\r\n /**\r\n * The A50 palette color\r\n */\r\n a50?: string;\r\n /**\r\n * The A100 palette color\r\n */\r\n a100?: string;\r\n /**\r\n * The A200 palette color\r\n */\r\n a200?: string;\r\n /**\r\n * The A300 palette color\r\n */\r\n a300?: string;\r\n /**\r\n * The A400 palette color\r\n */\r\n a400?: string;\r\n /**\r\n * The A500 palette color\r\n */\r\n a500?: string;\r\n /**\r\n * The A600 palette color\r\n */\r\n a600?: string;\r\n /**\r\n * The A700 palette color\r\n */\r\n a700?: string;\r\n /**\r\n * The A800 palette color\r\n */\r\n a800?: string;\r\n /**\r\n * The A900 palette color\r\n */\r\n a900?: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The tracking Data\r\n */\r\nexport interface TrackingModel { \r\n /**\r\n * The tracking ID\r\n */\r\n trackingId: string;\r\n /**\r\n * The tracking type\r\n */\r\n trackingType: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\nimport { FolderLink } from './folderLink';\r\nimport { IdentityProfile } from './identityProfile';\r\nimport { SettingsProfile } from './settingsProfile';\r\n\r\n/**\r\n * Application User Model\r\n */\r\nexport interface ApplicationUserModel { \r\n /**\r\n * Gets or sets the child links.\r\n */\r\n childLinks?: Array<FolderLink>;\r\n /**\r\n * The IdentityProfile.\r\n */\r\n identity?: IdentityProfile;\r\n /**\r\n * The SettingsProfile.\r\n */\r\n settings?: SettingsProfile;\r\n drawerId?: number;\r\n id?: number;\r\n name?: string;\r\n state?: ApplicationUserModel.StateEnum;\r\n}\r\nexport namespace ApplicationUserModel {\r\n export type StateEnum = 'Available' | 'Locked' | 'Suspended' | 'Archived' | 'Deleted' | 'Canceled' | 'Complete' | 'Reviewed' | 'ReviewedSuspended' | 'ReviewedComplete' | 'Rejected' | 'RoutingSlipOpen' | 'ReviewedRoutingSlipOpen' | 'Undefined';\r\n export const StateEnum = {\r\n Available: 'Available' as StateEnum,\r\n Locked: 'Locked' as StateEnum,\r\n Suspended: 'Suspended' as StateEnum,\r\n Archived: 'Archived' as StateEnum,\r\n Deleted: 'Deleted' as StateEnum,\r\n Canceled: 'Canceled' as StateEnum,\r\n Complete: 'Complete' as StateEnum,\r\n Reviewed: 'Reviewed' as StateEnum,\r\n ReviewedSuspended: 'ReviewedSuspended' as StateEnum,\r\n ReviewedComplete: 'ReviewedComplete' as StateEnum,\r\n Rejected: 'Rejected' as StateEnum,\r\n RoutingSlipOpen: 'RoutingSlipOpen' as StateEnum,\r\n ReviewedRoutingSlipOpen: 'ReviewedRoutingSlipOpen' as StateEnum,\r\n Undefined: 'Undefined' as StateEnum\r\n };\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface FolderLink { \r\n acl?: number;\r\n childDrawerID?: number;\r\n childEntityID?: number;\r\n childType?: number;\r\n classProperty?: number;\r\n drawerID?: number;\r\n entityID?: number;\r\n hasChildrenInSameDrawer?: boolean;\r\n id?: number;\r\n includerUserID?: number;\r\n insertionTime?: Date;\r\n modificationTime?: Date;\r\n modifierUserID?: number;\r\n name?: string;\r\n note?: string;\r\n ownerGroupID?: number;\r\n ownerUserID?: number;\r\n pageNumber?: number;\r\n parentDrawerID?: number;\r\n state?: string;\r\n virtualName?: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface PreferencesRow { \r\n key?: string;\r\n value?: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface ValidationRecordsRow { \r\n type?: string;\r\n status?: string;\r\n referenceID?: string;\r\n validationDate?: Date;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = contentTypes.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = accepts.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime != null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n *//* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CreateCacheEntryRequestModel } from '../model/createCacheEntryRequestModel';\r\nimport { RetrieveCacheEntryResponseModel } from '../model/retrieveCacheEntryResponseModel';\r\nimport { UpdateCacheEntryRequestModel } from '../model/updateCacheEntryRequestModel';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n@Injectable()\r\nexport class CacheService {\r\n\r\n protected basePath = '/';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n if (basePath) {\r\n this.basePath = basePath;\r\n }\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.basePath = basePath || configuration.basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Deletes the specified key.\r\n * \r\n * @param key The key.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public _delete(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public _delete(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public _delete(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public _delete(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling _delete.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('delete',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates the specified request.\r\n * \r\n * @param body The request.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('post',`${this.basePath}/v1/Cache`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the cache entry\r\n * \r\n * @param key \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refresh(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refresh(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refresh(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refresh(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling refresh.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Cache/refresh/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves this instance.\r\n * \r\n * @param key \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public retrieve(key: string, observe?: 'body', reportProgress?: boolean): Observable<RetrieveCacheEntryResponseModel>;\r\n public retrieve(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling retrieve.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<RetrieveCacheEntryResponseModel>('get',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the specified key.\r\n * \r\n * @param key The key.\r\n * @param body The request.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling update.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('put',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","export * from './cache.service';\r\nimport { CacheService } from './cache.service';\r\nexport const APIS = [CacheService];\r\n","import { HttpEvent, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { CacheService } from '../client-generated/api/api';\r\nimport { CreateCacheEntryRequestModel } from '../client-generated/model/createCacheEntryRequestModel';\r\nimport { RetrieveCacheEntryResponseModel } from '../client-generated/model/retrieveCacheEntryResponseModel';\r\nimport { UpdateCacheEntryRequestModel } from '../client-generated/model/updateCacheEntryRequestModel';\r\n\r\n/** Server side cache service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServerCacheService {\r\n\r\n /**\r\n * Constructs the service\r\n * @param sessionService The session service\r\n * @param cacheService The cache service\r\n */\r\n constructor(\r\n private readonly sessionService: SessionService,\r\n private readonly cacheService: CacheService\r\n ) { }\r\n\r\n /**\r\n * Creates the server side cache entry\r\n * @param body The body\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n body.key = this.formatKey(body.key);\r\n\r\n return this.cacheService.create(body, observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Retrieves the entry from the server cache\r\n * @param key The key to retrieve\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public retrieve(key: string, observe?: 'body', reportProgress?: boolean): Observable<RetrieveCacheEntryResponseModel>;\r\n public retrieve(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.retrieve(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n\r\n /**\r\n * Updates the server side cache entry\r\n * @param key The key\r\n * @param body The body\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.update(this.formatKey(key), body, observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Deletes the specified key.\r\n * @param key The key.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public delete(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public delete(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public delete(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public delete(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService._delete(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Refreshes the cache entry\r\n * @param key The key\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refresh(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refresh(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refresh(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refresh(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.refresh(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Formats the provided key\r\n * @param key The key\r\n */\r\n private formatKey(key: string): string {\r\n return `${this.sessionService.sessionId}-${key}`;\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISTRIBUTED_CACHE_BASE_PATH: InjectionToken<string> = new InjectionToken<string>('DistributedCacheBasePath');\r\n","import { NgModule, InjectionToken, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CacheService } from './client-generated/api/cache.service';\r\nimport { BASE_PATH } from './client-generated/variables';\r\nimport { ServerCacheService } from './services/server-cache.service';\r\nimport { DISTRIBUTED_CACHE_BASE_PATH } from './models/constants';\r\n\r\n/** The distributed cache module */\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n {\r\n provide: BASE_PATH,\r\n useExisting: DISTRIBUTED_CACHE_BASE_PATH\r\n },\r\n CacheService,\r\n ServerCacheService\r\n ]\r\n})\r\nexport class DistributedCacheModule {}\r\n","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The cache expiration types\r\n */\r\nexport type CacheExpirationType = 'Sliding' | 'Absolute';\r\n\r\nexport const CacheExpirationType = {\r\n Sliding: 'Sliding' as CacheExpirationType,\r\n Absolute: 'Absolute' as CacheExpirationType\r\n};","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The cache entry retrieve response model\r\n */\r\nexport interface RetrieveCacheEntryResponseModel { \r\n /**\r\n * Gets or sets the value.\r\n */\r\n value?: any;\r\n}","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * Update Cache entry request model\r\n */\r\nexport interface UpdateCacheEntryRequestModel { \r\n /**\r\n * Gets or sets the value.\r\n */\r\n value: any;\r\n}","import { Person } from '../../oauth/models/generated/person';\r\nimport { Address } from '../../forms/models/address';\r\n\r\n/** The policy person */\r\nexport class PolicyPerson implements Person {\r\n /** Implemented props */\r\n public exchangeId: string;\r\n public groupPolicyNumber: string;\r\n public dob: Date;\r\n public gender: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public relationship: string;\r\n\r\n /** Additional Props */\r\n public homeAddress: Address = {};\r\n public mailingAddress: Address = {};\r\n public email: string;\r\n public phone: string;\r\n public phoneType: string;\r\n}\r\n","/** Public Api service for distributed cache */\r\nexport * from './distributed-cache.module';\r\n\r\nexport { DISTRIBUTED_CACHE_BASE_PATH } from './models/constants';\r\n\r\nexport * from './client-generated/configuration';\r\n\r\nexport * from './client-generated/model/models';\r\n\r\nexport * from './services/server-cache.service';\r\n\r\nexport * from './models/policy-person';\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ErrorCommonConfig } from '../../models/error-common-config';\r\n\r\n/** The Common Error component */\r\n@Component({\r\n selector: 'sof-ar-error-common',\r\n templateUrl: './error-common.component.html',\r\n styleUrls: ['./error-common.component.css'],\r\n standalone: false\r\n})\r\nexport class ErrorCommonComponent implements OnInit {\r\n\r\n /** The config input */\r\n @Input() public config: ErrorCommonConfig;\r\n\r\n /** Constructs the component */\r\n constructor() {}\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (!this.config) {\r\n throw new Error('sof-ar-error-common: [config] input is required');\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"config\" class=\"error-container\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center center\">\r\n <div fxFlex=\"100%\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <div *ngIf=\"config.showErrorImage\" fxFlex=\"100%\" fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"error-image-container\">\r\n <img src=\"{{config.errorImageUrl}}\">\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h1 class=\"{{config.headerOneClass}}\" fxFlex=\"auto\">{{config.headerOneText | translate}}</h1>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h2 class=\"{{config.headerTwoClass}}\" fxFlex=\"auto\">{{config.headerTwoText | translate}}</h2>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h3 h5 class=\"{{config.infoTextClass}}\" fxFlex=\"auto\">{{config.infoText | translate}}</h3>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { ErrorCommonComponent } from './components/error-common/error-common.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The error module */\r\n@NgModule({\r\n declarations: [ErrorCommonComponent],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n ],\r\n exports: [\r\n ErrorCommonComponent\r\n ]\r\n})\r\nexport class ErrorModule { }\r\n","/** The Error Common Configurations */\r\nexport class ErrorCommonConfig {\r\n /** True if error image should be displayed */\r\n public showErrorImage: boolean;\r\n /** The image url */\r\n public errorImageUrl: string;\r\n /** The header one text */\r\n public headerOneText: string;\r\n /** The header one classes */\r\n public headerOneClass: string;\r\n /** The header two text */\r\n public headerTwoText: string;\r\n /** The header two classes */\r\n public headerTwoClass: string;\r\n /** The info text */\r\n public infoText: string;\r\n /** The info text classes */\r\n public infoTextClass: string;\r\n\r\n /** constructs the class */\r\n constructor() {\r\n this.errorImageUrl = 'https://softheoncdnstorage.blob.core.windows.net/images/common/error-cat.svg';\r\n }\r\n}","/** Public surface api for the error module */\r\nexport * from './error.module';\r\n\r\n// components\r\nexport * from './components/error-common/error-common.component';\r\n\r\n// models\r\nexport * from './models/error-common-config';\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { FAQ } from '../../models/faq';\r\nimport { FAQConfig } from '../../models/faq-config';\r\n\r\n/** \r\n * FAQ Component\r\n * @todo see if any apps are actually using this component ... do not see in any consumer apps ... \r\n */\r\n@Component({\r\n selector: 'sof-ar-faq',\r\n templateUrl: './faq.component.html',\r\n styleUrls: ['./faq.component.scss'],\r\n standalone: false\r\n})\r\nexport class FaqComponent implements OnInit {\r\n\r\n /** The FAQ INput Config */\r\n @Input() faqConfig: FAQConfig;\r\n\r\n /** The array of all FAQs */\r\n @Input() public allFaqs: Array<FAQ> = [];\r\n\r\n /** The icon color */\r\n public iconColor: string = '';\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (this.faqConfig && this.faqConfig.iconHexColor) {\r\n if (this.faqConfig.iconHexColor.indexOf('#') > -1) {\r\n this.iconColor = this.faqConfig.iconHexColor;\r\n }\r\n else {\r\n this.iconColor = `#${this.faqConfig.iconHexColor}`;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"sof-ar-faq-container\">\r\n<div fxLayout=\"column\" class=\"all-faqs\" full-width>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"left\" class=\"faq-container\">\r\n <mat-accordion fxFlex=\"60%\" fxFlex.lt-md=\"100%\">\r\n <div *ngFor=\"let faq of allFaqs; let i = index\">\r\n <mat-expansion-panel hideToggle=\"true\" [id]=\"'exp'+i\" (click)=\"faq.expanded = !faq.expanded\" full-width>\r\n <mat-expansion-panel-header class=\"panel-header\">\r\n <mat-panel-title>\r\n <mat-icon>\r\n <i *ngIf=\"!faq.expanded; else remove\" class=\"{{faqConfig.expandIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.expandIconText}}</i>\r\n <ng-template #remove>\r\n <i class=\"{{faqConfig.minimizeIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.minimizeIconText}}</i>\r\n </ng-template>\r\n </mat-icon>\r\n <div class=\"question\" [innerHTML]=\"faq.title | translate\"></div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div [innerHTML]=\"faq.description | translate\"></div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FaqComponent } from './components/faq/faq.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatExpansionModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n FlexLayoutModule\r\n];\r\n\r\n/** The FAQ Module */\r\n@NgModule({\r\n declarations: [FaqComponent],\r\n imports: [\r\n CommonModule,\r\n ...materialModules,\r\n TranslateModule\r\n ],\r\n exports: [FaqComponent]\r\n})\r\nexport class FaqModule { }\r\n","/** The FAQ class */\r\nexport class FAQ {\r\n /** The FAQ title */\r\n public title: string;\r\n\r\n /** The FAQ description */\r\n public description: string;\r\n\r\n /** Is the FAQ expanded */\r\n public expanded: boolean = false;\r\n}\r\n","\r\n/** The FAQ Config Class */\r\nexport class FAQConfig {\r\n /** The expand icon class */\r\n public expandIconClass: string;\r\n\r\n /** The minimize icon class */\r\n public minimizeIconClass: string;\r\n\r\n /** The expand icon text */\r\n public expandIconText: string;\r\n\r\n /** The minimize icon text */\r\n public minimizeIconText: string;\r\n\r\n /** The icon hex color */\r\n public iconHexColor: string;\r\n}\r\n","/** Public api for faq */\r\nexport * from './faq.module';\r\n\r\n// models\r\nexport * from './models/faq';\r\nexport * from './models/faq-config';\r\n\r\n// components\r\nexport * from './components/faq/faq.component';\r\n","/**\r\n * Site Map Direction\r\n */\r\nexport enum SiteMapDirection {\r\n /**\r\n * Horizontal\r\n */\r\n Horizontal = 'Horizontal',\r\n\r\n /**\r\n * Vertical\r\n */\r\n Vertical = 'Vertical'\r\n}","/** Public api for the footer module */\r\nexport * from './footer.module';\r\n\r\n// models\r\nexport * from './models/footer-config';\r\nexport * from './models/site-map-models';\r\nexport * from './models/enum/site-map-direction';\r\n\r\n// components\r\nexport * from './components/footer/footer.component';\r\nexport * from './components/site-map/site-map.component';\r\n","/** Public API surface for the forms */\r\nexport * from './forms.module';\r\n\r\n// models\r\nexport * from './models/address';\r\nexport * from './models/county';\r\nexport * from './models/enums/states';\r\nexport * from './models/constants';\r\n\r\n// directives\r\nexport * from './directives/letters-characters/letters-characters.directive';\r\nexport * from './directives/letters-only/letters-only.directive';\r\nexport * from './directives/numbers-only/numbers-only.directive';\r\nexport * from './directives/alphanumeric/alphanumeric.directive';\r\nexport * from './directives/input-trim/input-trim.directive';\r\nexport * from './directives/date-input-filter/date-input-filter.directive';\r\n\r\n// components\r\nexport * from './components/sof-address/sof-address.component';\r\n\r\n// services\r\nexport * from './services/alert.service';\r\n\r\n// pipes\r\nexport * from './pipes/phone-format.pipe';\r\n","import { ChangeDetectionStrategy, Component, Input, signal, WritableSignal } from '@angular/core';\r\nimport { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';\r\nimport { filter, distinctUntilChanged, tap } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Breadcrumb } from '../../../models/breadcrumb';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The breadcrumbs hierarchy component */\r\n@Component({\r\n selector: 'sof-breadcrumbs-hierarchy',\r\n templateUrl: './sof-breadcrumbs-hierarchy.component.html',\r\n styleUrl: './sof-breadcrumbs-hierarchy.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBreadcrumbsHierarchyComponent {\r\n /** The navigation element aria label */\r\n @Input() public navAriaLabel: string = \"'breadcrumbs'\";\r\n /** The breadcrumbs array signal */\r\n public breadcrumbs: WritableSignal<Array<Breadcrumb>> = signal([]);\r\n /**\r\n * The component constructor \r\n * @param router A service that provides navigation among views and URL manipulation capabilities.\r\n * @param activatedRoute Provides access to information about a route associated with a component that is loaded in an outlet.\r\n * @event Subscribes to the router events to build further breadcrumbs on navigation end.\r\n */\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n ) {\r\n this.router.events.pipe(\r\n takeUntilDestroyed(),\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n tap((_) => {\r\n this.buildBreadCrumbs(this.activatedRoute.root);\r\n })\r\n ).subscribe();\r\n }\r\n /**\r\n * Recursively build breadcrumbs according to activated route.\r\n * @param route the activated route \r\n * @param url the url \r\n * @param breadcrumbs the breadcrumbs \r\n */\r\n private buildBreadCrumbs(\r\n route: ActivatedRoute, \r\n url: string = '', \r\n breadcrumbs: Array<Breadcrumb> = [] \r\n ): void {\r\n const label: string = route.routeConfig && route.routeConfig.data ? route.routeConfig.data.breadcrumb : '';\r\n const path: string = route.routeConfig && route.routeConfig.data ? route.routeConfig.path : '';\r\n const nextUrl: string = path ? `${url}/${path}` : url;\r\n const breadcrumb: Breadcrumb = {\r\n label: label,\r\n url: nextUrl,\r\n };\r\n const newBreadcrumbs: Array<Breadcrumb> = breadcrumb.label ? [ ...breadcrumbs, breadcrumb ] : [ ...breadcrumbs];\r\n if (route.firstChild) {\r\n return this.buildBreadCrumbs(route.firstChild, nextUrl, newBreadcrumbs);\r\n }\r\n this.breadcrumbs.set(newBreadcrumbs);\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"navAriaLabel | translate\">\r\n <ol class=\"breadcrumbs-list m-a-0 p-a-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); \r\n track $index; \r\n let last = $last; \r\n let first = $first; \r\n ) {\r\n <li>\r\n <a \r\n [routerLink]=\"!last && !first ? breadcrumb.url : null\" \r\n [class.crumb-disabled]=\"last || first\">\r\n {{ breadcrumb.label | translate }}\r\n </a>\r\n </li>\r\n @if (!last) {\r\n <span m-h-5>/</span>\r\n }\r\n }\r\n </ol>\r\n</nav>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Takes first & last name, returns the capitalized users initials\r\n */\r\n@Pipe({\r\n name: 'userInitials',\r\n standalone: true\r\n})\r\nexport class userInitialsPipe implements PipeTransform {\r\n transform(firstName: string, lastName: string): string {\r\n const firstInitial = firstName ? firstName.trim()[0].toUpperCase() : '';\r\n const lastInitial = lastName ? lastName.trim()[0].toUpperCase() : '';\r\n return `${firstInitial}${lastInitial}`;\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\n\r\n/** Directive to prevent mat-menu from closing on click */\r\n@Directive({\r\n selector: \"[menu-prevent-close]\",\r\n standalone: true\r\n})\r\nexport class MenuPreventCloseDirective {\r\n @HostListener(\"click\", [\"$event\"])\r\n onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n Signal\r\n} from '@angular/core';\r\n\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { SofBreadcrumbsHierarchyComponent } from '../../../navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component';\r\nimport { userInitialsPipe } from './user-initials-pipe/user-initials.pipe';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MenuPreventCloseDirective } from './menu-prevent-close-directive/menu-prevent-close.directive';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\n\r\n/**\r\n * The Header Component\r\n * @description Main header\r\n * @see [Figma/portal-ui-shell]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118395&t=G5IKDvYHpwU0vOFq-0})\r\n *\r\n * @todo `mobile styling` - awaiting design\r\n *\r\n * @todo update to be used with applications without a side navigation panel (shopping apps, ect.)\r\n *\r\n * @todo `language settings` - awaiting design ( its own component, modal )\r\n * @see [Figma/language-switcher]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118249&t=qMyPFk9iMfbU6iRS-0})\r\n *\r\n * @note * THERE ARE NO CONFIGS! for this component, `please remove any header based configs from appsettings when using this component.`\r\n*/\r\n@Component({\r\n selector: 'sof-header',\r\n templateUrl: './sof-header.component.html',\r\n styleUrls: ['./sof-header.component.scss'],\r\n imports: [\r\n SofBreadcrumbsHierarchyComponent,\r\n userInitialsPipe,\r\n MatMenuModule,\r\n MatDividerModule,\r\n TranslateModule,\r\n MenuPreventCloseDirective\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SofHeaderComponent implements OnInit {\r\n /**\r\n * To show the breadcrumbs hierarchy component\r\n * @default false\r\n */\r\n @Input() showBreadcrumbsHierarchy: boolean = false;\r\n\r\n /**\r\n * Is the nav panel opened\r\n * @default true\r\n */\r\n @Input() isNavPanelOpened: boolean = true;\r\n\r\n /**\r\n * The user data for header dropdown\r\n */\r\n @Input() userMenuData?: HeaderUserMenuData;\r\n\r\n /**\r\n * logout button text\r\n * @note can be translation key\r\n */\r\n @Input() public logoutText: string = 'armature.header.user-menu.log-out';\r\n\r\n /** Logout event, the application consuming this component is responsible for the actual logout */\r\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter();\r\n\r\n /** Inject angular's document reference */\r\n private document: Document = inject(DOCUMENT);\r\n\r\n /** Inject the translate service */\r\n private translateService: TranslateService = inject(TranslateService);\r\n\r\n /** Current language to display */\r\n public currentLangLabel: string;\r\n\r\n /** Copy button data */\r\n public copyButton: CopyButton = {\r\n text: 'armature.header.user-menu.copy', \r\n icon: 'copy',\r\n class: 'copy'\r\n };\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** Inject manual change detection */\r\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** Initialize component & set lang from local store */\r\n public ngOnInit(): void {\r\n const currentLang = localStorage.getItem('language') || this.translateService.currentLang;\r\n this.currentLangLabel = currentLang === 'en' ? 'English' : 'Español';\r\n setTimeout(() => {\r\n this.translateService.use(currentLang);\r\n });\r\n }\r\n\r\n /** Prevent menu from closing on click */\r\n public preventCloseOnClick(e: Event): void {\r\n if (e) e.stopPropagation();\r\n }\r\n\r\n /** Copies npn number to clipboard */\r\n public copyNpnNumber(): void {\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(this.userMenuData.npn);\r\n } else {\r\n const textarea = this.document.createElement('textarea');\r\n textarea.value = this.userMenuData.npn;\r\n this.document.body.appendChild(textarea);\r\n textarea.select();\r\n this.document.execCommand('copy');\r\n this.document.body.removeChild(textarea);\r\n }\r\n this.copyButton = {\r\n text: 'armature.header.user-menu.copied',\r\n icon: 'check-circle',\r\n class: 'copied'\r\n };\r\n setTimeout(() => {\r\n this.copyButton = {\r\n text: 'armature.header.user-menu.copy',\r\n icon: 'copy',\r\n class: 'copy'\r\n };\r\n this.cdr.detectChanges();\r\n }, 800);\r\n }\r\n\r\n /**\r\n * Applies the language to the translate service\r\n * Sets local storage for preferred language\r\n * @todo right now are only using 'en' & 'es', will need to update if more langs are added.\r\n * @see [Figma/language-switcher]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118249&t=qMyPFk9iMfbU6iRS-0})\r\n */\r\n public toggleLanguage(): void {\r\n const currentLang: string = this.translateService.currentLang;\r\n switch (currentLang) {\r\n case 'en': {\r\n this.translateService.use('es');\r\n this.currentLangLabel = 'Español';\r\n localStorage.setItem(\"language\", 'es');\r\n break;\r\n }\r\n case 'es': {\r\n this.translateService.use('en');\r\n this.currentLangLabel = 'English';\r\n localStorage.setItem(\"language\", 'en');\r\n break;\r\n }\r\n default: {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /** Emits the logout event */\r\n public logout(): void {\r\n this.logoutEvent.emit();\r\n }\r\n}\r\n\r\n/** The user data for header dropdown interface */\r\nexport interface HeaderUserMenuData {\r\n firstName: string;\r\n lastName: string;\r\n email?: string;\r\n /** Only for Broker portal */\r\n npn?: string;\r\n}\r\n\r\n/** Copy button data interface */\r\ninterface CopyButton {\r\n text: string;\r\n icon: string;\r\n class: string;\r\n}\r\n","<header\r\n [class.nav-panel-closed]=\"(isNavPanelOpened != null && !isNavPanelOpened) || isSmallScreen().matches\">\r\n @if (showBreadcrumbsHierarchy) {\r\n <sof-breadcrumbs-hierarchy/>\r\n }\r\n <div class=\"header-right-section\">\r\n <!-- @note: can inject buttons only, spacing is controlled by this component -->\r\n <ng-content select=\"[header-right-section-buttons]\"></ng-content>\r\n @if (userMenuData) {\r\n <button [matMenuTriggerFor]=\"userMenu\" class=\"user-menu-trigger\" id=\"user-menu-trigger\" aria-label=\"open user menu\">\r\n <p>{{userMenuData.firstName | userInitials: userMenuData.lastName}}</p>\r\n </button>\r\n }\r\n </div>\r\n</header>\r\n\r\n<mat-menu\r\n #userMenu=\"matMenu\"\r\n class=\"user-menu\"\r\n aria-label=\"user menu\">\r\n @if (userMenuData) {\r\n <div menu-prevent-close class=\"user-menu-prevent-close\">\r\n <div class=\"user-menu-item border-bottom name-email\">\r\n <p class=\"name\">{{userMenuData.firstName + ' ' + userMenuData.lastName}}</p>\r\n @if (userMenuData.email) {\r\n <p class=\"email\">{{userMenuData.email}}</p>\r\n }\r\n </div>\r\n @if (userMenuData.npn) {\r\n <div class=\"user-menu-item border-bottom npn-number\">\r\n <p>NPN</p>\r\n <p class=\"number\">{{userMenuData.npn}}</p>\r\n <button\r\n (click)=\"copyNpnNumber()\"\r\n [class]=\"copyButton.class\"\r\n id=\"user-menu-copy-npn\"\r\n aria-label=\"copy npn number\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-{{copyButton.icon}}\" aria-hidden=\"true\"></i>\r\n {{copyButton.text | translate}}\r\n </button>\r\n </div>\r\n }\r\n <div class=\"user-menu-item-full-button\">\r\n <button\r\n (click)=\"toggleLanguage()\"\r\n id=\"user-menu-toggle-lang\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-globe\" aria-hidden=\"true\"></i>\r\n <span>{{'armature.header.user-menu.language' | translate}}</span>\r\n <span text-medium-emphasis>{{currentLangLabel}}</span>\r\n </button>\r\n </div>\r\n <div class=\"user-menu-item-full-button\">\r\n <button\r\n (click)=\"logout()\"\r\n class=\"log-out\" id=\"user-menu-logout\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-sign-out\" aria-hidden=\"true\"></i>\r\n <span>{{logoutText | translate}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n</mat-menu>\r\n","/**\r\n * Header authorization settings.\r\n */\r\nexport class HeaderAuthSettings {\r\n public myAccountText?: string = 'My Account';\r\n public responseType?: string = 'code';\r\n /**\r\n * Constructor.\r\n * @param clientId Client ID. \r\n * @param redirectUri Redirect URI.\r\n * @param issuer Issuer.\r\n * @param scope Scope.\r\n * @param skipIssuerCheck Skip issuer check flag.\r\n * @param logInText Log In Text.\r\n * @param logOutText Log Out Text.\r\n */\r\n constructor(\r\n public clientId: string = '',\r\n public redirectUri: string = '',\r\n public issuer: string = '',\r\n public scope: string = '',\r\n public skipIssuerCheck: boolean = true,\r\n public logInText: string = 'SIGN IN',\r\n public logOutText: string = 'SIGN OUT',\r\n public timeoutFactor: number = 9,\r\n public returnRoute: string = '',\r\n public postLogOutUrl: string = '',\r\n public loginUrl: string = '',\r\n public authSetOnStartup: boolean = false\r\n ) { }\r\n}\r\n","/** Public API surface for components */\r\nexport * from './header.module';\r\n\r\n// components\r\nexport * from './components/header/header.component';\r\nexport * from './components/mobile-header-menu/mobile-header-menu.component';\r\nexport * from './components/sof-header/sof-header.component';\r\nexport * from './components/sof-header/user-initials-pipe/user-initials.pipe';\r\n\r\n// models\r\nexport * from './models/header.settings';\r\nexport * from './models/header-theme.settings';\r\nexport * from './models/header-auth.settings';\r\nexport * from './models/mobile-header-nav.settings';\r\nexport * from './models/header-language.settings';\r\nexport * from './models/header-external-links';\r\n","/** \r\n * The navigation links for tabs interface \r\n * @property url: string, The URL to navigate to \r\n * @property label: string, The text to display \r\n * */\r\nexport interface Breadcrumb {\r\n url: string;\r\n label: string;\r\n};\r\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, signal, WritableSignal } from '@angular/core';\r\nimport { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';\r\nimport { filter, distinctUntilChanged, tap } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Breadcrumb } from '../../../models/breadcrumb';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The breadcrumbs history component */\r\n@Component({\r\n selector: 'sof-breadcrumbs-history',\r\n templateUrl: './sof-breadcrumbs-history.component.html',\r\n styleUrl: './sof-breadcrumbs-history.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBreadcrumbsHistoryComponent implements OnDestroy {\r\n /** Key to access the breadcrumbs session storage object */\r\n private readonly sessionKey: string = \"breadcrumbs\";\r\n /** The navigation element aria label */\r\n @Input() public navAriaLabel: string = \"'breadcrumbs'\";\r\n /** The breadcrumbs array signal */\r\n public breadcrumbs: WritableSignal<Array<Breadcrumb>> = signal(JSON.parse(sessionStorage.getItem(this.sessionKey)) ?? []);\r\n /**\r\n * The component constructor \r\n * @param router A service that provides navigation among views and URL manipulation capabilities.\r\n * @param activatedRoute Provides access to information about a route associated with a component that is loaded in an outlet.\r\n * @event Subscribes to the router events to build further breadcrumbs on navigation end.\r\n */\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n ) {\r\n if (!this.breadcrumbs().length && !!this.activatedRoute.root.firstChild) {\r\n this.buildBreadCrumbs(this.activatedRoute.root.firstChild);\r\n }\r\n this.router.events.pipe(\r\n takeUntilDestroyed(),\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n tap((_) => {\r\n this.buildBreadCrumbs(this.activatedRoute.firstChild);\r\n })\r\n ).subscribe();\r\n }\r\n /**\r\n * @description Build breadcrumbs according to activated route. \r\n * Saves to session storage to persist when browser is refreshed.\r\n * @param route The activated route \r\n */\r\n private buildBreadCrumbs(route: ActivatedRoute): void {\r\n if (route.routeConfig && route.routeConfig.data && route.routeConfig.data.breadcrumb) {\r\n const newBreadcrumb: Breadcrumb = {\r\n label: route.routeConfig.data.breadcrumb,\r\n url: `/${route.routeConfig.path}`\r\n };\r\n const tempBreadcrumbs: Array<Breadcrumb> = [...this.breadcrumbs(), newBreadcrumb];\r\n const length: number = tempBreadcrumbs.length;\r\n const existingIndex: number = tempBreadcrumbs.findIndex((crumb) => crumb.url === newBreadcrumb.url);\r\n if (length > 1 && existingIndex + 1 < length) {\r\n this.breadcrumbs.update((breadcrumbs) => breadcrumbs.slice(0, existingIndex + 1));\r\n } else {\r\n this.breadcrumbs.set(tempBreadcrumbs);\r\n }\r\n sessionStorage.setItem(this.sessionKey, JSON.stringify(this.breadcrumbs()));\r\n }\r\n }\r\n\r\n /** \r\n * A callback method that performs custom clean-up, \r\n * invoked immediately before a directive, pipe, or service instance is destroyed. \r\n * Will not be triggered on browser refresh.\r\n */\r\n ngOnDestroy(): void {\r\n sessionStorage.removeItem(this.sessionKey);\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"navAriaLabel | translate\">\r\n <ol class=\"breadcrumbs-list m-a-0 p-a-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); \r\n track $index; \r\n let last = $last; \r\n let first = $first; \r\n let length = $count; \r\n ) {\r\n @if (length > 1) {\r\n <li>\r\n @if (first) {\r\n <a [routerLink]=\"breadcrumb.url\">\r\n <i class=\"fa-solid fa-arrow-left p-r-5 crumb-icon\"></i>\r\n </a>\r\n }\r\n <a \r\n [routerLink]=\"!last ? breadcrumb.url : null\" \r\n [class.disabled-crumb]=\"last\" \r\n [class.first-crumb]=\"first\">\r\n {{ first ? \r\n ('Back to ' + (breadcrumb.label | translate)) : \r\n (breadcrumb.label | translate) \r\n }}\r\n </a>\r\n @if (!last) {\r\n <span m-h-5>/</span>\r\n }\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n Signal,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\n\r\nimport { filter } from 'rxjs';\r\n\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { BreakpointObserver, BreakpointState, LayoutModule } from '@angular/cdk/layout';\r\nimport { MatSidenavContent, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { NavPanelNode } from './models/nav-panel-nodes';\r\nimport { NavPanelSettings } from './models/nav-panel-settings';\r\nimport { NavPanelLogo } from './models/nav-panel-logo';\r\n\r\n/**\r\n * The Navigation Panel Component\r\n * @description Main navigation panel for Portals, part of the new Portal UI-shell.\r\n * @note Designed to be used with the 'SofHeaderPortalComponent' component as its child.\r\n * @see [Figma/portal-ui-shell]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118395&t=G5IKDvYHpwU0vOFq-0})\r\n * \r\n * @todo `mobile styling` - awaiting design, minor adjustments have been made - 1/2/25 ... \r\n*/\r\n@Component({\r\n selector: 'sof-nav-panel',\r\n templateUrl: './sof-nav-panel.component.html',\r\n styleUrl: './sof-nav-panel.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n providers: [\r\n LayoutModule\r\n ]\r\n})\r\nexport class SofNavPanelComponent implements OnInit {\r\n\r\n /** \r\n * Component Input (required) - Navigation node data \r\n * @see {@link NavPanelNode}\r\n */\r\n @Input({required:true}) public nodes!: Array<NavPanelNode>;\r\n\r\n /** \r\n * Component Input - Basic navigation settings \r\n * @see {@link NavPanelSettings}\r\n * @note If any or all settings are not passed, defaults will be set.\r\n * @see {@link initSettings()}\r\n */\r\n @Input() public settings?: NavPanelSettings;\r\n\r\n /** \r\n * Should scroll to top on `NavigationEnd` event?\r\n * @default true\r\n */\r\n @Input() private scrollToTopOnNavigationEndEvent: boolean = true;\r\n\r\n /** The brand logo config */\r\n @Input() public brandLogo?: NavPanelLogo;\r\n\r\n /** \r\n * Is the nav panel open \r\n * @note this is needed to pass panel opened state to the SofHeaderPortalComponent\r\n */\r\n @Output() isNavPanelOpenedEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /** \r\n * Main content for scroll position \r\n * @note this is the element which has the apps 'main' scrollbar.\r\n */\r\n @ViewChild(MatSidenavContent) sidenavContent!: MatSidenavContent;\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** Angular's router */\r\n private router: Router = inject(Router);\r\n\r\n /** On Init - Initialize the settings */\r\n public ngOnInit(): void {\r\n this.initSettings();\r\n if (this.scrollToTopOnNavigationEndEvent) {\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd)\r\n ).subscribe((_) => {\r\n this.scrollToTop();\r\n });\r\n }\r\n }\r\n\r\n /** \r\n * Initializes the nav panel settings, defaults will be set if `null` or `undefined` \r\n * @note The 'nullish coalescing assignment operator' `??=` assigns defaults for `boolean` and `number` types,\r\n * for `number` types this will allow for `0` to be accepted. For a `string`, use 'logical OR assignment' `||=` operator, \r\n * as this will also prevent empty strings `\" \"`.\r\n * @see `??=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment#using_nullish_coalescing_assignment)}\r\n * @see `||=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment#try_it)}\r\n */\r\n private initSettings(): void {\r\n this.settings ??= {};\r\n this.settings.allowNavToggle ??= true;\r\n }\r\n\r\n /** \r\n * Scrolls to the top of page \r\n * @note using `window.scrollTo` will not work if using this component as the main scrollbar does not live on the window level.\r\n * Configuring `scrollPositionRestoration` in the router module will not work either.\r\n */\r\n scrollToTop(): void {\r\n if (this.sidenavContent) {\r\n this.sidenavContent.scrollTo({top: 0});\r\n }\r\n }\r\n}\r\n","<div \r\n class=\"sof-nav-panel-container\">\r\n @if (isSmallScreen().matches || settings.allowNavToggle) {\r\n <button \r\n (click)=\"navPanel.toggle(); isSmallScreen().matches ? null : isNavPanelOpenedEvent.emit(navPanel.opened)\" \r\n mat-flat-button theme=\"neutral\" emphasis=\"secondary\"\r\n id=\"sof-nav-panel-toggle\" class=\"sof-button-icon-v2 sof-nav-panel-toggle\"\r\n [class.opened]=\"navPanel.opened\"\r\n [class.mobile]=\"isSmallScreen().matches && navPanel.opened\"\r\n [matTooltip]=\"\r\n 'armature.navigation-panel.toggle-button-tooltip-' + \r\n (navPanel.opened ? 'close':'open') | translate\"\r\n [attr.aria-label]=\"navPanel.opened ? 'close sidebar' : 'open sidebar'\">\r\n <i class=\"ph-bold ph-sidebar-simple\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n <mat-sidenav-container>\r\n <mat-sidenav \r\n #navPanel class=\"sof-nav-panel\" [opened]=\"true\"\r\n [mode]=\"isSmallScreen().matches ? 'over' : 'side'\">\r\n <nav \r\n [attr.aria-label]=\"'main'\"\r\n [style.paddingBottom.px]=\"!!brandLogo ? 0 : 40\"\r\n [style.height]=\"!!brandLogo ? '100%' : 'auto'\">\r\n <ul \r\n class=\"sof-nav-panel-list\"\r\n [class.mobile]=\"isSmallScreen().matches\">\r\n @for (node of nodes; track $index) {\r\n <li \r\n class=\"sof-nav-panel-list-item\"\r\n [class.has-subnodes]=\"node.subnodes?.length\">\r\n @if (node.subnodes?.length) {\r\n <div class=\"sof-nav-panel-subnode-heading\">\r\n {{node.label | translate}}\r\n </div>\r\n <ul class=\"sof-nav-panel-list sub-list\">\r\n @for (subNode of node.subnodes; track $index) {\r\n <li>\r\n <a \r\n (click)=\"isSmallScreen().matches ? navPanel.close() : null\" \r\n class=\"sof-nav-panel-link\" [routerLink]=\"subNode.route\" \r\n routerLinkActive=\"sof-nav-panel-link-active\">\r\n <i class=\"{{subNode.iconClass}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span class=\"sof-nav-panel-link-label\">{{subNode.label | translate}} </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n } @else {\r\n <a \r\n (click)=\"isSmallScreen().matches ? navPanel.close() : null\" \r\n class=\"sof-nav-panel-link\" [routerLink]=\"node.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\">\r\n <i class=\"{{node.iconClass}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span class=\"sof-nav-panel-link-label\">{{node.label | translate}}</span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n @if (brandLogo) {\r\n <div class=\"logo\" m-t-auto>\r\n <img [src]=\"brandLogo.url\" [alt]=\"brandLogo.altText\">\r\n </div>\r\n }\r\n </ul>\r\n </nav>\r\n </mat-sidenav>\r\n <!-- Use 'sof-nav-panel-main-content' to inject main content, usually header, main router-outlet & footer -->\r\n <mat-sidenav-content>\r\n <ng-content select=\"[sof-nav-panel-main-content]\"></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n","/** Public API surface for components */\r\nexport * from './navigation.module';\r\n\r\n// models\r\nexport * from './models/navigation';\r\nexport * from './models/nav.settings';\r\nexport * from './models/nav-theme.settings';\r\nexport * from './models/breadcrumb';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-nodes';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-settings';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-logo';\r\n\r\n\r\n// components\r\nexport * from './components/navigation/navigation.component';\r\nexport * from './components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component';\r\nexport * from './components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component';\r\nexport * from './components/sof-tabs-navigation/sof-tabs.component';\r\nexport * from './components/sof-sub-navigation/sof-sub-navigation.component';\r\nexport * from './components/sof-navigation-panel/sof-nav-panel.component';","import { RoleAccess } from './role-access';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** The Role Based Access Control (RBAC) configuration */\r\nexport class RbacConfig {\r\n /** The role configuration */\r\n public roleConfig: { [key: string]: RoleAccess };\r\n\r\n /** Disables the role actions in the directive */\r\n public disableRoleActions: boolean;\r\n\r\n /** The access token observable */\r\n public accessToken$: Observable<string>;\r\n\r\n /** The user info endpoint */\r\n public userInfoEndpoint: string;\r\n}\r\n","import { NavNode } from '../../navigation/models/navigation';\r\nimport { RbacConfig } from '../models/rbac-config';\r\n\r\n/** The role navigation service interface */\r\nexport abstract class RoleNavService {\r\n /**\r\n * Creates a new navigation config using the provided default navigation config and the RABC configuration\r\n * @param defaultNav The default navigation config\r\n * @param rbacConfig The rbac config used for limiting the navigation\r\n * @param roles the array of roles\r\n */\r\n public abstract createRoleControlledNavigation(defaultNav: Array<NavNode>, rbacConfig: RbacConfig, roles: Array<string>): Array<NavNode>;\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { NavNode } from '../../navigation/navigation-api';\r\nimport { AccessTokenClaims } from '../models/access-token-claims';\r\nimport { RBAC_CONFIG } from '../models/constants';\r\nimport { DecodedAccessToken } from '../models/decoded-access-token';\r\nimport { RbacConfig } from '../models/rbac-config';\r\nimport { RoleNavService } from './role-nav.service';\r\n\r\n/**\r\n * The oauth 2 role service\r\n * Supplies the role using an OAuth 2.0 access token\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Oauth2RoleService {\r\n\r\n /** True if configs were provided at construction */\r\n private configsProvidedAtConstruction: boolean = false;\r\n\r\n /** The decoded access token behavior subject */\r\n private readonly decodeToken: ReplaySubject<DecodedAccessToken> = new ReplaySubject(undefined);\r\n\r\n /** The current access token */\r\n public token: string;\r\n\r\n /** The decoded access token */\r\n public decodedToken$: Observable<DecodedAccessToken>;\r\n\r\n /**\r\n * Constructs the service\r\n * @param rbacConfig The rbac configurations\r\n * @param httpClient The http client\r\n * @param roleNavService The role nav service\r\n */\r\n constructor(\r\n @Optional() private rbacConfig: RbacConfig,\r\n private readonly httpClient: HttpClient,\r\n private readonly roleNavService: RoleNavService\r\n ) {\r\n // get the token initially then update it based on injected refresh time\r\n this.decodedToken$ = this.decodeToken.asObservable();\r\n if (this.rbacConfig) {\r\n this.configsProvidedAtConstruction = true;\r\n this.init();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the role controlled navigation configuration\r\n * @param defaultNav The default navigation\r\n * @param roles The roles of the user\r\n */\r\n public getControlledNavObject(defaultNav: Array<NavNode>, roles: Array<string>): Array<NavNode> {\r\n return this.roleNavService.createRoleControlledNavigation(defaultNav, this.rbacConfig, roles);\r\n }\r\n\r\n /**\r\n * Configures the service\r\n * @param rbacConfig The rbac config\r\n */\r\n public configure(rbacConfig: RbacConfig): void {\r\n this.rbacConfig = rbacConfig;\r\n this.init();\r\n }\r\n\r\n /**\r\n * Determines if the current token has access to the action\r\n * @param action The action to check access for\r\n */\r\n public hasActionAccess(action: string): Observable<boolean> {\r\n if (this.rbacConfig.disableRoleActions) {\r\n return of(true);\r\n }\r\n\r\n return this.decodedToken$.pipe(map(token => {\r\n const roles = token.claims.getRole;\r\n // if no roles, no action access\r\n if (!roles || roles.length === 0) {\r\n return false;\r\n }\r\n // flatten role config into one set of actions for all the actions for the user\r\n const flattenedActions: Set<string> = new Set<string>();\r\n roles.forEach(role => {\r\n const roleConfig = this.rbacConfig.roleConfig[role];\r\n if (!roleConfig || !roleConfig.actions || !roleConfig.actions.length) {\r\n return false;\r\n }\r\n roleConfig.actions.forEach(a => flattenedActions.add(a.toLowerCase()));\r\n });\r\n\r\n return flattenedActions.has(action.toLowerCase());\r\n }));\r\n }\r\n\r\n /** Initializer logic for the service */\r\n private async init(): Promise<any> {\r\n this.rbacConfig.accessToken$.subscribe(token => {\r\n this.token = token;\r\n if (!this.token) {\r\n return;\r\n }\r\n const decoded = new DecodedAccessToken(this.token);\r\n\r\n // create the headers for the user info call with the existing access token\r\n const headers = new HttpHeaders({ Authorization: `Bearer ${this.token}`, 'Access-Control-Allow-Origin': '*' });\r\n this.httpClient.get<AccessTokenClaims>(this.rbacConfig.userInfoEndpoint, { headers })\r\n .pipe(\r\n // map the results to the props\r\n map(res => {\r\n decoded.claims = res;\r\n this.decodeToken.next(decoded);\r\n }),\r\n // continue on error and log to console\r\n catchError(error => {\r\n console.error(`Unable to retrieve user info for: ${this.token}`, error);\r\n\r\n return of(error);\r\n }))\r\n .subscribe();\r\n });\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/** Choose to disable access to all pages for roles with no pages */\r\nexport const DISABLE_ACCESS_FOR_NO_PAGES_ROLE: InjectionToken<boolean> = new InjectionToken<boolean>('disable-access-for-no-pages');","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { NavNode } from '../../navigation/models/navigation';\r\nimport { RbacConfig } from '../models/rbac-config';\r\nimport { RoleNavService } from './role-nav.service';\r\nimport { DISABLE_ACCESS_FOR_NO_PAGES_ROLE } from './tokens';\r\n\r\n/** The armature role navigation service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArRoleNavService implements RoleNavService {\r\n\r\n /** Constructs the service */\r\n constructor(\r\n @Optional() @Inject(DISABLE_ACCESS_FOR_NO_PAGES_ROLE) private disableAccessForNoPagesRole : boolean ) \r\n { }\r\n\r\n /**\r\n * Creates a new navigation configuration using the provided RBAC configuration\r\n * @param defaultNav The default navigation configuration\r\n * @param rbacConfig The rbac configuration\r\n * @param roles The roles\r\n */\r\n public createRoleControlledNavigation(defaultNav: Array<NavNode>, rbacConfig: RbacConfig, roles: Array<string>): Array<NavNode> {\r\n const controlledNav: Array<NavNode> = [];\r\n // flatten role config into one set of pages for all the roles for the user\r\n const flattenedPages: Set<string> = new Set<string>();\r\n let roleFound = false;\r\n roles.forEach(role => {\r\n const roleConfig = rbacConfig.roleConfig[role];\r\n if (roleConfig) {\r\n roleFound = true;\r\n // if they have at least one role where they have access to everything give access to everything\r\n if (!roleConfig.pages || roleConfig.pages.length === 0) {\r\n flattenedPages.clear();\r\n\r\n return;\r\n }\r\n roleConfig.pages.forEach(page => {\r\n flattenedPages.add(page);\r\n });\r\n }\r\n });\r\n if (flattenedPages.size === 0 && !roleFound) {\r\n console.warn(`no role matching: ${roles.join(', ')} found, no access is provided`);\r\n\r\n return controlledNav;\r\n }\r\n\r\n // if the role has no pages assigned for access and the token was passed, deny access to everything\r\n if (flattenedPages.size === 0 && this.disableAccessForNoPagesRole) {\r\n console.warn(`The role: ${roles.join(', ')} has no page access defined`);\r\n\r\n return [];\r\n }\r\n \r\n // if the user has no pages, give them access to all of the stuff\r\n if (flattenedPages.size === 0 && roleFound) {\r\n return defaultNav;\r\n }\r\n\r\n // loop over each level 1 node\r\n const deepCopyDefaultNav: Array<NavNode> = JSON.parse(JSON.stringify(defaultNav));\r\n deepCopyDefaultNav.forEach(n1 => {\r\n // first check which n2 are listed\r\n const foundSubNodes = [];\r\n n1.subNodes.forEach(sn => {\r\n if (this.isRouteMatch(Array.from(flattenedPages.values()), sn.route)) {\r\n foundSubNodes.push(sn);\r\n }\r\n });\r\n\r\n n1.subNodes = foundSubNodes;\r\n // if level 2 nodes found or level 1 is a route match, add the level 1 node\r\n if (foundSubNodes.length > 0 || (n1.route && this.isRouteMatch(Array.from(flattenedPages.values()), n1.route))) {\r\n controlledNav.push(n1);\r\n }\r\n });\r\n\r\n return controlledNav;\r\n }\r\n\r\n /**\r\n * Determines if the route is found in the pages array\r\n * @param pages The pages\r\n * @param route The route\r\n */\r\n private isRouteMatch(pages: Array<string>, route: string): boolean {\r\n // check wild card\r\n return pages.some(p => {\r\n if (p.indexOf('**') > -1) {\r\n const baseRoute = p.replace('/**/', '')\r\n .replace('**/', '')\r\n .replace('/**', '')\r\n .replace('**', '')\r\n .toLowerCase();\r\n\r\n if (route.toLowerCase()\r\n .indexOf(baseRoute) > -1) {\r\n return true;\r\n }\r\n }\r\n else if (route.toLowerCase() === p.toLowerCase()) {\r\n return true;\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, TemplateRef, ViewContainerRef, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { Oauth2RoleService } from '../services/oauth2-role.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[sofArRbacAction]',\r\n standalone: false\r\n})\r\nexport class RbacActionDirective implements OnInit, OnDestroy {\r\n\r\n /** The action of the directive */\r\n @Input() public sofArRbacAction: string;\r\n\r\n /** The directive subscription */\r\n private readonly directiveSub: Subscription = new Subscription();\r\n\r\n /** True if content is rendered */\r\n private isContentRendered: boolean;\r\n\r\n /**\r\n * Constructs the component\r\n * @param templateRef The template reference\r\n * @param viewContainer The view container reference\r\n * @param oAuth2RoleService The oauth 2 role service\r\n */\r\n constructor(\r\n private readonly templateRef: TemplateRef<any>,\r\n private readonly viewContainer: ViewContainerRef,\r\n private readonly oAuth2RoleService: Oauth2RoleService\r\n ) { }\r\n\r\n /** Life cycle hook for directive initialization */\r\n public ngOnInit(): void {\r\n this.directiveSub.add(this.oAuth2RoleService.hasActionAccess(this.sofArRbacAction)\r\n .subscribe(hasAccess => {\r\n if (hasAccess) {\r\n if (!this.isContentRendered) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n this.isContentRendered = true;\r\n }\r\n else {\r\n this.viewContainer.clear();\r\n this.isContentRendered = false;\r\n }\r\n }));\r\n }\r\n\r\n /** Life cycle hook for directive destruction */\r\n public ngOnDestroy(): void {\r\n this.directiveSub.unsubscribe();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders, Provider } from '@angular/core';\r\n\r\nimport { Oauth2RoleService } from './services/oauth2-role.service';\r\nimport { ArRoleNavService } from './services/ar-role-nav.service';\r\nimport { RoleNavService } from './services/role-nav.service';\r\nimport { RbacActionDirective } from './directives/rbac-action.directive';\r\nimport { RbacConfig } from './models/rbac-config';\r\nimport { RBAC_CONFIG } from './models/constants';\r\n\r\n/** The role based access control module */\r\n@NgModule({\r\n declarations: [\r\n RbacActionDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n Oauth2RoleService,\r\n { provide: RoleNavService, useClass: ArRoleNavService }\r\n ],\r\n exports: [\r\n RbacActionDirective\r\n ]\r\n})\r\nexport class RbacModule {\r\n /**\r\n * True if role actions should be disabled\r\n * @param options the options for the module\r\n */\r\n public static forRoot(options: {config?: RbacConfig, rbacConfigProvider?: Provider}): ModuleWithProviders<RbacModule> {\r\n const provider: Provider = options.config ? { provide: RbacConfig, useValue: options.config } : options.rbacConfigProvider;\r\n return {\r\n ngModule: RbacModule,\r\n providers: [\r\n provider,\r\n Oauth2RoleService,\r\n { provide: RoleNavService, useClass: ArRoleNavService }\r\n ]\r\n };\r\n }\r\n }\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RbacConfig } from './rbac-config';\r\n\r\n/** The rbac config injection token */\r\nexport const RBAC_CONFIG: InjectionToken<RbacConfig> = new InjectionToken<RbacConfig>('RbacConfig');\r\n","/** The role access class */\r\nexport class RoleAccess {\r\n /** The pages the role has access to */\r\n public pages?: Array<string> = [];\r\n\r\n /** The actions the role has access to */\r\n public actions?: Array<string> = [];\r\n}","/** Public API Surface of armature */\r\nexport * from './rbac.module';\r\n\r\n// services\r\nexport * from './services/oauth2-role.service';\r\nexport * from './services/role-nav.service';\r\nexport * from './services/ar-role-nav.service';\r\n\r\n// models\r\nexport { RBAC_CONFIG } from './models/constants';\r\nexport * from './models/decoded-access-token';\r\nexport * from './models/access-token-claims';\r\nexport * from './models/rbac-config';\r\nexport * from './models/role-access';\r\n\r\n// directives\r\nexport * from './directives/rbac-action.directive';\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { RumConfig } from '../models/rum-config';\r\n\r\n/** The rum service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RumService implements OnDestroy {\r\n\r\n /** The service subscription */\r\n private readonly serviceSub: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructs the service\r\n * @param router The router\r\n * @param session The session\r\n */\r\n constructor(\r\n private readonly router: Router,\r\n private readonly session: SessionService\r\n ) { }\r\n\r\n /** Life cycle hook for service destruction */\r\n public ngOnDestroy(): void {\r\n this.serviceSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initializes rum\r\n * @param config The config\r\n * @param user The user info\r\n */\r\n public initializeRum(config: RumConfig, user?: { userName: string, userId: string }): void {\r\n // TODO: Rum support for angular 10+ not supported\r\n // const apm = this.apmService.init({\r\n // serviceName: config.serviceName,\r\n // serverUrl: config.serverUrl,\r\n // });\r\n // apm.setUserContext({\r\n // username: !!user ? user.userName : this.session.sessionId,\r\n // id: !!user ? user.userId : this.session.sessionId\r\n // });\r\n // this.apmService.apm = apm;\r\n // this.initRouteTracking();\r\n }\r\n\r\n /** initializes route tracking */\r\n private initRouteTracking(): void {\r\n let transaction;\r\n let span;\r\n this.serviceSub.add(\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n const name = event.url;\r\n // TODO: no elastic support for angular 10\r\n // transaction = this.apmService.apm.startTransaction(name, 'route-change', {\r\n // managed: true,\r\n // canReuse: false\r\n // });\r\n // span = transaction.startSpan(name, 'router');\r\n }\r\n\r\n else if (event instanceof NavigationError) {\r\n span.end();\r\n transaction && transaction.end();\r\n }\r\n\r\n else if (event instanceof NavigationEnd) {\r\n if (!transaction) {\r\n return;\r\n }\r\n const route = this.router.routerState.root.firstChild;\r\n\r\n if (route) {\r\n let child = route;\r\n let path = `/ ${child.routeConfig.path}`;\r\n\r\n while (child) {\r\n child = child.firstChild;\r\n if (child && child.routeConfig) {\r\n\r\n const currentPath = child.routeConfig.path;\r\n if (currentPath) {\r\n path = `${path}/${currentPath}`;\r\n }\r\n\r\n }\r\n }\r\n transaction.name = path;\r\n }\r\n span.end();\r\n transaction.end();\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets a custom event\r\n * @param data The data\r\n * @param type The even type\r\n */\r\n public getCustomEvent(data: any, type: string): any {\r\n // TODO: Elastic support for angular 10+\r\n // const transaction = this.apmService.apm.startTransaction(data, type, {\r\n // managed: true,\r\n // canReuse: false\r\n // });\r\n // const span = transaction.startSpan(data, type);\r\n\r\n // return { transaction, span };\r\n }\r\n\r\n /**\r\n * Ends the custom event\r\n * @param event The event\r\n */\r\n public endCustomEvent(event: { transaction: any, span: any }): void {\r\n event.span.end();\r\n event.transaction.end();\r\n }\r\n}\r\n","/** The armature error class */\r\nexport class ArmError {\r\n /** The message */\r\n public message: string;\r\n /** The error name */\r\n public name: string;\r\n /** The stack trace */\r\n public stack: string;\r\n /** The current application route */\r\n public route: string;\r\n /** The user session Id */\r\n public userId: string;\r\n /** The secondary errors */\r\n public secondaryErrors: Array<ArmError> = [];\r\n /** The original error */\r\n public originalError: Error;\r\n /** The original secondary error */\r\n public originalSecondaryErrors: Array<Error> = [];\r\n\r\n /**\r\n * Constructs the component\r\n * @param error The error\r\n * @param route The route\r\n * @param userId The user ID\r\n * @param populateOriginalError True if keeping the original error\r\n */\r\n constructor(err: Error, route?: string, userId?: string, populateOriginalError: boolean = true) {\r\n let errStr = err.toString();\r\n if (errStr === '[object Object]') {\r\n errStr = JSON.stringify(err);\r\n }\r\n\r\n this.message = errStr;\r\n this.stack = err.stack;\r\n this.route = route;\r\n this.userId = userId;\r\n this.name = err.name;\r\n if (populateOriginalError) {\r\n this.originalError = err;\r\n }\r\n }\r\n}","import { Injectable, Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { ArmError } from '../models/arm-error';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedErrorService {\r\n\r\n /** The session service */\r\n private readonly sessionService: SessionService;\r\n\r\n /** The error set */\r\n private readonly errorSet: Set<string> = new Set<string>();\r\n\r\n /**\r\n * constructs the service\r\n * @param injector the injector\r\n */\r\n constructor(\r\n private readonly injector: Injector,\r\n ) {\r\n this.sessionService = this.injector.get(SessionService);\r\n }\r\n\r\n /**\r\n * Determines if the error has been encountered before\r\n * @param err The error\r\n */\r\n public isNewError(err: Error): boolean {\r\n const error = new ArmError(err);\r\n if (this.errorSet.has(error.message)) {\r\n return false;\r\n }\r\n this.errorSet.add(error.message);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Formats the error\r\n * @param error The error\r\n */\r\n public formatError(error: Error, populateOriginalError: boolean = true): ArmError {\r\n console.warn(error);\r\n return new ArmError(error, window.location.pathname, this.sessionService.sessionId, populateOriginalError);\r\n }\r\n}\r\n","import { ErrorHandler, Inject, Injector, NgModule } from '@angular/core';\r\nimport { RumService } from './services/rum.service';\r\nimport { SharedErrorService } from './services/shared-error.service';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/** The real user monitoring */\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n RouterModule\r\n ],\r\n providers: [\r\n RumService,\r\n SharedErrorService\r\n ]\r\n})\r\nexport class RumModule {\r\n /**\r\n * Constructs the module\r\n * @param injector The injector\r\n */\r\n constructor(@Inject(Injector) injector: Injector) {\r\n // Hack: The generic error handler causes problems so we use the service directly\r\n const handler = injector.get(ErrorHandler);\r\n const original = console.error;\r\n console.error = (error) => {\r\n let e = error;\r\n if (typeof (error) === 'string') {\r\n e = new Error(error);\r\n }\r\n handler.handleError(error);\r\n original(error);\r\n };\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/** The rum configurations */\r\nexport class RumConfig {\r\n /** The service Name */\r\n public serviceName: string;\r\n\r\n /** The server url */\r\n public serverUrl: string;\r\n\r\n /** the secondary error window in Milliseconds */\r\n public secondaryErrorWindowMs: number;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { ErrorHandler, Injectable, Injector } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { RumConfig } from '../models/rum-config';\r\nimport { SharedErrorService } from './shared-error.service';\r\nimport { ArmError } from '../models/arm-error';\r\n\r\n/** The softheon error handler service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SoftheonErrorHandlerService implements ErrorHandler {\r\n\r\n /** The session Service */\r\n private readonly sessionService: SessionService;\r\n\r\n /** The shared error service */\r\n private readonly sharedErrorService: SharedErrorService;\r\n\r\n /** The secondary error window in ms */\r\n private readonly secondaryErrorWindowMs: number = 500;\r\n\r\n /** The current error */\r\n private currentError: ArmError;\r\n\r\n /**\r\n * Constructs the service\r\n * @param rumConfig The rum config\r\n * @param httpClient The http client\r\n * @param injector The injector\r\n */\r\n constructor(\r\n public rumConfig: RumConfig,\r\n private readonly httpClient: HttpClient,\r\n private readonly injector: Injector\r\n ) {\r\n this.sessionService = this.injector.get(SessionService);\r\n this.sharedErrorService = this.injector.get<SharedErrorService>(SharedErrorService);\r\n if (this.rumConfig && this.rumConfig.secondaryErrorWindowMs) {\r\n this.secondaryErrorWindowMs = this.rumConfig.secondaryErrorWindowMs;\r\n }\r\n }\r\n\r\n /**\r\n * Handles the error\r\n * @param error The error\r\n */\r\n public handleError(error: any): void {\r\n let e = error;\r\n if (typeof (error) === 'string') {\r\n e = new Error(e);\r\n }\r\n const err = e as Error;\r\n const appName = `${this.rumConfig.serviceName}`;\r\n\r\n if (!this.sharedErrorService.isNewError(err)) {\r\n return;\r\n }\r\n const errObj = this.sharedErrorService.formatError(err, false);\r\n if (!this.currentError) {\r\n this.currentError = errObj;\r\n setTimeout(() => {\r\n const errStr = JSON.stringify(this.currentError);\r\n this.httpClient.post(this.rumConfig.serverUrl, { error: errStr, applicationName: appName, logLevel: 'Warn' })\r\n .pipe(\r\n catchError(\r\n error => {\r\n console.warn(error);\r\n\r\n return of(error);\r\n }\r\n )\r\n )\r\n .subscribe(() => {\r\n this.currentError = undefined;\r\n });\r\n }, this.secondaryErrorWindowMs);\r\n }\r\n else {\r\n try {\r\n this.currentError.secondaryErrors.push(errObj);\r\n }\r\n catch (e) {\r\n console.error('Race condition hit where current error was cleared as a secondary error was thrown, re-throwing error', e);\r\n }\r\n }\r\n }\r\n}\r\n","/** Public api service the rum modules */\r\nexport * from './rum.module';\r\n\r\n// services\r\nexport * from './services/rum.service';\r\nexport * from './services/softheon-error-handler.service';\r\nexport * from './services/shared-error.service';\r\n\r\n// models\r\nexport * from './models/rum-config';\r\nexport * from './models/arm-error';\r\n\r\n","import { Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { ISamlRequest } from '../../models/i-saml-request';\r\nimport { ISamlResponse } from '../../models/i-saml-response';\r\n\r\n/** The SAML service abstract class */\r\nexport abstract class AbstractSamlService {\r\n\r\n /** The post saml observable */\r\n abstract postSaml$: Observable<string>;\r\n\r\n /** The post saml behavior subject */\r\n abstract postSaml: BehaviorSubject<string>;\r\n\r\n /** The base saml request */\r\n abstract baseRequest: BehaviorSubject<ISamlRequest>;\r\n\r\n /** The base request observable */\r\n abstract baseRequest$: Observable<ISamlRequest>;\r\n\r\n /**\r\n * Gets the SAML\r\n * @param request The request\r\n * @param endpointUri The full endpoint uri\r\n */\r\n abstract getSaml(request: ISamlRequest, endpointUri: string): Observable<ISamlResponse>;\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { RedirectSamlRequest } from '../../models/redirect-saml-request';\r\nimport { AbstractSamlService } from '../../services/send-off/abstract-saml.service';\r\n\r\n/** The SAML redirect component */\r\n@Component({\r\n selector: 'saml-redirect-saml',\r\n templateUrl: './redirect-saml.component.html',\r\n styleUrls: ['./redirect-saml.component.css'],\r\n standalone: false\r\n})\r\nexport class RedirectSamlComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /** The request used to get the SAML */\r\n @Input() public request: RedirectSamlRequest;\r\n\r\n /** The endpoint to use for getting the saml */\r\n @Input() public samlGetEndpointUri: string;\r\n\r\n /** The endpoint to post the saml to */\r\n @Input() public samlPostUrl: string;\r\n\r\n /** Event emitter for when the saml post is triggered */\r\n @Output() public readonly samlPostEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The saml submit button element reference */\r\n @ViewChild('samlSubmit') public samlSubmitBtn: ElementRef<HTMLButtonElement>;\r\n\r\n /** The saml input element reference */\r\n @ViewChild('samlInput') public samlInput: ElementRef<HTMLInputElement>;\r\n\r\n /** The SAML */\r\n public saml: string;\r\n\r\n /** The SAML post subscription */\r\n private readonly samlPostSubscription: Subscription;\r\n\r\n /** The saml subscription */\r\n private samlSubscription: Subscription;\r\n\r\n /**\r\n * Constructs the component\r\n * @param samlService The saml service\r\n */\r\n constructor(\r\n private readonly samlService: AbstractSamlService\r\n ) { }\r\n\r\n /** Life cycle hook from component initialization */\r\n public ngOnInit(): void {\r\n if (!this.validateComponentInputs()) {\r\n throw new Error('saml-redirect-saml component is missing required attributes');\r\n }\r\n this.samlService.baseRequest.next(this.request);\r\n }\r\n\r\n /** Life cycle hook for after component view initialization */\r\n public ngAfterViewInit(): void {\r\n // getting/posting is done here since they depend on each other and the button needs to exist\r\n\r\n // Subscribes to observable for posting a given saml\r\n this.samlSubscription = this.samlService.postSaml$.subscribe(saml => {\r\n if (saml) {\r\n this.saml = saml;\r\n setTimeout(() => {\r\n this.samlInput.nativeElement.value = saml;\r\n this.samlSubmitBtn.nativeElement.click();\r\n }, 50);\r\n }\r\n });\r\n\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n this.samlPostSubscription.unsubscribe();\r\n this.samlSubscription.unsubscribe();\r\n }\r\n\r\n /** Validates that component required component inputs are provided */\r\n private validateComponentInputs(): boolean {\r\n let errorCount = 0;\r\n if (!this.request) {\r\n console.error('saml-redirect-saml: Attribute \"request\" is required');\r\n errorCount++;\r\n }\r\n\r\n if (!this.samlGetEndpointUri) {\r\n console.error('saml-redirect-saml: Attribute \"samlGetEndpointUri\" is required');\r\n errorCount++;\r\n }\r\n\r\n if (!this.samlPostUrl) {\r\n console.error('saml-redirect-saml: Attribute \"samlPostUrl\" is required');\r\n errorCount++;\r\n }\r\n return errorCount === 0;\r\n }\r\n\r\n}\r\n","<form hidden ngNoForm action=\"{{samlPostUrl}}\" method=\"POST\">\r\n <button #samlSubmit id=\"samlSubmit\" type=\"submit\" color=\"primary\"></button>\r\n <input #samlInput hidden id=\"SAMLResponse\" name=\"SAMLResponse\" value={{saml}}>\r\n</form>\r\n","import { Observable } from 'rxjs';\r\nimport { SsoGatewayModel } from '../../models/sso-gateway-model';\r\n\r\n/** The abstract saml entry service */\r\nexport abstract class AbstractSamlEntryService {\r\n\r\n /** The key path prefix */\r\n public abstract keyPathPrefix: string;\r\n\r\n /**\r\n * Reads the values for the provided key path\r\n * @param keyPath The key path\r\n */\r\n public abstract readValue(keyPath: string): SsoGatewayModel;\r\n\r\n /**\r\n * Deletes value associated with the provided key path\r\n * @param keyPath The key path\r\n */\r\n public abstract deleteValue(keyPath: string): void;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SsoGatewayModel } from '../../models/sso-gateway-model';\r\nimport { AbstractSamlEntryService } from './abstract-saml-entry.service';\r\n\r\n/** The SAML entry service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SsoGatewayEntryService extends AbstractSamlEntryService {\r\n\r\n /** The key path prefix */\r\n public keyPathPrefix: string = 'SsoGateway-';\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Reads the values for the provided key path\r\n * @param keyPath The key path\r\n */\r\n public readValue(keyPath: string): SsoGatewayModel {\r\n const data = window.localStorage.getItem(`${this.keyPathPrefix}${keyPath}`);\r\n return JSON.parse(data);\r\n }\r\n\r\n /**\r\n * Deletes the value associated with the provided key path\r\n * @param keyPath The key path\r\n */\r\n public deleteValue(keyPath: string): void {\r\n window.localStorage.removeItem(`${this.keyPathPrefix}${keyPath}`);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { ISamlRequest } from '../../models/i-saml-request';\r\nimport { ISamlResponse } from '../../models/i-saml-response';\r\nimport { AbstractSamlService } from './abstract-saml.service';\r\nimport { RedirectSamlRequest } from '../../models/redirect-saml-request';\r\n\r\n/** The SAML service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamlService extends AbstractSamlService {\r\n\r\n /** The post saml observable */\r\n public postSaml$: Observable<string>;\r\n\r\n /** The post saml behavior subject */\r\n public postSaml: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n /** The base saml request behavior subject */\r\n public baseRequest: BehaviorSubject<RedirectSamlRequest> = new BehaviorSubject<RedirectSamlRequest>(undefined);\r\n\r\n /** The base saml request behavior subject */\r\n public baseRequest$: Observable<RedirectSamlRequest>;\r\n\r\n /**\r\n * Constructs the service\r\n * @param http The http client\r\n */\r\n constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n super();\r\n this.postSaml$ = this.postSaml.asObservable();\r\n this.baseRequest$ = this.baseRequest.asObservable();\r\n }\r\n\r\n /**\r\n * Gets the saml with provided body from the given endpoint\r\n * @param request The request body\r\n * @param endpointUri The full endpoint uri for getting the saml\r\n */\r\n public getSaml(request: ISamlRequest, endpointUri: string): Observable<ISamlResponse> {\r\n return this.http.post<ISamlResponse>(endpointUri, request);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { RedirectSamlComponent } from './components/redirect-saml/redirect-saml.component';\r\nimport { AbstractSamlEntryService } from './services/entry/abstract-saml-entry.service';\r\nimport { SsoGatewayEntryService } from './services/entry/sso-gateway-entry.service';\r\nimport { AbstractSamlService } from './services/send-off/abstract-saml.service';\r\nimport { SamlService } from './services/send-off/saml.service';\r\n\r\n/** The saml components */\r\nconst components = [\r\n RedirectSamlComponent\r\n];\r\n\r\n/** The implementations for the saml services */\r\nconst abstractServices = [\r\n { provide: AbstractSamlEntryService, useClass: SsoGatewayEntryService },\r\n { provide: AbstractSamlService, useClass: SamlService }\r\n];\r\n\r\n/** Armature saml module */\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n providers: [\r\n ...abstractServices\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SamlModule { }\r\n","import { ISamlRequest } from './i-saml-request';\r\n\r\n/** The redirect SAML request */\r\nexport class RedirectSamlRequest implements ISamlRequest {\r\n /** The redirect url that will be used for posting the SAML */\r\n public redirectUrl: string;\r\n\r\n /** The url to return to */\r\n public returnUrl: string;\r\n\r\n /** The OAuth 2.0 issuer */\r\n public oAuthIssuer: string;\r\n\r\n /** The OAuth 2.0 client id */\r\n public oAuthClientId: string;\r\n\r\n /** The OAuth 2.0 scopes, space delimited list */\r\n public oAuthScopes: string;\r\n\r\n /** The logo url */\r\n public logo: string;\r\n\r\n /** The theme */\r\n public theme: string;\r\n\r\n /** The CDN url for the theme */\r\n public themeCDN: string;\r\n\r\n /** The reference */\r\n public referenceId: string;\r\n\r\n /** The reference data */\r\n public referenceData: string;\r\n\r\n}\r\n","/** The Sso Gateway de-serialized SAML model */\r\nexport class SsoGatewayModel {\r\n /** The assertions dictionary */\r\n public Assertions: { [key: string]: string };\r\n\r\n /** The issuer of the saml */\r\n public Issuer: string;\r\n\r\n /** The audience of the saml */\r\n public Audience: string;\r\n\r\n /** The destination of the saml */\r\n public Destination: string;\r\n\r\n /** The hash of the assertions */\r\n public Hash: string;\r\n\r\n /** The Key Path suffix used for storing the values */\r\n public KeyPath: string;\r\n}\r\n","/** Public API Surface of saml */\r\nexport * from './saml.module';\r\n\r\n// services\r\nexport * from './services/entry/abstract-saml-entry.service';\r\nexport * from './services/entry/sso-gateway-entry.service';\r\nexport * from './services/send-off/abstract-saml.service';\r\nexport * from './services/send-off/saml.service';\r\n\r\n// components\r\nexport * from './components/redirect-saml/redirect-saml.component';\r\n\r\n// models\r\nexport * from './models/i-saml-request';\r\nexport * from './models/i-saml-response';\r\nexport * from './models/redirect-saml-request';\r\nexport * from './models/sso-gateway-model';\r\n","/**\r\n * CSS Override\r\n */\r\nexport class CssOverride {\r\n public selector: 'id' | 'class' | 'tag';\r\n public parameter: string;\r\n public attributes: Array<Attribute>;\r\n}\r\n\r\n/**\r\n * CSS attribute overrides\r\n */\r\nexport class Attribute {\r\n public name: string;\r\n public value: string;\r\n}\r\n","/** Public API Surface of Theming */\r\nexport * from './theme.module';\r\n\r\nexport * from './services/theme.service';\r\n\r\nexport * from './directives/css-override.directive';\r\n\r\nexport {\r\n CssOverride,\r\n Attribute\r\n} from './models/css-override';\r\n","/** Public API surfce for components */\r\nexport * from './alert-banner.module';\r\n\r\n// models\r\nexport * from './models/alert-banner-context';\r\nexport { AlertBannerConfig, AlertBannerColors } from './models/alert-banner-config';\r\nexport { ALERT_BANNER_CONFIG, BannerType } from './models/constants';\r\n\r\n// services\r\nexport * from './services/alert-banner.service';\r\n\r\n// component\r\nexport * from './components/alert-banner/alert-banner.component';\r\n","import { \r\n ChangeDetectionStrategy, \r\n Component, \r\n ElementRef, \r\n EventEmitter, \r\n inject, \r\n Input, \r\n Output \r\n} from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * The Callout component\r\n * @note If you need to include some custom HTML you can inject an - \r\n * \r\n * `<ng-container callout-custom-content>`\r\n*/\r\n@Component({\r\n selector: 'sof-callout',\r\n templateUrl: './sof-callout.component.html',\r\n styleUrl: './sof-callout.component.scss',\r\n imports: [TranslateModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SofCalloutComponent {\r\n\r\n /** The callout id */\r\n @Input() id: string = \"1\";\r\n\r\n /** The callout type */\r\n @Input({required: true}) type!: 'info' | 'warning' | 'error' | 'success' | 'neutral';\r\n\r\n /** \r\n * The callout text \r\n * @note Can be a translation key\r\n */\r\n @Input({required: true}) text!: string;\r\n\r\n /** \r\n * The callout extended message \r\n * @optional\r\n * @note Can be a translation key\r\n */\r\n @Input() extendedText?: string;\r\n\r\n /** \r\n * The text size \r\n * @optional\r\n * \r\n * @note \"body1\" = font-size: 16px,\r\n * \r\n * \"body2\" = font-size: 14px,\r\n * @default \"body1\"\r\n */\r\n @Input() textSize: 'body1' | 'body2' = 'body1';\r\n\r\n /** \r\n * Override the default icon with any phosphor icon class \r\n * @note should be using the 'ph-bold' icon type\r\n * @see [Phosphor Icons/bold]({@link https://phosphoricons.com/?weight=%22bold%22})\r\n */\r\n @Input() iconOverrideClass?: string;\r\n\r\n /** \r\n * Show close icon button \r\n * @optional\r\n * @default true\r\n */\r\n @Input() canDismiss: boolean = true;\r\n\r\n /** \r\n * Output when close is clicked \r\n * @optional\r\n * @note This component will close itself. \r\n * \r\n * This event is for if the parent component needs to do anything on close.\r\n */\r\n @Output() dismissEvent: EventEmitter<void> = new EventEmitter();\r\n\r\n /** The host element ref */\r\n private host: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n\r\n /** Close the callout */\r\n public dismissCallout(): void {\r\n this.dismissEvent.emit();\r\n this.host.nativeElement.remove();\r\n }\r\n}\r\n","\r\n<div \r\n class=\"callout callout--{{type}}\"\r\n role=\"alert\" id=\"callout-{{id}}\">\r\n <div class=\"callout__icon\" [class.small]=\"textSize === 'body2'\">\r\n @if (!!iconOverrideClass) {\r\n <i class=\"{{iconOverrideClass}}\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (type) {\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @default {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"callout__content\" [class.has-extended]=\"!!extendedText\">\r\n <p class=\"{{textSize}} fw-600\">{{text | translate}}</p>\r\n @if (!!extendedText) {\r\n <p class=\"{{textSize}}\">{{extendedText | translate}}</p>\r\n }\r\n <ng-content select=\"[callout-custom-content]\"></ng-content>\r\n </div>\r\n @if (canDismiss) {\r\n <div class=\"callout__close\">\r\n <button \r\n (click)=\"dismissCallout()\" \r\n id=\"callout-close-{{id}}\" \r\n aria-label=\"dismiss alert\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { \r\n AfterViewInit, \r\n ChangeDetectionStrategy, \r\n ChangeDetectorRef, \r\n Component, \r\n ElementRef, \r\n HostListener, \r\n inject, \r\n Renderer2, \r\n TemplateRef, \r\n ViewChild \r\n} from '@angular/core';\r\nimport { \r\n MAT_BOTTOM_SHEET_DATA, \r\n MatBottomSheetModule, \r\n MatBottomSheetRef \r\n} from '@angular/material/bottom-sheet';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** \r\n * The mobile bottom sheet \r\n * @note while designed for mobile/tablet will work on desktop as well.\r\n*/\r\n@Component({\r\n selector: 'sof-bottom-sheet',\r\n templateUrl: './sof-bottom-sheet.component.html',\r\n styleUrl: './sof-bottom-sheet.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatBottomSheetModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBottomSheetComponent implements AfterViewInit {\r\n\r\n /** Reference to the bottom sheets content element */\r\n @ViewChild('sheetContent', { static: true }) sheetContent!: ElementRef<HTMLDivElement>;\r\n\r\n /** Sheet header height */\r\n private readonly bottomSheetHeaderHeight: number = 56;\r\n\r\n /** 25% of the viewport height, minus the headers height */ \r\n private minHeight: number = Math.round(window.innerHeight * 0.25 - this.bottomSheetHeaderHeight);\r\n\r\n /** 95% of the viewport height, minus the headers height */ \r\n private maxHeight: number = Math.round(window.innerHeight * 0.95 - this.bottomSheetHeaderHeight);\r\n\r\n /** 60% of the viewport height, minus the headers height */ \r\n private defaultHeight: number = Math.round(window.innerHeight * 0.6 - this.bottomSheetHeaderHeight);\r\n\r\n /** Initial sheet content height */ \r\n public sheetHeight: number = this.defaultHeight;\r\n\r\n /** Area tolerance for snapping to default height (in px) */ \r\n private readonly defaultHeightTolerance: number = Math.round((window.innerHeight / 4) - (this.bottomSheetHeaderHeight * 2));\r\n\r\n /** Is the user dragging the target (header) */\r\n private isDragging: boolean = false;\r\n\r\n /** The starting Y axis position when dragging */\r\n private startY: number;\r\n\r\n /** Initial height when drag started */\r\n private initialHeight: number;\r\n\r\n /** Is the user dragging the bottom sheets content element */\r\n private isContentDrag: boolean = false;\r\n\r\n /** ID for the dismiss button */\r\n public readonly dismissButtonId: string = \"dismiss-bottom-sheet\";\r\n\r\n /** Implement custom rendering */\r\n private renderer: Renderer2 = inject(Renderer2);\r\n\r\n /** Provide custom change detection functionality when using 'ChangeDetectionStrategy.OnPush' */\r\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** The bottom sheets data */\r\n public data: BottomSheetData = inject(MAT_BOTTOM_SHEET_DATA);\r\n\r\n /** The bottom sheet reference */\r\n public bottomSheetRef: MatBottomSheetRef = inject(MatBottomSheetRef);\r\n\r\n /** Ensure the bottom sheet starts at the default height (60% of the viewport) */\r\n public ngAfterViewInit() {\r\n this.sheetHeight = this.defaultHeight;\r\n }\r\n\r\n /** Start the drag operation (handles both mouse and touch events) */\r\n public startDrag(event: MouseEvent | TouchEvent, isContentDrag: boolean = false) {\r\n if (isContentDrag) {\r\n const isContentScrolledToTop: boolean = this.sheetContent.nativeElement.scrollTop === 0;\r\n if (isContentScrolledToTop) {\r\n this.isContentDrag = true;\r\n } else {\r\n return;\r\n }\r\n }\r\n this.isDragging = true;\r\n this.startY = this.getYPosition(event);\r\n this.initialHeight = this.sheetHeight;\r\n if (event instanceof MouseEvent) {\r\n const mouseMoveListener = this.renderer.listen('document', 'mousemove', this.onDrag);\r\n const mouseUpListener = this.renderer.listen('document', 'mouseup', () => {\r\n mouseMoveListener();\r\n mouseUpListener();\r\n this.endDrag(event);\r\n });\r\n } else if (event.touches && event.touches.length) {\r\n const touchMoveListener = this.renderer.listen('document', 'touchmove', this.onDrag);\r\n const touchEndListener = this.renderer.listen('document', 'touchend', () => {\r\n touchMoveListener();\r\n touchEndListener();\r\n this.endDrag(event);\r\n });\r\n }\r\n }\r\n\r\n /** Handle the drag movement event */\r\n private onDrag = (event: MouseEvent | TouchEvent) => {\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n const currentY: number = this.getYPosition(event);\r\n const deltaY: number = this.startY - currentY;\r\n const newHeight: number = this.initialHeight + deltaY;\r\n if (this.isContentDrag && newHeight > this.initialHeight) {\r\n return;\r\n }\r\n this.sheetHeight = newHeight > this.maxHeight ? this.maxHeight : newHeight;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /** End the drag operation and snap to the nearest state */\r\n private endDrag(event: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n this.isDragging = false;\r\n if (\r\n // If the close button is the target element & not dragged (mousedown/up (click) w/o moving), dismiss the bottom sheet,\r\n event.target['id'] === this.dismissButtonId && this.sheetHeight === this.initialHeight || \r\n // If dragging on the content & content is scrolled to the top & dragging down, dismiss the bottom sheet,\r\n this.isContentDrag && (this.sheetHeight + this.defaultHeightTolerance) < this.initialHeight || \r\n // If dragged below the minimum threshold (25%), dismiss the bottom sheet.\r\n this.sheetHeight < this.minHeight\r\n ) {\r\n this.bottomSheetRef.dismiss();\r\n return;\r\n }\r\n // If the current height is within defaultHeightTolerance of the default height, snap to default.\r\n if (Math.round(Math.abs(this.sheetHeight - this.defaultHeight)) <= this.defaultHeightTolerance) {\r\n this.sheetHeight = this.defaultHeight;\r\n } else {\r\n // Determine snapping based on position relative to the midpoint.\r\n const midPoint: number = Math.round((this.minHeight + this.maxHeight) / 2);\r\n this.sheetHeight = this.sheetHeight > midPoint ? this.maxHeight : this.minHeight;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /** Utility method to extract the Y position from mouse or touch events */\r\n private getYPosition(event: MouseEvent | TouchEvent): number {\r\n if (event instanceof MouseEvent) {\r\n return event.clientY;\r\n } else if (event.touches && event.touches.length) {\r\n return event.touches[0].clientY;\r\n }\r\n return 0;\r\n }\r\n\r\n /** Update the height variables on window resize */\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.minHeight = window.innerHeight * 0.25 - this.bottomSheetHeaderHeight;\r\n this.maxHeight = window.innerHeight * 0.95 - this.bottomSheetHeaderHeight;\r\n this.defaultHeight = window.innerHeight * 0.6 - this.bottomSheetHeaderHeight;\r\n // Ensure the current height is within bounds.\r\n this.sheetHeight = Math.max(this.minHeight, Math.min(this.sheetHeight, this.maxHeight));\r\n }\r\n}\r\n\r\n/** \r\n * The bottom sheet data\r\n * @note all properties are required\r\n*/\r\nexport interface BottomSheetData {\r\n headerIconClass: string;\r\n headerTitle: string;\r\n template: TemplateRef<any>;\r\n}\r\n","<div class=\"bottom-sheet\">\r\n <div \r\n class=\"header\"\r\n (mousedown)=\"startDrag($event)\" \r\n (touchstart)=\"startDrag($event)\">\r\n <div class=\"handle\"></div>\r\n <i class=\"{{data.headerIconClass}}\" aria-hidden=\"true\"></i>\r\n <h4>{{data.headerTitle | translate}}</h4>\r\n <button \r\n class=\"dismiss-bottom-sheet\" \r\n m-l-auto [id]=\"dismissButtonId\"\r\n aria-label=\"dismiss\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n <div \r\n class=\"content\" #sheetContent \r\n (mousedown)=\"startDrag($event, true)\" \r\n (touchstart)=\"startDrag($event, true)\"\r\n [style.height.px]=\"sheetHeight\">\r\n @if (data.template) {\r\n <ng-container [ngTemplateOutlet]=\"data.template\"/>\r\n }\r\n </div>\r\n</div>\r\n","import { \r\n ChangeDetectionStrategy, \r\n Component, \r\n EventEmitter, \r\n Input, \r\n OnChanges, \r\n Output, \r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** \r\n * The sof-chip component \r\n*/\r\n@Component({\r\n selector: 'sof-chip',\r\n templateUrl: './sof-chip.component.html',\r\n styleUrls: ['./sof-chip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [TranslateModule]\r\n})\r\nexport class SofChipComponent implements OnChanges {\r\n /** \r\n * The chip's label \r\n * @required\r\n * @note Can be a translation key\r\n */\r\n @Input({required: true}) label!: string;\r\n\r\n /** \r\n * Can the chip be removed \r\n * @optional\r\n * @default true\r\n */\r\n @Input() canRemove?: boolean = true;\r\n\r\n /** \r\n * Theme for the chip \r\n * @optional\r\n * @default 'neutral'\r\n */\r\n @Input() theme?: \"neutral\"|\"info\" = \"neutral\";\r\n\r\n /** \r\n * Icon class for the chip \r\n * @optional if omitted no icon will be shown\r\n * @note should be using the 'ph-bold' icon type\r\n * @see [Phosphor Icons/bold]({@link https://phosphoricons.com/?weight=%22bold%22})\r\n */\r\n @Input() iconClass?: string;\r\n\r\n /** \r\n * The id for the remove button\r\n * @optional needed if canRemove is true\r\n * @note Can simply be the index of the <Chip> array\r\n */\r\n @Input() removeButtonId?: string | number = \"\";\r\n\r\n /** Event to emit the chip's label for removal */\r\n @Output() removeEvent?: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /** If canRemove is null|undefined onChanges, set to true */\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.canRemove) {\r\n const canRemove = changes.canRemove.currentValue ?? true;\r\n this.canRemove = canRemove;\r\n }\r\n }\r\n\r\n /** Emit the chip's label for removal */\r\n public onRemove(): void {\r\n this.removeEvent.emit(this.label);\r\n }\r\n}\r\n\r\n/** \r\n * The Chip interface \r\n * @description Use to display chips from an Array<Chip>.\r\n*/\r\nexport interface Chip {\r\n label: string;\r\n iconClass?: string;\r\n canRemove?: boolean;\r\n}\r\n","<div \r\n class=\"sof-chip\" \r\n [class.no-remove]=\"!canRemove\"\r\n [attr.theme]=\"theme ?? 'neutral'\">\r\n @if (iconClass) {\r\n <i [class]=\"iconClass\" aria-hidden=\"true\"></i>\r\n }\r\n <span>{{ label | translate }}</span>\r\n @if (canRemove) {\r\n <button \r\n (click)=\"onRemove()\"\r\n [attr.aria-label]=\"'Remove ' + label\"\r\n [id]=\"'chip-remove-btn-' + removeButtonId\">\r\n <i class=\"ph-fill ph-x-circle\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** SSN Pipe */\r\n@Pipe({\r\n name: 'sofArSsn',\r\n standalone: false\r\n})\r\nexport class SofSsnPipe implements PipeTransform {\r\n\r\n /**\r\n * Transform\r\n * @param ssn SSN\r\n */\r\n public transform(ssn: string, maskedCharacter): string {\r\n\r\n // If input is undefined, then return itself\r\n if (!ssn || ssn.length !== 9) {\r\n return null;\r\n }\r\n\r\n if (!maskedCharacter) {\r\n return `${ssn.substring(0,3)}-${ssn.substring(3,5)}-${ssn.substring(5)}`;\r\n }\r\n\r\n return `${maskedCharacter}${maskedCharacter}${maskedCharacter}-${maskedCharacter}${maskedCharacter}-${ssn.substring(5)}`;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport { SofDatePipeFormat } from '../models/sof-date-pipe-format';\r\n\r\n/** The override for blank langauge */\r\nexport const SOF_BLANK_LANGUAGE_OVERRIDE: InjectionToken<string> = new InjectionToken<string>('SofBlankLanguageOverride');\r\n\r\n/** Sof Date Pipe Formats */\r\nexport const SOF_DATE_PIPE_FORMATS: InjectionToken<SofDatePipeFormat[]> = new InjectionToken<SofDatePipeFormat[]>('SofDatePipeFormats');\r\n\r\n/** Default Sof Date Pipe Formats */\r\nexport const DEFAULT_SOF_DATE_PIPE_FORMATS: SofDatePipeFormat[] = [{\r\n format: 'MM/DD/YYYY',\r\n matchRegExp: '^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}$'\r\n}, {\r\n format: 'YYYY-MM-DD',\r\n matchRegExp: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'\r\n}, {\r\n format: 'YYYYMMDD',\r\n matchRegExp: '^[0-9]{8}$'\r\n}];","import { DatePipe } from '@angular/common';\r\nimport { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport { DEFAULT_SOF_DATE_PIPE_FORMATS, SOF_DATE_PIPE_FORMATS } from '../../constants/constants';\r\nimport { SofDatePipeFormat } from '../../models/sof-date-pipe-format';\r\n\r\n/** Date Pipe */\r\n@Pipe({\r\n name: 'sofArDate',\r\n standalone: false\r\n})\r\nexport class SofDatePipe implements PipeTransform {\r\n\r\n /** Transform */\r\n public transform(date: string | Date | moment.Moment, transformFormat: string = 'M/d/yyyy', timezone: string, locale: string): string {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n if (moment.isMoment(date)) {\r\n date = date.toDate();\r\n }\r\n\r\n if (typeof date === 'string') {\r\n date = this.parseDate(date) || date;\r\n }\r\n\r\n return this.datePipe.transform(date, transformFormat, timezone, locale);\r\n }\r\n\r\n /** Constructor */\r\n public constructor(\r\n private datePipe: DatePipe,\r\n @Optional() @Inject(SOF_DATE_PIPE_FORMATS) private datePipeFormats: SofDatePipeFormat[] = []\r\n ) {\r\n this.datePipeFormats = (datePipeFormats || []).concat(DEFAULT_SOF_DATE_PIPE_FORMATS);\r\n }\r\n\r\n /**\r\n * Parses a date to a string\r\n * @param dateStr Date string\r\n */\r\n private parseDate(dateStr: string): Date {\r\n if (!dateStr || dateStr === '') {\r\n return undefined;\r\n }\r\n\r\n for (const datePipeFormat of this.datePipeFormats) {\r\n if (dateStr.match(datePipeFormat.matchRegExp)) {\r\n const momentDate = moment(dateStr, datePipeFormat.format);\r\n if (momentDate.isValid()) {\r\n return momentDate.toDate();\r\n }\r\n }\r\n }\r\n\r\n console.warn(`Unable to parse ${dateStr} to date using sof-date-pipe.`)\r\n }\r\n}\r\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { SOF_BLANK_LANGUAGE_OVERRIDE } from '../../constants/constants';\r\n\r\n/** Blank Pipe for strings when its blank */\r\n@Pipe({\r\n name: 'sofArBlank',\r\n standalone: false\r\n})\r\nexport class SofBlankPipe implements PipeTransform {\r\n\r\n /**\r\n * Constructor\r\n * @param blankLanguage The language to replace with when given value is blank\r\n */\r\n public constructor(\r\n @Optional() @Inject(SOF_BLANK_LANGUAGE_OVERRIDE) private blankLanguage: string = ''\r\n ) {\r\n this.blankLanguage = blankLanguage || 'common.default-blank';\r\n }\r\n\r\n /**\r\n * Transform \r\n * @param value Value \r\n * @returns \r\n */\r\n public transform(value: any): any {\r\n if (value == '0' || value === 0) {\r\n return value;\r\n }\r\n\r\n return value || this.blankLanguage;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\nimport { SofSsnPipe } from './pipes/sof-ssn/sof-ssn.pipe';\r\nimport { SofDatePipe } from './pipes/sof-date/sof-date.pipe';\r\nimport { SofBlankPipe } from './pipes/sof-blank/sof-blank.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SofBlankPipe,\r\n SofDatePipe,\r\n SofSsnPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SofBlankPipe,\r\n SofDatePipe,\r\n SofSsnPipe\r\n ],\r\n providers: [\r\n DatePipe\r\n ]\r\n})\r\nexport class SofPipeModule { }\r\n","/** Public API surface for the forms */\r\nexport * from './sof-pipe.module';\r\n\r\n// models\r\nexport { SofDatePipeFormat } from './models/sof-date-pipe-format';\r\n\r\n// constants\r\nexport { SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS } from './constants/constants';\r\n\r\n// pipes\r\nexport * from './pipes/sof-blank/sof-blank.pipe';\r\nexport * from './pipes/sof-date/sof-date.pipe';\r\nexport * from './pipes/sof-ssn/sof-ssn.pipe';\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ResizeEvent } from '../../models/resize-event';\r\n\r\n/** The Resize Panels Component */\r\n@Component({\r\n selector: 'sof-ar-resize-panels',\r\n templateUrl: './resize-panels.component.html',\r\n styleUrls: ['./resize-panels.component.scss'],\r\n standalone: false\r\n})\r\nexport class ResizePanelsComponent implements OnInit {\r\n\r\n /** The panel split direction */\r\n @Input() public direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n /** The panel split position */\r\n @Input() public splitPosition: number = 50;\r\n\r\n /** The min width or height of the first panel */\r\n @Input() public firstPanelMinSize: string;\r\n\r\n /** The min width or height of the second panel */\r\n @Input() public secondPanelMinSize: string;\r\n\r\n /** Whether the panels should be resizable */\r\n @Input() public resizable: boolean = true;\r\n\r\n /** The Resize Event */\r\n @Output() public onResize: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n\r\n /** The Resize Start Event */\r\n @Output() public onResizeStart: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n \r\n /** The Resize End Event */\r\n @Output() public onResizeEnd: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n\r\n /** The container element */\r\n @ViewChild('container') private container: ElementRef;\r\n\r\n /** The first panel */\r\n @ViewChild('firstPanel') private firstPanel: ElementRef;\r\n\r\n /** The second panel */\r\n @ViewChild('secondPanel') private secondPanel: ElementRef;\r\n\r\n /** Whether the user is currently resizing */\r\n public isResizing: boolean = false;\r\n\r\n /** The first panel max height */\r\n private firstPanelMaxHeight = 'none';\r\n \r\n /** The second panel max height */\r\n private secondPanelMaxHeight = 'none';\r\n\r\n /** The initial split position */\r\n private initialSplit: number;\r\n\r\n /**\r\n * Creates an instance of ResizePanelsComponent\r\n */\r\n constructor() { }\r\n\r\n /** Initializes the component */\r\n public ngOnInit(): void {\r\n this.initialSplit = this.splitPosition;\r\n }\r\n\r\n /** On Changes Lifecycle Hook */\r\n public ngOnChanges(): void {\r\n if (this.resizable && !!this.initialSplit) {\r\n this.splitPosition = this.initialSplit;\r\n }\r\n }\r\n\r\n /** Gets the style for the first panel */\r\n public getFirstPanelStyle(): any {\r\n const contentHeight = this.firstPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;\r\n\r\n if (contentHeight < this.firstPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.firstPanelMaxHeight = contentHeight + 'px';\r\n }\r\n if (contentHeight > this.firstPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.firstPanelMaxHeight = 'none';\r\n }\r\n\r\n return {\r\n flex: this.splitPosition,\r\n minWidth: this.direction === 'vertical' ? this.firstPanelMinSize : 'auto',\r\n minHeight: this.direction === 'horizontal' ? this.firstPanelMinSize : 'auto',\r\n maxHeight: this.direction === 'horizontal' ? this.firstPanelMaxHeight : 'none'\r\n }\r\n }\r\n\r\n /** Gets the style for the second panel */\r\n public getSecondPanelStyle(): any {\r\n const contentHeight = this.secondPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;\r\n\r\n if (contentHeight < this.secondPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.secondPanelMaxHeight = contentHeight + 'px';\r\n }\r\n if (contentHeight > this.secondPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.secondPanelMaxHeight = 'none';\r\n }\r\n\r\n return {\r\n flex: 100 - this.splitPosition,\r\n minWidth: this.direction === 'vertical' ? this.secondPanelMinSize : 'auto',\r\n minHeight: this.direction === 'horizontal' ? this.secondPanelMinSize : 'auto',\r\n maxHeight: this.direction === 'horizontal' ? this.secondPanelMaxHeight : 'none'\r\n }\r\n }\r\n\r\n /** Start resizing */\r\n public startResize(): void {\r\n this.onResizeStart.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n this.isResizing = true;\r\n }\r\n\r\n /** Stop resizing on mouse up */\r\n @HostListener('window:mouseup')\r\n public stopResize(): void {\r\n if (this.isResizing) {\r\n this.isResizing = false;\r\n this.onResizeEnd.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * The mouse move listener\r\n * @param event the mouse event\r\n */\r\n @HostListener('window:mousemove', ['$event']) \r\n public onMouseMove(event: MouseEvent): void {\r\n if (this.isResizing) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.resize(event);\r\n }\r\n }\r\n\r\n /**\r\n * Resize the panels based on the mouse position relative to the container\r\n * @param event the mouse event\r\n */\r\n private resize(event: MouseEvent): void {\r\n const containerSize = this.direction === 'vertical' ? this.container.nativeElement.clientWidth : this.container.nativeElement.clientHeight;\r\n const containerPos = this.direction === 'vertical' ? this.container.nativeElement.getBoundingClientRect().x : this.container.nativeElement.getBoundingClientRect().y;\r\n const mousePos = this.direction === 'vertical' ? event.x : event.y;\r\n const pos = ((mousePos - containerPos) / containerSize) * 100;\r\n this.splitPosition = Math.min(Math.max(pos, 1), 99);\r\n\r\n this.onResize.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n }\r\n}","<div #container class=\"sof-ar-resize-panels-container\"\r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n\r\n <!-- First Panel -->\r\n <div [ngStyle]=\"getFirstPanelStyle()\" #firstPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n\r\n <!-- Drag Handle / Border -->\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\" *ngIf=\"resizable\">\r\n <div class=\"sof-ar-resize-panels-drag-handle\" (mousedown)=\"startResize()\" \r\n [ngClass]=\"{ \r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n </div>\r\n </div>\r\n \r\n <!-- Second Panel -->\r\n <div [ngStyle]=\"getSecondPanelStyle()\" #secondPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ResizePanelsComponent } from './components/resize-panels/resize-panels.component';\r\n\r\n\r\n/** The Resize Panels Module */\r\n@NgModule({\r\n declarations: [ ResizePanelsComponent ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ResizePanelsComponent\r\n ]\r\n})\r\nexport class ArmatureResizePanelsModule { }\r\n","/** Public API surface for components */\r\nexport * from './resize-panels.module';\r\n\r\n// components\r\nexport * from './components/resize-panels/resize-panels.component';\r\n\r\n// models\r\nexport { ResizeEvent } from './models/resize-event';","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\n/** \r\n * The feedback-tool component \r\n * @input application, the application using this component *required \r\n * @input experience, language key for the user experience, default is 'purchasingPlan',\r\n * @output close, the event to close/destroy this component\r\n * */\r\n@Component({\r\n selector: 'sof-ar-feedback-tool',\r\n templateUrl: './feedback-tool.component.html',\r\n styleUrl: './feedback-tool.component.scss',\r\n standalone: false\r\n})\r\nexport class FeedbackToolComponent implements OnInit {\r\n\r\n /** The application using this component *required */\r\n @Input({required:true}) private application: string;\r\n\r\n /** Language key for the user experience, default is 'purchasingPlan' */\r\n @Input() private experience: string = 'purchasingPlan';\r\n\r\n /** The event to close/destroy this component */\r\n @Output() public close = new EventEmitter();\r\n\r\n /** The event with the feedback object for submit */\r\n @Output() public feedbackSubmit = new EventEmitter<UserFeedback>();\r\n\r\n /** User feedback message textarea element ref */\r\n @ViewChild('message') public message: ElementRef<HTMLTextAreaElement>;\r\n\r\n /** The user feedback object for submit */\r\n private userFeedback: UserFeedback;\r\n\r\n /** Has the user selected feedback (thumbs) */\r\n public hasFeedback: boolean = false;\r\n\r\n /** Has the user submitted feedback */\r\n public isSubmitted: boolean = false;\r\n\r\n /** The headers icon class */\r\n public headerIcon: string = 'hand-wave';\r\n\r\n /** The headers title language key */\r\n public headerTitle: string = 'rate-us';\r\n \r\n /** The description language key */\r\n public description: string;\r\n\r\n constructor() {}\r\n\r\n public ngOnInit(): void {\r\n this.description = 'experience.'+this.experience;\r\n this.userFeedback = {\r\n application: this.application,\r\n experience: this.experience,\r\n isPositive: null,\r\n message: ''\r\n };\r\n }\r\n\r\n /** \r\n * Give positive/negative feedback \r\n * @param isPositive is the feedback positive \r\n */\r\n public giveFeedback(isPositive:boolean): void {\r\n this.headerIcon = this.headerTitle = this.description = `thumbs-${isPositive ? 'up':'down'}`;\r\n this.hasFeedback = true;\r\n this.userFeedback.isPositive = isPositive;\r\n }\r\n\r\n /** Submits the users feedback */\r\n public submitFeedback():void {\r\n this.userFeedback.message = this.message.nativeElement.value;\r\n this.feedbackSubmit.emit(this.userFeedback);\r\n this.headerIcon = 'sparkles';\r\n this.headerTitle = this.description = 'thanks';\r\n this.isSubmitted = true;\r\n }\r\n\r\n /** Emit the event to close/destroy this component */\r\n public closeFeedbackTool(): void {\r\n this.close.emit(null);\r\n }\r\n}\r\n\r\n/** \r\n * The user feedback interface \r\n * @property application: string, The application this feedback is for\r\n * @property experience: string, The experience this feedback is for\r\n * @property isPositive: boolean, Is the feedback positive\r\n * @property message: string, The feedback message\r\n * */\r\nexport interface UserFeedback {\r\n /** The application this feedback is for */\r\n application?: string;\r\n /** The experience this feedback is for */\r\n experience?: string;\r\n /** Is the feedback positive */\r\n isPositive?: boolean;\r\n /** The feedback message */\r\n message?: string;\r\n}\r\n","<div class=\"feedback-tool\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"feedback-tool_label\" aria-describedby=\"feedback-tool_desc\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"feedback-tool__heading p-v-15 p-h-20\">\r\n <i class=\"fa-regular fa-{{headerIcon}} m-r-10 feedback-tool__heading__icon\" aria-hidden=\"true\"></i>\r\n <h4 id=\"feedback-tool_label\">{{'armature.feedback-tool.headings.'+headerTitle|translate}}</h4>\r\n <button (click)=\"closeFeedbackTool()\" fxHide fxShow.lt-sm mat-flat-button class=\"sof-button-icon-v2 m-l-auto\" theme=\"neutral\" emphasis=\"secondary\"\r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.close'|translate\">\r\n <i class=\"fa-regular fa-xmark\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"20px\" p-a-20>\r\n <p id=\"feedback-tool_desc\" class=\"feedback-tool__description m-t-0\">{{'armature.feedback-tool.descriptions.'+description|translate}}</p>\r\n @if (!isSubmitted) {\r\n @if (!hasFeedback) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"center center\" p-v-20>\r\n <button (click)=\"giveFeedback(true)\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\" \r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.thumbs-up'|translate\">\r\n <i class=\"fa-regular fa-thumbs-up\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button (click)=\"giveFeedback(false)\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\" \r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.thumbs-down'|translate\">\r\n <i class=\"fa-regular fa-thumbs-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n } @else {\r\n <mat-form-field class=\"feedback-tool__message\">\r\n <label for=\"feedback-tool-message_textarea\" id=\"feedback-tool-message_label\" class=\"sr-only\">\r\n {{'armature.feedback-tool.message.sr-only-label'|translate}}\r\n </label>\r\n <textarea matInput #message id=\"feedback-tool-message_textarea\" rows=\"4\" maxlength=\"1000\" \r\n [placeholder]=\"'armature.feedback-tool.message.placeholder'|translate\" aria-labelledby=\"feedback-tool-message_label\"></textarea>\r\n <mat-hint [align]=\"'end'\">{{message.value.length}}/1000</mat-hint>\r\n </mat-form-field>\r\n <div class=\"sr-only\" aria-live=\"assertive\">\r\n {{message.value.length === 1000 ? ('armature.feedback-tool.message.sr-only-max-char-limit'|translate):''}}\r\n </div>\r\n }\r\n }\r\n <div fxLayout=\"row\" fxLayoutGap=\"16px\">\r\n @if (!isSubmitted) {\r\n <button (click)=\"closeFeedbackTool()\" \r\n fxHide fxShow.gt-xs mat-flat-button class=\"sof-button-v2 m-l-auto\" emphasis=\"secondary\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.close'|translate}}\r\n </button>\r\n @if (hasFeedback) {\r\n <button (click)=\"submitFeedback()\" mat-flat-button class=\"sof-button-v2 full-width-mobile\" emphasis=\"solid\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.submit'|translate}}\r\n </button>\r\n }\r\n } @else {\r\n <button (click)=\"closeFeedbackTool()\" \r\n mat-flat-button class=\"sof-button-v2 m-l-auto full-width-mobile\" emphasis=\"solid\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.got-it'|translate}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n<div fxHide fxShow.lt-sm class=\"mobile-space\"></div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FeedbackToolComponent } from './components/feedback-tool/feedback-tool.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nconst materialModules = [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule\r\n];\r\n\r\n/** The feedback-tool module */\r\n@NgModule({\r\n declarations: [\r\n FeedbackToolComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n FeedbackToolComponent\r\n ]\r\n})\r\nexport class FeedbackToolModule { }\r\n","/** Public API surface for components */\r\nexport * from './feedback-tool.module';\r\n// component\r\nexport * from './components/feedback-tool/feedback-tool.component';\r\n","import { Component, Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n/** The component print service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ComponentSavePrintService {\r\n /** Emits when a component is requested to be save/printed */\r\n public readonly savePrintComponent$: Observable<any>;\r\n\r\n /** The component to print behavior subject */\r\n private readonly componentSavePrintBs: BehaviorSubject<any> = new BehaviorSubject<any>(undefined);\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n this.savePrintComponent$ = this.componentSavePrintBs.asObservable()\r\n .pipe(filter(c => !!c));\r\n }\r\n\r\n /**\r\n * Save/Print the provided component\r\n * @param component The component to save/print\r\n */\r\n public savePrintComponent(component: any): void {\r\n this.componentSavePrintBs.next(component);\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, ComponentRef, ElementRef, OnDestroy, OnInit, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentSavePrintService } from '../../services/component-save-print.service';\r\n\r\n/** The component save and print component */\r\n@Component({\r\n selector: 'sof-ar-component-save-print',\r\n templateUrl: './component-save-print.component.html',\r\n styleUrls: ['./component-save-print.component.scss'],\r\n standalone: false\r\n})\r\nexport class ComponentSavePrintComponent implements OnInit, OnDestroy {\r\n\r\n /** The iframe reference */\r\n @ViewChild('iframe', { static: false }) public iframeRef: ElementRef;\r\n\r\n /** The iframe doc */\r\n private doc: any;\r\n\r\n /** The printed component reference */\r\n private componentRef: ComponentRef<Component> | undefined;\r\n\r\n /** The component subscription */\r\n private readonly componentSub: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructs the component\r\n * @param cfr The component factory resolver\r\n * @param vcr The view container reference\r\n * @param componentSavePrintService The component save print service\r\n */\r\n constructor(\r\n private readonly cfr: ComponentFactoryResolver,\r\n private readonly vcr: ViewContainerRef,\r\n private readonly componentSavePrintService: ComponentSavePrintService\r\n ) { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.componentSub.add(\r\n this.componentSavePrintService.savePrintComponent$.subscribe(c => {\r\n this.print(c);\r\n })\r\n );\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n this.componentSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Prints the component\r\n * @param component The component type to print\r\n */\r\n public print(component: any): void {\r\n this.attachStyles(this.iframeRef.nativeElement.contentWindow);\r\n this.doc = this.iframeRef?.nativeElement.contentDocument || this.iframeRef.nativeElement.iFrameRef.contentWindow;\r\n const compFactory = this.cfr.resolveComponentFactory(component);\r\n this.componentRef = this.vcr.createComponent(compFactory);\r\n this.componentRef.location.nativeElement.id = 'sofArComponentSavePrintContainer';\r\n this.doc.body.appendChild(this.componentRef.location.nativeElement);\r\n const iframe = this.iframeRef.nativeElement;\r\n iframe.contentWindow.onafterprint = () => {\r\n iframe.contentDocument.body.innerHTML = '';\r\n };\r\n\r\n this.waitForImageToLoad(\r\n iframe,\r\n () => { iframe.contentWindow.print(); }\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to execute print function on hold until images finish loading\r\n * @param iframe The iframe to load images on\r\n * @param done The function to wait execution\r\n */\r\n private waitForImageToLoad(iframe: HTMLIFrameElement, done: Function): void {\r\n const interval = setInterval(() => {\r\n const allImages = iframe.contentDocument.body.querySelectorAll(\r\n 'img'\r\n );\r\n const loaded = Array.from({ length: allImages.length }).fill(false);\r\n allImages.forEach((img: HTMLImageElement, idx) => {\r\n loaded[idx] = img.complete;\r\n });\r\n if (loaded.every(c => !!c)) {\r\n clearInterval(interval);\r\n done();\r\n }\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Helper function to append all the styles to targe window\r\n * @param targetWindow The target window\r\n */\r\n private attachStyles(targetWindow: Window): void {\r\n // Copy styles from parent window\r\n document.querySelectorAll('style')\r\n .forEach(htmlElement => {\r\n targetWindow.document.head.appendChild(htmlElement.cloneNode(true));\r\n });\r\n // Copy stylesheet link from parent window\r\n document.querySelectorAll('link')\r\n .forEach(htmlElement => {\r\n targetWindow.document.head.appendChild(htmlElement.cloneNode(true));\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"save-print-container\">\r\n <iframe #iframe class=\"save-print\" tabindex=\"-1\">\r\n </iframe>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ComponentSavePrintService } from './services/component-save-print.service';\r\nimport { ComponentSavePrintComponent } from './components/component-save-print/component-save-print.component';\r\n\r\n/** The component save print module */\r\n@NgModule({\r\n declarations: [ComponentSavePrintComponent],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n ComponentSavePrintService\r\n ],\r\n exports: [\r\n ComponentSavePrintComponent\r\n ]\r\n})\r\nexport class SofArComponentSavePrintModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Signal, WritableSignal, signal } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Observable, Subscription, lastValueFrom } from 'rxjs';\r\nimport { EntityDto } from '../models/entity-dto';\r\nimport { EntityConfigBase } from '../models/entity-config-base';\r\n\r\n/** The queue session storage prefix */\r\nexport const ENTITY_SESSION_STORAGE_PREFIX = \"mfe.entity.\";\r\n\r\n/** The session storage queue name key */\r\nexport const ENTITY_SS_CONFIG_PREFIX = `${ENTITY_SESSION_STORAGE_PREFIX}entity-config-prefix`;\r\n\r\n@Injectable()\r\nexport class EntityHelperService<TConfig extends EntityConfigBase> {\r\n\r\n /** The configuration behavior subject */\r\n private readonly configBs: BehaviorSubject<TConfig> = new BehaviorSubject<TConfig>(undefined);\r\n\r\n /** The activated route subscription */\r\n private activatedRouteSub: Subscription;\r\n\r\n /** The configuration observable */\r\n public readonly config$: Observable<TConfig>;\r\n\r\n /** The configurations */\r\n public get config(): TConfig {\r\n return this.configBs.value;\r\n }\r\n\r\n /** Sets the configurations */\r\n public set config(value: TConfig) {\r\n this.configBs.next(value);\r\n }\r\n\r\n /** isLoaded behavior subject */\r\n private readonly isLoadedBs: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /** Is loaded observable */\r\n public readonly isLoaded$: Observable<boolean>;\r\n\r\n /** The current entity */\r\n public currentEntity: WritableSignal<EntityDto> = signal(undefined);\r\n\r\n /**\r\n * Constructor\r\n * @param http The http client\r\n * @param translateService The translate service\r\n */\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly translateService: TranslateService\r\n ) {\r\n this.isLoaded$ = this.isLoadedBs.asObservable();\r\n }\r\n\r\n /**\r\n * Initializes the current entity from route params\r\n * @param activatedRoute The activated route\r\n */\r\n public initializeRouteParams(activatedRoute: ActivatedRoute): void {\r\n this.activatedRouteSub = activatedRoute.paramMap.subscribe(paramMap => {\r\n const taskId = paramMap.get('taskId');\r\n const drawerId = paramMap.get('drawerId');\r\n const entityId = paramMap.get('entityId');\r\n document.dispatchEvent(new CustomEvent('queue-reload-ids', {}));\r\n\r\n this.currentEntity.set({ taskId: +taskId, drawerId: +drawerId, folderId: +entityId })\r\n this.activatedRouteSub?.unsubscribe();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the configurations\r\n */\r\n public initializeConfigurations(): void {\r\n const configPrefix = window.sessionStorage.getItem(ENTITY_SS_CONFIG_PREFIX) || 'common';\r\n if (configPrefix) {\r\n const configProm = lastValueFrom(this.http.get<{ [key: string]: TConfig }>(`./assets/configurations/entities.appsettings.json`));\r\n const enLangProm = lastValueFrom(this.http.get<{ [key: string]: JSON }>(`./assets/configurations/entities.en.json`));\r\n\r\n Promise.all([configProm, enLangProm]).then(([config, lang]) => {\r\n const entityConfig = config[configPrefix];\r\n const entityLang = lang[configPrefix];\r\n return this.loadConfigurations(configPrefix, entityConfig, entityLang);\r\n })\r\n .catch(e => {\r\n console.warn(e);\r\n return this.loadConfigurations(configPrefix)\r\n });\r\n }\r\n else {\r\n this.translateService.setDefaultLang('en');\r\n this.configBs.next({} as any);\r\n this.isLoadedBs.next(true);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param taskId The task id\r\n * @param drawerId The drawer id\r\n * @param entityId The entity id\r\n * @param configPrefix Teh config prefix\r\n * @param entityConfig The entity config\r\n * @param enLangConfig The en lang config\r\n */\r\n public loadConfigurations(configPrefix: string, entityConfig: TConfig = undefined, enLangConfig: JSON = undefined): void {\r\n\r\n const initConfig = (config: TConfig, lang: JSON) => {\r\n this.configBs.next(config);\r\n this.translateService.setTranslation('en', lang, false);\r\n this.translateService.setDefaultLang('en');\r\n this.isLoadedBs.next(true);\r\n }\r\n\r\n if (!entityConfig || !enLangConfig) {\r\n const configProm = lastValueFrom(this.http.get<TConfig>(`./assets/configurations/${configPrefix}.entity.appsettings.json`));\r\n const enLangProm = lastValueFrom(this.http.get<JSON>(`./assets/configurations/${configPrefix}.entity.en.json`));\r\n\r\n Promise.all([configProm, enLangProm]).then(([config, lang]) => {\r\n initConfig(config, lang);\r\n })\r\n .catch(e => {\r\n console.warn(e);\r\n });\r\n }\r\n else {\r\n initConfig(entityConfig, enLangConfig);\r\n }\r\n }\r\n\r\n public resetLoading(): void {\r\n this.isLoadedBs.next(false);\r\n this.configBs.next(undefined);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EntityHelperService } from './services/entity-helper.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n EntityHelperService\r\n ]\r\n})\r\nexport class MfeModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { EntityHelperService } from '../../services/entity-helper.service';\r\nimport { EntityDto } from '../../models/entity-dto';\r\nimport { EntityConfigBase } from '../../models/entity-config-base';\r\n\r\n/** The entity base component */\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\r\nexport abstract class EntityBaseComponent<TConfig extends EntityConfigBase> implements OnInit, OnDestroy {\r\n\r\n /** True if is expanded */\r\n protected isExpanded: boolean = false;\r\n\r\n /**\r\n * Constructor\r\n * @param activatedRoute The activated route\r\n * @param entityHelper The entity helper service\r\n */\r\n constructor(\r\n private readonly activatedRoute: ActivatedRoute,\r\n protected readonly entityHelper: EntityHelperService<TConfig>\r\n ) {\r\n document.addEventListener('task-row-click', this.taskRowClick)\r\n }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.entityHelper.initializeRouteParams(this.activatedRoute);\r\n this.entityHelper.initializeConfigurations();\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n document.removeEventListener('task-row-click', this.taskRowClick);\r\n }\r\n\r\n public abstract onRowClick(entity: EntityDto): void;\r\n\r\n /** Navigate back to list view */\r\n public returnToQueueView(): void {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {}));\r\n document.dispatchEvent(new CustomEvent('close-entity-view', {}));\r\n }\r\n\r\n /** Copies the entity url */\r\n public copyEntityUrl(): void {\r\n const url = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}${this.entityHelper.config.copyEntityRoutePrefix || ''}${this.entityHelper.currentEntity().taskId ? `/task/${this.entityHelper.currentEntity().taskId}` : ``}/drawer/${this.entityHelper.currentEntity().drawerId}/entity/${this.entityHelper.currentEntity().folderId}/profiles`;\r\n navigator.clipboard.writeText(url);\r\n }\r\n\r\n /** Reloads the entity */\r\n public reloadEntity(): void {\r\n let selectedFolder = this.entityHelper.currentEntity();\r\n // create another task row click event for the entity to load again\r\n document.dispatchEvent(new CustomEvent('task-row-click', {\r\n detail: {\r\n folderId: selectedFolder.folderId,\r\n taskId: selectedFolder.taskId,\r\n drawerId: selectedFolder.drawerId,\r\n // Set override to force API call\r\n override: true\r\n }\r\n }));\r\n }\r\n\r\n /** Opens the entity view in a new route */\r\n public openEntityView(): void {\r\n if (!this.isExpanded) {\r\n document.dispatchEvent(new CustomEvent('expand-entity-view', {}));\r\n this.isExpanded = true;\r\n }\r\n else {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {}));\r\n this.isExpanded = false;\r\n }\r\n }\r\n\r\n /**\r\n * The task row click event\r\n * @param event The event\r\n */\r\n private taskRowClick(event: any): void {\r\n this.onRowClick(event.detail)\r\n }\r\n\r\n}\r\n","/** The custom work flow action event */\r\nexport interface CustomWorkFlowActionEvent {\r\n /** The data type */\r\n dataType: string;\r\n /** The data */\r\n data: EntityDto;\r\n}\r\n\r\n/** The entity dto */\r\nexport interface EntityDto<T = any> {\r\n /** The folder ID */\r\n folderId: number;\r\n /** The drawer ID */\r\n drawerId: number;\r\n /** The task ID */\r\n taskId: number;\r\n /** The folder data */\r\n folderData?: Folder;\r\n /** The user defined data */\r\n userDefinedData?: T;\r\n}\r\n\r\n/** The folder interface */\r\nexport interface Folder {\r\n accessCount?: number;\r\n accessTime?: Date;\r\n acl?: number;\r\n age?: number;\r\n area?: string;\r\n assignedGroup?: string;\r\n assignedUser?: string;\r\n attachmentCount?: number;\r\n category?: number;\r\n class?: number;\r\n creationTime?: Date;\r\n creatorGroupId?: number;\r\n creatorUserId?: number;\r\n crossFRId?: number;\r\n crossReferenceId?: number;\r\n id: number;\r\n modificationTime?: Date;\r\n modifierGroupId?: number;\r\n modifierUserId?: number;\r\n name?: string;\r\n noteCount?: number;\r\n ownerGroupId?: number;\r\n ownerUserId?: number;\r\n profileCount?: number;\r\n profiles?: Array<Profile>;\r\n referenceCount?: number;\r\n reservedInt1?: number;\r\n reservedInt2?: number;\r\n reservedString1?: string;\r\n resolutionTime?: Date;\r\n sState?: string;\r\n state?: number;\r\n subclass?: number;\r\n subtype?: number;\r\n template: any;\r\n type?: number;\r\n};\r\n\r\n/** The profile interface */\r\nexport interface Profile {\r\n acl: number;\r\n dateTimeProfile1?: Date;\r\n dateTimeProfile2?: Date;\r\n dateTimeProfile3?: Date;\r\n dateTimeProfile4?: Date;\r\n doubleProfile1?: number;\r\n doubleProfile2?: number;\r\n doubleProfile3?: number;\r\n doubleProfile4?: number;\r\n extensionCount: number;\r\n extensions?: Array<Extension>;\r\n folderId: number;\r\n id: number;\r\n intProfile1?: number;\r\n intProfile2?: number;\r\n intProfile3?: number;\r\n intProfile4?: number;\r\n intProfile5?: number;\r\n intProfile6?: number;\r\n intProfile7?: number;\r\n intProfile8?: number;\r\n modificationTime?: Date;\r\n modifierUserId: number;\r\n ownerGroupId: number;\r\n ownerUserId: number;\r\n stringProfile1?: string;\r\n stringProfile2?: string;\r\n stringProfile3?: string;\r\n stringProfile4?: string;\r\n stringProfile5?: string;\r\n stringProfile6?: string;\r\n stringProfile7?: string;\r\n stringProfile8?: string;\r\n stringProfile9?: string;\r\n stringProfile10?: string;\r\n stringProfile11?: string;\r\n stringProfile12?: string;\r\n stringProfile13?: string;\r\n stringProfile14?: string;\r\n stringProfile15?: string;\r\n stringProfile16?: string;\r\n stringProfile17?: string;\r\n stringProfile18?: string;\r\n stringProfile19?: string;\r\n stringProfile20?: string;\r\n stringProfile21?: string;\r\n stringProfile22?: string;\r\n stringProfile23?: string;\r\n stringProfile24?: string;\r\n stringProfile25?: string;\r\n stringProfile26?: string;\r\n stringProfile27?: string;\r\n stringProfile28?: string;\r\n stringProfile29?: string;\r\n stringProfile30?: string;\r\n stringProfile31?: string;\r\n stringProfile32?: string;\r\n type: number;\r\n};\r\n\r\n/** The extension interface */\r\nexport interface Extension {\r\n dextension1?: number;\r\n dextension2?: number;\r\n dextension3?: number;\r\n dextension4?: number;\r\n dextension5?: number;\r\n dextension6?: number;\r\n dextension7?: number;\r\n dextension8?: number;\r\n nRowNum?: number;\r\n nextension1?: number;\r\n nextension2?: number;\r\n nextension3?: number;\r\n nextension4?: number;\r\n nextension5?: number;\r\n nextension6?: number;\r\n nextension7?: number;\r\n nextension8?: number;\r\n nextension9?: number;\r\n nextension10?: number;\r\n nextension11?: number;\r\n nextension12?: number;\r\n nextension13?: number;\r\n nextension14?: number;\r\n nextension15?: number;\r\n nextension16?: number;\r\n nextensionid: number;\r\n ntype: number;\r\n profileId: number;\r\n sextension1?: string;\r\n sextension2?: string;\r\n sextension3?: string;\r\n sextension4?: string;\r\n sextension5?: string;\r\n sextension6?: string;\r\n sextension7?: string;\r\n sextension8?: string;\r\n sextension9?: string;\r\n sextension10?: string;\r\n sextension11?: string;\r\n sextension12?: string;\r\n sextension13?: string;\r\n sextension14?: string;\r\n sextension15?: string;\r\n sextension16?: string;\r\n sextension17?: string;\r\n sextension18?: string;\r\n sextension19?: string;\r\n sextension20?: string;\r\n sextension21?: string;\r\n sextension22?: string;\r\n sextension23?: string;\r\n sextension24?: string;\r\n sextension25?: string;\r\n sextension26?: string;\r\n sextension27?: string;\r\n sextension28?: string;\r\n sextension29?: string;\r\n sextension30?: string;\r\n sextension31?: string;\r\n sextension32?: string;\r\n textension1?: Date;\r\n textension2?: Date;\r\n textension3?: Date;\r\n textension4?: Date;\r\n textension5?: Date;\r\n textension6?: Date;\r\n textension7?: Date;\r\n textension8?: Date;\r\n};","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** Entity inject wrapper */\r\n@Component({\r\n selector: 'lib-entity-inject-wrapper',\r\n imports: [\r\n MatTooltipModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n FlexLayoutModule\r\n ],\r\n templateUrl: './entity-inject-wrapper.component.html',\r\n styleUrl: './entity-inject-wrapper.component.scss'\r\n})\r\nexport class EntityInjectWrapperComponent implements OnInit {\r\n /** The expand clicked event emitter */\r\n @Output() public expandClicked: EventEmitter<any> = new EventEmitter();\r\n\r\n /** The close clicked event emitter */\r\n @Output() public closeClicked: EventEmitter<any> = new EventEmitter();\r\n\r\n /** The default size of the component on open */\r\n @Input() public defaultSize: 'split' | 'full' = 'split';\r\n\r\n /** True when the entity view is expanded */\r\n public isExpanded: boolean = false;\r\n \r\n /** The active entity storage key */\r\n private readonly activeEntityStorageKey: string = 'selected-active-entity';\r\n\r\n /** The active entity id */\r\n private activeEntityId: string;\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (this.defaultSize === 'full') {\r\n this.openEntityView();\r\n }\r\n this.activeEntityId = window.sessionStorage.getItem(this.activeEntityStorageKey);\r\n }\r\n\r\n /** Opens the entity view to full screen */\r\n public openEntityView(): void {\r\n if (this.isExpanded) {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n }\r\n else {\r\n document.dispatchEvent(new CustomEvent('expand-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n }\r\n this.isExpanded = !this.isExpanded;\r\n this.expandClicked.emit(this.isExpanded);\r\n }\r\n\r\n /** Closes the entity view */\r\n public returnToQueueView(): void {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n document.dispatchEvent(new CustomEvent('close-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n this.closeClicked.emit();\r\n }\r\n}\r\n","<div fxLayout=\"column\" class=\"top-container\">\r\n <div fxFlex=\"row\" fxLayoutAlign=\"end center\" class=\"button-container\">\r\n <button id=\"expandBtn\" (click)=\"openEntityView()\" mat-flat-button class=\"icon-button sof-button-v2\"\r\n matTooltip=\"{{'entity.common.expand' | translate}}\" theme=\"primary\" emphasis=\"floating\">\r\n <i class=\"ph ph-arrows-out-simple\"></i>\r\n </button>\r\n \r\n <!-- Close -->\r\n <button id=\"closeBtn\" [disabled]=\"false\" (click)=\"returnToQueueView()\" mat-flat-button\r\n matTooltip=\"{{'entity.common.close' | translate}}\" class=\"icon-button sof-button-v2\" theme=\"primary\"\r\n emphasis=\"floating\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n </div>\r\n\r\n <div fxFlex=\"column\" class=\"content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","/** Public API Surface of armature */\r\nexport * from './lib/armature.module';\r\n\r\n// core\r\nexport * from './lib/core/services/session.service';\r\nexport * from './lib/core/services/user-entity.service';\r\nexport * from './lib/core/services/authorization.service';\r\n\r\nexport * from './lib/core/models/data-store-config';\r\nexport * from './lib/core/models/typed-session';\r\nexport * from './lib/core/models/http-verbs';\r\nexport * from './lib/core/models/session-config';\r\nexport * from './lib/core/models/route-path';\r\nexport * from './lib/core/models/styles';\r\nexport * from './lib/core/models/user-entity-service-config';\r\nexport * from './lib/core/client-generated/model/models';\r\nexport * from './lib/core/functions/guid';\r\nexport * from './lib/core/functions/naming-convention';\r\nexport * from './lib/core/functions/route-to-pre-login-route';\r\nexport * from './lib/core/initializer/abstract-startup-service';\r\nexport * from './lib/core/services/base-config.service';\r\nexport * from './lib/core/services/default-config.service';\r\nexport * from './lib/core/models/base-config';\r\nexport * from './lib/core/models/oidc-auth-settings';\r\nexport * from './lib/core/models/header-config';\r\nexport * from './lib/core/models/navigation-config';\r\nexport * from './lib/core/models/subdomain-config';\r\nexport * from './lib/core/services/custom-auth-config.service'\r\nexport * from './lib/core/components/app-template/app-template.component';\r\nexport * from './lib/core/services/banner.service';\r\nexport {\r\n SESSION_CONFIG,\r\n WINDOW,\r\n USER_ENTITY_SERVICE_CONFIG,\r\n preSignInRouteStorageKey,\r\n languageStorageKey,\r\n FEDERATED_MODULE_ID\r\n} from './lib/core/models/constants';\r\n\r\n// modules\r\nexport * from './lib/distributed-cache/distributed-cache-api';\r\nexport * from './lib/error/error-api';\r\nexport * from './lib/faq/faq-api';\r\nexport * from './lib/footer/footer-api';\r\nexport * from './lib/forms/forms-api';\r\nexport * from './lib/header/header-api';\r\nexport * from './lib/navigation/navigation-api';\r\nexport * from './lib/oauth/oauth-api';\r\nexport * from './lib/rbac/rbac-api';\r\nexport * from './lib/rum/rum-api';\r\nexport * from './lib/saml/saml-api';\r\nexport * from './lib/theming/theme-api';\r\nexport * from './lib/alert-banner/alert-banner-api';\r\nexport * from './lib/base-components/base-component-api';\r\nexport * from './lib/sof-pipe/sof-pipe.api';\r\nexport * from './lib/resize-panels/resize-panels-api';\r\nexport * from './lib/feedback-tool/feedback-tool-api';\r\n\r\nexport * from './lib/component-save-print/sof-ar-component-save-print.module';\r\nexport * from './lib/component-save-print/components/component-save-print/component-save-print.component';\r\nexport * from './lib/component-save-print/services/component-save-print.service';\r\nexport * from './lib/rbac/services/tokens';\r\n\r\n// MFE exports\r\nexport * from './lib/mfe/mfe.module';\r\nexport * from './lib/mfe/services/entity-helper.service';\r\nexport * from './lib/mfe/components/entity-base/entity-base.component';\r\nexport * from './lib/mfe/models/entity-config-base';\r\nexport * from './lib/mfe/models/entity-dto';\r\nexport * from './lib/navigation/components/b2b-nav/b2b-nav.component';\r\nexport * from './lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlertBannerService","i2","i3","i4","i5","i6","materialModules","BASE_PATH","COLLECTION_FORMATS","Configuration","i2.Configuration","SessionService","i1","i3.HybridSamlOauthService","i4.CustomAuthConfigService","i3.BannerService","i4.AuthorizationService","i5.BaseConfigService","i7","i8","i9","i10","i11","i12","i17","i5.HybridSamlOauthService","i13","i14","filter","i1.BaseConfigService","i3.FederatedModuleService","i6.ArmatureNavigationComponent","i7.ArmatureHeaderComponent","i8.ArmatureFooterComponent","i9.AlertBannerComponent","i13.B2bNavComponent","components","i8.NumbersOnlyDirective","i8.SofCompareAddressPipe","FormsModule","i1.UserEntityService","ServerSessionService","i1.SessionService","i2.CacheService","i1.RbacConfig","i3.RoleNavService","i1.Oauth2RoleService","i2.SessionService","i1.RumConfig","i1.AbstractSamlService","i1.ComponentSavePrintService","i2.EntityHelperService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"softheon-armature.mjs","sources":["../../../../projects/armature/src/lib/alert-banner/models/constants.ts","../../../../projects/armature/src/lib/alert-banner/services/alert-banner.service.ts","../../../../projects/armature/src/lib/alert-banner/components/alert-banner/alert-banner.component.ts","../../../../projects/armature/src/lib/alert-banner/components/alert-banner/alert-banner.component.html","../../../../projects/armature/src/lib/alert-banner/alert-banner.module.ts","../../../../projects/armature/src/lib/core/client-generated/variables.ts","../../../../projects/armature/src/lib/core/client-generated/configuration.ts","../../../../projects/armature/src/lib/core/client-generated/api/session.service.ts","../../../../projects/armature/src/lib/core/models/constants.ts","../../../../projects/armature/src/lib/core/functions/route-to-pre-login-route.ts","../../../../projects/armature/src/lib/core/services/base-config.service.ts","../../../../projects/armature/src/lib/core/services/federated-module.service.ts","../../../../projects/armature/src/lib/core/services/banner.service.ts","../../../../projects/armature/src/lib/rbac/models/access-token-claims.ts","../../../../projects/armature/src/lib/rbac/models/decoded-access-token.ts","../../../../projects/armature/src/lib/oauth/models/constants.ts","../../../../projects/armature/src/lib/core/functions/naming-convention.ts","../../../../projects/armature/src/lib/oauth/models/hybrid-saml-oauth-config.ts","../../../../projects/armature/src/lib/oauth/services/hybrid-saml-oauth.service.ts","../../../../projects/armature/src/lib/oauth/oauth.module.ts","../../../../projects/armature/src/lib/oauth/models/generated/coverageDetail.ts","../../../../projects/armature/src/lib/oauth/models/generated/finance.ts","../../../../projects/armature/src/lib/oauth/models/generated/iSsoResponseModel.ts","../../../../projects/armature/src/lib/oauth/models/generated/person.ts","../../../../projects/armature/src/lib/oauth/oauth-api.ts","../../../../projects/armature/src/lib/core/services/custom-auth-config.service.ts","../../../../projects/armature/src/lib/core/services/authorization.service.ts","../../../../projects/armature/src/lib/navigation/components/navigation/navigation.component.ts","../../../../projects/armature/src/lib/navigation/components/navigation/navigation.component.html","../../../../projects/armature/src/lib/header/components/header/header.component.ts","../../../../projects/armature/src/lib/header/components/header/header.component.html","../../../../projects/armature/src/lib/footer/models/footer-config.ts","../../../../projects/armature/src/lib/footer/components/footer/footer.component.ts","../../../../projects/armature/src/lib/footer/components/footer/footer.component.html","../../../../projects/armature/src/lib/navigation/components/b2b-nav/b2b-nav.component.ts","../../../../projects/armature/src/lib/navigation/components/b2b-nav/b2b-nav.component.html","../../../../projects/armature/src/lib/core/components/app-template/app-template.component.ts","../../../../projects/armature/src/lib/core/components/app-template/app-template.component.html","../../../../projects/armature/src/lib/core/initializer/abstract-startup-service.ts","../../../../projects/armature/src/lib/theming/services/theme.service.ts","../../../../projects/armature/src/lib/core/initializer/initializer.service.ts","../../../../projects/armature/src/lib/core/interceptors/armature-auth-token-append.interceptor.ts","../../../../projects/armature/src/lib/core/models/session-config.ts","../../../../projects/armature/src/lib/core/services/default-config.service.ts","../../../../projects/armature/src/lib/core/models/http-verbs.ts","../../../../projects/armature/src/lib/core/functions/guid.ts","../../../../projects/armature/src/lib/core/services/session.service.ts","../../../../projects/armature/src/lib/core/models/user-entity-service-config.ts","../../../../projects/armature/src/lib/core/services/user-entity.service.ts","../../../../projects/armature/src/lib/footer/components/site-map/site-map.component.ts","../../../../projects/armature/src/lib/footer/components/site-map/site-map.component.html","../../../../projects/armature/src/lib/footer/footer.module.ts","../../../../projects/armature/src/lib/forms/models/enums/states.ts","../../../../projects/armature/src/lib/forms/directives/numbers-only/numbers-only.directive.ts","../../../../projects/armature/src/lib/forms/components/sof-address/sof-address.component.ts","../../../../projects/armature/src/lib/forms/components/sof-address/sof-address.component.html","../../../../projects/armature/src/lib/forms/directives/alphanumeric/alphanumeric.directive.ts","../../../../projects/armature/src/lib/forms/directives/input-trim/input-trim.directive.ts","../../../../projects/armature/src/lib/forms/directives/letters-characters/letters-characters.directive.ts","../../../../projects/armature/src/lib/forms/directives/letters-only/letters-only.directive.ts","../../../../projects/armature/src/lib/forms/pipes/phone-format.pipe.ts","../../../../projects/armature/src/lib/forms/models/constants.ts","../../../../projects/armature/src/lib/forms/services/alert.service.ts","../../../../projects/armature/src/lib/forms/directives/date-input-filter/date-input-filter.directive.ts","../../../../projects/armature/src/lib/forms/forms.module.ts","../../../../projects/armature/src/lib/header/components/mobile-header-menu/mobile-header-menu.component.ts","../../../../projects/armature/src/lib/header/components/mobile-header-menu/mobile-header-menu.component.html","../../../../projects/armature/src/lib/header/header.module.ts","../../../../projects/armature/src/lib/navigation/components/sof-tabs-navigation/sof-tabs.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-tabs-navigation/sof-tabs.component.html","../../../../projects/armature/src/lib/navigation/components/sof-sub-navigation/sof-sub-navigation.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-sub-navigation/sof-sub-navigation.component.html","../../../../projects/armature/src/lib/navigation/navigation.module.ts","../../../../projects/armature/src/lib/theming/directives/css-override.directive.ts","../../../../projects/armature/src/lib/theming/theme.module.ts","../../../../projects/armature/src/lib/base-components/sof-modal/sof-modal.component.ts","../../../../projects/armature/src/lib/base-components/sof-modal/sof-modal.component.html","../../../../projects/armature/src/lib/base-components/sof-handle/sof-handle.component.ts","../../../../projects/armature/src/lib/base-components/sof-handle/sof-handle.component.html","../../../../projects/armature/src/lib/base-components/sof-context/sof-context.component.ts","../../../../projects/armature/src/lib/base-components/sof-context/sof-context.component.html","../../../../projects/armature/src/lib/base-components/sof-alert/sof-alert.component.ts","../../../../projects/armature/src/lib/base-components/sof-alert/sof-alert.component.html","../../../../projects/armature/src/lib/base-components/sof-simple-alert/sof-simple-alert.component.ts","../../../../projects/armature/src/lib/base-components/sof-simple-alert/sof-simple-alert.component.html","../../../../projects/armature/src/lib/base-components/sof-banner/sof-banner.component.ts","../../../../projects/armature/src/lib/base-components/sof-banner/sof-banner.component.html","../../../../projects/armature/src/lib/base-components/sof-progress-bar/sof-progress-bar.component.ts","../../../../projects/armature/src/lib/base-components/sof-progress-bar/sof-progress-bar.component.html","../../../../projects/armature/src/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.ts","../../../../projects/armature/src/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.html","../../../../projects/armature/src/lib/base-components/sof-star-rating/sof-star-rating.component.ts","../../../../projects/armature/src/lib/base-components/sof-star-rating/sof-star-rating.component.html","../../../../projects/armature/src/lib/base-components/sof-badge/sof-badge.component.ts","../../../../projects/armature/src/lib/base-components/sof-badge/sof-badge.component.html","../../../../projects/armature/src/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.ts","../../../../projects/armature/src/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.html","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/compare-address-pipe/compare-address.pipe.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/sof-confirm-address.component.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address/sof-confirm-address.component.html","../../../../projects/armature/src/lib/base-components/sof-radio-card/sof-radio-card.component.ts","../../../../projects/armature/src/lib/base-components/sof-radio-card/sof-radio-card.component.html","../../../../projects/armature/src/lib/base-components/sof-input-stepper/sof-input-stepper.component.ts","../../../../projects/armature/src/lib/base-components/sof-input-stepper/sof-input-stepper.component.html","../../../../projects/armature/src/lib/base-components/sof-utility-button/sof-utility-button.component.ts","../../../../projects/armature/src/lib/base-components/sof-utility-button/sof-utility-button.component.html","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component.ts","../../../../projects/armature/src/lib/base-components/confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component.html","../../../../projects/armature/src/lib/base-components/base-component.module.ts","../../../../projects/armature/src/lib/armature.module.ts","../../../../projects/armature/src/lib/core/models/data-store-config.ts","../../../../projects/armature/src/lib/core/models/typed-session.ts","../../../../projects/armature/src/lib/core/models/route-path.ts","../../../../projects/armature/src/lib/core/client-generated/model/errorModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/oAuthModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/themePaletteColorsModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/trackingModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/applicationUserModel.ts","../../../../projects/armature/src/lib/core/client-generated/model/folderLink.ts","../../../../projects/armature/src/lib/core/client-generated/model/preferencesRow.ts","../../../../projects/armature/src/lib/core/client-generated/model/validationRecordsRow.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/variables.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/configuration.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/api/cache.service.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/api/api.ts","../../../../projects/armature/src/lib/distributed-cache/services/server-cache.service.ts","../../../../projects/armature/src/lib/distributed-cache/models/constants.ts","../../../../projects/armature/src/lib/distributed-cache/distributed-cache.module.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/cacheExpirationType.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.ts","../../../../projects/armature/src/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.ts","../../../../projects/armature/src/lib/distributed-cache/models/policy-person.ts","../../../../projects/armature/src/lib/distributed-cache/distributed-cache-api.ts","../../../../projects/armature/src/lib/error/components/error-common/error-common.component.ts","../../../../projects/armature/src/lib/error/components/error-common/error-common.component.html","../../../../projects/armature/src/lib/error/error.module.ts","../../../../projects/armature/src/lib/error/models/error-common-config.ts","../../../../projects/armature/src/lib/error/error-api.ts","../../../../projects/armature/src/lib/faq/components/faq/faq.component.ts","../../../../projects/armature/src/lib/faq/components/faq/faq.component.html","../../../../projects/armature/src/lib/faq/faq.module.ts","../../../../projects/armature/src/lib/faq/models/faq.ts","../../../../projects/armature/src/lib/faq/models/faq-config.ts","../../../../projects/armature/src/lib/faq/faq-api.ts","../../../../projects/armature/src/lib/footer/models/enum/site-map-direction.ts","../../../../projects/armature/src/lib/footer/footer-api.ts","../../../../projects/armature/src/lib/forms/forms-api.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.html","../../../../projects/armature/src/lib/header/components/sof-header/user-initials-pipe/user-initials.pipe.ts","../../../../projects/armature/src/lib/header/components/sof-header/menu-prevent-close-directive/menu-prevent-close.directive.ts","../../../../projects/armature/src/lib/header/components/sof-header/sof-header.component.ts","../../../../projects/armature/src/lib/header/components/sof-header/sof-header.component.html","../../../../projects/armature/src/lib/header/models/header-auth.settings.ts","../../../../projects/armature/src/lib/header/header-api.ts","../../../../projects/armature/src/lib/navigation/models/breadcrumb.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.html","../../../../projects/armature/src/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.ts","../../../../projects/armature/src/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.html","../../../../projects/armature/src/lib/navigation/navigation-api.ts","../../../../projects/armature/src/lib/rbac/models/rbac-config.ts","../../../../projects/armature/src/lib/rbac/services/role-nav.service.ts","../../../../projects/armature/src/lib/rbac/services/oauth2-role.service.ts","../../../../projects/armature/src/lib/rbac/services/tokens.ts","../../../../projects/armature/src/lib/rbac/services/ar-role-nav.service.ts","../../../../projects/armature/src/lib/rbac/directives/rbac-action.directive.ts","../../../../projects/armature/src/lib/rbac/rbac.module.ts","../../../../projects/armature/src/lib/rbac/models/constants.ts","../../../../projects/armature/src/lib/rbac/models/role-access.ts","../../../../projects/armature/src/lib/rbac/rbac-api.ts","../../../../projects/armature/src/lib/rum/services/rum.service.ts","../../../../projects/armature/src/lib/rum/models/arm-error.ts","../../../../projects/armature/src/lib/rum/services/shared-error.service.ts","../../../../projects/armature/src/lib/rum/rum.module.ts","../../../../projects/armature/src/lib/rum/models/rum-config.ts","../../../../projects/armature/src/lib/rum/services/softheon-error-handler.service.ts","../../../../projects/armature/src/lib/rum/rum-api.ts","../../../../projects/armature/src/lib/saml/services/send-off/abstract-saml.service.ts","../../../../projects/armature/src/lib/saml/components/redirect-saml/redirect-saml.component.ts","../../../../projects/armature/src/lib/saml/components/redirect-saml/redirect-saml.component.html","../../../../projects/armature/src/lib/saml/services/entry/abstract-saml-entry.service.ts","../../../../projects/armature/src/lib/saml/services/entry/sso-gateway-entry.service.ts","../../../../projects/armature/src/lib/saml/services/send-off/saml.service.ts","../../../../projects/armature/src/lib/saml/saml.module.ts","../../../../projects/armature/src/lib/saml/models/redirect-saml-request.ts","../../../../projects/armature/src/lib/saml/models/sso-gateway-model.ts","../../../../projects/armature/src/lib/saml/saml-api.ts","../../../../projects/armature/src/lib/theming/models/css-override.ts","../../../../projects/armature/src/lib/theming/theme-api.ts","../../../../projects/armature/src/lib/alert-banner/alert-banner-api.ts","../../../../projects/armature/src/lib/base-components/sof-callout/sof-callout.component.ts","../../../../projects/armature/src/lib/base-components/sof-callout/sof-callout.component.html","../../../../projects/armature/src/lib/base-components/sof-bottom-sheet/sof-bottom-sheet.component.ts","../../../../projects/armature/src/lib/base-components/sof-bottom-sheet/sof-bottom-sheet.component.html","../../../../projects/armature/src/lib/base-components/sof-chip/sof-chip.component.ts","../../../../projects/armature/src/lib/base-components/sof-chip/sof-chip.component.html","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/constants/constants.ts","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-date/sof-date.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.ts","../../../../projects/armature/src/lib/sof-pipe/sof-pipe.module.ts","../../../../projects/armature/src/lib/sof-pipe/sof-pipe.api.ts","../../../../projects/armature/src/lib/resize-panels/components/resize-panels/resize-panels.component.ts","../../../../projects/armature/src/lib/resize-panels/components/resize-panels/resize-panels.component.html","../../../../projects/armature/src/lib/resize-panels/resize-panels.module.ts","../../../../projects/armature/src/lib/resize-panels/resize-panels-api.ts","../../../../projects/armature/src/lib/feedback-tool/components/feedback-tool/feedback-tool.component.ts","../../../../projects/armature/src/lib/feedback-tool/components/feedback-tool/feedback-tool.component.html","../../../../projects/armature/src/lib/feedback-tool/feedback-tool.module.ts","../../../../projects/armature/src/lib/feedback-tool/feedback-tool-api.ts","../../../../projects/armature/src/lib/component-save-print/services/component-save-print.service.ts","../../../../projects/armature/src/lib/component-save-print/components/component-save-print/component-save-print.component.ts","../../../../projects/armature/src/lib/component-save-print/components/component-save-print/component-save-print.component.html","../../../../projects/armature/src/lib/component-save-print/sof-ar-component-save-print.module.ts","../../../../projects/armature/src/lib/mfe/services/entity-helper.service.ts","../../../../projects/armature/src/lib/mfe/mfe.module.ts","../../../../projects/armature/src/lib/mfe/components/entity-base/entity-base.component.ts","../../../../projects/armature/src/lib/mfe/models/entity-dto.ts","../../../../projects/armature/src/lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component.ts","../../../../projects/armature/src/lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component.html","../../../../projects/armature/src/public-api.ts","../../../../projects/armature/src/softheon-armature.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nimport { AlertBannerConfig } from './alert-banner-config';\r\n\r\n/** The banner configs */\r\nexport const ALERT_BANNER_CONFIG: InjectionToken<AlertBannerConfig> = new InjectionToken<AlertBannerConfig>('AlertBannerConfig');\r\n\r\n/** Banner Type */\r\nexport enum BannerType {\r\n\r\n /** Error */\r\n Error = 'error',\r\n\r\n /** Warn */\r\n Warn = 'warn',\r\n\r\n /** Information */\r\n Information = 'information',\r\n\r\n /** Success */\r\n Success = 'success'\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AlertBannerContext } from '../models/alert-banner-context';\r\nimport { BannerType } from '../models/constants';\r\n\r\n/**\r\n * Alert Banner Service\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertBannerService {\r\n\r\n /** Banner context */\r\n public bannerContext: AlertBannerContext = { bannerType: BannerType.Information };\r\n\r\n /** Whether or not the show banner */\r\n public showBanner: boolean;\r\n\r\n /** Constructor */\r\n public constructor() { }\r\n\r\n /**\r\n * Show Message\r\n * @param bannerType Banner Type \r\n * @param isFilledBanner Is filled banner\r\n * @param bannerTitle Title \r\n * @param bannerText Text\r\n * @param translateParam Translate param\r\n * @param showClose Show close or not\r\n */\r\n public showMessage (\r\n bannerType: BannerType, \r\n isFilledBanner: boolean, \r\n bannerTitle: string = undefined, \r\n bannerText: string = undefined,\r\n translateParam: any = {},\r\n showClose: boolean = false\r\n ) {\r\n this.showBanner = true;\r\n this.bannerContext.bannerType = bannerType;\r\n this.bannerContext.isFilledBanner = isFilledBanner;\r\n this.bannerContext.bannerTitle = bannerTitle;\r\n this.bannerContext.bannerText = bannerText;\r\n this.bannerContext.translateParam = translateParam;\r\n this.bannerContext.showClose = showClose;\r\n }\r\n\r\n /** Close Message */\r\n public closeMessage(): void {\r\n this.showBanner = false;\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Inject, Input, Optional, Renderer2, ViewChild } from '@angular/core';\r\n\r\nimport { AlertBannerConfig } from '../../models/alert-banner-config';\r\nimport { AlertBannerContext } from '../../models/alert-banner-context';\r\nimport { ALERT_BANNER_CONFIG } from '../../models/constants';\r\nimport { AlertBannerService } from '../../services/alert-banner.service';\r\n\r\n/**\r\n * Alert Banner Component\r\n * @deprecated please use `SofCallout` instead\r\n */\r\n@Component({\r\n selector: 'sof-ar-alert-banner',\r\n templateUrl: './alert-banner.component.html',\r\n styleUrls: ['./alert-banner.component.scss'],\r\n standalone: false\r\n})\r\nexport class AlertBannerComponent implements AfterViewInit {\r\n\r\n /** Context, if provided, it will use the context data rather than the alert service context */\r\n @Input() context?: AlertBannerContext;\r\n\r\n /** Banner Container */\r\n @ViewChild(\"alertBannerContainer\") alertBannerContainer: ElementRef;\r\n\r\n /** Display context */\r\n public get displayContext(): AlertBannerContext {\r\n return this.context ? this.context : this.alertBannerService.bannerContext;\r\n }\r\n\r\n /** Should show banner */\r\n public get showBanner(): boolean {\r\n return !!this.context ? !this.context.hideBanner : this.alertBannerService.showBanner;\r\n }\r\n\r\n /**\r\n * Constructor\r\n * @param bannerConfig Banner Config\r\n * @param alertBannerService Alert Banner Service\r\n * @param renderer The Angular renderer\r\n */\r\n public constructor(\r\n @Optional() @Inject(ALERT_BANNER_CONFIG) private bannerConfig: AlertBannerConfig,\r\n private alertBannerService: AlertBannerService,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n /** Update style */\r\n public ngAfterViewInit(): void {\r\n const theme = this.bannerConfig || { lineColor: {}, outlineSidebar: {}, filledBackground: {} };\r\n\r\n this.updateStyle('--error-color', theme.lineColor.error);\r\n this.updateStyle('--info-color', theme.lineColor.information);\r\n this.updateStyle('--success-color', theme.lineColor.success);\r\n this.updateStyle('--warn-color', theme.lineColor.warn);\r\n\r\n this.updateStyle('--outline-side-error-color', theme.outlineSidebar.error);\r\n this.updateStyle('--outline-side-info-color', theme.outlineSidebar.information);\r\n this.updateStyle('--outline-side-success-color', theme.outlineSidebar.success);\r\n this.updateStyle('--outline-side-warn-color', theme.outlineSidebar.warn);\r\n\r\n this.updateStyle('--content-filled-error-color', theme.filledBackground.error);\r\n this.updateStyle('--content-filled-info-color', theme.filledBackground.information);\r\n this.updateStyle('--content-filled-success-color', theme.filledBackground.success);\r\n this.updateStyle('--content-filled-warn-color', theme.filledBackground.warn);\r\n }\r\n\r\n /** Hides the banner */\r\n public hideBanner(): void {\r\n !!this.context ? this.context.hideBanner = true : this.alertBannerService.closeMessage();\r\n }\r\n\r\n /**\r\n * Update Style\r\n * @param propertyName The property name \r\n * @param color The color\r\n */\r\n private updateStyle(propertyName: string, color: string): void {\r\n const nativeElement = this.alertBannerContainer?.nativeElement;\r\n if (color) {\r\n this.renderer.setStyle(nativeElement, propertyName, color, 2);\r\n }\r\n }\r\n}\r\n","<div #alertBannerContainer [ngClass]=\"{ 'sof-ar-alert-banner-container': showBanner }\">\r\n <div fxLayout=\"row\" *ngIf=\"showBanner\"\r\n class=\"sof-ar-alert-banner-{{displayContext.bannerType}} sof-ar-alert-banner-content {{(displayContext.isFilledBanner) ? 'filled' : 'outlined'}}-{{displayContext.bannerType}}\">\r\n <div class=\"sof-ar-alert-banner-sidebar\"></div>\r\n <div class=\"sof-ar-alert-banner-content-container\" fxLayout=\"row\">\r\n <div class=\"sof-ar-alert-banner-icon-container\">\r\n <ng-container [ngSwitch]=\"displayContext.bannerType\">\r\n <mat-icon *ngSwitchCase=\"'error'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-exclamation-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'warn'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-exclamation-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'information'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-info-circle'\"></mat-icon>\r\n <mat-icon *ngSwitchCase=\"'success'\" class=\"sof-ar-alert-banner-icon\" [fontSet]=\"'fal'\"\r\n [fontIcon]=\"'fa-check-circle'\"></mat-icon>\r\n </ng-container>\r\n </div>\r\n <div style=\"width: 100%\" fxLayout=\"column\" fxLayoutGap=\"10px\" fxLayoutAlign=\"center\">\r\n <div *ngIf=\"displayContext.bannerTitle\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <h4 class=\"sof-ar-alert-banner-title\" [innerHtml]=\"displayContext.bannerTitle | translate: displayContext.translateParam\"></h4>\r\n <span *ngIf=\"displayContext.showClose\" (click)=\"hideBanner()\">\r\n <i class=\"fal fa-2x fa-times\"></i>\r\n </span>\r\n </div>\r\n <div *ngIf=\"displayContext.bannerText\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\r\n <p class=\"sof-ar-alert-banner-text\" [innerHtml]=\"displayContext.bannerText | translate: displayContext.translateParam\"></p>\r\n <span (click)=\"hideBanner()\" *ngIf=\"!displayContext.bannerTitle && displayContext.showClose\">\r\n <i class=\"fal fa-2x fa-times\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { AlertBannerComponent } from './components/alert-banner/alert-banner.component';\r\nimport { AlertBannerService } from './services/alert-banner.service';\r\n\r\nconst materialModules = [\r\n MatIconModule\r\n]\r\n\r\n/** @deprecated use sof-alert | sof-simple-alert moving forward. */\r\n@NgModule({\r\n declarations: [AlertBannerComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n providers: [\r\n AlertBannerService\r\n ],\r\n exports: [\r\n AlertBannerComponent\r\n ]\r\n})\r\nexport class AlertBannerModule { }\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = contentTypes.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = accepts.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime != null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n *//* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { SessionGetResponseModel } from '../model/sessionGetResponseModel';\r\nimport { SessionPostRequestModel } from '../model/sessionPostRequestModel';\r\nimport { SessionPostResponseModel } from '../model/sessionPostResponseModel';\r\nimport { SessionPutRequestModel } from '../model/sessionPutRequestModel';\r\nimport { SessionPutResponseModel } from '../model/sessionPutResponseModel';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n@Injectable()\r\nexport class SessionService {\r\n\r\n protected basePath = '/';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n if (basePath) {\r\n this.basePath = basePath;\r\n }\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.basePath = basePath || configuration.basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Gets the session by id\r\n * \r\n * @param sessionId The session Id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<SessionGetResponseModel>;\r\n public getSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<SessionGetResponseModel>>;\r\n public getSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<SessionGetResponseModel>>;\r\n public getSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling getSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<SessionGetResponseModel>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the session\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refreshSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refreshSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refreshSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refreshSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling refreshSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/refresh`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Registers a session\r\n * \r\n * @param body The request model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'body', reportProgress?: boolean): Observable<SessionPostResponseModel>;\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<SessionPostResponseModel>>;\r\n public registerSession(body?: SessionPostRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<SessionPostResponseModel>>;\r\n public registerSession(body?: SessionPostRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<SessionPostResponseModel>('post',`${this.basePath}/v1/Session`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates the session with the given id\r\n * \r\n * @param sessionId The session id\r\n * @param body The model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public registerSessionById(sessionId: string, body?: SessionPostRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling registerSessionById.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('post',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the session\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public removeSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public removeSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public removeSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public removeSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling removeSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('delete',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Syncs the session by id\r\n * \r\n * @param sessionId The session id\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public syncSessionById(sessionId: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public syncSessionById(sessionId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public syncSessionById(sessionId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public syncSessionById(sessionId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling syncSessionById.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/sync`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the Session\r\n * \r\n * @param sessionId The session id\r\n * @param body The request model\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public updateSessionById(sessionId: string, body?: SessionPutRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (sessionId === null || sessionId === undefined) {\r\n throw new Error('Required parameter sessionId was null or undefined when calling updateSessionById.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('put',`${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport { SessionConfig } from './session-config';\r\nimport { UserEntityServiceConfig } from './user-entity-service-config';\r\n\r\n// Injection tokens\r\n/** The session configs */\r\nexport const SESSION_CONFIG: InjectionToken<SessionConfig> = new InjectionToken<SessionConfig>('SessionConfig');\r\n\r\n/** The window interface */\r\nexport const WINDOW: InjectionToken<Window> = new InjectionToken<Window>('Window');\r\n\r\n/** The user entity service configs */\r\nexport const USER_ENTITY_SERVICE_CONFIG: InjectionToken<UserEntityServiceConfig> = new InjectionToken<UserEntityServiceConfig>('UserEntityServiceConfig');\r\n\r\n/** The pre sign in route storage key */\r\nexport const preSignInRouteStorageKey: string = 'preSignInRoute';\r\n\r\n/** The language storage key */\r\nexport const languageStorageKey: string = 'language';\r\n\r\n/** The federated module configuration storage key */\r\nexport const federatedModuleConfigStorageKey: string = 'sofAr-federatedModule-config';\r\n\r\n/** The federated module id of the application, this should be set when the application is allowed to run as a federated module */\r\nexport const FEDERATED_MODULE_ID: InjectionToken<string> = new InjectionToken<string>('FederatedModuleId');\r\n","import { Router } from '@angular/router';\r\nimport { preSignInRouteStorageKey } from '../models/constants';\r\n\r\n/**\r\n * Routes to the pre login in route\r\n * @param router The router\r\n */\r\nexport const routeToPreLoginRoute = (router: Router) => {\r\n const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);\r\n if (preservedRoute) {\r\n router.navigateByUrl(preservedRoute);\r\n window.sessionStorage.removeItem(preSignInRouteStorageKey);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { BaseConfig } from '../models/base-config';\r\n\r\n/** The base config service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class BaseConfigService<T = BaseConfig> {\r\n\r\n /** The configuration behavior subject */\r\n private readonly configBs: BehaviorSubject<T> = new BehaviorSubject<T>(undefined);\r\n\r\n /** Gets the configurations */\r\n public get config(): T {\r\n return this.configBs.value;\r\n }\r\n\r\n /**\r\n * sets the configs\r\n * @param value The new configuration value\r\n */\r\n public set config(value: T) {\r\n this.configBs.next(value);\r\n }\r\n\r\n /** The configuration observable */\r\n public readonly config$: Observable<T>;\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n this.config$ = this.configBs.asObservable();\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { federatedModuleConfigStorageKey, FEDERATED_MODULE_ID, WINDOW } from '../models/constants';\r\nimport { FederatedModuleConfig } from '../models/federated-module-config';\r\n\r\n/** The federated module service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FederatedModuleService {\r\n\r\n /** The federated module configuration */\r\n public get federatedModuleConfig(): FederatedModuleConfig {\r\n if (this.federatedModuleId) {\r\n const configs = this.federatedModuleConfigDict;\r\n return configs.get(this.federatedModuleId);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** True when application is running as a federated module */\r\n public get isFederatedModule(): boolean {\r\n return !!this.federatedModuleConfig\r\n }\r\n\r\n /** Gets the federated module config dictionary */\r\n private get federatedModuleConfigDict(): Map<string, FederatedModuleConfig> {\r\n const storageItem = this.window.sessionStorage.getItem(federatedModuleConfigStorageKey);\r\n if (!storageItem) {\r\n return undefined;\r\n }\r\n const dict = JSON.parse(storageItem) as {[key: string]: FederatedModuleConfig};\r\n const result = new Map<string, FederatedModuleConfig>();\r\n Object.keys(dict).forEach(key => {\r\n result.set(key, dict[key]);\r\n });\r\n return result;\r\n }\r\n\r\n /** The window interface */\r\n private readonly window: Window\r\n\r\n /**\r\n * Constructs the service\r\n * @param _window The browser window\r\n * @param federatedModuleId The federated module id\r\n */\r\n constructor(\r\n @Optional() @Inject(WINDOW) private readonly _window: any,\r\n @Optional() @Inject(FEDERATED_MODULE_ID) public readonly federatedModuleId: string\r\n ) {\r\n this.window = _window || window;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service for managing the banner\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BannerService {\r\n\r\n /** Observable for whether the banner should be shown */\r\n public showBanner$: Observable<boolean>;\r\n\r\n /** Observable for the banner message */\r\n public message$: Observable<string>;\r\n\r\n /** Observable for whether of not to show the check mark on the banner */\r\n public showCheckMark$: Observable<boolean>;\r\n\r\n /** Behavior subject for show banner */\r\n private showBanner: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** Behavior subject for banner message */\r\n private message: BehaviorSubject<string> = new BehaviorSubject<string>(undefined);\r\n\r\n /** Behavior subject for whether to show check mark or not */\r\n private showCheckMark: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n constructor(\r\n ) {\r\n this.showBanner$ = this.showBanner.asObservable();\r\n this.message$ = this.message.asObservable();\r\n this.showCheckMark$ = this.showCheckMark.asObservable();\r\n }\r\n\r\n /**\r\n * Shows the messaage in the banner\r\n * @param message The banner message\r\n */\r\n public showMessage(message: string, showCheckMark: boolean = true): void {\r\n this.showBanner.next(true);\r\n this.message.next(message);\r\n this.showCheckMark.next(showCheckMark);\r\n }\r\n\r\n /**\r\n * Hide Notification Message \r\n */\r\n public hideMessage(): void {\r\n this.showBanner.next(false);\r\n }\r\n\r\n}\r\n","// tslint:disable: variable-name\r\n/** The access token claims */\r\nexport class AccessTokenClaims {\r\n\r\n private role: string | Array<string>;\r\n\r\n /** The given name of the user */\r\n public given_name: string;\r\n\r\n /** The family name (last name) */\r\n public family_name: string;\r\n\r\n /** The name of the user */\r\n public name: string;\r\n\r\n /** The preferred username of the user */\r\n public preferred_username: string;\r\n\r\n /** The upn */\r\n public upn: string;\r\n\r\n /** The roles of the user */\r\n public get getRole(): Array<string> {\r\n if (typeof this.role === 'string') {\r\n this.role = [this.role];\r\n }\r\n\r\n return this.role;\r\n }\r\n\r\n /** constructs the claims from an existing claims object */\r\n constructor(claims?: AccessTokenClaims) {\r\n if (claims) {\r\n this.role = claims.role;\r\n this.given_name = claims.given_name;\r\n this.family_name = claims.family_name;\r\n this.name = claims.name;\r\n this.preferred_username = claims.preferred_username;\r\n this.upn = claims.upn;\r\n }\r\n }\r\n}\r\n","import { AccessTokenClaims } from './access-token-claims';\r\n\r\n// tslint:disable: variable-name no-unused-expression\r\n/** The access token claims class */\r\nexport class DecodedAccessToken {\r\n\r\n private aud: string | Array<string>;\r\n private scope: string | Array<string>;\r\n private _claims: AccessTokenClaims;\r\n\r\n /** The authentication methods array */\r\n public amr: Array<string>;\r\n\r\n /** Time when authentication occurred */\r\n public auth_time: number;\r\n\r\n /** The client used to get the token */\r\n public client_id: string;\r\n\r\n /** Expiration time, seconds since Unix epoch */\r\n public exp: number;\r\n\r\n /** The identity provider */\r\n public idp: string;\r\n\r\n /** Issuer, who created and signed this token */\r\n public iss: string;\r\n\r\n /** Not valid before, seconds since Unix epoch */\r\n public nbf: number;\r\n\r\n /** Subject, whom the token refers to */\r\n public sub: string;\r\n\r\n /** The scopes the token was requested with */\r\n public get getScope(): Array<string> {\r\n if (typeof this.scope === 'string') {\r\n this.scope = [this.scope];\r\n }\r\n\r\n return this.scope;\r\n }\r\n\r\n /** The audience, who or what the token is intended for */\r\n public get getAud(): Array<string> {\r\n if (typeof this.aud === 'string') {\r\n this.aud = [this.aud];\r\n }\r\n\r\n return this.aud;\r\n }\r\n\r\n /** Gets claims for the user associated with the access token */\r\n public get claims(): AccessTokenClaims {\r\n return this._claims;\r\n }\r\n\r\n /** Sets claims for the user associate with the access token */\r\n public set claims(value: AccessTokenClaims) {\r\n this._claims = new AccessTokenClaims(value);\r\n }\r\n\r\n /**\r\n * Constructs the access Token\r\n * @param encodedToken The encoded Auth Token\r\n */\r\n constructor(encodedToken: string) {\r\n const base64Url = encodedToken.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+')\r\n .replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64)\r\n .split('')\r\n .map(c =>\r\n // tslint:disable-next-line: restrict-plus-operands prefer-template\r\n '%' + ('00' + c.charCodeAt(0)\r\n .toString(16))\r\n .slice(-2))\r\n .join(''));\r\n const decodedToken: DecodedAccessToken = JSON.parse(jsonPayload);\r\n this.setAllProps(decodedToken);\r\n this.convertAllDualTypes();\r\n }\r\n\r\n /** Converts all the dual types to single types */\r\n private convertAllDualTypes(): void {\r\n this.getAud;\r\n this.getScope;\r\n }\r\n\r\n /**\r\n * Sets all the properties from an existing object\r\n * @param decodedToken The decoded token object\r\n */\r\n private setAllProps(decodedToken: DecodedAccessToken): void {\r\n this.amr = decodedToken.amr;\r\n this.aud = decodedToken.aud;\r\n this.auth_time = decodedToken.auth_time;\r\n this.client_id = decodedToken.client_id;\r\n this.exp = decodedToken.exp;\r\n this.idp = decodedToken.idp;\r\n this.iss = decodedToken.iss;\r\n this.nbf = decodedToken.nbf;\r\n this.scope = decodedToken.scope;\r\n this.sub = decodedToken.sub;\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { HybridSamlOAuthConfig } from './hybrid-saml-oauth-config';\r\n\r\n/** The hybrid saml oauth config injection token */\r\nexport const HYBRID_SAML_OAUTH_CONFIG: InjectionToken<HybridSamlOAuthConfig> = new InjectionToken<HybridSamlOAuthConfig>('HybridSamlOAuthConfig');\r\n\r\n/** The key path prefix */\r\nexport const keyPathPrefix: string = 'SsoGateway-';\r\n","/**\r\n * converts object keys to camel case\r\n * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase\r\n * @param o The object\r\n */\r\nexport const pascalToCamel = (o: any): any => {\r\n let newO;\r\n let origKey;\r\n let newKey;\r\n let value;\r\n if (o instanceof Array) {\r\n return o.map((value: any) => {\r\n if (typeof value === 'object') {\r\n value = pascalToCamel(value);\r\n }\r\n\r\n return value;\r\n });\r\n }\r\n newO = {};\r\n // tslint:disable-next-line: no-for-in\r\n for (origKey in o) {\r\n if (o.hasOwnProperty(origKey)) {\r\n newKey = (`${origKey.charAt(0).toLowerCase()}${origKey.slice(1) || origKey}`).toString();\r\n value = o[origKey];\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = pascalToCamel(value);\r\n }\r\n newO[newKey] = value;\r\n }\r\n }\r\n\r\n return newO;\r\n};\r\n","import { Observable } from 'rxjs';\r\n\r\n/** The hybrid saml oauth configuration */\r\nexport class HybridSamlOAuthConfig {\r\n /** The token endpoint observable */\r\n public tokenEndpoint$: Observable<string>;\r\n\r\n /** The key path suffix */\r\n public keyPathSuffix: string;\r\n\r\n /** The browser storage location to use */\r\n public browserStorageImplementation?: 'local' | 'session';\r\n\r\n /** The token refresh time in minutes */\r\n public tokenRefreshTimeMinutes?: number;\r\n\r\n /** The data format */\r\n public dataFormat?: 'camelCase' | 'PascalCase';\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { WINDOW } from '../../core/models/constants';\r\nimport { DecodedAccessToken } from '../../rbac/models/decoded-access-token';\r\nimport { HYBRID_SAML_OAUTH_CONFIG, keyPathPrefix } from '../models/constants';\r\nimport { ISsoResponseModel } from '../models/generated/iSsoResponseModel';\r\nimport { HybridSamlOAuthConfig } from '../models/hybrid-saml-oauth-config';\r\nimport { pascalToCamel } from '../../core/functions/naming-convention';\r\nimport { AccountManagementRefreshRequestModel } from '../models/generated/accountManagementRefreshRequestModel';\r\nimport { RefreshResponseModel } from '../models/generated/refreshResponseModel';\r\n\r\n/** The hybrid SAML Oauth Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HybridSamlOauthService {\r\n\r\n /** The key path used for getting values from local storage */\r\n public readonly keyPath: string;\r\n\r\n /** The oauth access token */\r\n public get accessToken(): string {\r\n return this._accessToken;\r\n }\r\n\r\n /** The access token observable */\r\n public accessToken$: Observable<string>;\r\n\r\n /** Gets the hash */\r\n public get hash(): string {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n return (this.rawData as any).Hash\r\n }\r\n\r\n return this.rawData.hash;\r\n }\r\n\r\n /** The raw data from local storage */\r\n private rawData: ISsoResponseModel;\r\n\r\n /** The access token */\r\n private _accessToken: string;\r\n\r\n /** The window */\r\n private readonly window: Window;\r\n\r\n /** The behavior subject for the access token */\r\n private readonly accessTokenBs: BehaviorSubject<string>;\r\n\r\n /** The armature access token key */\r\n private readonly accessTokenSessionStorageKey: string = 'Sof-Arm-Access-Token';\r\n\r\n /** The token endpoint */\r\n private tokenEndpoint: string;\r\n\r\n /**\r\n * constructs the service\r\n * @param windowGeneric The window interface\r\n * @param config The service configurations\r\n * @param httpClient The http client\r\n */\r\n constructor(\r\n @Optional() @Inject(WINDOW) private readonly windowGeneric: any,\r\n @Optional() @Inject(HYBRID_SAML_OAUTH_CONFIG) private readonly config: HybridSamlOAuthConfig,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n // set the window to be strongly typed, compile error makes it so it can't be done in the constructor\r\n this.window = this.windowGeneric || window;\r\n\r\n if (!this.config) {\r\n console.warn('HybridSamlOauthService skipping initialization, please add HYBRID_SAML_OAUTH_CONFIG to your providers to use the service');\r\n return;\r\n }\r\n const refreshTimeMinutes = this.config?.tokenRefreshTimeMinutes || 20; // use 20 min token refresh time if non provided\r\n\r\n // set the token endpoint\r\n if (this.config?.tokenEndpoint$) {\r\n this.config.tokenEndpoint$.subscribe(endpoint => this.tokenEndpoint = endpoint);\r\n }\r\n else {\r\n console.warn('HYBRID_SAML_OAUTH_CONFIG.tokenEndpoint$ is not provided');\r\n }\r\n\r\n // set the key path from the key path prefix and suffix\r\n this.keyPath = `${keyPathPrefix}${this.config?.keyPathSuffix}`;\r\n\r\n // read values from local storage based on the key path\r\n const rawData = this.getRawData();\r\n if (!rawData) {\r\n const token = this.window.sessionStorage.getItem(this.accessTokenSessionStorageKey);\r\n this._accessToken = token;\r\n }\r\n else {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n this.rawData = JSON.parse(rawData);\r\n this._accessToken = (this.rawData as any).AccessToken;\r\n }\r\n else {\r\n this.rawData = this.toCamel(JSON.parse(rawData));\r\n this._accessToken = this.rawData.accessToken;\r\n }\r\n // populate the access token\r\n this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, this._accessToken);\r\n }\r\n\r\n // set up the observable and behavior subject\r\n this.accessTokenBs = new BehaviorSubject(this._accessToken);\r\n this.accessToken$ = this.accessTokenBs.asObservable();\r\n\r\n try {\r\n if (this.accessToken) {\r\n const decoded = new DecodedAccessToken(this.accessToken);\r\n const currentDateMiliS = new Date().getTime();\r\n if ((decoded.exp * 1000) <= currentDateMiliS + (refreshTimeMinutes * 60000)) {\r\n this.refreshToken(this.tokenEndpoint);\r\n }\r\n }\r\n else {\r\n console.warn('Starting HybridSamlOAuthService without token');\r\n }\r\n }\r\n catch (e) {\r\n console.warn('starting HybridSamlOAuthService without token or malformed token', this.accessToken, e);\r\n }\r\n setInterval(() => {\r\n this.refreshToken(this.tokenEndpoint);\r\n }, refreshTimeMinutes * 60000); // x minutes times number of milliseconds in a minute\r\n }\r\n\r\n /** Returns the raw data casted to the provided type */\r\n public getAssertionData<T>(): T {\r\n if (this.config.dataFormat === 'PascalCase') {\r\n if (!this.rawData || !((this.rawData as any).Assertions)) {\r\n return undefined;\r\n }\r\n\r\n return (this.rawData as any).Assertions as T;\r\n }\r\n else {\r\n if (!this.rawData || !this.rawData.assertions) {\r\n return undefined;\r\n }\r\n\r\n return this.rawData.assertions as T;\r\n }\r\n }\r\n\r\n /**\r\n * Expires the session by clearing the service and local storage\r\n * @param shouldExpireBoth True if the both session and local storage should be expired\r\n */\r\n public expireSession(shouldExpireBoth: boolean = false): void {\r\n if (shouldExpireBoth) {\r\n this.window.localStorage.removeItem(this.keyPath);\r\n this.window.sessionStorage.removeItem(this.keyPath);\r\n this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);\r\n this.rawData = undefined;\r\n\r\n return;\r\n }\r\n\r\n if (this.config?.browserStorageImplementation === 'session') {\r\n this.window.sessionStorage.removeItem(this.keyPath);\r\n }\r\n else {\r\n this.window.localStorage.removeItem(this.keyPath);\r\n }\r\n this.window.sessionStorage.removeItem(this.accessTokenSessionStorageKey);\r\n\r\n this.rawData = undefined;\r\n }\r\n\r\n /**\r\n * Refreshes the access token using the provided endpoint\r\n * @param tokenEndpoint The full token endpoint\r\n */\r\n private refreshToken(tokenEndpoint: string): void {\r\n if (!this.rawData) {\r\n console.warn('No sso response model');\r\n return;\r\n }\r\n // make api call to get a token, uses assertions, hash, and assertion provider implementation string\r\n const req: AccountManagementRefreshRequestModel = {\r\n ssoResponseModel: this.rawData\r\n };\r\n this.httpClient.post<RefreshResponseModel>(tokenEndpoint, req)\r\n .pipe(\r\n map(res => {\r\n if (this.config?.dataFormat === 'PascalCase') {\r\n (this.rawData as any).AccessToken = res.accessToken;\r\n }\r\n else {\r\n this.rawData.accessToken = res.accessToken;\r\n }\r\n this._accessToken = res.accessToken;\r\n this.window.localStorage.setItem(this.keyPath, JSON.stringify(this.rawData));\r\n this.window.sessionStorage.setItem(this.accessTokenSessionStorageKey, res.accessToken);\r\n this.accessTokenBs.next(this._accessToken);\r\n }),\r\n catchError(error => {\r\n console.error(error);\r\n\r\n return of(error);\r\n }))\r\n .subscribe(() => { });\r\n }\r\n\r\n /** gets the raw data */\r\n private getRawData(): any {\r\n const lsData = this.window.localStorage.getItem(this.keyPath);\r\n if (this.config?.browserStorageImplementation === 'session') {\r\n // first move local storage data if there is any\r\n if (lsData) {\r\n this.window.sessionStorage.setItem(this.keyPath, lsData);\r\n this.window.localStorage.removeItem(this.keyPath);\r\n }\r\n\r\n // return the session storage data\r\n return this.window.sessionStorage.getItem(this.keyPath);\r\n }\r\n\r\n // otherwise return local storage data\r\n return lsData;\r\n }\r\n\r\n /**\r\n * converts object keys to camel case\r\n * https://stackoverflow.com/questions/12931828/convert-returned-json-object-properties-to-lower-first-camelcase\r\n * @param o The object\r\n */\r\n private toCamel(o: any): any {\r\n return pascalToCamel(o);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { HybridSamlOauthService } from './services/hybrid-saml-oauth.service';\r\n\r\n/** The OAuth Module */\r\n@NgModule({\r\n imports: [CommonModule], \r\n providers: [\r\n HybridSamlOauthService,\r\n provideHttpClient(withInterceptorsFromDi())\r\n ]\r\n})\r\nexport class OauthModule { }\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The coverage detail model\r\n */\r\nexport interface CoverageDetail { \r\n /**\r\n * Gets or sets the start date.\r\n */\r\n startDate?: Date;\r\n /**\r\n * Gets or sets the end date.\r\n */\r\n endDate?: Date;\r\n /**\r\n * Gets or sets the premium amount.\r\n */\r\n premiumAmount?: number;\r\n /**\r\n * Gets or sets the tax credit amount.\r\n */\r\n taxCreditAmount?: number;\r\n /**\r\n * Gets or sets the CSR amount.\r\n */\r\n csrAmount?: number;\r\n /**\r\n * Gets or sets the status.\r\n */\r\n status?: CoverageDetail.StatusEnum;\r\n /**\r\n * Gets or sets the name of the plan.\r\n */\r\n planName?: string;\r\n /**\r\n * Gets or sets the name of the issuer.\r\n */\r\n issuerName?: string;\r\n /**\r\n * Gets or sets the plan identifier.\r\n */\r\n planId?: string;\r\n /**\r\n * Gets or sets the insurance line.\r\n */\r\n insuranceLine?: string;\r\n /**\r\n * Gets or sets the plan type.\r\n */\r\n planType?: string;\r\n}\r\nexport namespace CoverageDetail {\r\n export type StatusEnum = 'Effectuated' | 'NotEffectuated';\r\n export const StatusEnum = {\r\n Effectuated: 'Effectuated' as StatusEnum,\r\n NotEffectuated: 'NotEffectuated' as StatusEnum\r\n };\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The finance model\r\n */\r\nexport interface Finance { \r\n /**\r\n * Gets or sets the status.\r\n */\r\n status?: string;\r\n /**\r\n * Gets or sets the premium amount due.\r\n */\r\n premiumAmountDue?: number;\r\n /**\r\n * Gets or sets the current amount due.\r\n */\r\n currentAmountDue?: number;\r\n /**\r\n * Gets or sets the payment due date.\r\n */\r\n paymentDueDate?: Date;\r\n /**\r\n * Gets or sets a value indicating whether this instance has automatic pay.\r\n */\r\n hasAutoPay?: boolean;\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * The SSO response model\r\n */\r\nexport interface ISsoResponseModel { \r\n /**\r\n * Gets or sets the assertions.\r\n */\r\n assertions?: any;\r\n /**\r\n * Gets or sets the issuer.\r\n */\r\n issuer?: string;\r\n /**\r\n * Gets or sets the audience.\r\n */\r\n audience?: string;\r\n /**\r\n * Gets or sets the destination.\r\n */\r\n destination?: string;\r\n /**\r\n * Gets or sets the hash.\r\n */\r\n hash?: string;\r\n /**\r\n * Gets or sets the key path.\r\n */\r\n keyPath?: string;\r\n /**\r\n * Gets or sets the access token.\r\n */\r\n accessToken?: string;\r\n}\r\n","/**\r\n * SSO Gateway\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 2\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nimport { Address } from \"../../../forms/forms-api\";\r\n\r\n\r\n/**\r\n * The person model\r\n */\r\nexport interface Person { \r\n /**\r\n * Gets or sets the exchange identifier.\r\n */\r\n exchangeId?: string;\r\n /**\r\n * Gets or sets the issuer id\r\n */\r\n issuerId?: string;\r\n /**\r\n * Gets or sets the dob.\r\n */\r\n dob?: Date;\r\n /**\r\n * Gets or sets the gender.\r\n */\r\n gender?: string;\r\n /**\r\n * Gets or sets the first name.\r\n */\r\n firstName?: string;\r\n /**\r\n * Gets or sets the last name.\r\n */\r\n lastName?: string;\r\n /**\r\n * Gets or sets the relationship.\r\n */\r\n relationship?: string;\r\n /**\r\n * Gets or sets the address.\r\n */\r\n address?: Address;\r\n /**\r\n * Gets or sets the SSN.\r\n */\r\n ssn?: string;\r\n}\r\n","/** Public API Surface of the oauth module */\r\nexport * from './oauth.module';\r\n\r\n// services\r\nexport * from './services/hybrid-saml-oauth.service';\r\n\r\n// models\r\nexport { keyPathPrefix, HYBRID_SAML_OAUTH_CONFIG } from './models/constants';\r\nexport * from './models/hybrid-saml-oauth-config';\r\n\r\nexport * from './models/generated/accountManagementAssertionModel';\r\nexport * from './models/generated/accountManagementResponseModel';\r\nexport * from './models/generated/coverageDetail';\r\nexport * from './models/generated/finance';\r\nexport * from './models/generated/iSsoResponseModel';\r\nexport * from './models/generated/person';\r\nexport * from './models/generated/policy';\r\n","import { AuthConfig } from 'angular-oauth2-oidc';\r\n\r\n/** Custom Authorization Service */\r\nexport abstract class CustomAuthConfigService {\r\n /** Configure Auth Settings */\r\n public abstract configureAuthSettings(): Promise<AuthConfig>\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\n\r\nimport { AuthConfig, OAuthService, OAuthStorage } from \"angular-oauth2-oidc\";\r\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nimport { HeaderAuthSettings } from \"../../header/models/header-auth.settings\";\r\nimport { HybridSamlOauthService } from \"../../oauth/oauth-api\";\r\nimport { AccessTokenClaims } from \"../../rbac/rbac-api\";\r\nimport { preSignInRouteStorageKey } from \"../models/constants\";\r\nimport { CustomAuthConfigService } from './custom-auth-config.service';\r\n\r\n/** The session service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizationService {\r\n\r\n /** The claims */\r\n private claims: AccessTokenClaims;\r\n\r\n /** Authorization settings.*/\r\n public authSettings: HeaderAuthSettings;\r\n\r\n /** IsloggedIn behaviour subject **/\r\n private readonly isLoggedInBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** IsloggedIn observable **/\r\n public isLoggedIn$: Observable<boolean>;\r\n\r\n /** Determined whether is user is logged in**/\r\n public IsLoggedIn: boolean;\r\n\r\n /**\r\n * Constructs authorization service\r\n * @param authService The OAuth Service\r\n * @param httpClient The HTTPClient\r\n * @param authStorage The AuthStorage\r\n * @param hybridAuthService The Hybrid Service\r\n * @param customAuthConfigService The Custom Authorization Service\r\n */\r\n constructor(\r\n private readonly authService: OAuthService,\r\n private readonly httpClient: HttpClient,\r\n private readonly authStorage: OAuthStorage,\r\n private readonly hybridAuthService: HybridSamlOauthService,\r\n @Optional() private readonly customAuthConfigService: CustomAuthConfigService\r\n ) {\r\n this.isLoggedIn$ = this.isLoggedInBs.asObservable();\r\n }\r\n\r\n /**\r\n * Initialize Authorization Settings.\r\n * @param authSettings The Authorization settings\r\n */\r\n public initializeAuthSettings(authSettings: HeaderAuthSettings, shouldTryLogin: boolean = true): void {\r\n this.authSettings = authSettings;\r\n\r\n if (this.customAuthConfigService) {\r\n this.customAuthConfigService.configureAuthSettings().then(authConfig => {\r\n // Overwrite initial header auth setting with custom resolver\r\n this.authSettings = {\r\n ...authSettings,\r\n ...authConfig\r\n };\r\n if (shouldTryLogin) {\r\n this.handleTryLogin(authSettings.authSetOnStartup);\r\n }\r\n });\r\n }\r\n else {\r\n const authConfig = new AuthConfig({\r\n clientId: authSettings.clientId,\r\n redirectUri: authSettings.redirectUri,\r\n issuer: authSettings.issuer,\r\n scope: authSettings.scope,\r\n skipIssuerCheck: authSettings.skipIssuerCheck,\r\n timeoutFactor: authSettings.timeoutFactor || 0.75,\r\n postLogoutRedirectUri: authSettings.postLogOutUrl,\r\n loginUrl: authSettings.loginUrl,\r\n responseType: authSettings.responseType || 'code'\r\n });\r\n this.authService.configure(authConfig);\r\n this.authService.issuer = authSettings.issuer;\r\n this.authService.strictDiscoveryDocumentValidation = false;\r\n this.authService.skipIssuerCheck = true;\r\n this.authService.tokenValidationHandler = new JwksValidationHandler();\r\n this.authService.setupAutomaticSilentRefresh({}, 'access_token');\r\n this.authService.timeoutFactor = authSettings.timeoutFactor || 0.75;\r\n this.authService.responseType = authSettings.responseType || 'code';\r\n\r\n if (shouldTryLogin) {\r\n this.handleTryLogin(authSettings.authSetOnStartup);\r\n }\r\n }\r\n }\r\n\r\n /** The user name */\r\n public userName(): string {\r\n let name = '';\r\n if (this.claims.given_name) {\r\n name += this.claims.given_name;\r\n }\r\n if (name && this.claims.family_name) {\r\n name += ` ${this.claims.family_name}`;\r\n }\r\n else if (this.claims.family_name) {\r\n name += this.claims.family_name;\r\n }\r\n return name || this.claims.upn;\r\n }\r\n\r\n /**\r\n * Authorize User.\r\n */\r\n public authorizeUser(): void {\r\n if (this.authSettings) {\r\n if (!this.IsLoggedIn) {\r\n if (this.customAuthConfigService) {\r\n this.customAuthConfigService.configureAuthSettings().then(_ => {\r\n this.handleLogin();\r\n });\r\n }\r\n else {\r\n if (this.authService.issuer !== this.authSettings.issuer) {\r\n this.authService.issuer = this.authSettings.issuer;\r\n }\r\n this.handleLogin();\r\n }\r\n } else {\r\n if (this.hybridAuthService) {\r\n this.hybridAuthService.expireSession(true);\r\n }\r\n this.authService.logOut();\r\n this.authStorage.removeItem('access_token');\r\n this.isLoggedInBs.next(false);\r\n this.IsLoggedIn = false;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handle Login\r\n * @param authSetOnStartup Is auth set on startup \r\n */\r\n private handleTryLogin(authSetOnStartup: boolean): void {\r\n if (!authSetOnStartup) {\r\n this.authService.loadDiscoveryDocumentAndTryLogin()\r\n .then(() => {\r\n const token = this.authService.getAccessToken();\r\n const isValid = !!token;\r\n this.claims = this.authService.getIdentityClaims() as AccessTokenClaims;\r\n this.isLoggedInBs.next(isValid);\r\n this.IsLoggedIn = isValid;\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n else {\r\n this.authService.loadDiscoveryDocument()\r\n .then(() => {\r\n const token = this.authService.getAccessToken();\r\n const isValid = !!token;\r\n this.claims = this.authService.getIdentityClaims() as AccessTokenClaims;\r\n this.isLoggedInBs.next(isValid);\r\n this.IsLoggedIn = isValid;\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n }\r\n\r\n /** Handle Login */\r\n private handleLogin(): void {\r\n window.sessionStorage.setItem(preSignInRouteStorageKey, window.location.pathname.toLowerCase());\r\n this.authService.loadDiscoveryDocumentAndLogin()\r\n .then(logInSuccess => {\r\n if (logInSuccess) {\r\n this.isLoggedInBs.next(true);\r\n this.IsLoggedIn = true;\r\n }\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n });\r\n }\r\n}\r\n","import { MediaMatcher } from '@angular/cdk/layout';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { BaseConfig } from '../../../core/models/base-config';\r\nimport { AuthorizationService } from '../../../core/services/authorization.service';\r\nimport { BannerService } from '../../../core/services/banner.service';\r\nimport { BaseConfigService } from '../../../core/services/base-config.service';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { NavigationThemeSettings } from '../../models/nav-theme.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings } from '../../models/nav.settings';\r\nimport { NavNode, SubNavNodes } from '../../models/navigation';\r\n\r\n/**\r\n * The Navigation Component\r\n * @deprecated \r\n */\r\n@Component({\r\n selector: 'sof-ar-navigation',\r\n templateUrl: './navigation.component.html',\r\n styleUrls: ['./navigation.component.scss'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }],\r\n standalone: false\r\n})\r\nexport class ArmatureNavigationComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /** The parent stepper */\r\n @ViewChild('vertStepper') public stepper: MatStepper;\r\n\r\n /** The side mobile nav */\r\n @ViewChild('snav') public sidenav: MatSidenav;\r\n\r\n /** The mobile expansion panel for progress menu */\r\n @ViewChild('panel') public expansionPanel: MatExpansionPanel;\r\n\r\n /** The child steppers */\r\n @ViewChildren('vertStepperInner') public innerSteppers: QueryList<MatStepper>;\r\n\r\n /** Component Input - the navigation data */\r\n @Input() public navigationData: NavNode[];\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public settings: NavigationSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public advancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public themeSettings: NavigationThemeSettings = {};\r\n\r\n /** Component Input - the navigation language settings */\r\n @Input() public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** logOut text **/\r\n @Input() public logOutText: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** gets the non used language */\r\n public get otherLangText(): string {\r\n return this.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** Whether side nav is open or not */\r\n public isNavOpen: boolean = false;\r\n\r\n /** Mobile SubNav - whether or not the mobile SubNav is open */\r\n public isMobileSubNavOpen: boolean = false;\r\n\r\n /** Mobile SubNav -the data to be passed to the mobile SubNav */\r\n public currentMobileNav: NavNode;\r\n\r\n /** Settings - the main menu text that appears in the mobile SubNav */\r\n public mainMenuText: string;\r\n\r\n /** the mobile query */\r\n public mobileQuery: MediaQueryList;\r\n\r\n /** The selected parent index */\r\n public selectedParentIndex: number = 0;\r\n\r\n /** The selected child index */\r\n public selectedChildIndexes: { [key: number]: number } = {};\r\n\r\n /** The navigation progress count */\r\n public navProgressCount: number = 0;\r\n\r\n /** The current active parent node */\r\n public activeParentNode: NavNode;\r\n\r\n /** The current active sub node */\r\n public activeSubNode: SubNavNodes;\r\n\r\n /** True if the expansion panel is open */\r\n public panelOpenState: boolean = false;\r\n\r\n /** The footer navigation data */\r\n public footerNavigationData: NavNode[]\r\n\r\n /** user name **/\r\n public userName: string;\r\n\r\n /** The config observable */\r\n public config$: Observable<BaseConfig>;\r\n\r\n /** The parent node index to be set when nav is toggled to progress menu style */\r\n public toggleProgressNavParentIndex: number;\r\n\r\n /** The child node index to be set when nav is toggled to progress menu style */\r\n public toggleProgressNavChildIndex: number;\r\n\r\n /** the mobile query listener2 */\r\n private readonly _mobileQueryListener: () => void;\r\n\r\n /** The nav bind subscription */\r\n private navBindSub: Subscription = new Subscription();\r\n\r\n /** The message to display */\r\n public message: string;\r\n\r\n /** Whether we should the message */\r\n public showMessage: boolean = false;\r\n\r\n /** Whether should show check mark or not */\r\n public showCheckMark: boolean = true;\r\n\r\n /** The nav bind subscription */\r\n private logInSubscription: Subscription = new Subscription();\r\n\r\n /** The count of footer items*/\r\n public footerItemCount: number;\r\n\r\n /** The banner subscription */\r\n private bannerSubscription: Subscription = new Subscription();\r\n\r\n /** The config subscription */\r\n public configSubscription: Subscription = new Subscription();\r\n\r\n /** The sidenav subscription */\r\n private sideNavSub: Subscription = new Subscription();\r\n\r\n /**\r\n * the constructor\r\n * @param changeDetectorRef the change detector reference\r\n * @param media the media matcher\r\n * @param router The router\r\n * @param bannerService The Banner Service\r\n * @param activatedRoute The activated route\r\n * @param configService The config service\r\n */\r\n constructor(\r\n readonly changeDetectorRef: ChangeDetectorRef,\r\n readonly media: MediaMatcher,\r\n private readonly router: Router,\r\n private bannerService: BannerService,\r\n private readonly authorizationService: AuthorizationService,\r\n @Optional() private readonly configService: BaseConfigService\r\n ) {\r\n this.mobileQuery = media.matchMedia('(max-width: 959px)');\r\n this._mobileQueryListener = () => {\r\n changeDetectorRef.detectChanges();\r\n // close the sidenav when screen size is changed\r\n if (!this.mobileQuery.matches && this.settings.menuStyle === 'progress') {\r\n this.sidenav.close();\r\n }\r\n };\r\n // below if statement is for edge support since addEventListener doesn't exist for MediaQueryLists\r\n if (this.mobileQuery.addEventListener) {\r\n this.mobileQuery.addEventListener('change', this._mobileQueryListener);\r\n }\r\n else {\r\n this.mobileQuery.addListener(this._mobileQueryListener);\r\n }\r\n }\r\n\r\n /** On Init - configure the settings */\r\n public ngOnInit(): void {\r\n\r\n this.bannerSubscription.add(this.bannerService.showBanner$.subscribe(val => this.showMessage = val));\r\n this.bannerSubscription.add(this.bannerService.message$.subscribe(val => this.message = val));\r\n this.bannerSubscription.add(this.bannerService.showCheckMark$.subscribe(val => this.showCheckMark = val));\r\n\r\n this.footerNavigationData = this.navigationData?.filter(node => node?.altLocation == true);\r\n this.footerItemCount = this.footerNavigationData ? this.footerNavigationData.length : 0;\r\n this.navigationData = this.navigationData?.filter(node => node?.altLocation != true);\r\n\r\n // if parents have no route, grab first route of child\r\n this.navigationData?.forEach(n => {\r\n if (!n.route) {\r\n n.route = n.subNodes && n.subNodes.length > 0 ? n.subNodes[0].route : undefined;\r\n }\r\n // enable all pages by default\r\n if (n.isDisabled == null) {\r\n n.isDisabled = false;\r\n }\r\n });\r\n\r\n this.initBasicSettings();\r\n this.initAdvancedSettings();\r\n this.initThemeSettings();\r\n\r\n // init binding for progress nav\r\n if (this.settings.menuStyle === 'progress') {\r\n // set the first node and child node as visited\r\n if (this.navigationData.length > 0) {\r\n this.navigationData[0].visited = true;\r\n this.navigate(this.navigationData[0].route);\r\n if (this.navigationData[0].subNodes && this.navigationData[0].subNodes.length > 0) {\r\n this.navigationData[0].subNodes[0].visited = true;\r\n this.navigate(this.navigationData[0].subNodes[0].route);\r\n }\r\n }\r\n\r\n // set initial progress bar\r\n this.navProgressCount = (this.selectedParentIndex + 1) / this.navigationData.length * 100;\r\n\r\n\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n this.getActiveParentAndChild(event.url);\r\n })\r\n );\r\n\r\n this.settings.allowNavToggle = false;\r\n }\r\n this.logInSubscription = this.authorizationService.isLoggedIn$.subscribe(value => {\r\n if (value) {\r\n this.userName = this.authorizationService.userName()\r\n }\r\n });\r\n\r\n if (this.configService) {\r\n this.configSubscription = this.configService.config$.subscribe(config => {\r\n if (config && config?.navigation?.nodes) {\r\n this.navigationData = config?.navigation?.nodes;\r\n if (config?.navigation?.settings?.resetNav) {\r\n this.navProgressCount = 0;\r\n this.selectedParentIndex = 0;\r\n this.navigate(this.navigationData[0].route);\r\n if (this.stepper) {\r\n this.stepper.selectedIndex = 0;\r\n setTimeout(() => {\r\n this.stepper.reset();\r\n this.innerSteppers?.forEach(stepper => {\r\n stepper.selectedIndex = 0;\r\n stepper.reset();\r\n });\r\n });\r\n }\r\n this.navigationData.forEach(n => {\r\n n.visited = false;\r\n n.complete = false;\r\n n.subNodes?.forEach(s => {\r\n s.visited = false;\r\n s.complete = false;\r\n })\r\n });\r\n // reset back to false to avoid multiple triggers on future calls\r\n config.navigation.settings.resetNav = false;\r\n this.configService.config = config;\r\n }\r\n\r\n // if the values were changed and not null, it means that the nav was toggled to progress\r\n if (config?.navigation?.settings?.toggleProgressNavParentIndex != null\r\n && this.toggleProgressNavParentIndex != config?.navigation?.settings?.toggleProgressNavParentIndex\r\n && this.toggleProgressNavChildIndex != config?.navigation?.settings?.toggleProgressNavChildIndex\r\n && config?.navigation?.settings?.toggleProgressNavChildIndex != null) {\r\n\r\n this.toggleProgressNavParentIndex = config.navigation.settings.toggleProgressNavParentIndex;\r\n this.toggleProgressNavChildIndex = config.navigation.settings.toggleProgressNavChildIndex;\r\n\r\n // add the router sub\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n this.getActiveParentAndChild(event.url);\r\n })\r\n );\r\n // if the child node index is valid\r\n if (config.navigation.nodes[this.toggleProgressNavParentIndex].subNodes?.length > this.toggleProgressNavChildIndex) {\r\n this.setNodeStates(config.navigation.nodes[this.toggleProgressNavParentIndex],\r\n config.navigation.nodes[this.toggleProgressNavParentIndex].subNodes[this.toggleProgressNavChildIndex]);\r\n }\r\n else {\r\n this.setNodeStates(config.navigation.nodes[this.toggleProgressNavParentIndex], null);\r\n }\r\n }\r\n else {\r\n // Update the indexes\r\n this.toggleProgressNavParentIndex = config?.navigation?.settings?.toggleProgressNavParentIndex\r\n this.toggleProgressNavChildIndex = config?.navigation?.settings?.toggleProgressNavChildIndex;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Life cycle hook for after component view initialization */\r\n public ngAfterViewInit(): void {\r\n if (this.settings.menuStyle === 'stepper') {\r\n this.bindStepperToRoutes();\r\n setTimeout(() => {\r\n this.stepper.steps.forEach((step, index) => {\r\n step.select = () => {\r\n this.selectedParentIndex = index;\r\n this.navigate(this.navigationData[index].route);\r\n }\r\n });\r\n this.innerSteppers.forEach((stepper, index) => {\r\n stepper.steps.forEach((step, jindex) => {\r\n step.select = () => {\r\n this.selectedChildIndexes[index] = jindex;\r\n this.navigate(this.navigationData[index].subNodes[jindex].route);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n this.sideNavSub = this.sidenav.openedChange.subscribe(drawerState => {\r\n this.isNavOpen = drawerState;\r\n });\r\n }\r\n\r\n /** On Destroy */\r\n public ngOnDestroy(): void {\r\n this.mobileQuery.removeEventListener('change', this._mobileQueryListener);\r\n this.navBindSub.unsubscribe();\r\n this.logInSubscription.unsubscribe();\r\n this.bannerSubscription.unsubscribe();\r\n this.configSubscription.unsubscribe();\r\n this.sideNavSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Mobile SubNav - open the SubNav\r\n * @param nav the nav data to be passed to the SubNav\r\n */\r\n public openMobileSubNav(nav: NavNode): void {\r\n this.isMobileSubNavOpen = true;\r\n this.currentMobileNav = nav;\r\n this.sidenav.open();\r\n }\r\n\r\n /**\r\n * Mobile SubNav - closes the SubNav\r\n */\r\n public closeMobileSubNav(): void {\r\n this.isMobileSubNavOpen = false;\r\n this.sidenav.close();\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-nav-${variable}`, color);\r\n }\r\n\r\n /**\r\n * Determines the step state\r\n * @param parentIndex The parent index\r\n * @param childIndex The child index\r\n * @returns The step state\r\n */\r\n public determineStepState(parentIndex: number, childIndex: number): string {\r\n // not passed && not active\r\n if (childIndex === -1) {\r\n if (!this.stepper) {\r\n return 'number';\r\n }\r\n // not passed && active\r\n if (parentIndex === this.stepper.selectedIndex) {\r\n this.navigationData[parentIndex].visited = true;\r\n\r\n return 'active';\r\n }\r\n // passed but nav back\r\n else if (parentIndex > this.stepper.selectedIndex && this.navigationData[parentIndex].visited) {\r\n this.stepper.steps.find((s, index) => index === parentIndex)\r\n .reset();\r\n\r\n return 'active';\r\n }\r\n // passed && not active\r\n else if (parentIndex < this.stepper.selectedIndex) {\r\n this.navigationData[parentIndex].visited = true;\r\n\r\n return 'done';\r\n }\r\n else {\r\n return 'number';\r\n }\r\n }\r\n else {\r\n if (!this.innerSteppers) {\r\n return 'none';\r\n }\r\n const innerStepper = this.innerSteppers.find((s, index) => index === parentIndex);\r\n if (childIndex === innerStepper.selectedIndex) {\r\n this.navigationData[parentIndex].subNodes[childIndex].visited = true;\r\n\r\n return 'active';\r\n }\r\n else if (childIndex > innerStepper.selectedIndex && this.navigationData[parentIndex].subNodes[childIndex].visited) {\r\n innerStepper.steps.find((s, index) => index === childIndex)\r\n .reset();\r\n\r\n return 'active';\r\n }\r\n else if (childIndex < innerStepper.selectedIndex) {\r\n this.navigationData[parentIndex].subNodes[childIndex].visited = true;\r\n\r\n return 'done';\r\n }\r\n else {\r\n return 'none';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Navigates to the provided route\r\n * @param route The route\r\n */\r\n public navigate(route: string): void {\r\n // tslint:disable-next-line: no-floating-promises\r\n this.router.navigateByUrl(route);\r\n }\r\n\r\n /**\r\n * Navigates to given step\r\n * @param stepNumber The step number to navigate to\r\n */\r\n public navigateToStep(stepNumber: number): void {\r\n if (stepNumber < this.selectedParentIndex) {\r\n // tslint:disable-next-line: no-floating-promises\r\n this.router.navigateByUrl(this.navigationData[stepNumber].route);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the active parent and child nodes \r\n * @param url The router url\r\n */\r\n public getActiveParentAndChild(url: string): void {\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => url.includes(s.route.replace('.', '')));\r\n return childIndex > -1 || this.router.url.includes(n.route.replace('.', ''));\r\n });\r\n\r\n if (parentIndex == -1) {\r\n parentIndex = 0\r\n }\r\n\r\n // set the active parent node and sub node\r\n this.activeParentNode = this.navigationData[parentIndex];\r\n this.activeSubNode = childIndex > -1 && this.activeParentNode.subNodes.length > 0 ? this.activeParentNode.subNodes[childIndex] : null;\r\n\r\n // if there are subnodes and we are on the first node, set the active sub node to be the first one, if there isnt one \r\n if (this.activeParentNode.subNodes.length > 0 && parentIndex == 0 && childIndex == -1) {\r\n this.activeSubNode = this.activeParentNode.subNodes[0];\r\n }\r\n // compute the progress bar\r\n this.navProgressCount = (parentIndex + 1) / this.navigationData.length * 100;\r\n\r\n // set the node states\r\n this.setNodeStates(this.activeParentNode, this.activeSubNode);\r\n }\r\n\r\n /**\r\n * Sets the complete and visited states for all NavNodes \r\n * @param parentNode The parent node\r\n * @param childNode The child node\r\n */\r\n public setNodeStates(parentNode: NavNode, childNode: SubNavNodes): void {\r\n if (childNode) {\r\n this.activeSubNode = childNode;\r\n let childIndex = parentNode.subNodes.indexOf(childNode) > -1 ? parentNode.subNodes.indexOf(childNode) : 0;\r\n // all subnodes before this were completed and visited\r\n parentNode.subNodes.slice(0, childIndex).forEach(element => {\r\n element.complete = true;\r\n element.visited = true;\r\n });\r\n }\r\n this.activeParentNode = parentNode;\r\n // set all previous nodes to complete\r\n let parentIndex = this.navigationData.indexOf(parentNode) > -1 ? this.navigationData.indexOf(parentNode) : 0;\r\n this.navigationData.slice(0, parentIndex).forEach(d => {\r\n d.complete = true;\r\n\r\n // set all subnodes of previous nodes to complete only if the node was not disabled\r\n if (!d.isDisabled) {\r\n d.subNodes.forEach(s => {\r\n s.complete = true;\r\n s.visited = true;\r\n })\r\n }\r\n })\r\n // set the current nodes as visited\r\n parentNode.visited = true;\r\n if (childNode) {\r\n childNode.visited = true;\r\n }\r\n }\r\n\r\n /**\r\n * Closes the expansion panel and navigates to the given node\r\n * @param el The mat expansion panel \r\n * @param index The parent node index \r\n */\r\n public disablePanel(el, index: number): void {\r\n el.close();\r\n this.navigate(this.navigationData[index].route);\r\n }\r\n\r\n /**\r\n * Hides the message\r\n */\r\n public hide(): void {\r\n this.showMessage = false;\r\n }\r\n\r\n /**\r\n * Logs out once user is authorized\r\n * */\r\n public logOut(): void {\r\n this.authorizationService.authorizeUser();\r\n }\r\n\r\n /**\r\n * Closes mobile navigation after selection.\r\n */\r\n public closeNavigationForMobile(): void {\r\n if (this.mobileQuery.matches) {\r\n this.sidenav.close();\r\n }\r\n }\r\n\r\n /**\r\n * Is the navigation selected\r\n */\r\n public isNavSelected(node: NavNode | SubNavNodes): boolean {\r\n return this.router.isActive(node.route, { paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored' });\r\n }\r\n\r\n /** Sets the width for the side nav */\r\n public setNavWidth(width: string): string {\r\n return width.includes('%') || width.includes('px') ? width : width + 'px';\r\n }\r\n\r\n /** Binds the stepper to the router */\r\n private bindStepperToRoutes(): void {\r\n // find parents\r\n setTimeout(() => {\r\n // find parent index with active child\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => this.router.url.includes(s.route.replace('.', '')));\r\n\r\n return childIndex > -1 || this.router.url.includes(n.route.replace('.', ''));\r\n });\r\n // if no children or no indexes activate first parent\r\n if (parentIndex === -1) {\r\n parentIndex = 0;\r\n }\r\n\r\n this.selectedParentIndex = parentIndex;\r\n if (childIndex > -1) {\r\n this.innerSteppers.find((is, index) => index === parentIndex).selectedIndex = childIndex;\r\n }\r\n });\r\n\r\n // find parents\r\n this.navBindSub.add(\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n // find parent index with active child\r\n let childIndex;\r\n let parentIndex = this.navigationData.findIndex(n => {\r\n childIndex = n.subNodes?.findIndex(s => event.urlAfterRedirects.includes(s.route.replace('.', '')));\r\n\r\n return childIndex > -1 || event.urlAfterRedirects.includes(n.route.replace('.', ''));\r\n });\r\n // if no children or no indexes activate first parent\r\n if (parentIndex === -1) {\r\n parentIndex = 0;\r\n }\r\n\r\n this.selectedParentIndex = parentIndex;\r\n if (childIndex > -1) {\r\n this.innerSteppers.find((is, index) => index === parentIndex).selectedIndex = childIndex;\r\n }\r\n })\r\n );\r\n }\r\n\r\n /** Initializes the advanced nav settings */\r\n private initAdvancedSettings(): void {\r\n this.advancedSettings.topGapDesktop = this.advancedSettings.topGapDesktop || 0;\r\n this.advancedSettings.topGapMobile = this.advancedSettings.topGapMobile || this.settings.headerHeight;\r\n this.advancedSettings.marginTopDesktop = this.advancedSettings.marginTopDesktop || 0;\r\n this.advancedSettings.marginTopMobile = this.advancedSettings.marginTopMobile || 0;\r\n\r\n }\r\n\r\n /** Initializes the nav theme settings */\r\n private initThemeSettings(): void {\r\n this.themeSettings.contentBgColor ? this.setThemeColor('content-bg-color', this.themeSettings.contentBgColor) : undefined;\r\n this.themeSettings.fontColor ? this.setThemeColor('font-color', this.themeSettings.fontColor) : undefined;\r\n this.themeSettings.fontColor = this.themeSettings.fontColor || '#000';\r\n this.themeSettings.mobileBgColor = this.themeSettings.mobileBgColor || '#ffffff';\r\n this.themeSettings.bgGradientColor1 ? this.setThemeColor('bg-gradient-color-1', this.themeSettings.bgGradientColor1) : undefined;\r\n this.themeSettings.bgGradientColor2 ? this.setThemeColor('bg-gradient-color-2', this.themeSettings.bgGradientColor2) : undefined;\r\n this.themeSettings.borderRightColor ? this.setThemeColor('border-right-color', this.themeSettings.borderRightColor) : undefined;\r\n this.themeSettings.listBorderColor ? this.setThemeColor('list-border-color', this.themeSettings.listBorderColor) : undefined;\r\n this.themeSettings.highlightGradient1 ? this.setThemeColor('highlight-gradient-1', this.themeSettings.highlightGradient1) : undefined;\r\n this.themeSettings.highlightGradient2 ? this.setThemeColor('highlight-gradient-2', this.themeSettings.highlightGradient2) : undefined;\r\n this.themeSettings.subHighlightBorderColor ?\r\n this.setThemeColor('sub-highlight-border-color', this.themeSettings.subHighlightBorderColor) : undefined;\r\n this.themeSettings.subHighlightBgColor ?\r\n this.setThemeColor('sub-highlight-bg-color', this.themeSettings.subHighlightBgColor) : undefined;\r\n }\r\n\r\n /** Initializes the basic nav settings */\r\n private initBasicSettings(): void {\r\n this.settings.fontAwesomeMenuIcon = this.settings.fontAwesomeMenuIcon || 'fas fa-angle-double-left';\r\n this.settings.fontAwesomeMenuIconClosed = this.settings.fontAwesomeMenuIconClosed || 'fas fa-angle-double-right';\r\n this.settings.allowNavToggle = this.settings.allowNavToggle == null ? true : this.settings.allowNavToggle;\r\n this.settings.mainMenuText ? this.mainMenuText = this.settings.mainMenuText : this.mainMenuText = 'Main Menu';\r\n this.settings.headerHeight = this.settings.headerHeight || 60;\r\n this.settings.menuButtonSRText = this.settings.menuButtonSRText || 'Menu Button';\r\n this.settings.menuStyle = this.settings.menuStyle || 'static';\r\n this.settings.displayNumbers = this.settings.displayNumbers == null ? true : this.settings.displayNumbers;\r\n this.settings.progressSectionCompleteIcon = this.settings.progressSectionCompleteIcon || 'fas fa-check-circle';\r\n this.settings.progressSectionFutureIcon = this.settings.progressSectionFutureIcon || 'far fa-circle';\r\n this.settings.progressSectionCurrentIcon = this.settings.progressSectionCurrentIcon || 'fas fa-circle';\r\n this.settings.progressMenuCompleteIcon = this.settings.progressMenuCompleteIcon || 'far fa-check';\r\n this.settings.showProgressBar = this.settings.showProgressBar == null ? true : this.settings.showProgressBar\r\n this.settings.sideNavWidthDesktop = this.settings.sideNavWidthDesktop || '350';\r\n this.settings.sideNavWidthMobile = this.settings.sideNavWidthMobile || '350';\r\n this.settings.overrideNavigation = this.settings.overrideNavigation || false;\r\n this.settings.progressMenuWidth = this.settings.progressMenuWidth || '280';\r\n this.settings.useCustomMobileFooter = this.settings.useCustomMobileFooter != null ? this.settings.useCustomMobileFooter : false;\r\n }\r\n}\r\n","<div class=\"sof-ar-nav-container\"\r\n [style.top]=\"mobileQuery.matches && advancedSettings.topGapMobile ? advancedSettings.topGapMobile + 'px' : settings.headerHeight + 'px'\"\r\n [class.sof-ar-nav-mobile]=\"mobileQuery.matches\">\r\n <div *ngIf=\"showMessage\" m-a-0 fxLayout=\"row\" fxLayoutAlign=\"space-between center\" sws-alert--secondary role=\"alert\">\r\n <div fxLayout=\"row\" aria-hidden=\"true\">\r\n <i *ngIf=\"showCheckMark\" m-r-5 m-l-5 class=\"fas fa-check-circle icon-container\"></i>\r\n <p class=\"message-container\" m-r-5 m-l-5 [innerHtml]=\"message | translate\"></p>\r\n </div>\r\n <div fxLayout=\"column\">\r\n <button id=\"btnClose\" (click)=\"hide()\" mat-icon-button [attr.aria-label]=\"'common.close' | translate\">\r\n <span aria-hidden=\"true\">\r\n <i class=\"fal fa-times fa-lg\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n <button id=\"sof-ar-nav-btn-menu\" aria-label=\"Menu Button\" mat-icon-button [disableRipple]=\"true\"\r\n (click)=\"snav.toggle()\" class=\"sof-ar-nav-menu-btn\"\r\n [class.hidden]=\"!(mobileQuery.matches || settings.allowNavToggle) || settings.hideNavigation\">\r\n <span *ngIf=\"isNavOpen; else closedIcon\" aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIcon}} menu-icon\"></i>\r\n </span>\r\n <ng-template #closedIcon>\r\n <span aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIconClosed}} menu-icon\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"sr-only\">{{settings.menuButtonSRText | translate}}</span>\r\n </button>\r\n\r\n <mat-sidenav-container autosize class=\"sof-ar-nav-sidenav-container\" [style.marginTop.px]=\"\r\n mobileQuery.matches ? advancedSettings.marginTopMobile : advancedSettings.marginTopDesktop\">\r\n <mat-sidenav [disableClose]=\"!mobileQuery.matches\" class=\"sof-ar-nav-sidenav\" #snav\r\n [mode]=\"mobileQuery.matches ? 'over' : 'side'\" [fixedInViewport]=\"mobileQuery.matches\"\r\n [fixedTopGap]=\"mobileQuery.matches ? advancedSettings.topGapMobile : advancedSettings.topGapDesktop\"\r\n [opened]=\"!mobileQuery.matches && !settings.hideNavigation && settings.menuStyle!=='progress' \"\r\n [style.width]=\"mobileQuery.matches ? setNavWidth(settings.sideNavWidthMobile) : setNavWidth(settings.sideNavWidthDesktop)\"\r\n [ngStyle]=\"{background:mobileQuery.matches ? themeSettings?.mobileBgColor : undefined}\">\r\n <div *ngIf=\"!settings.disableUsernameMobile\">\r\n <ng-container *ngIf=\"mobileQuery.matches && userName && !settings.customUserName\">\r\n <span class=\"user-name\">\r\n {{userName}}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"mobileQuery.matches && settings.customUserName\">\r\n <span class=\"user-name\">\r\n {{settings.customUserName | translate}}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <!-- Nav Header Content -->\r\n <div class=\"nav-header-content\">\r\n <ng-content select=\"[sof-ar-nav-header]\"> </ng-content>\r\n </div>\r\n\r\n <!-- Static Navigation -->\r\n <div class=\"nav-content-item sidenav-background\" *ngIf=\"settings.menuStyle === 'static'\"\r\n [ngStyle]=\"{'padding-bottom.px': (footerItemCount*64)+128}\">\r\n <nav *ngIf=\"settings.menuStyle === 'static'\" [attr.aria-label]=\"'main'\">\r\n <ul>\r\n <li *ngFor=\"let nav of navigationData\">\r\n <ng-container *ngIf=\"nav?.subNodes?.length && !nav.hidden\">\r\n <mat-accordion>\r\n <mat-expansion-panel [expanded]=\"nav.expanded\">\r\n <mat-expansion-panel-header [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(nav) }\">\r\n <!-- Navigation -->\r\n <ng-container>\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"{{nav?.fontAwesomeIcon}}\"></i>\r\n </span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"{{nav?.fontAwesomeIcon}}\"></i>\r\n </span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </mat-expansion-panel-header>\r\n <!-- SubNav -->\r\n <ng-container>\r\n <mat-nav-list [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(subnav) }\" class=\"subnav-content\"\r\n [disableRipple]=\"true\" *ngFor=\"let subnav of nav?.subNodes\" (click)=\"closeNavigationForMobile()\"\r\n [attr.role]=\"null\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item\r\n [routerLinkActive]=\"['sof-ar-nav-sub-active-route']\" [routerLink]=\"subnav.route\"\r\n [attr.aria-label]=\"(nav.text | translate) + ' ' + (subnav.text | translate)\">\r\n <span class=\"sof-ar-nav-header-text\"\r\n [attr.aria-label]=\"(nav.text | translate) + ' ' + (subnav.text | translate)\">\r\n {{subnav.text | translate}}\r\n </span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <!-- If subnodes are not there -->\r\n <ng-container>\r\n <ng-container *ngIf=\"!nav?.subNodes?.length && !nav?.hidden\">\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list [ngClass]=\"{ 'sof-ar-nav-selected': isNavSelected(nav) }\" class=\"nav-header\"\r\n [disableRipple]=\"true\" (click)=\"closeNavigationForMobile()\" [attr.role]=\"null\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list [disableRipple]=\"true\" [attr.role]=\"null\">\r\n <a class=\"nav-item\" mat-list-item [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n <span class=\"sof-ar-nav-header-text\">{{nav.text | translate}}</span>\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n\r\n <!-- Stepper -->\r\n <mat-vertical-stepper *ngIf=\"settings.menuStyle === 'stepper'\" [selectedIndex]=\"selectedParentIndex\" #vertStepper\r\n [linear]=\"false\" class=\"sidenav-background\">\r\n <!-- Alternate step states for nav, icaons should always be white only worked with styles -->\r\n <ng-template matStepperIcon=\"create\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"active\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"done\">\r\n <span>\r\n <i class=\"fas fa-check\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <!-- nav steps -->\r\n <ng-container *ngFor=\"let nav of navigationData; let i = index\">\r\n <mat-step *ngIf=\"!nav?.hidden\" state=\"{{ determineStepState(i, -1) }}\">\r\n <ng-template matStepLabel *ngIf=\"!nav.hidden\">\r\n <div id=\"divStep{{ i }}\" style=\"height: 72px\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ nav.text | translate }}\" [matTooltipPosition]=\"'after'\" fxFlex=\"100%\">\r\n <a id=\"step{{ i }}\" fxFlex=\"100%\" class=\"mat-button step-link\" [routerLink]=\"nav.route\"\r\n [ngStyle]=\"{ color: themeSettings?.fontColor }\" [routerLinkActive]=\"['step-active']\">\r\n {{ nav.text | translate }}\r\n </a>\r\n </div>\r\n </ng-template>\r\n <p [innerHTML]=\"nav.stepContent | translate\"></p>\r\n <!-- sub nav -->\r\n <mat-vertical-stepper *ngIf=\"nav?.subNodes\" [selectedIndex]=\"selectedChildIndexes[i]\" [linear]=\"false\"\r\n #vertStepperInner>\r\n <!-- Alternate step states for sub nav, icons should always be white only worked with styles -->\r\n <ng-template matStepperIcon=\"create\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"edit\">\r\n <span>\r\n <i class=\"fad fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"done\">\r\n <span>\r\n <i class=\"fas fa-check\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"active\">\r\n <span>\r\n <i class=\"fas fa-pencil-alt\" style=\"color: white !important\"></i>\r\n </span>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"none\">\r\n <span></span>\r\n </ng-template>\r\n <!-- sub nav steps -->\r\n <ng-container *ngFor=\"let subnav of nav?.subNodes; let j = index\">\r\n <mat-step state=\"{{ determineStepState(i, j) }}\" *ngIf=\"!subnav.hidden\">\r\n <ng-template matStepLabel>\r\n <div id=\"divSubStep{{ i }}-{{ j }}\" style=\"height: 72px\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ subnav.text | translate }}\" [matTooltipPosition]=\"'after'\" fxFlex=\"100%\">\r\n <a id=\"subStep{{ i }}-{{ j }}\" class=\"mat-button step-link\"\r\n [ngStyle]=\"{ color: themeSettings?.fontColor }\" [routerLink]=\"subnav.route\"\r\n [routerLinkActive]=\"['step-active']\">{{ subnav.text | translate }}</a>\r\n </div>\r\n </ng-template>\r\n <p [innerHTML]=\"subnav.stepContent | translate\"></p>\r\n </mat-step>\r\n </ng-container>\r\n\r\n </mat-vertical-stepper>\r\n </mat-step>\r\n </ng-container>\r\n\r\n </mat-vertical-stepper>\r\n\r\n <!-- Nav Footer -->\r\n <div class=\"nav-footer-item\">\r\n <ng-container *ngIf=\"settings.menuStyle === 'static'\">\r\n <ng-container *ngFor=\"let nav of footerNavigationData\">\r\n <ng-container>\r\n <!-- Desktop Nav -->\r\n <ng-container *ngIf=\"!nav?.subNodes?.length\">\r\n <!-- If there is a route -->\r\n <ng-container *ngIf=\"nav?.route\">\r\n <mat-nav-list class=\"nav-header\" [disableRipple]=\"true\">\r\n <a class=\"nav-item nav-item-margin\" mat-list-item [routerLink]=\"nav?.route\"\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n {{nav.text | translate}}\r\n </a>\r\n </mat-nav-list>\r\n </ng-container>\r\n <!-- If there is not a route -->\r\n <ng-container *ngIf=\"!nav?.route\">\r\n <mat-nav-list>\r\n <button id=\"sof-ar-nav-btn-node\" class=\"nav-item\" mat-list-item\r\n [routerLinkActive]=\"['sof-ar-nav-active-route']\">\r\n <ng-container *ngIf=\"nav?.fontAwesomeIcon\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\"><i class=\"{{nav?.fontAwesomeIcon}}\"></i></span>\r\n </ng-container>\r\n {{nav.text | translate}}\r\n </button>\r\n </mat-nav-list>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template [ngTemplateOutlet]=\"navigationFooter\">\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- the mobile progress menu-->\r\n <ng-container *ngIf=\"settings?.menuStyle === 'progress'\">\r\n <div class=\"sidenav-background\" [ngStyle]=\"{'padding-bottom.px': (footerItemCount*64)+128}\">\r\n <mat-accordion>\r\n <div *ngFor=\"let step of navigationData; let i = index\">\r\n <ng-container *ngIf=\"step.subNodes && step.subNodes.length > 0 && !step.hidden\">\r\n <mat-expansion-panel hideToggle class=\"progress-mobile-expansion-panel\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n (opened)=\"panelOpenState = true\" (closed)=\"panelOpenState = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title class=\"progress-mobile-panel-title\">\r\n <div style=\"width: -webkit-fill-available;\"\r\n [ngClass]=\"{'disabled':(!step.visited || step.isDisabled) && !settings.overrideNavigation && !step.complete,'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\"\r\n [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">\r\n {{ step.text | translate }}\r\n </span>\r\n <span *ngIf=\"!panelOpenState\">\r\n <i class=\"fas fa-chevron-down panel-icon\"></i>\r\n </span>\r\n <span *ngIf=\"panelOpenState\">\r\n <i class=\"fas fa-chevron-up panel-icon\"></i>\r\n </span>\r\n </div>\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <!-- mobile sub menu -->\r\n <div class=\"progress-nav-menu\" *ngFor=\"let subNode of step.subNodes; let idx = index;\"\r\n [hidden]=\"step.subNodes[idx].hidden\">\r\n <button role=\"link\" id=\"mobileMenu{{ idx }}\" mat-button class=\"step-link progress-menu-mobile-btn\"\r\n [ngClass]=\"{'color-primary':subNode.complete && subNode!==activeSubNode}\"\r\n [routerLinkActive]=\"['progress-menu-active']\" [ngStyle]=\"{ ' color': themeSettings?.fontColor }\"\r\n [routerLink]=\"subNode.route\" [disabled]=\"!subNode.visited && !settings.overrideNavigation\">\r\n <ng-template [ngTemplateOutlet]=\"progressSubNodeIcons\"\r\n [ngTemplateOutletContext]=\"{subNode:subNode}\">\r\n </ng-template>\r\n <span class=\"nav-menu-btn-text\"\r\n [ngClass]=\"{'disabled':(!subNode.visited) && !settings.overrideNavigation && !subNode.complete,'color-primary':subNode.complete && subNode!==activeSubNode,'progress-menu-active':subNode===activeSubNode}\">{{\r\n subNode.text | translate }}</span>\r\n </button>\r\n </div>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n <!-- if there are no subNodes -->\r\n <ng-container *ngIf=\"(!step.subNodes || step.subNodes.length===0) && !step.hidden\">\r\n <mat-expansion-panel #panel hideToggle (opened)=\"disablePanel(panel,i)\"\r\n class=\"progress-mobile-expansion-panel\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title class=\"progress-mobile-panel-title\">\r\n <div\r\n [ngClass]=\"{'disabled':(!step.visited || step.isDisabled) && !settings.overrideNavigation && !step.complete,'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\"\r\n [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">\r\n {{ step.text | translate }}\r\n </span>\r\n </div>\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n\r\n <!-- the progress menu language and logout buttons-->\r\n <div class=\"nav-footer-item progress-footer\">\r\n <ng-template [ngTemplateOutlet]=\"navigationFooter\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <!-- Horizontal Progress -->\r\n <ng-container *ngIf=\"settings?.menuStyle === 'progress'\">\r\n <mat-progress-bar *ngIf=\"settings?.showProgressBar\" mode=\"determinate\" [value]=\"navProgressCount\"\r\n style=\"height: 9px\" color=\"accent\">\r\n </mat-progress-bar>\r\n <nav [attr.aria-label]=\"'main'\" fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" style=\"justify-content:center !important\"\r\n [class.hidden]=\"settings.hideNavigation\">\r\n <div *ngFor=\"let step of navigationData; let i = index\" class=\"horizontal-progress-div\">\r\n <ng-container *ngIf=\"!step.subNodes?.length && !step.hidden\">\r\n <button mat-button [routerLink]=\"step.route\"\r\n [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n class=\"progress-menu-btn\"\r\n [ngClass]=\"{'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\" [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">{{ step.text | translate }}</span>\r\n </button>\r\n </ng-container>\r\n <!-- if there are subnodes create menus for each step -->\r\n <ng-container *ngIf=\"step.subNodes && step.subNodes.length && !step.hidden\">\r\n <button\r\n [ngClass]=\"{'color-primary':step.complete && step!==activeParentNode,'progress-menu-active':step===activeParentNode}\"\r\n mat-button [disabled]=\"(!step.visited || step.isDisabled) && !settings.overrideNavigation\"\r\n class=\"progress-menu-btn\" [matMenuTriggerFor]=\"menu\">\r\n <ng-template [ngTemplateOutlet]=\"progressParentNodeIcons\" [ngTemplateOutletContext]=\"{step:step}\">\r\n </ng-template>\r\n <span *ngIf=\"settings?.displayNumbers\">\r\n {{i < 10 ? \"0\" + (i + 1) + \". \" : i + \" . \" }} </span>\r\n <span class=\"nav-btn-text\">{{ step.text | translate }}</span>\r\n </button>\r\n <mat-menu #menu=\"matMenu\" class=\"sof-ar-mat-menu progress-menu-panel\">\r\n <div class=\"progress-nav-menu\" *ngFor=\"let subNode of step.subNodes; let idx = index;\"\r\n [ngStyle]=\"{width:settings.progressMenuWidth+'px'}\" [hidden]=\"step.subNodes[idx].hidden\">\r\n <button role=\"link\" id=\"submenu{{ idx }}\" class=\"step-link progress-menu-btn\" mat-menu-item\r\n [ngClass]=\"{'color-primary':subNode.complete && subNode!==activeSubNode,'disabled':!subNode.visited && !settings.overrideNavigation}\"\r\n [routerLinkActive]=\"['progress-menu-active']\" [ngStyle]=\"{ ' color': themeSettings?.fontColor }\"\r\n [routerLink]=\"subNode.route\" [disabled]=\"!subNode.visited && !settings.overrideNavigation\">\r\n <div class=\"nav-menu-btn-div\">\r\n <ng-template [ngTemplateOutlet]=\"progressSubNodeIcons\"\r\n [ngTemplateOutletContext]=\"{subNode:subNode}\">\r\n </ng-template>\r\n <span class=\"nav-menu-btn-text\">{{ subNode.text |translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n </nav>\r\n <div class=\"mobile-progress-container\" fxHide.gt-sm>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-content sof-ar-nav-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n <!-- The progress menu parent node icon template-->\r\n <ng-template #progressParentNodeIcons let-step='step'>\r\n <span *ngIf=\"step.complete && step !== activeParentNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.complete' | translate\">\r\n <i class=\"{{ settings.progressSectionCompleteIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n <span *ngIf=\"step === activeParentNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\">\r\n <i class=\"{{ settings.progressSectionCurrentIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\"></i>\r\n </span>\r\n <span *ngIf=\"!step.complete && step !== activeParentNode\"\r\n [ngClass]=\"{'disabled':!step.visited && !settings.overrideNavigation}\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\">\r\n <i class=\"{{ settings.progressSectionFutureIcon }} progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\"></i>\r\n </span>\r\n </ng-template>\r\n <!-- The progress menu sub node icon template-->\r\n <ng-template #progressSubNodeIcons let-subNode='subNode'>\r\n <span class=\"progress-menu-icon\" *ngIf=\"subNode.complete && activeSubNode !== subNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.complete' | translate\">\r\n <i class=\"{{settings.progressMenuCompleteIcon}} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n <span class=\"progress-menu-icon\" *ngIf=\"activeSubNode === subNode\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\">\r\n <i class=\"{{ settings.progressSectionCurrentIcon }} color-primary progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.in-progress' | translate\"></i>\r\n </span>\r\n <span class=\"progress-menu-icon\" *ngIf=\"!subNode.complete && activeSubNode !== subNode\"\r\n [ngClass]=\"{'disabled':!subNode.visited && !settings.overrideNavigation}\"\r\n [attr.aria-label]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\">\r\n <i class=\"{{ settings.progressSectionFutureIcon }} progress-nav-icon\"\r\n [title]=\"'armature.sof-progress-bar.step-labels.not-done' | translate\"></i>\r\n </span>\r\n </ng-template>\r\n <!-- The navigation footer template for language and logout buttons -->\r\n <ng-template #navigationFooter>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"> </ng-content>\r\n <ng-container *ngIf=\"!settings.useCustomMobileFooter\">\r\n <!-- The language button -->\r\n <ng-container\r\n *ngIf=\"languageSettings?.displayLanguageOptions && languageSettings?.languages.length > 2 && mobileQuery.matches\">\r\n <button id=\"sof-ar-nav-lang-dropdown\" mat-stroked-button\r\n class=\"faded-button-50 language-button navigationFooter\" [matMenuTriggerFor]=\"headerLanguageMenu\"\r\n [attr.aria-label]=\"languageSettings.buttonText | translate\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n </span>\r\n {{languageSettings.buttonText | translate}}\r\n </button>\r\n <mat-menu #headerLanguageMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <button mat-menu-item *ngFor=\"let lang of languageSettings.languages\" (click)=\"setLanguage$.emit(lang)\"\r\n id=\"apply-lang-btn-{{lang}}\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n <div fxFlex=\"auto\">\r\n {{ lang | translate }}\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <i *ngIf=\"currentLang === lang\" class=\"fad fa-check selected-language-icon\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"languageSettings?.displayLanguageOptions && languageSettings?.languages.length === 2 && mobileQuery.matches\">\r\n <button *ngIf=\"languageSettings?.languages.length === 2\" id=\"sof-ar-nav-lang-button\" mat-stroked-button\r\n class=\"faded-button-50 language-button navigationFooter\"\r\n [attr.aria-label]=\"languageSettings.buttonText | translate\" (click)=\"setLanguage$.emit()\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n </span>\r\n {{otherLangText | translate}}\r\n </button>\r\n </ng-container>\r\n <!-- The logout button-->\r\n <ng-container *ngIf=\"mobileQuery.matches && userName\">\r\n <button id=\"sof-ar-header-lang-button\" mat-stroked-button class=\"navigationFooter\" (click)=\"logOut()\">\r\n <span aria-hidden=\"true\" class=\"icon-styling\">\r\n <i class=\"fas fa-sign-out-alt\"></i>\r\n </span>\r\n {{logOutText | translate}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>","import { MediaMatcher } from '@angular/cdk/layout';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Optional, Output, WritableSignal, signal } from '@angular/core';\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AuthorizationService } from '../../../core/services/authorization.service';\r\nimport { HybridSamlOauthService } from '../../../oauth/oauth-api';\r\nimport { AccessTokenClaims } from '../../../rbac/rbac-api';\r\nimport { HeaderAuthSettings } from '../../models/header-auth.settings';\r\nimport { HeaderLanguageSettings } from '../../models/header-language.settings';\r\nimport { HeaderThemeSettings } from '../../models/header-theme.settings';\r\nimport { HeaderSettings } from '../../models/header.settings';\r\nimport { HeaderExternalLinks } from '../../models/header-external-links';\r\n\r\n/** The Header Component */\r\n@Component({\r\n selector: 'sof-ar-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n standalone: false\r\n})\r\nexport class ArmatureHeaderComponent implements OnInit {\r\n\r\n /** Component Input - the header settings */\r\n @Input() public settings: HeaderSettings = {};\r\n\r\n /** Component Input - the header theme settings */\r\n @Input() public themeSettings: HeaderThemeSettings = {};\r\n\r\n /** Authorization settings.*/\r\n @Input() public authSettings: HeaderAuthSettings;\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** Event Emitter for if user is logged in. */\r\n @Output() public isLoggedInEE: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /** Gets the non used language */\r\n public get otherLangText(): string {\r\n return this.settings?.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** SETTINGS */\r\n\r\n /** if the header is being paired with the armature navigation. this will auto create the room on mobile for the navigation icon */\r\n public armatureNavigation: boolean;\r\n\r\n /**\r\n * Whether to use the armature header overlay, does not mix with armature navigation\r\n * This instead will hide the right header content and display what's passed to it within the side nav.\r\n */\r\n public armatureHeaderOverlay: boolean;\r\n\r\n /** whether or not to display the logo */\r\n public displayLogo: boolean;\r\n\r\n /** the logo url */\r\n public logoUrl: string;\r\n\r\n /** the logo alt text */\r\n public logoAltText: string;\r\n\r\n /** whether or not to show the logo text, default false */\r\n public displayLogoText: boolean;\r\n\r\n /** the header logo text */\r\n public headerLogoText: string;\r\n\r\n /** whether or not to show the built in drop down menu, default false */\r\n public displayDropDownMenu: boolean;\r\n\r\n /** the drop down menu screen reader text */\r\n public dropDownMenuSRText: string;\r\n\r\n /** the drop down menu aria text */\r\n public dropDownAriaText: string;\r\n\r\n /** the header menu drop down icon */\r\n public headerDropDownIcon: string;\r\n\r\n /** whether or not to show the super header, default false */\r\n public displaySuperHeader: boolean;\r\n\r\n /** THEME SETTINGS */\r\n\r\n /** the header color */\r\n public headerColor: string;\r\n\r\n /** using color string icon color, overrides iconMatColor */\r\n public iconColor: string;\r\n\r\n /** Whether or not to add a drop shadow to the header, default true */\r\n public headerDropShadow: boolean;\r\n\r\n /** The color of the super header */\r\n public superHeaderColor: string;\r\n\r\n /** AUTH SETTINGS */\r\n\r\n /** Flag if user is logged in. */\r\n public isLoggedIn: boolean = false;\r\n\r\n /** User name **/\r\n public userName: string;\r\n\r\n /** Authorization Button Text. */\r\n public get authBtnText(): string {\r\n if (!this.isLoggedIn) {\r\n return 'SIGN IN';\r\n }\r\n return this.isLoggedIn ? this.authSettings.logOutText : this.authSettings.logInText;\r\n }\r\n\r\n public get manageUrl(): string {\r\n // tslint:disable-next-line: no-string-literal\r\n return `${this.authService['config'].issuer}/manage`;\r\n }\r\n\r\n /** The header language settings */\r\n public headerLanguageSettings: HeaderLanguageSettings = {};\r\n\r\n /** The header external links */\r\n public externalLinks: WritableSignal<Array<HeaderExternalLinks>> = signal([]);\r\n\r\n /** the mobile query */\r\n public mobileQuery: MediaQueryList;\r\n\r\n /** the mobile query listener2 */\r\n private readonly _mobileQueryListener: () => void;\r\n\r\n /** The claims */\r\n private claims: AccessTokenClaims;\r\n\r\n /**\r\n * Constructor.\r\n * @param authService OAuth Service.\r\n * @param authStorage OAuth Storage.\r\n * @param hybridAuthService Hybrid SAML Oauth service.\r\n * @param media The media matcher\r\n * @param changeDetectorRef The change detector reference\r\n * @param authorizationService The Authorization Service.\r\n */\r\n constructor(\r\n private readonly authService: OAuthService,\r\n private readonly authStorage: OAuthStorage,\r\n private readonly translateService: TranslateService,\r\n private readonly media: MediaMatcher,\r\n private readonly changeDetectorRef: ChangeDetectorRef,\r\n private readonly authorizationService: AuthorizationService,\r\n @Optional() private readonly hybridAuthService: HybridSamlOauthService\r\n ) {\r\n this.mobileQuery = media.matchMedia('(max-width: 959px)');\r\n this._mobileQueryListener = () => {\r\n changeDetectorRef.detectChanges();\r\n };\r\n // below if statement is for edge support since addEventListener doesn't exist for MediaQueryLists\r\n if (this.mobileQuery.addEventListener) {\r\n this.mobileQuery.addEventListener('change', this._mobileQueryListener);\r\n }\r\n else {\r\n this.mobileQuery.addListener(this._mobileQueryListener);\r\n }\r\n }\r\n\r\n /** On Init */\r\n public ngOnInit(): void {\r\n // basic settings\r\n this.settings.armatureNavigation != undefined ? this.armatureNavigation = this.settings.armatureNavigation : this.armatureNavigation = true;\r\n this.settings.armatureHeaderOverlay ? this.armatureHeaderOverlay = this.settings.armatureHeaderOverlay : this.armatureHeaderOverlay = false;\r\n\r\n this.settings.displayLogo ? this.displayLogo = this.settings.displayLogo : this.displayLogo = false;\r\n this.settings.logoUrl ? this.logoUrl = this.settings.logoUrl : this.logoUrl = './assets/logos/logo.svg';\r\n this.settings.logoAltText ? this.logoAltText = this.settings.logoAltText : this.logoAltText = 'the header logo';\r\n\r\n this.settings.displayLogoText ? this.displayLogoText = this.settings.displayLogoText : this.displayLogoText = false;\r\n this.settings.headerLogoText ? this.headerLogoText = this.settings.headerLogoText : this.headerLogoText = 'Softheon';\r\n\r\n this.settings.displayDropDownMenu ? this.displayDropDownMenu = this.settings.displayDropDownMenu : this.displayDropDownMenu = false;\r\n this.settings.dropDownMenuSRText ? this.dropDownMenuSRText = this.settings.dropDownMenuSRText : this.dropDownMenuSRText = 'Header Dropdown Menu';\r\n this.settings.dropDownAriaText ? this.dropDownAriaText = this.settings.dropDownAriaText : this.dropDownAriaText = 'Header Dropdown Menu button icon';\r\n this.settings.headerDropDownIcon ? this.headerDropDownIcon = this.settings.headerDropDownIcon : this.headerDropDownIcon = 'fad fa-user-circle';\r\n this.settings.darkThemeText = this.settings.darkThemeText || 'Dark Theme';\r\n this.setHeaderThemeSettings();\r\n this.headerLanguageSettings = this.settings.languageSettings;\r\n\r\n this.externalLinks.set(this.settings.externalLinks || []);\r\n\r\n // set up oauth only when configs and issuer are provided\r\n if (this.authSettings && this.authSettings.issuer) {\r\n this.authorizationService.initializeAuthSettings(this.authSettings);\r\n this.authorizationService.isLoggedIn$.subscribe(value => {\r\n this.isLoggedIn = value;\r\n if (value) {\r\n this.userName = this.authorizationService.userName();\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the them of the application\r\n * @param event The event\r\n */\r\n public toggleTheme(event: MatSlideToggleChange): void {\r\n // WIP: different feature\r\n }\r\n\r\n /**\r\n * Authorize User.\r\n */\r\n public authorizeUser(): void {\r\n this.authorizationService.authorizeUser();\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-header-${variable}`, color);\r\n }\r\n\r\n /** Sets the header theme settings */\r\n private setHeaderThemeSettings(): void {\r\n // Super Header Settings\r\n this.settings.displaySuperHeader ? this.displaySuperHeader = this.settings.displaySuperHeader : this.displaySuperHeader = false;\r\n this.themeSettings && this.themeSettings.superHeaderColor\r\n ? this.superHeaderColor = this.themeSettings.superHeaderColor : this.superHeaderColor = '#000';\r\n\r\n // Header Theme Settings\r\n this.themeSettings && this.themeSettings.superHeaderColor ? this.headerColor = this.themeSettings.headerColor : this.headerColor = '#fff';\r\n this.headerColor = this.themeSettings.headerColor || '#fff';\r\n this.themeSettings && this.themeSettings.superHeaderColor ? this.iconColor = this.themeSettings.iconColor : this.iconColor = '#4DB6AC';\r\n this.themeSettings && this.themeSettings.superHeaderColor ?\r\n this.headerDropShadow = this.themeSettings.headerDropShadow : this.headerDropShadow = true;\r\n this.headerDropShadow = this.themeSettings.headerDropShadow == undefined ? true : this.themeSettings.headerDropShadow;\r\n\r\n this.themeSettings.borderBottomColor = this.themeSettings.borderBottomColor || '';\r\n this.themeSettings.borderBottomSize = this.themeSettings.borderBottomSize || '0px';\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"displaySuperHeader\">\r\n <div class=\"sof-super-header\" [ngStyle]=\"{'background-color' : superHeaderColor}\">\r\n <ng-content select=\"[sof-ar-super-header]\"></ng-content>\r\n </div>\r\n</ng-container>\r\n<header>\r\n <mat-toolbar class=\"sof-ar-header\" [class.sof-ar-header-shadow]=\"headerDropShadow\"\r\n [ngStyle]=\"{'height.px': settings?.headerStyles?.height, background: headerColor, 'border-bottom': themeSettings.borderBottomSize + ' solid ' + themeSettings.borderBottomColor }\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.headerStyles?.heightMobile || 64, background: headerColor, 'border-bottom': themeSettings.borderBottomSize + ' solid ' + themeSettings.borderBottomColor }\">\r\n <div class=\"sof-ar-header--left\"\r\n [class.sof-ar-toggle-navigation]=\"(mobileQuery.matches && (armatureNavigation || armatureHeaderOverlay)) || settings?.createSpaceForNavToggle\">\r\n <!-- external links -->\r\n @if(externalLinks().length) {\r\n <button class=\"external-link-button\" mat-button [matMenuTriggerFor]=\"menu\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <i class=\"ph ph-dots-nine external-link-button\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div fxLayout=\"row wrap\" class=\"external-link-container\">\r\n @for(link of externalLinks(); track link.translateKey) {\r\n <a mat-menu-item fxLayout=\"column\" fxFlex=\"auto\" fxLayoutAlign=\"center start\" href=\"{{link.uri}}\" target=\"_blank\" [matTooltip]=\"(link.iconAltTextTranslateKey | translate)\">\r\n @if(!!link.icon || !!link.logo) {\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n @if(!!link.icon) {\r\n <i class=\"{{link.icon}} external-link-icon\"></i>\r\n }\r\n @else if(!!link.logo){\r\n <img src=\"{{link.logo}}\" alt=\"{{link.iconAltTextTranslateKey | translate}}\" width=\"32px\" height=\"32px\" />\r\n }\r\n </div>\r\n }\r\n @if(!!link.translateKey) {\r\n <div fxFlex=\"auto\" class=\"link-text-container\">\r\n {{link.translateKey | translate}}\r\n </div>\r\n }\r\n </a>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n <!-- Logo Image -->\r\n <ng-container *ngIf=\"displayLogo\">\r\n <ng-container *ngIf=\"settings?.logoRouterLinkPath === 'internal'; else external\">\r\n <a [routerLink]=\"settings?.logoRouterLink\">\r\n <img class=\"sof-ar-header-logo\" [src]=\"logoUrl\" alt=\"{{logoAltText | translate}}\"\r\n [ngStyle]=\"{'height.px': settings?.logoStyles?.height, 'width.px': settings?.logoStyles?.width, 'max-width': settings?.logoStyles?.width + 'px' || '100%'}\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.logoStyles?.heightMobile, 'width.px': settings?.logoStyles?.widthMobile, 'max-width': settings?.logoStyles?.widthMobile + 'px' || '100%'}\" />\r\n </a>\r\n </ng-container>\r\n <ng-template #external>\r\n <a [href]=\"settings?.logoRouterLink\"><img class=\"sof-ar-header-logo\" [src]=\"logoUrl\"\r\n alt=\"{{logoAltText | translate}}\"\r\n [ngStyle]=\"{'height.px': settings?.logoStyles?.height, 'width.px': settings?.logoStyles?.width, 'max-width': settings?.logoStyles?.width + 'px' || '100%'}\"\r\n [ngStyle.lt-sm]=\"{'height.px': settings?.logoStyles?.heightMobile, 'width.px': settings?.logoStyles?.widthMobile, 'max-width': settings?.logoStyles?.widthMobile + 'px' || '100%'}\" />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <!-- Logo Text -->\r\n <ng-container *ngIf=\"displayLogoText\">\r\n <p class=\"sof-ar-header-logo-text\">{{headerLogoText}}</p>\r\n </ng-container>\r\n <!-- NG-Content Left -->\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </div>\r\n <div class=\"sof-ar-header--center\">\r\n <!-- NG-Content Center -->\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </div>\r\n <div class=\"sof-ar-header--right\" fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\">\r\n <!-- NG-Content Right -->\r\n <span fxFlex=\"auto 0 1\" [fxHide.lt-sm]=\"!armatureNavigation && armatureHeaderOverlay\">\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </span>\r\n <div fxFlex=\"auto 0 1\" *ngIf=\"displayDropDownMenu\">\r\n <button id=\"sof-ar-header-btn-dropdown\" mat-icon-button [disableRipple]=\"true\"\r\n [matMenuTriggerFor]=\"sofArHeaderMenu\" [attr.aria-label]=\"dropDownAriaText | translate\">\r\n <span [style.color]=\"iconColor\">\r\n <i class=\"{{headerDropDownIcon}}\"></i>\r\n <span class=\"sr-only\">{{dropDownMenuSRText | translate}}</span>\r\n </span>\r\n </button>\r\n <mat-menu #sofArHeaderMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <!-- NG-Content Menu -->\r\n <ng-content select=\"[sof-ar-header-menu]\"></ng-content>\r\n </mat-menu>\r\n </div>\r\n <!-- Language button -->\r\n <div fxFlex=\"auto 0 1\"\r\n *ngIf=\"headerLanguageSettings?.displayLanguageOptions && headerLanguageSettings?.languages?.length > 2 && !mobileQuery.matches\">\r\n <button id=\"sof-ar-header-lang-dropdown\" mat-flat-button class=\"sof-flat-button\" color=\"primary\"\r\n [matMenuTriggerFor]=\"headerLanguageMenu\" [attr.aria-label]=\"headerLanguageSettings.buttonText | translate\">\r\n <span>\r\n <i class=\"far fa-globe language-globe\"></i>\r\n {{headerLanguageSettings.buttonText | translate}}\r\n </span>\r\n </button>\r\n <mat-menu #headerLanguageMenu=\"matMenu\" class=\"sof-ar-mat-menu\">\r\n <button mat-menu-item *ngFor=\"let lang of headerLanguageSettings.languages\" (click)=\"setLanguage$.emit(lang)\"\r\n id=\"apply-lang-btn-{{lang}}\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\r\n <div fxFlex=\"auto\">\r\n {{ lang | translate }}\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <i *ngIf=\"currentLang === lang\" class=\"fad fa-check selected-language-icon\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n <div\r\n *ngIf=\"headerLanguageSettings?.displayLanguageOptions && headerLanguageSettings?.languages?.length === 2 && !mobileQuery.matches\">\r\n <button *ngIf=\"headerLanguageSettings.languages.length === 2\" id=\"sof-ar-header-lang-button\" mat-flat-button\r\n class=\"sof-flat-button\" color=\"primary\" (click)=\"setLanguage$.emit()\">\r\n <span fxLayoutAlign=\"center center\">\r\n <i class=\"far fa-globe language-globe\"></i>\r\n {{otherLangText | translate}}\r\n </span>\r\n </button>\r\n </div>\r\n <!-- Authorization button -->\r\n <div fxFlex=\"auto 0 1\" *ngIf=\"settings?.displayAuthInfo\">\r\n <button *ngIf=\"!isLoggedIn;else loggedIn\" id=\"sof-ar-header-btn-auth\" mat-flat-button color=\"primary\"\r\n (click)=\"authorizeUser()\" [attr.aria-label]=\"authBtnText | translate\" class=\"sof-flat-button\">\r\n {{ authBtnText | translate }}\r\n </button>\r\n <ng-template #loggedIn>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\">\r\n <div fxFlex=\"auto 0 1\" fxHide.lt-md>\r\n <button [disabled]=\"settings?.makeUsernameUnclickable\" id=\"sof-ar-logged-in-btn-dropdown\"\r\n data-privacy=\"exclude\" [matMenuTriggerFor]=\"sofArLoginMenu\" mat-stroked-button\r\n style=\"padding-left:0px !important\" ngClass=\"left-radius-10 sof-stroked-button mobile-border\"\r\n color=\"primary\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"15px\">\r\n <div fxFlex=\"46px\" fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"absent-account-image\">\r\n <div fxFlex=\"100%\">\r\n {{ userName.charAt(0).toUpperCase() }}\r\n </div>\r\n </div>\r\n <div fxShow fxHide.lt-md fxFlex=\"auto\" class=\"signed-in-name\">\r\n {{ userName }}\r\n </div>\r\n </div>\r\n </button>\r\n <!-- Login menu -->\r\n <mat-menu #sofArLoginMenu=\"matMenu\" class=\"sof-ar-mat-menu\" id=\"loginMenu\">\r\n <a mat-menu-item href=\"{{manageUrl}}\" target=\"_blank\">\r\n {{ authSettings.myAccountText | translate }}\r\n </a>\r\n <div *ngIf=\"settings.displayDarkTheme\" mat-menu-item (click)=\"$event.stopPropagation()\" disabled>\r\n <mat-slide-toggle color=\"accent\" labelPosition=\"before\" [aria-label]=\"settings.darkThemeText\"\r\n [id]=\"'dark-theme-toggle-btn'\" (change)=\"toggleTheme($event)\">\r\n {{ settings.darkThemeText + '(coming soon!)' | translate }}\r\n <!-- TODO: determine if icon is liked <i class=\"fad fa-moon-cloud dark-theme-icon\"></i> -->\r\n </mat-slide-toggle>\r\n </div>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </mat-menu>\r\n </div>\r\n <div fxFlex=\"auto 0 1\">\r\n <button id=\"sof-ar-log-out-btn\" mat-flat-button class=\"sof-flat-icon-button\" color=\"primary\" size=\"medium\"\r\n (click)=\"authorizeUser()\" [attr.aria-label]=\"authBtnText | translate\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <i fxFlex=\"100%\" class=\"fas fa-sign-out-alt\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </mat-toolbar>\r\n</header>","/** The footer configurations */\r\nexport class FooterConfig {\r\n /** True if showing pre content 1 */\r\n public showPreContent1: boolean;\r\n\r\n /** True if showing pre content 2 */\r\n public showPreContent2: boolean;\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FooterConfig } from '../../models/footer-config';\r\n\r\n/** The Armature Footer Component */\r\n@Component({\r\n selector: 'sof-ar-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n standalone: false\r\n})\r\nexport class ArmatureFooterComponent implements OnInit {\r\n\r\n /** The footer config */\r\n @Input() public footerConfig: FooterConfig = new FooterConfig();\r\n\r\n /** the constructor */\r\n constructor() { }\r\n\r\n /** On Init */\r\n public ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<footer role=\"contentinfo\" class=\"sof-ar-footer-container\">\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\" fxLayoutGap=\"10px\">\r\n <div fxFlex=\"100%\" style=\"width: 100%\" fxLayoutAlign=\"center center\" fxLayoutAlign.lt-md=\"start start\" *ngIf=\"footerConfig.showPreContent1\">\r\n <ng-content select=\"[sof-ar-footer-pre-content-1]\"></ng-content>\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" *ngIf=\"footerConfig.showPreContent1\">\r\n <hr />\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" fxLayoutAlign=\"center center\" *ngIf=\"footerConfig.showPreContent2\">\r\n <ng-content select=\"[sof-ar-footer-pre-content-2]\"></ng-content>\r\n </div>\r\n <div fxFlex=\"100%\" style=\"width: 100%\" *ngIf=\"footerConfig.showPreContent2\">\r\n <hr />\r\n </div>\r\n </div>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n</footer>\r\n","import { BreakpointObserver, BreakpointState, LayoutModule } from '@angular/cdk/layout';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, Signal, ViewChild, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatSidenavContent, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { filter } from 'rxjs';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { NavigationThemeSettings } from '../../models/nav-theme.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings } from '../../models/nav.settings';\r\nimport { NavNode, SubNavNodes } from '../../models/navigation';\r\nimport { NavPanelLogo } from '../sof-navigation-panel/models/nav-panel-logo';\r\n\r\n@Component({\r\n selector: 'sof-nav-b2b',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n RouterModule,\r\n TranslateModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n MatMenuModule\r\n ],\r\n providers: [\r\n LayoutModule\r\n ],\r\n templateUrl: './b2b-nav.component.html',\r\n styleUrl: './b2b-nav.component.scss'\r\n})\r\nexport class B2bNavComponent implements OnInit {\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** The router */\r\n private router: Router = inject(Router);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** The brand logo in the footer of the navigation panel */\r\n public brandLogo: NavPanelLogo;\r\n\r\n /**\r\n * Should scroll to top on `NavigationEnd` event?\r\n * @default true\r\n*/\r\n @Input() private scrollToTopOnNavigationEndEvent: boolean = true;\r\n\r\n /**\r\n * Is the nav panel open\r\n * @note this is needed to pass panel opened state to the SofHeaderPortalComponent\r\n */\r\n @Output() isNavPanelOpenedEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /**\r\n * Main content for scroll position\r\n * @note this is the element which has the apps 'main' scrollbar.\r\n */\r\n @ViewChild(MatSidenavContent) sidenavContent!: MatSidenavContent;\r\n\r\n /** Component Input - the navigation data */\r\n @Input() public navigationData: NavNode[];\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public settings: NavigationSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public advancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** Component Input - the navigation settings */\r\n @Input() public themeSettings: NavigationThemeSettings = {};\r\n\r\n /** Component Input - the navigation language settings */\r\n @Input() public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** Current language **/\r\n @Input() public currentLang: string;\r\n\r\n /** logOut text **/\r\n @Input() public logOutText: string;\r\n\r\n /** Sets language **/\r\n @Output() public setLanguage$: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The mat menu trigger */\r\n @ViewChild('navMenuTrigger') public trigger: MatMenuTrigger;\r\n\r\n /** True when the navigation is open */\r\n public isNavOpen: boolean = true;\r\n\r\n /** The selected navigation node */\r\n public currentMenuNode: NavNode = undefined;\r\n\r\n /** The selected nav node */\r\n public selectedNodeIndex: number = undefined;\r\n\r\n /** The selected sub nav node */\r\n public selectedSubNodeIndex: number = undefined;\r\n\r\n /** On Init - Initialize the settings */\r\n public ngOnInit(): void {\r\n this.initSettings();\r\n if (this.scrollToTopOnNavigationEndEvent) {\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd)\r\n ).subscribe((e: NavigationEnd) => {\r\n this.scrollToTop();\r\n this.listenForRouteChanges(e);\r\n });\r\n }\r\n }\r\n\r\n /** Shrinks the navigation */\r\n public shrinkNav(): void {\r\n this.isNavOpen = !this.isNavOpen;\r\n }\r\n\r\n /**\r\n * Opens the menu for the navigation\r\n * @param node The node\r\n * @param event The event\r\n * @returns void\r\n */\r\n public openMenu(node: NavNode, event: MouseEvent, index: number): void {\r\n if (this.isNavOpen || !node.subNodes || !node.subNodes.length || this.selectedNodeIndex === index) {\r\n return;\r\n }\r\n this.currentMenuNode = node;\r\n const button = document.getElementById('navMenuTrigger');\r\n button.style.position = 'fixed';\r\n button.style.top = event.pageY - 30 + 'px';\r\n button.style.left = event.pageX + 30 + 'px';\r\n this.trigger.openMenu();\r\n }\r\n\r\n /**\r\n * Initializes the nav panel settings, defaults will be set if `null` or `undefined`\r\n * @note The 'nullish coalescing assignment operator' `??=` assigns defaults for `boolean` and `number` types,\r\n * for `number` types this will allow for `0` to be accepted. For a `string`, use 'logical OR assignment' `||=` operator,\r\n * as this will also prevent empty strings `\" \"`.\r\n * @see `??=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment#using_nullish_coalescing_assignment)}\r\n * @see `||=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment#try_it)}\r\n */\r\n private initSettings(): void {\r\n this.settings ??= {};\r\n this.settings.allowNavToggle ??= true;\r\n this.initAdvancedSettings();\r\n this.initBasicSettings();\r\n this.initThemeSettings();\r\n }\r\n\r\n /**\r\n * Scrolls to the top of page\r\n * @note using `window.scrollTo` will not work if using this component as the main scrollbar does not live on the window level.\r\n * Configuring `scrollPositionRestoration` in the router module will not work either.\r\n */\r\n scrollToTop(): void {\r\n if (this.sidenavContent) {\r\n this.sidenavContent.scrollTo({ top: 0 });\r\n }\r\n }\r\n\r\n /** Listens for route changes */\r\n private listenForRouteChanges(e: NavigationEnd): void {\r\n const flattenSubNodes = new Map<string, SubNavNodes>();\r\n\r\n this.navigationData.forEach((n, index) => {\r\n if (n.subNodes?.length) {\r\n n.subNodes.forEach((sn, sIndex) => {\r\n flattenSubNodes.set(`${index}:${sIndex}`, sn);\r\n });\r\n }\r\n });\r\n\r\n flattenSubNodes.forEach((v, k) => {\r\n if (e.url.startsWith(v.route)) {\r\n const split = k.split(':');\r\n this.selectedNodeIndex = +split[0];\r\n this.selectedSubNodeIndex = +split[1];\r\n }\r\n });\r\n }\r\n\r\n /** Initializes the advanced nav settings */\r\n private initAdvancedSettings(): void {\r\n this.advancedSettings.topGapDesktop = this.advancedSettings.topGapDesktop || 0;\r\n this.advancedSettings.topGapMobile = this.advancedSettings.topGapMobile || this.settings.headerHeight;\r\n this.advancedSettings.marginTopDesktop = this.advancedSettings.marginTopDesktop || 0;\r\n this.advancedSettings.marginTopMobile = this.advancedSettings.marginTopMobile || 0;\r\n }\r\n\r\n /** Initializes the nav theme settings */\r\n private initThemeSettings(): void {\r\n this.themeSettings.contentBgColor ? this.setThemeColor('content-bg-color', this.themeSettings.contentBgColor) : undefined;\r\n this.themeSettings.fontColor ? this.setThemeColor('font-color', this.themeSettings.fontColor) : undefined;\r\n this.themeSettings.fontColor = this.themeSettings.fontColor || '#000';\r\n this.themeSettings.mobileBgColor = this.themeSettings.mobileBgColor || '#ffffff';\r\n this.themeSettings.bgGradientColor1 ? this.setThemeColor('bg-gradient-color-1', this.themeSettings.bgGradientColor1) : undefined;\r\n this.themeSettings.bgGradientColor2 ? this.setThemeColor('bg-gradient-color-2', this.themeSettings.bgGradientColor2) : undefined;\r\n this.themeSettings.borderRightColor ? this.setThemeColor('border-right-color', this.themeSettings.borderRightColor) : undefined;\r\n this.themeSettings.listBorderColor ? this.setThemeColor('list-border-color', this.themeSettings.listBorderColor) : undefined;\r\n this.themeSettings.highlightGradient1 ? this.setThemeColor('highlight-gradient-1', this.themeSettings.highlightGradient1) : undefined;\r\n this.themeSettings.highlightGradient2 ? this.setThemeColor('highlight-gradient-2', this.themeSettings.highlightGradient2) : undefined;\r\n this.themeSettings.subHighlightBorderColor ?\r\n this.setThemeColor('sub-highlight-border-color', this.themeSettings.subHighlightBorderColor) : undefined;\r\n this.themeSettings.subHighlightBgColor ?\r\n this.setThemeColor('sub-highlight-bg-color', this.themeSettings.subHighlightBgColor) : undefined;\r\n }\r\n\r\n /** Initializes the basic nav settings */\r\n private initBasicSettings(): void {\r\n this.settings.fontAwesomeMenuIcon = this.settings.fontAwesomeMenuIcon || 'fas fa-angle-double-left';\r\n this.settings.fontAwesomeMenuIconClosed = this.settings.fontAwesomeMenuIconClosed || 'fas fa-angle-double-right';\r\n this.settings.allowNavToggle = this.settings.allowNavToggle == null ? true : this.settings.allowNavToggle;\r\n this.settings.headerHeight = this.settings.headerHeight || 60;\r\n this.settings.menuButtonSRText = this.settings.menuButtonSRText || 'Menu Button';\r\n this.settings.menuStyle = this.settings.menuStyle || 'static';\r\n this.settings.displayNumbers = this.settings.displayNumbers == null ? true : this.settings.displayNumbers;\r\n this.settings.progressSectionCompleteIcon = this.settings.progressSectionCompleteIcon || 'fas fa-check-circle';\r\n this.settings.progressSectionFutureIcon = this.settings.progressSectionFutureIcon || 'far fa-circle';\r\n this.settings.progressSectionCurrentIcon = this.settings.progressSectionCurrentIcon || 'fas fa-circle';\r\n this.settings.progressMenuCompleteIcon = this.settings.progressMenuCompleteIcon || 'far fa-check';\r\n this.settings.showProgressBar = this.settings.showProgressBar == null ? true : this.settings.showProgressBar\r\n this.settings.sideNavWidthDesktop = this.settings.sideNavWidthDesktop || '350';\r\n this.settings.sideNavWidthMobile = this.settings.sideNavWidthMobile || '350';\r\n this.settings.overrideNavigation = this.settings.overrideNavigation || false;\r\n this.settings.progressMenuWidth = this.settings.progressMenuWidth || '280';\r\n this.settings.useCustomMobileFooter = this.settings.useCustomMobileFooter != null ? this.settings.useCustomMobileFooter : false;\r\n }\r\n\r\n /**\r\n * Sets the theme color\r\n * @param variable the css variable name\r\n * @param color the color\r\n */\r\n public setThemeColor(variable: string, color: string): void {\r\n document.documentElement.style.setProperty(`--sof-nav-${variable}`, color);\r\n }\r\n}\r\n","<div class=\"sof-nav-panel-container\" style=\"top: 64px\">\r\n <mat-sidenav-container>\r\n <mat-sidenav #navPanel class=\"sof-nav-panel\" [ngClass]=\"{'sof-nav-panel-container-collapsed': !isNavOpen}\"\r\n [opened]=\"true\" [mode]=\"isSmallScreen().matches ? 'over' : 'side'\">\r\n\r\n <ng-content select=\"[sof-ar-nav-header]\"></ng-content>\r\n\r\n <nav [attr.aria-label]=\"'main'\" [style.paddingBottom.px]=\"!!brandLogo ? 0 : 40\" fxLayout=\"column\"\r\n style=\"height: 100%\">\r\n <ul class=\"sof-nav-panel-list\" [class.mobile]=\"isSmallScreen().matches\">\r\n @for (node of navigationData; track $index) {\r\n <li fxFlex=\"auto\" class=\"sof-nav-panel-list-item\"\r\n [class.has-subnodes]=\"node.subNodes?.length && isNavOpen\">\r\n @if (!node.route) {\r\n <div (click)=\"openMenu(node, $event, $index)\" class=\"sof-nav-panel-link primary\" matTooltip=\"{{node.text | translate}}\" matTooltipPosition=\"right\">\r\n <i [ngClass]=\"{'non-link-icon-collapsed': !isNavOpen}\" class=\"{{node.fontAwesomeIcon}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span *ngIf=\"isNavOpen\">{{node.text| translate}}</span>\r\n </div>\r\n }@else {\r\n <a (click)=\"openMenu(node, $event, $index)\" class=\"sof-nav-panel-link\" [routerLink]=\"node.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\" matTooltip=\"{{node.text | translate}}\" matTooltipPosition=\"right\">\r\n <i class=\"{{node.fontAwesomeIcon}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span *ngIf=\"isNavOpen\" class=\"sof-nav-panel-link-label primary\">{{node.text |\r\n translate}}</span>\r\n </a>\r\n }\r\n @if(isNavOpen || $index === selectedNodeIndex) {\r\n <ul class=\"sof-nav-panel-list sub-list\">\r\n @for (subNode of node.subNodes; track $index) {\r\n <li>\r\n <a (click)=\"isSmallScreen().matches ? navPanel.close() : null\"\r\n class=\"sof-nav-panel-link sof-sub-nav-panel-link\" [routerLink]=\"subNode.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\" matTooltip=\"{{subNode.text | translate}}\" matTooltipPosition=\"right\">\r\n <span class=\"sof-nav-panel-link-label\">\r\n <i class=\"{{subNode.icon || 'ph ph-files'}}\"></i>\r\n <span *ngIf=\"isNavOpen\" style=\"padding-left: 8px\">{{subNode.text | translate}} </span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n @if (brandLogo) {\r\n <div class=\"logo\" m-t-auto>\r\n <img [src]=\"brandLogo.url\" [alt]=\"brandLogo.altText\">\r\n </div>\r\n }\r\n </ul>\r\n <button id=\"navMenuTrigger\" #navMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"navMenu\"\r\n style=\"position: absolute; height: 1px; width: 1px; opacity: 0;\"></button>\r\n <mat-menu #navMenu=\"matMenu\" xPosition=\"after\">\r\n @if(currentMenuNode && currentMenuNode.subNodes?.length) {\r\n <a mat-menu-item [routerLink]=\"currentMenuNode.route\" routerLinkActive=\"sof-nav-panel-link-active\">\r\n <span class=\"sof-nav-panel-link-label menu-text bold\">{{currentMenuNode.text | translate}} </span>\r\n </a>\r\n @for(subnode of currentMenuNode.subNodes; track $index) {\r\n <a mat-menu-item [routerLink]=\"subnode.route\" routerLinkActive=\"sof-nav-panel-link-active\">\r\n <span class=\"sof-nav-panel-link-label menu-text\">{{subnode.text | translate}} </span>\r\n </a>\r\n }\r\n }\r\n </mat-menu>\r\n <div fxFlex=\"auto\" style=\"width: 100%\" fxLayoutAlign=\"end end\" fxLayout=\"row\">\r\n <button fxFlex=\"40px\" id=\"sof-ar-nav-btn-menu\" aria-label=\"Menu Button\" mat-icon-button\r\n [disableRipple]=\"true\" class=\"sof-ar-nav-menu-btn\" (click)=\"shrinkNav()\"\r\n [class.hidden]=\"!(settings.allowNavToggle) || settings.hideNavigation\">\r\n <span *ngIf=\"isNavOpen; else closedIcon\" aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIcon}} menu-icon\"></i>\r\n </span>\r\n <ng-template #closedIcon>\r\n <span aria-hidden=\"true\" class=\"sof-ar-nav-menu-icon\">\r\n <i class=\"{{settings.fontAwesomeMenuIconClosed}} menu-icon\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"sr-only\">{{settings.menuButtonSRText | translate}}</span>\r\n </button>\r\n </div>\r\n </nav>\r\n </mat-sidenav>\r\n <mat-sidenav-content [ngClass]=\"{'nav-content-collapsed': !isNavOpen}\">\r\n <ng-content sof-ar-nav-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HeaderAuthSettings } from '../../../header/models/header-auth.settings';\r\nimport { HeaderLanguageSettings } from '../../../header/models/header-language.settings';\r\nimport { HeaderThemeSettings } from '../../../header/models/header-theme.settings';\r\nimport { HeaderSettings } from '../../../header/models/header.settings';\r\nimport { NavigationAdvancedSettings, NavigationSettings, NavigationThemeSettings, NavNode } from '../../../navigation/navigation-api';\r\nimport { routeToPreLoginRoute } from '../../functions/route-to-pre-login-route';\r\nimport { BaseConfig } from '../../models/base-config';\r\nimport { BaseConfigService } from '../../services/base-config.service';\r\nimport { FederatedModuleService } from '../../services/federated-module.service';\r\n\r\n/** The app template component */\r\n@Component({\r\n selector: 'sof-ar-app-template',\r\n templateUrl: './app-template.component.html',\r\n styleUrls: ['./app-template.component.scss'],\r\n standalone: false\r\n})\r\nexport class AppTemplateComponent implements OnInit {\r\n\r\n /** The config observable */\r\n public config$: Observable<BaseConfig>;\r\n\r\n /** The header settings */\r\n public headerSettings: HeaderSettings = {};\r\n\r\n /** The header theme settings */\r\n public headerThemeSettings: HeaderThemeSettings = {};\r\n\r\n /** The header auth settings */\r\n public headerAuthSettings: HeaderAuthSettings = {} as any;\r\n\r\n /** the navigation theme settings */\r\n public navigationTheme: NavigationThemeSettings = {};\r\n\r\n /** The navigation settings */\r\n public navigationSettings: NavigationSettings = {};\r\n\r\n /** The navigation nodes */\r\n public navigationNodes: Array<NavNode> = [];\r\n\r\n /** The navigation advanced settings */\r\n public navigationAdvancedSettings: NavigationAdvancedSettings = {};\r\n\r\n /** The language settings */\r\n public languageSettings: HeaderLanguageSettings = {};\r\n\r\n /** The current language */\r\n public currentLang: string;\r\n\r\n /** The log out text */\r\n public get logOutText(): string {\r\n return this.headerAuthSettings.logOutText;\r\n }\r\n\r\n /** gets the non used language */\r\n public get otherLangText(): string {\r\n return this.languageSettings?.languages?.find(x => x !== this.currentLang);\r\n }\r\n\r\n /** True when the application is running as a federated module */\r\n public isFederatedModule: boolean = false;\r\n\r\n /**\r\n * Constructs the component\r\n * @param configService The config service\r\n * @param translateService The translate service\r\n * @param federatedModuleService The federated module service\r\n * @param router The router\r\n * @param oauthService The OAuth service\r\n */\r\n constructor(\r\n private readonly configService: BaseConfigService,\r\n private readonly translateService: TranslateService,\r\n private readonly federatedModuleService: FederatedModuleService,\r\n private readonly router: Router,\r\n private readonly oauthService: OAuthService\r\n ) {\r\n }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.isFederatedModule = this.federatedModuleService.isFederatedModule;\r\n this.config$ = this.configService.config$;\r\n this.setDefaults();\r\n this.configService.config$.subscribe(config => {\r\n \r\n if (config && config.oAuthSettings.preserveRequestedRoute && this.oauthService.hasValidAccessToken()) {\r\n routeToPreLoginRoute(this.router);\r\n }\r\n // object assign is used here so the header doesn't have to re render with the new object reference\r\n // header\r\n Object.assign(this.headerSettings, config?.header?.settings);\r\n Object.assign(this.headerThemeSettings, config?.header?.theme);\r\n Object.assign(this.headerAuthSettings, config?.oAuthSettings);\r\n\r\n // navigation\r\n this.navigationNodes = config?.navigation?.nodes || this.getExampleNavNodes();\r\n Object.assign(this.navigationSettings, config?.navigation?.settings);\r\n Object.assign(this.navigationAdvancedSettings, config?.navigation?.advanced);\r\n this.assignDefaultNavTheme(config);\r\n Object.assign(this.navigationTheme, config?.navigation?.theme);\r\n\r\n // set dependent value\r\n this.headerSettings.armatureNavigation = !this.navigationSettings.hideNavigation;\r\n \r\n if (this.navigationSettings.menuStyle === 'progress' || this.navigationSettings.hideNavigation) {\r\n this.headerSettings.createSpaceForNavToggle = this.navigationSettings.allowNavToggle = false;\r\n }\r\n\r\n // Set both navigation toggle settings to true if either is true\r\n if (this.headerSettings.createSpaceForNavToggle || this.navigationSettings.allowNavToggle) {\r\n this.headerSettings.createSpaceForNavToggle = this.navigationSettings.allowNavToggle = true;\r\n }\r\n\r\n this.setLanguageOptions();\r\n });\r\n }\r\n\r\n /**\r\n * Applies the language to the translate service\r\n * @param lang the language\r\n */\r\n public applyLanguage(lang?: string): void {\r\n if (!lang) {\r\n lang = this.otherLangText;\r\n }\r\n this.translateService.use(lang);\r\n this.translateService.currentLang = lang;\r\n this.currentLang = lang;\r\n }\r\n\r\n /** Set the language options */\r\n private setLanguageOptions(): void {\r\n if (this.headerSettings.languageSettings) {\r\n Object.assign(this.languageSettings, this.headerSettings.languageSettings);\r\n }\r\n\r\n this.languageSettings.defaultLanguage = this.languageSettings.defaultLanguage || 'en';\r\n this.languageSettings.displayLanguageOptions = this.languageSettings.displayLanguageOptions || false;\r\n this.languageSettings.languages = this.languageSettings.languages || ['en', 'es'];\r\n this.languageSettings.buttonText = this.languageSettings.buttonText || 'Languages';\r\n\r\n this.translateService.addLangs(this.languageSettings.languages);\r\n this.currentLang = this.translateService.currentLang;\r\n this.headerSettings.languageSettings = this.languageSettings;\r\n }\r\n\r\n private setDefaults(): void {\r\n // header\r\n this.headerSettings = {\r\n armatureNavigation: true,\r\n createSpaceForNavToggle: true,\r\n displayLogo: true,\r\n logoUrl: 'https://softheoncdnstorage.blob.core.windows.net/images/softheon/logo.svg',\r\n logoAltText: 'the example portal header logo',\r\n displayLogoText: false,\r\n displayDropDownMenu: false,\r\n dropDownAriaText: 'the header drop down menu button icon',\r\n dropDownMenuSRText: 'the header account button drop down options',\r\n displayAuthInfo: true,\r\n languageSettings: {\r\n displayLanguageOptions: true\r\n }\r\n };\r\n this.headerThemeSettings = {\r\n headerColor: '',\r\n headerDropShadow: true,\r\n authorizationButtonColor: 'rgb(11, 81, 156)',\r\n authorizationButtonBackground: 'rgb(199, 219, 240)'\r\n };\r\n this.headerAuthSettings = {\r\n clientId: '',\r\n issuer: '',\r\n scope: 'openid profile',\r\n logInText: 'SIGN IN',\r\n logOutText: 'SIGN OUT',\r\n redirectUri: 'http://localhost:4200/',\r\n skipIssuerCheck: true,\r\n postLogOutUrl: 'http://localhost:4200/',\r\n loginUrl: '',\r\n returnRoute: '',\r\n timeoutFactor: 9,\r\n myAccountText: 'My Account',\r\n authSetOnStartup: false,\r\n responseType: 'code'\r\n };\r\n\r\n // navigation\r\n this.navigationSettings = {\r\n version: 'v1',\r\n mainMenuText: 'MAIN MENU',\r\n headerHeight: 64,\r\n menuButtonSRText: 'Navigation Menu Button',\r\n maxContentWidthDesktop: 100,\r\n maxContentWidthMobile: 100\r\n };\r\n }\r\n\r\n /** Gets the example navigation nodes */\r\n private getExampleNavNodes(): Array<NavNode> {\r\n return [\r\n {\r\n text: 'demo.nav_1',\r\n fontAwesomeIcon: 'fad fa-home',\r\n route: '/overview',\r\n subNodes: []\r\n },\r\n {\r\n text: 'demo.nav_2',\r\n fontAwesomeIcon: 'fad fa-file-alt',\r\n route: '/documents',\r\n subNodes: [\r\n {\r\n text: 'demo.nav_2a',\r\n route: '/documents/invoice'\r\n },\r\n {\r\n text: 'demo.nav_2b',\r\n route: '/documents/notice'\r\n },\r\n {\r\n text: 'demo.nav_2c',\r\n route: '/tax'\r\n }\r\n ]\r\n },\r\n {\r\n text: 'PAYMENTS',\r\n fontAwesomeIcon: 'fad fa-dollar-sign',\r\n subNodes: [\r\n {\r\n text: 'Make a Payment',\r\n route: '/payment'\r\n },\r\n {\r\n text: 'Autopay',\r\n route: '/autopay'\r\n },\r\n {\r\n text: 'Scheduled Payments',\r\n route: '/scheduled'\r\n },\r\n {\r\n text: 'Payment History',\r\n route: '/history'\r\n },\r\n {\r\n text: 'My Payment Methods',\r\n route: '/payment-methods'\r\n }\r\n ]\r\n },\r\n {\r\n text: 'SERVICE REQUEST',\r\n fontAwesomeIcon: 'fad fa-hands-helping',\r\n route: '/service-requests',\r\n subNodes: []\r\n },\r\n {\r\n text: 'PAPERLESS SETTINGS',\r\n fontAwesomeIcon: 'fad fa-leaf-heart',\r\n route: '/paperless',\r\n subNodes: []\r\n },\r\n {\r\n text: 'FAQs',\r\n fontAwesomeIcon: 'fad fa-question',\r\n route: '/faqs',\r\n subNodes: []\r\n },\r\n {\r\n text: 'Language Help',\r\n fontAwesomeIcon: 'far fa-language',\r\n route: '/language-help',\r\n subNodes: []\r\n }];\r\n }\r\n\r\n /** Assigns the default navigation theme */\r\n private assignDefaultNavTheme(config: BaseConfig): void {\r\n const defaultNavTheme = {\r\n bgGradientColor1: '#fff',\r\n bgGradientColor2: '#fff',\r\n borderRightColor: 'transparent',\r\n contentBgColor: '#ececec',\r\n fontColor: '#000',\r\n highlightGradient1: 'rgb(199, 219, 240)',\r\n highlightGradient2: 'rgb(11, 81, 156)',\r\n listBorderColor: '#CFD8DC',\r\n subHighlightBgColor: 'rgba(255,255,255, .20)',\r\n subHighlightBorderColor: '#00ACC1'\r\n };\r\n Object.assign(this.navigationTheme, defaultNavTheme);\r\n }\r\n\r\n}\r\n","<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n@if(navigationSettings.version === 'v2'){\r\n<sof-nav-b2b *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-nav-b2b>\r\n}\r\n@else {\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n}","/** The start up abstract class */\r\nexport abstract class AbstractStartupService {\r\n /** The load function */\r\n public abstract load(): Promise<any>;\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ThemePaletteColorsModel, ThemePaletteModel } from '../../core/client-generated/model/models';\r\n\r\n/** The color palette constant */\r\nconst COLOR_PALETTE = 'color';\r\n\r\n/** The contrast palette constant */\r\nconst CONTRAST_PALETTE = 'contrast';\r\n\r\n/** The Theme Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n\r\n private readonly document: Document = inject(DOCUMENT);\r\n\r\n /**\r\n * Initializes the palette\r\n * @param themeConfig The theme configurations\r\n */\r\n public initPalette(themeConfig: ThemePaletteModel): void {\r\n if (themeConfig) {\r\n // Setting up primary color & contrast palettes\r\n const primaryColor = themeConfig.primaryColor;\r\n const primaryContrast = themeConfig.primaryContrast;\r\n if (primaryColor && JSON.stringify(primaryColor) !== '{}') {\r\n this.updatePalette('primary', COLOR_PALETTE, primaryColor);\r\n }\r\n if (primaryContrast && JSON.stringify(primaryContrast) !== '{}') {\r\n this.updatePalette('primary', CONTRAST_PALETTE, primaryContrast);\r\n }\r\n // Setting up accent color & contrast palettes\r\n const accentColor = themeConfig.accentColor;\r\n const accentContrast = themeConfig.accentContrast;\r\n if (accentColor && JSON.stringify(accentColor) !== '{}') {\r\n this.updatePalette('accent', COLOR_PALETTE, accentColor);\r\n }\r\n if (accentContrast && JSON.stringify(accentContrast) !== '{}') {\r\n this.updatePalette('accent', CONTRAST_PALETTE, accentContrast);\r\n }\r\n // Setting up warning color & contrast palettes\r\n const warningColor = themeConfig.warningColor;\r\n const warningContrast = themeConfig.warningContrast;\r\n if (warningColor && JSON.stringify(warningColor) !== '{}') {\r\n this.updatePalette('warn', COLOR_PALETTE, warningColor);\r\n }\r\n if (warningContrast && JSON.stringify(warningContrast) !== '{}') {\r\n this.updatePalette('warn', CONTRAST_PALETTE, warningContrast);\r\n }\r\n this.initExtendedPalettes(themeConfig);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the theme\r\n * @param paletteName Palette name\r\n * @param paletteType Palette type\r\n * @param palette Palette values\r\n */\r\n public updatePalette(paletteName: string, paletteType: string, palette: ThemePaletteColorsModel): void {\r\n if (paletteType == COLOR_PALETTE) {\r\n this.updateColor(paletteName, '50', palette.fifty);\r\n this.updateColor(paletteName, '100', palette.oneHundred);\r\n this.updateColor(paletteName, '200', palette.twoHundred);\r\n this.updateColor(paletteName, '300', palette.threeHundred);\r\n this.updateColor(paletteName, '400', palette.fourHundred);\r\n this.updateColor(paletteName, '500', palette.fiveHundred);\r\n this.updateColor(paletteName, '600', palette.sixHundred);\r\n this.updateColor(paletteName, '700', palette.sevenHundred);\r\n this.updateColor(paletteName, '800', palette.eightHundred);\r\n this.updateColor(paletteName, '900', palette.nineHundred);\r\n this.updateColor(paletteName, 'A50', palette.a50);\r\n this.updateColor(paletteName, 'A100', palette.a100);\r\n this.updateColor(paletteName, 'A200', palette.a200);\r\n this.updateColor(paletteName, 'A300', palette.a300);\r\n this.updateColor(paletteName, 'A400', palette.a400);\r\n this.updateColor(paletteName, 'A500', palette.a500);\r\n this.updateColor(paletteName, 'A600', palette.a600);\r\n this.updateColor(paletteName, 'A700', palette.a700);\r\n this.updateColor(paletteName, 'A800', palette.a800);\r\n this.updateColor(paletteName, 'A900', palette.a900);\r\n }\r\n else if (paletteType == CONTRAST_PALETTE) {\r\n this.updateContrast(paletteName, '50', palette.fifty);\r\n this.updateContrast(paletteName, '100', palette.oneHundred);\r\n this.updateContrast(paletteName, '200', palette.twoHundred);\r\n this.updateContrast(paletteName, '300', palette.threeHundred);\r\n this.updateContrast(paletteName, '400', palette.fourHundred);\r\n this.updateContrast(paletteName, '500', palette.fiveHundred);\r\n this.updateContrast(paletteName, '600', palette.sixHundred);\r\n this.updateContrast(paletteName, '700', palette.sevenHundred);\r\n this.updateContrast(paletteName, '800', palette.eightHundred);\r\n this.updateContrast(paletteName, '900', palette.nineHundred);\r\n this.updateContrast(paletteName, 'A50', palette.a50);\r\n this.updateContrast(paletteName, 'A100', palette.a100);\r\n this.updateContrast(paletteName, 'A200', palette.a200);\r\n this.updateContrast(paletteName, 'A300', palette.a300);\r\n this.updateContrast(paletteName, 'A400', palette.a400);\r\n this.updateContrast(paletteName, 'A500', palette.a500);\r\n this.updateContrast(paletteName, 'A600', palette.a600);\r\n this.updateContrast(paletteName, 'A700', palette.a700);\r\n this.updateContrast(paletteName, 'A800', palette.a800);\r\n this.updateContrast(paletteName, 'A900', palette.a900);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the color CSS variable for the given theme\r\n * @param palette Palette to update\r\n * @param part Part number\r\n * @param value Value to replace with\r\n */\r\n public updateColor(palette: string, part: string, value: string): void {\r\n if (!value) {\r\n return;\r\n }\r\n const cssVar = `--${palette}-color-${part}-parts`;\r\n if (value.includes('#')) {\r\n const rgb = this.hexToRgb(value);\r\n this.document.documentElement.style.setProperty(`${cssVar}-rgb`, `${rgb.r}, ${rgb.g}, ${rgb.b}`);\r\n }\r\n this.document.documentElement.style.setProperty(cssVar, value);\r\n }\r\n\r\n /**\r\n * Updates the color contrast CSS variable for the given theme\r\n * @param palette Palette to update\r\n * @param part Part number\r\n * @param value Value to replace with\r\n */\r\n public updateContrast(palette: string, part: string, value: string): void {\r\n if (!value) {\r\n return;\r\n }\r\n if (value === '#000000' || value === '#000') value = '#000000de'; // updates to black with 87% opacity per design best practices ...\r\n this.document.documentElement.style.setProperty(`--${palette}-color-contrast-${part}-parts`, value);\r\n }\r\n\r\n /**\r\n * initializes the extended palettes\r\n * @param themeConfig The theme config\r\n */\r\n private initExtendedPalettes(themeConfig: ThemePaletteModel): void {\r\n // Setting up error color & contrast palettes\r\n const errorColor = themeConfig.errorColor;\r\n const errorContrast = themeConfig.errorContrast;\r\n if (errorColor && JSON.stringify(errorColor) !== '{}') {\r\n this.updatePalette('error', COLOR_PALETTE, errorColor);\r\n }\r\n if (errorContrast && JSON.stringify(errorContrast) !== '{}') {\r\n this.updatePalette('error', CONTRAST_PALETTE, errorContrast);\r\n }\r\n // Setting up info color & contrast palettes\r\n const infoColor = themeConfig.infoColor;\r\n const infoContrast = themeConfig.infoContrast;\r\n if (infoColor && JSON.stringify(infoColor) !== '{}') {\r\n this.updatePalette('info', COLOR_PALETTE, infoColor);\r\n }\r\n if (infoContrast && JSON.stringify(infoContrast) !== '{}') {\r\n this.updatePalette('info', CONTRAST_PALETTE, infoContrast);\r\n }\r\n // Setting up success color & contrast palettes\r\n const successColor = themeConfig.successColor;\r\n const successContrast = themeConfig.successContrast;\r\n if (successColor && JSON.stringify(successColor) !== '{}') {\r\n this.updatePalette('success', COLOR_PALETTE, successColor);\r\n }\r\n if (successContrast && JSON.stringify(successContrast) !== '{}') {\r\n this.updatePalette('success', CONTRAST_PALETTE, successContrast);\r\n }\r\n }\r\n\r\n /**\r\n * Converts the hex code to RGB\r\n * https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\r\n * @param hex The hex code\r\n */\r\n private hexToRgb(hex: string): {r: number, g: number, b: number} {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : undefined;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Optional, Inject } from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\r\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\r\nimport * as _ from 'lodash';\r\nimport { BehaviorSubject, lastValueFrom, Observable, throwError } from 'rxjs';\r\n\r\nimport { ThemeService } from '../../theming/services/theme.service';\r\nimport { federatedModuleConfigStorageKey, languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';\r\nimport { OidcAuthSettings } from '../models/oidc-auth-settings';\r\nimport { BaseConfigService } from '../services/base-config.service';\r\nimport { CustomAuthConfigService } from '../services/custom-auth-config.service';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { FederatedModuleService } from '../services/federated-module.service';\r\n\r\n/**\r\n * The startup service is used to call methods that should be run when initially loading the application\r\n */\r\n@Injectable(\r\n {\r\n providedIn: 'root'\r\n }\r\n)\r\nexport class Initializer {\r\n\r\n /** The configuration behavior subject */\r\n private readonly isInitializedBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** The browser window */\r\n private readonly window: Window;\r\n\r\n /** The example the subdomain substring */\r\n private readonly exampleSubdomain: string = 'example';\r\n\r\n /** The www substring for subdomain route finding */\r\n private readonly wwwSubstring: string = 'www';\r\n\r\n /** The lvh substring for subdomain route finding */\r\n private readonly lvhSubstring: string = 'lvh'\r\n\r\n /** Gets the configurations */\r\n public get isInitialized(): boolean {\r\n return this.isInitializedBs.value;\r\n }\r\n\r\n /** The configuration observable */\r\n public readonly isInitialized$: Observable<boolean>;\r\n\r\n /**\r\n * Constructs the startup service. Include any services that should be used during startup\r\n * @param http The http client\r\n * @param translateService The translate service\r\n * @param themeService The theme service\r\n * @param configService The config service\r\n * @param oAuthService The oauth service\r\n * @param router The router\r\n * @param location The location\r\n * @param federatedModuleService The federated module service\r\n * @param customAuthConfigService The custom auth config service\r\n * @param _window The window injection\r\n */\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly translateService: TranslateService,\r\n private readonly themeService: ThemeService,\r\n private readonly configService: BaseConfigService,\r\n private readonly oAuthService: OAuthService,\r\n private readonly router: Router,\r\n private readonly location: Location,\r\n private readonly federatedModuleService: FederatedModuleService,\r\n @Optional() private readonly customAuthConfigService: CustomAuthConfigService,\r\n @Optional() @Inject(WINDOW) readonly _window: any\r\n ) {\r\n this.isInitialized$ = this.isInitializedBs.asObservable();\r\n this.window = _window || window;\r\n }\r\n\r\n /**\r\n * Loads all data that is needed upon initial loading of the website\r\n */\r\n public async initialize(): Promise<any> {\r\n // reads the language from local storage set in the parent app\r\n // language loading\r\n\r\n // Set languages for translation service\r\n const lang = this.window.localStorage.getItem(languageStorageKey) || this.window.sessionStorage.getItem(languageStorageKey) || 'en';\r\n this.translateService.setDefaultLang(lang);\r\n this.translateService.use(lang);\r\n\r\n // Adapted from https://stackoverflow.com/a/41636880\r\n // Adapted from https://stackoverflow.com/a/41736293\r\n\r\n // A callback used to initialize the promise. This callback is passed two arguments:\r\n // a resolve callback used resolve the promise with a value or the result of another promise,\r\n // and a reject callback used to reject the promise with a provided reason or error.\r\n return new Promise(async (resolve, reject) => {\r\n // Go through all services and complete any API calls necessary.\r\n // At the end, if all works and loads as expected, resolve the promise and set startup success to true.\r\n // If an issue is encountered, you can call reject() to hit the catch() code below.\r\n\r\n // First, load the configurations\r\n const assetPartial = !this.federatedModuleService.isFederatedModule ? './assets' : `./assets/federation/${this.federatedModuleService.federatedModuleId}/assets`;\r\n let [baseConfig, overrideConfig, baseLang, overrideLang, theme] = [JSON, JSON, JSON, JSON, JSON];\r\n try {\r\n [baseConfig, overrideConfig, baseLang, overrideLang, theme] = await Promise.all([\r\n this.http.get<JSON>(`${assetPartial}/baseline/appsettings.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/appsettings.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/i18n/${this.translateService.currentLang}.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/${this.translateService.currentLang}.json`).toPromise(),\r\n this.http.get<JSON>(`${assetPartial}/configurations/theme.json`).toPromise()\r\n ]);\r\n this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);\r\n const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);\r\n this.translateService.setTranslation(this.translateService.currentLang, mergedLanguage);\r\n\r\n const configurePartial = (t) => {\r\n const configSnapShot = this.configService.config;\r\n configSnapShot.theme = t as any;\r\n this.configService.config = configSnapShot;\r\n this.themeService.initPalette(t as any);\r\n }\r\n const subdomain = this.getSubdomain();\r\n if (subdomain && this.configService.config.subdomain) {\r\n try {\r\n let [subdomainConfigs, subdomainLanguage, subdomainTheme] = await Promise.all([\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.${this.translateService.currentLang}.json`)),\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.appsettings.json`)),\r\n lastValueFrom(this.http.get<JSON>(`${assetPartial}/configurations/${subdomain}.theme.json`))\r\n ]);\r\n this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);\r\n this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));\r\n const mergedTheme = _.mergeWith(theme, subdomainTheme, this.mergeCustomizer);\r\n configurePartial(mergedTheme);\r\n }\r\n catch (e) {\r\n if (this.configService.config.subdomain && this.configService.config.subdomain.subdomains.length && !this.configService.config.subdomain.subdomains.includes(subdomain)) {\r\n this.router.dispose();\r\n const error = `Invalid subdomain: ${subdomain}`;\r\n console.error(error);\r\n throw new Error(error);\r\n }\r\n else if (this.configService.config.subdomain?.requireConfiguredSubdomain && this.configService.config.subdomain?.subdomains.includes(subdomain)) {\r\n this.router.dispose();\r\n const error = `Configured subdomain: ${subdomain} does not have any subdomain specific configurations`;\r\n reject(error);\r\n console.error(error);\r\n throw new Error(error);\r\n }\r\n configurePartial(theme);\r\n }\r\n }\r\n else {\r\n configurePartial(theme);\r\n }\r\n this.trySetUpFederatedModules();\r\n }\r\n catch (error) {\r\n // Catch any errors during the get configurations API call\r\n console.error('Error Loading Configurations or Languages');\r\n // Reject the promise\r\n reject('error');\r\n\r\n return throwError(error.error || 'Server error');\r\n }\r\n try {\r\n if (this.customAuthConfigService) {\r\n await this.customAuthConfigService.configureAuthSettings().then(authConfig => {\r\n if (authConfig) {\r\n const config = this.configService.config.oAuthSettings;\r\n\r\n return this.login(config);\r\n }\r\n else {\r\n return Promise.resolve(false);\r\n }\r\n });\r\n }\r\n else {\r\n const oAuth = await this.setUpOAuth();\r\n }\r\n }\r\n catch (error) {\r\n reject(error);\r\n\r\n return throwError(error);\r\n }\r\n\r\n // Navigate to the requested route\r\n if (this.configService.config.oAuthSettings?.preserveRoute) {\r\n this.router.navigateByUrl(this.oAuthService.state);\r\n }\r\n\r\n this.isInitializedBs.next(true);\r\n resolve(true);\r\n }).catch((error) => {\r\n // Catch the error\r\n console.error('There was an error loading the startup configurations.');\r\n });\r\n }\r\n\r\n /**\r\n * Configure implicit flow\r\n */\r\n private async setUpOAuth(): Promise<boolean> {\r\n if (this.configService.config?.oAuthSettings?.issuer) {\r\n const config = this.configService.config.oAuthSettings;\r\n const authConfig = new AuthConfig({\r\n clientId: config.clientId,\r\n redirectUri: config.redirectUri,\r\n issuer: config.issuer,\r\n scope: config.scope,\r\n skipIssuerCheck: config.skipIssuerCheck != undefined ? config.skipIssuerCheck : true,\r\n timeoutFactor: config.timeoutFactor || 0.75,\r\n postLogoutRedirectUri: config.postLogoutRedirectUri,\r\n loginUrl: config.loginUrl,\r\n strictDiscoveryDocumentValidation: false,\r\n responseType: config.responseType || 'code'\r\n });\r\n this.oAuthService.configure(authConfig);\r\n this.oAuthService.skipIssuerCheck = true;\r\n this.oAuthService.responseType = config.responseType || 'code';\r\n this.oAuthService.strictDiscoveryDocumentValidation = false;\r\n this.oAuthService.tokenValidationHandler = new JwksValidationHandler();\r\n this.oAuthService.timeoutFactor = 0.75;\r\n this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token');\r\n\r\n // set initialized on start up to true\r\n config.authSetOnStartup = true;\r\n const parentConfig = this.configService.config;\r\n parentConfig.oAuthSettings = config;\r\n this.configService.config = parentConfig;\r\n\r\n return this.login(config);\r\n }\r\n\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * Handle Login\r\n * @param config The Oidc Auth Settings\r\n */\r\n private async login(config: OidcAuthSettings): Promise<boolean> {\r\n const isValid = this.validateExistingTokenAgainstConfigs();\r\n const preservedRoute = this.window.sessionStorage.getItem(preSignInRouteStorageKey);\r\n if (!preservedRoute) {\r\n this.window.sessionStorage.setItem(preSignInRouteStorageKey, this.location.path());\r\n }\r\n if (config.requireLoginOnStartup || !isValid) {\r\n return this.oAuthService.loadDiscoveryDocumentAndLogin({state: this.location.path()})\r\n // handles the case for expired access token or invalid nonce or people bookmarking the ids login page\r\n .catch(async (res) => {\r\n this.oAuthService.initLoginFlow(this.location.path());\r\n\r\n return Promise.resolve(true);\r\n });\r\n }\r\n else {\r\n return this.oAuthService.loadDiscoveryDocumentAndTryLogin()\r\n // handles the case for expired access token or invalid nonce or people bookmarking the ids login page\r\n .catch(async (res) => {\r\n this.oAuthService.initLoginFlow();\r\n\r\n return Promise.resolve(true);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Merges the two config objects ignoring the array type\r\n * @param objValue The default config value\r\n * @param srcValue The target switchboard config value\r\n * @returns The merge of the two configs provided\r\n */\r\n private mergeCustomizer(objValue: any, srcValue: any): any {\r\n if (_.isArray(objValue) && srcValue) {\r\n return srcValue;\r\n }\r\n }\r\n\r\n /**\r\n * Validates the existing token against the configurations\r\n * @returns true when token is valid\r\n */\r\n private validateExistingTokenAgainstConfigs(): boolean {\r\n if (this.configService.config.oAuthSettings.disableStartupTokenValidation) {\r\n return true;\r\n }\r\n if (!this.window.sessionStorage.getItem('access_token')) {\r\n return true;\r\n }\r\n const grantedScopes: Array<string> = this.oAuthService.getGrantedScopes() as Array<string>;\r\n const configuredScopes = this.configService.config.oAuthSettings.scope.split(' ');\r\n const diffs = grantedScopes.filter(x => !configuredScopes.includes(x))\r\n .concat(configuredScopes.filter(x => !grantedScopes.includes(x)));\r\n if (diffs.length || this.oAuthService.getIdentityClaims()['aud'] !== this.configService.config.oAuthSettings.clientId) {\r\n this.window.sessionStorage.removeItem('access_token');\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** Getting the subdomain from url */\r\n private getSubdomain(): string {\r\n const domain = this.window.location.hostname;\r\n if (domain.indexOf('.') < 0 ||\r\n domain.split('.')[0] === this.exampleSubdomain || domain.split('.')[0] === this.lvhSubstring || domain.split('.')[0] === this.wwwSubstring) {\r\n return '';\r\n } else {\r\n return domain.split('.')[0];\r\n }\r\n }\r\n\r\n /**\r\n * Tries to set up the federated modules when configured\r\n */\r\n private trySetUpFederatedModules(): boolean {\r\n if (this.federatedModuleService.isFederatedModule || !this.configService.config.federatedModules || !Object.keys(this.configService.config.federatedModules).length) {\r\n return false;\r\n }\r\n this.window.sessionStorage.setItem(federatedModuleConfigStorageKey, JSON.stringify(this.configService.config.federatedModules));\r\n return true;\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, isDevMode, Optional } from '@angular/core';\r\nimport { OAuthModuleConfig, OAuthResourceServerErrorHandler, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n/** The Custom OAuth Interceptor Service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArmatureAuthTokenAppendInterceptor {\r\n /**\r\n * The Constructor\r\n * @param authStorage The Authorization storage\r\n * @param errorHandler The Error handler \r\n * @param moduleConfig The Authorization module config\r\n */\r\n constructor(\r\n private readonly authStorage: OAuthStorage,\r\n private readonly errorHandler: OAuthResourceServerErrorHandler,\r\n @Optional() private readonly moduleConfig: OAuthModuleConfig\r\n ) { }\r\n\r\n /**\r\n * Checks if the given url starts with the current website url\r\n * @param url The url\r\n */\r\n public checkUrl(url: string): boolean {\r\n // don't append token to non softheon calls for dev mode\r\n if (isDevMode() && (url.indexOf('.softheon.com') > -1 || url.indexOf('localhost') > -1)) {\r\n return true;\r\n }\r\n if (!this.moduleConfig.resourceServer\r\n || !this.moduleConfig.resourceServer.allowedUrls\r\n || !this.moduleConfig.resourceServer.sendAccessToken) {\r\n return false;\r\n }\r\n const currentUrl = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`;\r\n\r\n // still append token to local url refs\r\n return url.startsWith(currentUrl) || url.indexOf('http') === -1;\r\n }\r\n\r\n /**\r\n * Intercepts the http requests and appends the authorization token to the header if the endpoint matches the current base uri\r\n * @param req The request\r\n * @param next The Next\r\n * https://manfredsteyer.github.io/angular-oauth2-oidc/angular-oauth2-oidc/docs/additional-documentation/working-with-httpinterceptors.html\r\n */\r\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // request url\r\n const url = req.url.toLowerCase();\r\n\r\n // checks the url and determines if sending the access token is allowed\r\n if ((this.checkUrl(url) && this.moduleConfig.resourceServer.sendAccessToken)) {\r\n let headers = req.headers;\r\n\r\n let token = this.authStorage.getItem('access_token');\r\n const ssoToken = window.sessionStorage.getItem('Sof-Arm-Access-Token');\r\n if (ssoToken) {\r\n token = ssoToken;\r\n }\r\n const header = `Bearer ${token}`;\r\n if (token) {\r\n headers = headers.set('Authorization', header);\r\n }\r\n\r\n req = req.clone({ headers });\r\n }\r\n\r\n return next.handle(req)\r\n .pipe(\r\n catchError(err => this.errorHandler.handleError(err))\r\n );\r\n }\r\n}\r\n","import { DataStoreConfig } from './data-store-config';\r\n\r\n/** The session configurations */\r\nexport class SessionConfig<T = any> {\r\n /** The browser storage implementation */\r\n public browserStorageImplementation: string;\r\n\r\n /** The session management implementation */\r\n public sessionManagementImplementation: string;\r\n\r\n /** The data store configurations */\r\n public dataStoreConfig: DataStoreConfig<T>;\r\n\r\n /** The transfer base path */\r\n public transferBasePath: string;\r\n\r\n /** The key path used for browser storage */\r\n public keyPath: string;\r\n\r\n /** The session management base path */\r\n public sessionManagementBasePath: string;\r\n\r\n /** The session refresh time in minutes */\r\n public sessionRefreshTimeMinutes: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseConfigService } from './base-config.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultConfigService extends BaseConfigService {\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n super();\r\n };\r\n}\r\n","/** The http verb types */\r\nexport type HttpVerb = 'POST' | 'GET' | 'PUT' | 'PATCH' | 'DELETE';\r\n\r\n/** The http verb constants */\r\nexport const httpVerb = {\r\n POST: 'POST' as HttpVerb,\r\n GET: 'GET' as HttpVerb,\r\n PUT: 'PUT' as HttpVerb,\r\n PATCH: 'PATCH' as HttpVerb,\r\n DELETE: 'DELETE' as HttpVerb,\r\n}\r\n","/**\r\n * Creates a new guid\r\n */\r\n// tslint:disable: no-bitwise\r\n// tslint:disable-next-line: only-arrow-functions\r\nexport const newGuid = (): string =>\r\n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = (c == 'x') ? r : (r & 0x3 | 0x8);\r\n\r\n return v.toString(16);\r\n });\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\nimport { SessionPostRequestModel, SessionPutRequestModel, SessionResponseModel } from '../client-generated/model/models';\r\nimport { SESSION_CONFIG, WINDOW } from '../models/constants';\r\nimport { HttpVerb, httpVerb } from '../models/http-verbs';\r\nimport { SessionConfig } from '../models/session-config';\r\nimport { TypedSession } from '../models/typed-session';\r\nimport { newGuid } from '../functions/guid';\r\n\r\n/** the data store retrieve complete session key */\r\nconst dataStoreRetrieveCompleteSessionKey = 'dataStoreRetrieve';\r\n\r\n/** The session service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService<T = any> {\r\n\r\n /** The session id */\r\n private _sessionId: string;\r\n\r\n /** True when the data store retrieve is complete */\r\n private isDataStoreRetrieveComplete: boolean = false;\r\n\r\n /** The local storage key */\r\n private readonly storageKey: string = 'Sof-Arm-Session-Id';\r\n\r\n /** Teh current update data store call */\r\n private readonly currentUpdateDataStoreCall: Observable<any> = of({});\r\n\r\n /** The session data behavior subject */\r\n private readonly sessionData: BehaviorSubject<TypedSession<T>> = new BehaviorSubject<TypedSession<T>>(undefined);\r\n\r\n /** True when the service has finished initializing */\r\n private readonly isInitializedBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** True if the data store is initialized */\r\n private readonly isDataStoreInitBs: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n /** True if client side session management */\r\n private get isClientSessionManagement(): boolean {\r\n return this.sessionConfig.sessionManagementImplementation === 'client';\r\n }\r\n\r\n /** True if server side session management */\r\n private get isServerSessionManagement(): boolean {\r\n return this.sessionConfig.sessionManagementImplementation === 'server';\r\n }\r\n\r\n /** True if using browser local storage */\r\n private get useBrowserLocalStorage(): boolean {\r\n return this.sessionConfig.browserStorageImplementation === 'local';\r\n }\r\n\r\n /** True if using browser session storage */\r\n private get useBrowserSessionStorage(): boolean {\r\n return this.sessionConfig.browserStorageImplementation === 'session';\r\n }\r\n\r\n /** The window */\r\n private readonly window: Window;\r\n\r\n /** True if data store is provided */\r\n private readonly isDataStoreProvided: boolean = false;\r\n\r\n /** The session id */\r\n public get sessionId(): string {\r\n if (!this._sessionId) {\r\n this.isClientSessionManagement ? this.initClientSessionId() : this.initServerSessionId();\r\n }\r\n\r\n return this._sessionId;\r\n }\r\n\r\n /** The session */\r\n public session$: Observable<TypedSession<T>>;\r\n\r\n /** The session refresh observable */\r\n public sessionRefresh$: Observable<any>;\r\n\r\n /** Indicates when the service has finished initializing */\r\n public isInitialized$: Observable<boolean>;\r\n\r\n /** True if the data store is initialized */\r\n public isDataStoreInit$: Observable<boolean>;\r\n\r\n /** gets the session */\r\n public get session(): TypedSession<T> {\r\n return this.sessionData.value;\r\n }\r\n\r\n /** sets the session */\r\n public set session(value: TypedSession<T>) {\r\n this.sessionData.next(value);\r\n this.window.sessionStorage.setItem(this.sessionConfig.keyPath, this.encode(value));\r\n }\r\n\r\n /**\r\n * Constructs the service\r\n * @param sessionConfig The session configurations\r\n * @param _window The window interface\r\n * @param authService The OAuth odic 2 service\r\n * @param httpClient The http client\r\n */\r\n constructor(\r\n @Optional() @Inject(SESSION_CONFIG) readonly sessionConfig: SessionConfig,\r\n @Optional() @Inject(WINDOW) readonly _window: any,\r\n @Optional() private readonly authService: OAuthService,\r\n private readonly httpClient: HttpClient\r\n ) {\r\n this.isInitialized$ = this.isInitializedBs.asObservable();\r\n this.isDataStoreInit$ = this.isDataStoreInitBs.asObservable();\r\n if (!this.sessionConfig) {\r\n this.sessionConfig = new SessionConfig();\r\n }\r\n this.isDataStoreProvided = !!this.sessionConfig?.dataStoreConfig;\r\n this.window = _window;\r\n if (!this.window) {\r\n this.window = window;\r\n }\r\n const dataStoreLoadedValue = this.window.sessionStorage.getItem(dataStoreRetrieveCompleteSessionKey);\r\n this.isDataStoreRetrieveComplete = !!dataStoreLoadedValue ? dataStoreLoadedValue.toLowerCase() === 'true' : false;\r\n // if not using a data store, update the initialized to true for it\r\n if (!this.isDataStoreProvided) {\r\n this.isDataStoreInitBs.next(true);\r\n }\r\n if (!this.sessionConfig?.browserStorageImplementation) {\r\n this.sessionConfig.browserStorageImplementation = 'session';\r\n }\r\n if (!this.sessionConfig?.sessionManagementImplementation) {\r\n this.sessionConfig.sessionManagementImplementation = 'client';\r\n }\r\n if (this.isServerSessionManagement && !this.sessionConfig) {\r\n throw new Error('Cannot user server session management with null sessionConfig please provide: GlobalInjectionTokens.sessionConfig');\r\n }\r\n if (this.isClientSessionManagement) {\r\n this.initClientSessionManagement();\r\n\r\n return;\r\n }\r\n\r\n this.initServerSessionManagement();\r\n }\r\n\r\n /**\r\n * Redirects to a url with a ref to the existing session\r\n * @param uri The uri to redirect to\r\n * @param syncSession Sync session.\r\n * @param configs Redirect configs.\r\n */\r\n public redirect(uri: string, syncSession: boolean = false, configs: RedirectSessionConfigs = {}): void {\r\n // if the host name isn't in the uri, we are going to a different domain, so use the gateway on the other domain's server\r\n let formAction = `${this.sessionConfig.transferBasePath}/ssogateway/v2/sso/inbound-transfer/${this.sessionConfig.keyPath}`;\r\n if (uri.indexOf(window.location.hostname) === -1) {\r\n const uriParts = uri.split('/');\r\n // this results in ['https:', '', 'domain.host'], use 0 and 2 to get the base url of the redirect uri\r\n formAction = `${uriParts[0]}//${uriParts[2]}/ssogateway/v2/sso/inbound-transfer/${this.sessionConfig.keyPath}`;\r\n }\r\n const form = document.createElement('form');\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n const inputDestination = document.createElement('input');\r\n inputDestination.type = 'hidden';\r\n form.method = 'POST';\r\n form.action = formAction;\r\n if (configs.targetNewTab) {\r\n // The parent session should already be present in child window as per browsing context rules, but for whatever reason form.target = '_blank' does not do that.\r\n // Need to use window.open here so the parent window's session also gets carried over to the new tab.\r\n // For reference: https://stackoverflow.com/questions/17297287/sessionstorage-on-new-window-isnt-empty-when-following-a-link-with-target-bl\r\n form.target = 'customWindow';\r\n window.open('', 'customWindow');\r\n }\r\n\r\n input.name = 'data';\r\n input.value = this.window.sessionStorage.getItem(this.sessionConfig.keyPath);\r\n inputDestination.name = 'destination';\r\n inputDestination.value = uri;\r\n form.appendChild(input);\r\n form.appendChild(inputDestination);\r\n document.body.appendChild(form);\r\n form.submit();\r\n }\r\n\r\n /**\r\n * Updates the session\r\n * @param body The session put request body\r\n */\r\n public updateSession(\r\n body: TypedSession<T>,\r\n securableDelegate: Array<(arg: any) => any> | ((arg: any) => any),\r\n skipDataStore?: boolean): Observable<any> {\r\n if (!this._sessionId) {\r\n console.error('No session has been initialized, skipping update call');\r\n\r\n return undefined;\r\n }\r\n if (!securableDelegate) {\r\n throw new Error('SessionService:updateSession -> Argument is null or undefined, arg: securableDelegate');\r\n }\r\n if (Array.isArray(body.sessionData) && !Array.isArray(securableDelegate)) {\r\n throw new Error(\r\n 'SessionService:updateSession -> Type miss match, arg: body.SessionData (type of Array) and arg: securableDelegate (type of (arg: any) => any) both must be array or non-array'\r\n );\r\n }\r\n if (!Array.isArray(body.sessionData) && Array.isArray(securableDelegate)) {\r\n throw new Error(\r\n 'SessionService:updateSession -> Type miss match, arg: body.SessionData (type of any) and arg: securableDelegate (type of Array) both must be array or non-array'\r\n );\r\n }\r\n // create response model and update observable to emit new session value\r\n const model: SessionResponseModel = {\r\n initializingOrigin: body.initializingOrigin,\r\n branding: body.branding,\r\n oAuth: body.oAuth,\r\n sessionId: this._sessionId,\r\n tracking: body.tracking,\r\n sessionData: body.sessionData\r\n };\r\n this.session = model;\r\n\r\n const putModel: SessionPutRequestModel = {\r\n initializingOrigin: body.initializingOrigin,\r\n sessionData:\r\n (Array.isArray(body.sessionData)\r\n ? body.sessionData.map((d, index) => securableDelegate[index](d)) : (securableDelegate as ((arg: any) => any))(body.sessionData)),\r\n branding: body.branding,\r\n tracking: body.tracking,\r\n oAuth: body.oAuth\r\n };\r\n\r\n // if data store is provided run the delegate to determine the body and the uri to use for the update\r\n if (this.isDataStoreProvided && !skipDataStore) {\r\n const updateTuple =\r\n this.sessionConfig?.dataStoreConfig.updateRequestDelegate(this.sessionConfig?.dataStoreConfig.baseUri, body.sessionData);\r\n // switch map to cancel existing calls with newer ones to avoid reverting data\r\n if (this.sessionConfig?.dataStoreConfig.shouldUpdateDataStoreDelegate(body.sessionData)) {\r\n this.currentUpdateDataStoreCall.pipe(switchMap(() => {\r\n switch (this.sessionConfig?.dataStoreConfig.updateVerb) {\r\n case httpVerb.POST:\r\n return this.httpClient.post(updateTuple.uri, updateTuple.body);\r\n case httpVerb.PUT:\r\n default:\r\n return this.httpClient.put(updateTuple.uri, updateTuple.body);\r\n }\r\n }))\r\n .subscribe(() => {\r\n this.isDataStoreRetrieveComplete = true;\r\n this.window.sessionStorage.setItem(dataStoreRetrieveCompleteSessionKey, 'true');\r\n });\r\n }\r\n }\r\n\r\n return this.session$;\r\n }\r\n\r\n /** Removes the session */\r\n public removeSession(): void {\r\n this.sessionData.next(undefined);\r\n this.window.sessionStorage.removeItem(dataStoreRetrieveCompleteSessionKey);\r\n this.window.sessionStorage.removeItem(this.sessionConfig.keyPath);\r\n }\r\n\r\n /**\r\n * @deprecated removing in the next version\r\n * Syncs the session\r\n * Returns the observable indicating when the session has been synced\r\n */\r\n public syncSession(): Observable<any> {\r\n return of(true);\r\n }\r\n\r\n /**\r\n * @deprecated removing in the next version\r\n * Refreshes the session\r\n */\r\n public refreshSession(): void {\r\n }\r\n\r\n /** Initialize server session management */\r\n private initServerSessionManagement(): void {\r\n this.session$ = this.sessionData.asObservable();\r\n\r\n const getFromDataStore = (): any => {\r\n if (!this.sessionConfig?.dataStoreConfig || !this.authService || this.isDataStoreRetrieveComplete) {\r\n return;\r\n }\r\n\r\n // load data from data store anon\r\n const loadDataStore = () =>\r\n this.determineDataStoreFunction(this.sessionConfig?.dataStoreConfig.retrieveVerb,\r\n this.sessionConfig?.dataStoreConfig.retrieveRequestDelegate,\r\n this.sessionConfig?.dataStoreConfig.baseUri,\r\n undefined)\r\n .subscribe(res => {\r\n this.isInitialized$.subscribe(isInit => {\r\n if (!isInit) {\r\n return;\r\n }\r\n this.session$.pipe(take(1))\r\n .subscribe(ses => {\r\n this.updateSession(this.sessionConfig?.dataStoreConfig.retrieveResponseDelegate(res, ses),\r\n this.sessionConfig?.dataStoreConfig.retrieveSecurableDelegate(res), true);\r\n this.isDataStoreInitBs.next(true);\r\n this.isDataStoreRetrieveComplete = true;\r\n this.window.sessionStorage.setItem(dataStoreRetrieveCompleteSessionKey, 'true');\r\n });\r\n });\r\n });\r\n\r\n if (!this.authService.hasValidAccessToken()) {\r\n // HACK: I couldn't do this based on an event so I had to get creative\r\n const interval = setInterval(() => {\r\n if (this.authService.hasValidAccessToken()) {\r\n loadDataStore();\r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n }\r\n else {\r\n return loadDataStore();\r\n }\r\n };\r\n\r\n const body: SessionPostRequestModel = {\r\n sessionData: undefined,\r\n branding: undefined\r\n };\r\n\r\n const encodedSession = this.window.sessionStorage.getItem(this.sessionConfig.keyPath);\r\n this._sessionId = `Session-${newGuid()}`;\r\n if (!encodedSession) {\r\n this.session = body;\r\n this.isInitializedBs.next(true);\r\n getFromDataStore();\r\n }\r\n else {\r\n this.session = this.decode(encodedSession);\r\n this.isInitializedBs.next(true);\r\n getFromDataStore();\r\n }\r\n }\r\n\r\n /** Initializes the server side session id */\r\n private initServerSessionId(): void {\r\n if (!this._sessionId) {\r\n console.warn('Session Initializing, subscribe to session$ to get the session info. Session Id will be populated upon initialization');\r\n\r\n return;\r\n }\r\n }\r\n\r\n /** Initializes client side session management */\r\n private initClientSessionManagement(): void {\r\n if (this.useBrowserSessionStorage) {\r\n const sesId = this.window.sessionStorage.getItem(this.storageKey);\r\n this._sessionId = sesId || newGuid();\r\n this.setSessionStorage();\r\n }\r\n else if (this.useBrowserLocalStorage) {\r\n const sesId = this.window.localStorage.getItem(this.storageKey);\r\n this._sessionId = sesId || newGuid();\r\n this.setLocalStorage();\r\n }\r\n this.isInitializedBs.next(true);\r\n }\r\n\r\n private getSessionIdFromStorage(): string {\r\n if (this.useBrowserLocalStorage) {\r\n return this.window.localStorage.getItem(this.storageKey);\r\n }\r\n else if (this.useBrowserSessionStorage) {\r\n return this.window.sessionStorage.getItem(this.storageKey);\r\n }\r\n }\r\n\r\n /** Initialize the client side session id */\r\n private initClientSessionId(): void {\r\n this._sessionId = newGuid();\r\n if (this.useBrowserSessionStorage) {\r\n this.setSessionStorage();\r\n }\r\n else if (this.useBrowserLocalStorage) {\r\n this.setLocalStorage();\r\n }\r\n }\r\n\r\n /** Sets session storage */\r\n private setSessionStorage(): void {\r\n this.window.sessionStorage.setItem(this.storageKey, this._sessionId);\r\n }\r\n\r\n /** Sets local storage */\r\n private setLocalStorage(): void {\r\n this.window.localStorage.setItem(this.storageKey, this._sessionId);\r\n }\r\n\r\n /**\r\n * Determines the type of http call to make for the data store\r\n * @param verb The verb\r\n * @param delegate The delegate\r\n * @param uri The uri\r\n */\r\n private determineDataStoreFunction(\r\n verb: HttpVerb,\r\n delegate: (baseUri: string, body: T) => { uri: string, body?: any },\r\n uri: string,\r\n body: any\r\n ): Observable<any> {\r\n const tuple = delegate(uri, body);\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n });\r\n switch (verb) {\r\n case httpVerb.PUT:\r\n return this.httpClient.put(tuple.uri, tuple.body, { headers });\r\n case httpVerb.POST:\r\n return this.httpClient.post(tuple.uri, tuple.body, { headers });\r\n case httpVerb.GET:\r\n return this.httpClient.get(tuple.uri, { headers });\r\n case httpVerb.PATCH:\r\n return this.httpClient.patch(tuple.uri, tuple.body, { headers });\r\n case httpVerb.DELETE:\r\n return this.httpClient.delete(tuple.uri, { headers });\r\n default:\r\n throw new Error('Http verb must be one of: PATCH, PUT, POST, DELETE, GET');\r\n }\r\n }\r\n\r\n /**\r\n * Encodes the object\r\n * @param value The object\r\n */\r\n private encode(value: any): string {\r\n return window.btoa(unescape(encodeURIComponent(JSON.stringify(value))));\r\n }\r\n\r\n /**\r\n * Decodes the string\r\n * @param str The string\r\n */\r\n private decode(str: string): any {\r\n return JSON.parse(decodeURIComponent(escape(window.atob(str))));\r\n }\r\n}\r\n\r\n/**\r\n * Redirect Session Configs.\r\n */\r\nexport class RedirectSessionConfigs {\r\n /** If session should be synced. */\r\n syncSession?: boolean;\r\n\r\n /** If new tab should be targeted. */\r\n targetNewTab?: boolean;\r\n}","import { AssertedUserModel } from '../client-generated/model/assertedUserModel';\r\n\r\n/** The user entity service config */\r\nexport class UserEntityServiceConfig {\r\n /** true if getting user on start up */\r\n public getUserOnInit: boolean = true;\r\n\r\n /** The user entity base url */\r\n public userEntityBaseUrl: string;\r\n\r\n /** True when including links */\r\n public includeLinks: boolean = true;\r\n\r\n /** The partial for the get user call */\r\n public getUserPartial: string;\r\n\r\n /** The validate function */\r\n public validate: (user: AssertedUserModel) => boolean = (user: AssertedUserModel): boolean => true;\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\n\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, filter, first, share, take } from 'rxjs/operators';\r\n\r\nimport { AssertedUserModel } from '../client-generated/model/models';\r\nimport { USER_ENTITY_SERVICE_CONFIG } from '../models/constants';\r\nimport { UserEntityServiceConfig } from '../models/user-entity-service-config';\r\n\r\n/** The user entity service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserEntityService {\r\n\r\n /** The user observable */\r\n public readonly user$: Observable<AssertedUserModel>;\r\n\r\n /** True if the service is available for use */\r\n private isServiceAvailable: boolean;\r\n\r\n /** The get user partial url */\r\n private readonly getUserPartial: string = 'api/userManagement/v1/user';\r\n\r\n /** The user call */\r\n private userCall: Promise<Array<AssertedUserModel>>;\r\n\r\n /** The user model and hash */\r\n private get _user(): AssertedUserModel {\r\n return this.userBS.value;\r\n }\r\n private set _user(val: AssertedUserModel) {\r\n this.userBS.next(val);\r\n }\r\n\r\n /** the user behavior subject */\r\n private readonly userBS: BehaviorSubject<AssertedUserModel> = new BehaviorSubject<AssertedUserModel>(undefined);\r\n\r\n /**\r\n * Constructs the service\r\n * @param oauthService The oauth oidc 2 service\r\n * @param httpClient The http client\r\n * @param userEntityServiceConfig The user entity service configurations\r\n */\r\n constructor(\r\n private readonly oauthService: OAuthService,\r\n private readonly httpClient: HttpClient,\r\n @Optional() @Inject(USER_ENTITY_SERVICE_CONFIG) readonly userEntityServiceConfig: UserEntityServiceConfig\r\n ) {\r\n this.userEntityServiceConfig = !this.userEntityServiceConfig ? new UserEntityServiceConfig() : this.getConfigWithDefaults();\r\n // tslint:disable-next-line: no-parameter-reassignment\r\n this.userEntityServiceConfig.userEntityBaseUrl = this.userEntityServiceConfig.userEntityBaseUrl || '/';\r\n this.getUserPartial = this.userEntityServiceConfig.getUserPartial || this.getUserPartial;\r\n this.user$ = this.userBS.asObservable()\r\n .pipe(filter(val => !!val));\r\n\r\n if (this.userEntityServiceConfig.getUserOnInit) {\r\n const interval = setInterval(() => {\r\n this.isServiceAvailable = this.oauthService.hasValidAccessToken();\r\n if (!this.isServiceAvailable) {\r\n return;\r\n }\r\n this.getUserFromApi()\r\n .then()\r\n .catch();\r\n clearInterval(interval);\r\n }, 100);\r\n }\r\n }\r\n\r\n /** Gets the user */\r\n public async getUser(): Promise<AssertedUserModel> {\r\n return new Promise((resolve, reject) => {\r\n this.user$.pipe(\r\n take(1),\r\n share(),\r\n catchError(e => {\r\n reject(e);\r\n\r\n return of(e);\r\n }))\r\n .subscribe(user => {\r\n resolve(user);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Updates the user\r\n * @param user The new user model\r\n */\r\n public async updateUser(user?: AssertedUserModel): Promise<AssertedUserModel> {\r\n if (user) {\r\n this._user = user;\r\n\r\n return Promise.resolve(this._user);\r\n }\r\n\r\n await this.getUserFromApi();\r\n\r\n return Promise.resolve(this._user);\r\n }\r\n\r\n /** Returns true if the user meets the validation function provided */\r\n public validateUser(): boolean {\r\n if (this.userEntityServiceConfig && this._user) {\r\n return this.userEntityServiceConfig.validate(this._user);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Gets the user from the api */\r\n private async getUserFromApi(): Promise<void> {\r\n // use the local path if there is not base path provided\r\n return this.oauthService.events.pipe(first(e => e.type === 'discovery_document_loaded'))\r\n .toPromise()\r\n .then(async () => {\r\n if (!this.oauthService.hasValidAccessToken()) {\r\n let errormessage = \"Could not make get user from api call because no valid token!\";\r\n console.error(errormessage);\r\n return Promise.reject(errormessage);\r\n }\r\n // append the issuer to the header of the request so the api knows what tenant to use\r\n const headers = new HttpHeaders(\r\n {\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n Authorization: `Bearer ${this.oauthService.getAccessToken()}`,\r\n 'Authorization-Tenant': (\r\n // tslint:disable-next-line: no-string-literal\r\n this.oauthService['config']?.loginUrl || this.oauthService['config']?.issuer\r\n || this.oauthService?.loginUrl || this.oauthService?.issuer || '')\r\n .replace('/account/login', '')\r\n .replace('/connect/authorize', '')\r\n }\r\n );\r\n this.userCall = this.httpClient.get<Array<AssertedUserModel>>(\r\n `${this.userEntityServiceConfig.userEntityBaseUrl}${this.getUserPartial}?subIdFromToken=true&createEmpty=true&withoutChildLinks=${!this.userEntityServiceConfig.includeLinks}`,\r\n { headers }\r\n )\r\n .toPromise();\r\n\r\n return this.userCall.then(res => {\r\n if (!res || res.length === 0) {\r\n console.error('No user entities found');\r\n }\r\n this._user = res[0];\r\n this.validateUser();\r\n })\r\n .catch(e => {\r\n console.error('UserEntityService encountered an error', e);\r\n throw e;\r\n });\r\n });\r\n }\r\n\r\n /** Sets the default values of the config */\r\n private getConfigWithDefaults(): UserEntityServiceConfig {\r\n const config = this.userEntityServiceConfig;\r\n config.validate = config.validate || ((user: AssertedUserModel): boolean => true);\r\n // tslint:disable-next-line: triple-equals\r\n config.getUserOnInit = config.getUserOnInit == undefined ? true : config.getUserOnInit;\r\n config.includeLinks = config.includeLinks == undefined ? true : config.includeLinks;\r\n config.getUserPartial = config.getUserPartial == undefined ? this.getUserPartial : config.getUserPartial;\r\n\r\n return config;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { SiteMapConfig } from '../../models/site-map-models';\r\n\r\n@Component({\r\n selector: 'sof-ar-site-map',\r\n templateUrl: './site-map.component.html',\r\n styleUrls: ['./site-map.component.scss'],\r\n standalone: false\r\n})\r\nexport class SiteMapComponent implements OnInit {\r\n\r\n /** Site map config */\r\n @Input() public config: SiteMapConfig;\r\n \r\n /** Creates an instance of SiteMapComponent. */\r\n public constructor() { }\r\n\r\n /** Init */\r\n public ngOnInit(): void { \r\n if (!this.config) {\r\n throw new Error('sof-ar-site-map: [config] input is required');\r\n }\r\n }\r\n}\r\n","<div fxLayout=\"row\" class=\"site-map-container\" fxLayoutAlign=\"space-around\">\r\n <div class=\"sof-ar-site-map-column\" *ngFor=\"let column of config.graph\" fxLayout=\"column\" fxLayoutGap=\"10px\">\r\n <ng-container *ngFor=\"let row of column\">\r\n <h2 class=\"{{config.sectionTitleClass ? config.sectionTitleClass : 'default-header-color'}}\">\r\n {{row.sectionTitle | translate}}\r\n </h2>\r\n <ng-container *ngIf=\"row.direction === 'Vertical' else horizontalLinks\">\r\n <ng-container *ngIf=\"!row.iconLinks else logoButton\">\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a h4 routerLink=\"{{link.routerLink}}\" *ngIf=\"link.routePath === 'internal' else externalLink\">\r\n {{link.text | translate}}\r\n </a>\r\n <ng-template #externalLink>\r\n <a href=\"{{link.routerLink}}\" target=\"_blank\" h4>\r\n {{link.text | translate}}\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template #logoButton>\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a routerLink=\"{{link.routerLink}}\" *ngIf=\"link.routePath === 'internal' else externalLogoLink\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n <ng-template #externalLogoLink>\r\n <a target=\"_blank\" href=\"{{link.routerLink}}\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #horizontalLinks>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\">\r\n <ng-container *ngIf=\"!row.iconLinks else logoButton\">\r\n <div *ngFor=\"let link of row.links\" class=\"{{ link.linkClass ? link.linkClass : config.linkClass }}\">\r\n <a h4 routerLink=\"{{link.routerLink}}\"\r\n *ngIf=\"link.routePath === 'internal' else externalLink\">\r\n {{link.text | translate}}\r\n </a>\r\n <ng-template #externalLink>\r\n <a href=\"{{link.routerLink}}\" target=\"_blank\" h4>\r\n {{link.text | translate}}\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template #logoButton>\r\n <div *ngFor=\"let link of row.links\" class=\"{{link.linkClass ? link.linkClass : config.linkClass}}\">\r\n <a routerLink=\"{{link.routerLink}}\"\r\n *ngIf=\"link.routePath === 'internal' else externalLogoLink\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n <ng-template #externalLogoLink>\r\n <a target=\"_blank\" href=\"{{link.routerLink}}\">\r\n <i title=\"{{link.text | translate}}\" class=\"{{link.logoClass}}\"></i>\r\n </a>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ArmatureFooterComponent } from './components/footer/footer.component';\r\nimport { SiteMapComponent } from './components/site-map/site-map.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureFooterComponent,\r\n SiteMapComponent\r\n];\r\n\r\n/** The Footer Module */\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n MatButtonModule\r\n ],\r\n exports: [...components]\r\n})\r\nexport class ArmatureFooterModule { }\r\n","/**\r\n * The States enum\r\n */\r\nexport enum States {\r\n AL = 'Alabama',\r\n AK = 'Alaska',\r\n AS = 'American Samoa',\r\n AZ = 'Arizona',\r\n AR = 'Arkansas',\r\n CA = 'California',\r\n CO = 'Colorado',\r\n CT = 'Connecticut',\r\n DE = 'Delaware',\r\n DC = 'District of Columbia',\r\n FL = 'Florida',\r\n FM = 'Micronesia',\r\n GA = 'Georgia',\r\n GU = 'Guam',\r\n HI = 'Hawaii',\r\n ID = 'Idaho',\r\n IL = 'Illinois',\r\n IN = 'Indiana',\r\n IA = 'Iowa',\r\n KS = 'Kansas',\r\n KY = 'Kentucky',\r\n LA = 'Louisiana',\r\n ME = 'Maine',\r\n MD = 'Maryland',\r\n MA = 'Massachusetts',\r\n MH = 'Marshall Islands',\r\n MI = 'Michigan',\r\n MN = 'Minnesota',\r\n MP = 'Northern Mariana Islands',\r\n MS = 'Mississippi',\r\n MO = 'Missouri',\r\n MT = 'Montana',\r\n NE = 'Nebraska',\r\n NV = 'Nevada',\r\n NH = 'New Hampshire',\r\n NJ = 'New Jersey',\r\n NM = 'New Mexico',\r\n NY = 'New York',\r\n NC = 'North Carolina',\r\n ND = 'North Dakota',\r\n OH = 'Ohio',\r\n OK = 'Oklahoma',\r\n OR = 'Oregon',\r\n PA = 'Pennsylvania',\r\n PR = 'Puerto Rico',\r\n PW = 'Palau',\r\n RI = 'Rhode Island',\r\n SC = 'South Carolina',\r\n SD = 'South Dakota',\r\n TN = 'Tennessee',\r\n TX = 'Texas',\r\n UT = 'Utah',\r\n VT = 'Vermont',\r\n VA = 'Virginia',\r\n VI = 'Virgin Islands',\r\n WA = 'Washington',\r\n WV = 'West Virginia',\r\n WI = 'Wisconsin',\r\n WY = 'Wyoming'\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * Numbers only directive\r\n */\r\n@Directive({\r\n selector: '[sofArNumbersOnly]',\r\n standalone: false\r\n})\r\nexport class NumbersOnlyDirective {\r\n\r\n /** True if only numbers allowed */\r\n @Input() public sofArNumbersOnly: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n /**\r\n * Only allows number inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n const e = event as KeyboardEvent;\r\n\r\n if (this.sofArNumbersOnly) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: Ctrl+V\r\n (e.keyCode === 86 && e.ctrlKey) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, FormBuilder } from '@angular/forms';\r\n\r\nimport { States } from '../../models/enums/states';\r\nimport { Address } from '../../models/address';\r\nimport { County } from '../../models/county';\r\n\r\n/** \r\n * Address component \r\n * @deprecated\r\n*/\r\n@Component({\r\n selector: 'sof-ar-address',\r\n templateUrl: './sof-address.component.html',\r\n styleUrls: ['./sof-address.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofAddressComponent implements OnInit {\r\n\r\n /** Identifier for this address component */\r\n @Input() public id: string = '';\r\n\r\n /** Verbiage for street 1 */\r\n @Input() public street1Verbiage: string = 'Street 1';\r\n\r\n /** Verbiage for street 2 */\r\n @Input() public street2Verbiage: string = 'Street 2';\r\n\r\n /** Verbiage for city */\r\n @Input() public cityVerbiage: string = 'City';\r\n\r\n /** Verbiage for ZIP Code */\r\n @Input() public zipCodeVerbiage: string = 'Zip Code';\r\n\r\n /** Verbiage for the state input */\r\n @Input() public stateVerbiage: string = 'State';\r\n\r\n /** Verbiage for the title */\r\n @Input() public titleVerbiage: string;\r\n\r\n /** Verbiage for the required input verbiage */\r\n @Input() public requiredErrorVerbiage: string = 'Field is required';\r\n\r\n /** Address Form group */\r\n public addressFG: FormGroup;\r\n\r\n /** The state options */\r\n public readonly states: Array<string> = Object.keys(States);\r\n\r\n /** Form control for street 1 */\r\n public readonly street1FC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for street 2 */\r\n private readonly street2FC: FormControl = new FormControl();\r\n\r\n /** Form control for city */\r\n public readonly cityFC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for state */\r\n public readonly stateFC: FormControl = new FormControl(undefined, Validators.required);\r\n\r\n /** Form control for zip code */\r\n public readonly zipCodeFC: FormControl = new FormControl(\r\n undefined,\r\n [Validators.required, Validators.maxLength(5), Validators.minLength(5)]\r\n );\r\n\r\n /**\r\n * Constructor for the component\r\n * @param formBuilder The form builder\r\n */\r\n constructor(private readonly formBuilder: FormBuilder) { }\r\n\r\n /** Actions to take upon initialization */\r\n public ngOnInit(): void {\r\n this.createAddressGroup();\r\n }\r\n\r\n /** Creates the address form group */\r\n public createAddressGroup(): FormGroup {\r\n if (this.addressFG) {\r\n return this.addressFG;\r\n }\r\n\r\n this.addressFG = this.formBuilder.group({\r\n street1: this.street1FC,\r\n street2: this.street2FC,\r\n city: this.cityFC,\r\n state: this.stateFC,\r\n zipCode: this.zipCodeFC\r\n });\r\n\r\n return this.addressFG;\r\n }\r\n\r\n /** Maps and returns the address */\r\n public getAddress(): Address {\r\n if (!this.addressFG.valid) {\r\n return undefined;\r\n }\r\n\r\n const county: County = {\r\n zipCode: this.zipCodeFC.value,\r\n state: this.stateFC.value\r\n };\r\n const address: Address = {\r\n street1: this.street1FC.value,\r\n street2: this.street2FC.value,\r\n city: this.cityFC.value,\r\n county\r\n };\r\n\r\n return address;\r\n }\r\n\r\n /** Checks if the form is valid */\r\n public isValid(): boolean {\r\n return this.addressFG && this.addressFG.valid;\r\n }\r\n\r\n}\r\n","<p class=\"address-title\" *ngIf=\"titleVerbiage && titleVerbiage !== ''\" [innerHtml]=\"titleVerbiage\"></p>\r\n<form [formGroup]=\"addressFG\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1% grid\">\r\n <!-- Address 1 -->\r\n <mat-form-field class=\"address-input\" fxFlex=\"auto\">\r\n <input matInput formControlName=\"street1\" id=\"{{id}}street1\" placeholder=\"{{street1Verbiage}}\" required>\r\n <mat-error *ngIf=\"street1FC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- Address 2 -->\r\n <mat-form-field class=\"address-input\" fxFlex=\"auto\">\r\n <input matInput formControlName=\"street2\" id=\"{{id}}street2\" placeholder=\"{{street2Verbiage}}\">\r\n </mat-form-field>\r\n </div>\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1%\">\r\n <!-- City -->\r\n <mat-form-field fxFlex=\"49.5%\" fxFlex.lt-md=\"60%\">\r\n <input matInput formControlName=\"city\" id=\"{{id}}city\" placeholder=\"{{cityVerbiage}}\" required>\r\n <mat-error *ngIf=\"cityFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- State -->\r\n <mat-form-field fxFlex=\"20%\" fxFlex.lt-md=\"auto\">\r\n <mat-label>{{stateVerbiage}}</mat-label>\r\n <mat-select formControlName=\"state\" required>\r\n <mat-option *ngFor=\"let state of states\" id=\"{{id}}{{state}}\" [value]=\"state\">{{state}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"stateFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n <!-- Zip Code -->\r\n <mat-form-field fxFlex=\"28.5%\" fxFlex.lt-md=\"50%\">\r\n <input matInput formControlName=\"zipCode\" id=\"{{id}}zipCode\" mask=\"00000\" [sofArNumbersOnly]\r\n placeholder=\"{{zipCodeVerbiage}}\" required minlength=\"5\" maxlength=\"5\">\r\n <mat-error *ngIf=\"zipCodeFC?.errors?.required\">{{requiredErrorVerbiage}}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n</form>\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n/**\r\n * The alphanumeric directive\r\n */\r\n@Directive({\r\n selector: '[alphanumeric]',\r\n standalone: false\r\n})\r\nexport class AlphaNumericDirective {\r\n\r\n /** The array of allowed keys */\r\n private allowedKeys: Array<string> = ['backspace', 'delete', 'escape', 'enter', 'tab'];\r\n\r\n /** Whether or not the entered value is a letter */\r\n private isLetter: boolean;\r\n\r\n /** Whether or not the entered value is a number */\r\n private isNumber: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n /**\r\n * Only allows alphanumeric inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent): void {\r\n const e = event as KeyboardEvent;\r\n\r\n // Reset values each time\r\n this.isNumber = false;\r\n this.isLetter = false;\r\n\r\n if (this.allowedKeys.indexOf(e.code.toLowerCase()) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.code.toLowerCase() === 'keya' && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.code.toLowerCase() === 'keyc' && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.code.toLowerCase() === 'keyx' && e.ctrlKey)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.code.toLowerCase().includes('digit') || e.code.toLowerCase().includes('numpad')) {\r\n this.isLetter = false;\r\n this.isNumber = true;\r\n }\r\n // Ensure that it is a number and stop the keypress\r\n let letterRegexMatch = e.code.toLowerCase().match(/key[a-zA-Z]/g);\r\n if (letterRegexMatch) {\r\n this.isNumber = false;\r\n this.isLetter = true;\r\n }\r\n // If the event is shift key and its not with a letter, its going to be a special character we want to prevent\r\n if (e.shiftKey && !letterRegexMatch) {\r\n this.isNumber = false;\r\n this.isLetter = false;\r\n }\r\n // Ensure that it is either a letter or a number\r\n if (!this.isLetter && !this.isNumber) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Prevent copy pasted inputs\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) blockPaste(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Inject, Input, Optional, Renderer2 } from \"@angular/core\";\r\nimport { COMPOSITION_BUFFER_MODE, ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Directive({\r\n selector: \"input[trim], textarea[trim]\",\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }],\r\n standalone: false\r\n})\r\nexport class InputTrimDirective implements ControlValueAccessor {\r\n\r\n private get _type(): string {\r\n return this._sourceElementRef.nativeElement.type || \"text\";\r\n }\r\n\r\n // Get a value of the trim attribute if it was set.\r\n @Input() trim: string;\r\n\r\n /**\r\n * Keep the value of input element in a cache.\r\n * @type {string}\r\n * @private\r\n */\r\n private _value: string;\r\n\r\n // Source services to modify elements.\r\n private _sourceRenderer: Renderer2;\r\n private _sourceElementRef: ElementRef;\r\n \r\n /**\r\n * Updates the value on the blur event.\r\n */\r\n @HostListener(\"blur\", [\"$event.type\", \"$event.target.value\"])\r\n onBlur(event: string, value: string): void {\r\n this.updateValue(event, value.trim());\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * Updates the value on the input event.\r\n */\r\n @HostListener(\"input\", [\"$event.type\", \"$event.target.value\"])\r\n onInput(event: string, value: string): void {\r\n this.updateValue(event, value);\r\n }\r\n\r\n onChange = (_: any) => {};\r\n\r\n onTouched = () => {};\r\n\r\n /**\r\n * Constructs the directive\r\n * @param renderer The renderer\r\n * @param ElementRef The elementRef\r\n * @param compositionMode The composition mode\r\n */\r\n constructor(\r\n @Inject(Renderer2) renderer: Renderer2,\r\n @Inject(ElementRef) elementRef: ElementRef,\r\n @Optional() @Inject(COMPOSITION_BUFFER_MODE) compositionMode: boolean\r\n ) {\r\n this._sourceRenderer = renderer;\r\n this._sourceElementRef = elementRef;\r\n }\r\n\r\n registerOnChange(fn: (_: any) => void): void {this.onChange = fn;}\r\n\r\n registerOnTouched(fn: () => void): void {this.onTouched = fn;}\r\n\r\n /**\r\n * Writes a new value to the element based on the type of input element.\r\n * @param value new value\r\n */\r\n public writeValue(value: any): void {\r\n\r\n this._value = value === \"\" ? \"\" : value || null;\r\n this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, \"value\", this._value);\r\n\r\n if (this._type !== \"text\") {\r\n this._sourceRenderer.setAttribute(this._sourceElementRef.nativeElement, \"value\", this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Sets state disabled.\r\n * @param isDisabled boolean value for state\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n \r\n /**\r\n * Writes the cursor position\r\n * @param cursorPosition the cursor current position\r\n * @param hasTypedSymbol\r\n */\r\n private setCursorPointer(cursorPosition: any, hasTypedSymbol: boolean): void {\r\n if (hasTypedSymbol && [\"text\", \"search\", \"url\", \"tel\", \"password\"].indexOf(this._type) >= 0) {\r\n this._sourceElementRef.nativeElement.setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n /**\r\n * Trims an input value, and sets it to the model and element.\r\n * @param value input value\r\n * @param event input event\r\n */\r\n private updateValue(event: string, value: string): void {\r\n\r\n if (this._value == value){\r\n value = this.trim !== \"\" && event !== this.trim ? value : value.trim();\r\n }\r\n\r\n const previous = this._value;\r\n const cursorPosition = this._sourceElementRef.nativeElement.selectionStart;\r\n \r\n this.writeValue(value);\r\n \r\n if ((this._value || previous) && this._value.trim() !== previous) {\r\n this.onChange(this._value);\r\n }\r\n \r\n const hasTypedSymbol = value && previous && value !== previous;\r\n \r\n this.setCursorPointer(cursorPosition, hasTypedSymbol);\r\n }\r\n}","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * The letters and special characters directive\r\n */\r\n@Directive({\r\n selector: '[sofArLettersAndSpecialCharacters]',\r\n standalone: false\r\n})\r\nexport class LettersCharactersDirective {\r\n\r\n /** True if letters and special characters allowed */\r\n @Input() public sofArLettersAndSpecialCharacters: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n\r\n /**\r\n * Only allows letter and special character inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (this.sofArLettersAndSpecialCharacters) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: spaces\r\n (e.keyCode === 32) ||\r\n // Allow: - (minus sign) on numpad or alphabet keyboard key\r\n (e.keyCode === 109 || e.keyCode === 189) ||\r\n // Allow: apostrophes\r\n (e.keyCode === 48) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.keyCode < 65 || e.keyCode > 90) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Allow user to copy and paste letters except special characters\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) allowPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n let pasteData = event.clipboardData.getData('text/plain');\r\n pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\\[\\];:\"<>,.?\\/\\\\|_+=]*/g, '');\r\n const inputElement = event.target as HTMLInputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const originalValue = inputElement.value;\r\n\r\n const newValue = [\r\n originalValue.slice(0, start),\r\n pasteData,\r\n originalValue.slice(end)\r\n ].join('');\r\n\r\n inputElement.value = newValue;\r\n inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;\r\n\r\n const evt = new Event('input', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n inputElement.dispatchEvent(evt);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n/**\r\n * The letters only directive\r\n */\r\n@Directive({\r\n selector: '[sofArLettersOnly]',\r\n standalone: false\r\n})\r\nexport class LettersOnlyDirective {\r\n\r\n /** True if only letters allowed */\r\n @Input() public sofArLettersOnly: boolean;\r\n\r\n /**\r\n * Constructs the directive\r\n * @param el The element\r\n */\r\n constructor(private el: ElementRef) { }\r\n\r\n\r\n /**\r\n * Only allows letter inputs\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (this.sofArLettersOnly) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && e.ctrlKey) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && e.ctrlKey) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && e.ctrlKey) ||\r\n // Allow: spaces\r\n (e.keyCode === 32) ||\r\n // Allow: - (minus sign) on numpad or alphabet keyboard key\r\n (e.keyCode === 109 || e.keyCode === 189) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a letter and stop the keypress if its not a letter\r\n if (e.keyCode < 65 || e.keyCode > 90) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Allow user to copy and paste letters except special characters\r\n * @param event the event\r\n */\r\n @HostListener('paste', ['$event']) allowPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n let pasteData = event.clipboardData.getData('text/plain');\r\n pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\\[\\];:’\"'<>,.?\\/\\\\|_+=-]*/g, '');\r\n const inputElement = event.target as HTMLInputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const originalValue = inputElement.value;\r\n\r\n const newValue = [\r\n originalValue.slice(0, start),\r\n pasteData,\r\n originalValue.slice(end)\r\n ].join('');\r\n\r\n inputElement.value = newValue;\r\n inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;\r\n\r\n const evt = new Event('input', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n inputElement.dispatchEvent(evt);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * A pipe that takes a simple string phone number and formats it\r\n */\r\n@Pipe({\r\n name: 'sofArPhone',\r\n standalone: false\r\n})\r\nexport class PhoneFormatPipe implements PipeTransform {\r\n transform(phoneNumber: string): string {\r\n\r\n // If input is undefined, then return empty string\r\n if (!phoneNumber) {\r\n return '';\r\n }\r\n\r\n // Check for more than 10 digits\r\n let formattedPhoneNumber = ('' + phoneNumber).replace(/\\D/g, '');\r\n if (formattedPhoneNumber.length > 10){\r\n return '';\r\n }\r\n\r\n // Check for correct pattern\r\n let formattedPhoneArray = formattedPhoneNumber.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (!!formattedPhoneArray) {\r\n return ['(', formattedPhoneArray[2], ') ', formattedPhoneArray[3], '-', formattedPhoneArray[4]].join('');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}","/** The validation key constants */\r\nexport class ValidationKeys {\r\n public static required: string = 'required';\r\n public static minLength: string = 'minlength';\r\n public static maxLength: string = 'maxlength';\r\n public static pattern: string = 'pattern';\r\n public static maskError: string = 'maskError';\r\n public static email: string = 'email';\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ValidationKeys } from '../models/constants';\r\n\r\n/**\r\n * Service to handle error alerts\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n /** the translation ket for close text */\r\n public readonly closeTextKey: string = 'common.dismiss';\r\n\r\n /**\r\n * The constructor\r\n * @param snackBar the angular material snackbar\r\n * @param translateService the translate service\r\n */\r\n constructor(\r\n public snackBar: MatSnackBar,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n /**\r\n * Opens a generic snack bar alert\r\n * @param detailsTextKey text to show in the alert\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public openCustomSnackBarAlert(detailsTextKey: string, params: any = {}, durationLength: number = 3000): void {\r\n\r\n const snackBarConfig = new MatSnackBarConfig();\r\n snackBarConfig.duration = durationLength;\r\n snackBarConfig.panelClass = ['red-snackbar'];\r\n\r\n this.snackBar.open(this.translateService.instant(detailsTextKey, params), this.translateService.instant(this.closeTextKey), snackBarConfig);\r\n }\r\n\r\n /**\r\n * Opens an alert with a the specific form validation error\r\n * @param form the form to validate\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public openFormInvalidSnackBarAlert(form: FormGroup, el: ElementRef, durationLength: number = 5000): void {\r\n this.getWhatIsNotFilledOut(form, el, durationLength);\r\n }\r\n\r\n /**\r\n * Iterates through a form (form group/form array) recursively to get the individual form control that is invalid\r\n * @param form the form to validate\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public getWhatIsNotFilledOut(form: FormGroup, el: ElementRef, durationLength: number): string {\r\n for (let field in form.controls) {\r\n let control = form.get(field);\r\n if (!control.invalid) {\r\n continue;\r\n }\r\n if (control instanceof FormArray) {\r\n for (let formArrayField in control.controls) {\r\n let formArrayControl = control.get(formArrayField);\r\n if (!formArrayControl.invalid) {\r\n continue;\r\n }\r\n if (formArrayControl instanceof FormGroup) {\r\n return this.getWhatIsNotFilledOut(formArrayControl, el, durationLength)\r\n }\r\n else {\r\n return this.getErrorMessage(formArrayControl, formArrayField, el, durationLength);\r\n }\r\n }\r\n }\r\n else if (control instanceof FormGroup) {\r\n for (let formGroupField in control.controls) {\r\n let formGroupControl = control.get(formGroupField);\r\n if (!formGroupControl.invalid) {\r\n continue;\r\n }\r\n if (formGroupControl instanceof FormGroup) {\r\n return this.getWhatIsNotFilledOut(formGroupControl, el, durationLength)\r\n }\r\n else {\r\n return this.getErrorMessage(formGroupControl, formGroupField, el, durationLength);\r\n }\r\n }\r\n }\r\n else {\r\n return this.getErrorMessage(control, field, el, durationLength);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the error message based on the form control that is invalid\r\n * @param control the invalid form control\r\n * @param field the field name that is invalid\r\n * @param el the element reference from the forms page, used to set focus on invalid form\r\n * @param durationLength how long the alert should be shown before it fades\r\n */\r\n public getErrorMessage(control: AbstractControl, field: string, el: ElementRef, durationLength: number): string {\r\n let errorText = '';\r\n const error = control.errors;\r\n const errorKey = Object.keys(control.errors)[0]; // will only ever be one at a time even if multiple validation errors\r\n\r\n const formattedFieldText = this.getFieldFormattedText(field);\r\n switch (errorKey) {\r\n case ValidationKeys.required: {\r\n errorText = this.translateService.instant('error.requiredError', { 'fieldName': formattedFieldText });\r\n break;\r\n }\r\n case ValidationKeys.maxLength: {\r\n const errorValues = Object.values(error)[0];\r\n const requiredLength = Object.values(errorValues)[0];\r\n const actualValue = Object.values(errorValues)[1];\r\n errorText = this.translateService.instant('error.maxLengthError', { 'fieldName': formattedFieldText, 'actualValue': actualValue, 'requiredLength': requiredLength });\r\n break;\r\n }\r\n case ValidationKeys.minLength: {\r\n let errorValues = Object.values(error)[0];\r\n let requiredLength = Object.values(errorValues)[0];\r\n let actualValue = Object.values(errorValues)[1];\r\n errorText = this.translateService.instant('error.minLengthError', { 'fieldName': formattedFieldText, 'actualValue': actualValue, 'requiredLength': requiredLength });\r\n break;\r\n }\r\n case ValidationKeys.pattern:\r\n case ValidationKeys.maskError:\r\n case ValidationKeys.email: {\r\n errorText = this.translateService.instant('error.formatError', { 'fieldName': formattedFieldText });\r\n break;\r\n }\r\n default: {\r\n errorText = this.translateService.instant('error.allFieldsRequired');\r\n break;\r\n }\r\n }\r\n this.setFocusToFormControl(el);\r\n this.openCustomSnackBarAlert(errorText, durationLength);\r\n return;\r\n }\r\n\r\n /**\r\n * Formats the form control name to readable text to display to the user in an error alert\r\n * @param field The field\r\n */\r\n public getFieldFormattedText(field: string): string {\r\n let split = field.split(/(?=[A-Z])/); // splits a string by word\r\n let formattedFieldText = '';\r\n for (let i = 0; i < split.length; i++) {\r\n split[i] = split[i].charAt(0).toUpperCase() + split[i].substring(1);\r\n formattedFieldText += split[i] + ' ';\r\n }\r\n\r\n return formattedFieldText;\r\n }\r\n\r\n /**\r\n * Sets focus to the first invalid form control element\r\n * @param el Element to focus on\r\n */\r\n public setFocusToFormControl(el: ElementRef): void {\r\n // find all invalid controls and focus the first control found\r\n const invalidElements = el.nativeElement.querySelectorAll('input.ng-invalid, select.ng-invalid');\r\n if (invalidElements.length > 0) {\r\n invalidElements[0].focus(); // [0] will always be the form itself [1] will be the first control\r\n }\r\n\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sofArDateInputFilter]',\r\n standalone: false\r\n})\r\nexport class DateInputFilterDirective {\r\n @HostListener('input', ['$event'])\r\n onInput(event: any) : void {\r\n const input = event.target.value;\r\n event.target.value = input.replace(/[^0-9\\/]/g, '');\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { SofAddressComponent } from './components/sof-address/sof-address.component';\r\nimport { AlphaNumericDirective } from './directives/alphanumeric/alphanumeric.directive';\r\nimport { InputTrimDirective } from './directives/input-trim/input-trim.directive';\r\nimport { LettersCharactersDirective } from './directives/letters-characters/letters-characters.directive';\r\nimport { LettersOnlyDirective } from './directives/letters-only/letters-only.directive';\r\nimport { NumbersOnlyDirective } from './directives/numbers-only/numbers-only.directive';\r\nimport { PhoneFormatPipe } from './pipes/phone-format.pipe';\r\nimport { AlertService } from './services/alert.service';\r\nimport { DateInputFilterDirective } from './directives/date-input-filter/date-input-filter.directive';\r\n\r\n/** The components */\r\nconst components = [\r\n SofAddressComponent\r\n];\r\n\r\n/** The directives */\r\nconst directives = [\r\n LettersCharactersDirective,\r\n LettersOnlyDirective,\r\n NumbersOnlyDirective,\r\n AlphaNumericDirective,\r\n InputTrimDirective,\r\n DateInputFilterDirective\r\n];\r\n\r\nconst pipes = [\r\n PhoneFormatPipe\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatSnackBarModule\r\n];\r\n\r\n/** Armature forms module */\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n ...materialModules\r\n ],\r\n providers: [\r\n AlertService\r\n ],\r\n exports: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ]\r\n})\r\nexport class FormsModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MobileHeaderNavSettings } from '../../models/mobile-header-nav.settings';\r\n\r\n/** The mobile header navigation component */\r\n@Component({\r\n selector: 'sof-ar-mobile-header-menu',\r\n templateUrl: './mobile-header-menu.component.html',\r\n styleUrls: ['./mobile-header-menu.component.scss'],\r\n standalone: false\r\n})\r\nexport class MobileHeaderMenuComponent implements OnInit {\r\n /** Component Input - the mobile header nav settings */\r\n @Input() public settings: MobileHeaderNavSettings = {};\r\n\r\n /** The menu icon */\r\n public menuIcon: string;\r\n\r\n /** The icon to close the menu */\r\n public closeMenuIcon: string;\r\n\r\n /** The icon color for the menu open/close */\r\n public iconColor: string;\r\n\r\n /** The current icon that should be displayed */\r\n public currentIcon: string;\r\n\r\n /** The mobile header height */\r\n public mobileHeaderHeight: number;\r\n\r\n /** Initializes the component */\r\n public ngOnInit(): void {\r\n this.settings.menuIcon ? this.menuIcon = this.settings.menuIcon : this.menuIcon = 'fas fa-bars';\r\n this.settings.closeMenuIcon ? this.closeMenuIcon = this.settings.closeMenuIcon : this.closeMenuIcon = 'fas fa-times';\r\n this.settings.iconColor ? this.iconColor = this.settings.iconColor : this.iconColor = '#808080';\r\n this.settings.mobileHeaderHeight ? this.mobileHeaderHeight = this.settings.mobileHeaderHeight : this.mobileHeaderHeight = 56;\r\n this.currentIcon = this.menuIcon;\r\n }\r\n\r\n /** Change the icon to the close menu icon */\r\n public changeToCloseIcon(): void {\r\n this.currentIcon = this.closeMenuIcon;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n /** Change the icon to the menu icon */\r\n public changeToMenuIcon(): void {\r\n this.currentIcon = this.menuIcon;\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div fxHide.gt-xs>\r\n <div>\r\n <button class=\"sof-ar-menu-btn\" mat-icon-button aria-label=\"menu-button\" (click)=\"snav.toggle()\">\r\n <span class=\"sof-ar-menu-icon\" [style.color]=\"iconColor\">\r\n <i class=\"{{currentIcon}}\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n <div>\r\n <mat-sidenav-container>\r\n <mat-sidenav #snav fixedInViewport [fixedTopGap]=\"mobileHeaderHeight\" (openedStart)=\"changeToCloseIcon()\" (closedStart)=\"changeToMenuIcon()\">\r\n <!-- NG-Content Mobile Headers Items -->\r\n <ng-content select=\"[sof-ar-mobile-header-menu-items]\"></ng-content>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <!-- NG Content Main Content -->\r\n <ng-content sof-ar-mobile-header-main-content></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ArmatureHeaderComponent } from './components/header/header.component';\r\nimport { MobileHeaderMenuComponent } from './components/mobile-header-menu/mobile-header-menu.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureHeaderComponent,\r\n MobileHeaderMenuComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatToolbarModule,\r\n MatMenuModule,\r\n MatButtonToggleModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatSlideToggleModule,\r\n MatSidenavModule,\r\n MatTooltipModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n ...components,\r\n ...materialModules\r\n ],\r\n providers: [TranslateService]\r\n})\r\nexport class ArmatureHeaderModule { }\r\n","import { Component, Input } from '@angular/core';\r\n/** \r\n * The Softheon tabs component \r\n * @input navLinks, The nav links for the mat tabs *required\r\n * */\r\n@Component({\r\n selector: 'sof-tabs',\r\n templateUrl: './sof-tabs.component.html',\r\n styleUrl: './sof-tabs.component.scss',\r\n standalone: false\r\n})\r\nexport class SofTabsComponent {\r\n /** The nav links for the mat tabs *required */\r\n @Input({required:true}) public navLinks: Array<TabNavLink>;\r\n}\r\n/** \r\n * The navigation links for tabs interface \r\n * @property path: string, The URL to navigate to \r\n * @property label: string, The text to display on the tab\r\n * @property disabled (optional): boolean, Is the tab disabled\r\n * @property queryParams (optional): Object, The queryParams to add to the path\r\n * */\r\nexport interface TabNavLink {\r\n path: string;\r\n label: string;\r\n disabled?: boolean;\r\n queryParams?: { [key:string] : string | string[] };\r\n};","<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (link of navLinks; track $index) {\r\n <a mat-tab-link \r\n [routerLink]=\"link.path\" [disabled]=\"link.disabled\" \r\n class=\"tab-link\" [class.disabled]=\"link.disabled\" routerLinkActive=\"active\" \r\n #rla=\"routerLinkActive\" [active]=\"rla.isActive\" [queryParams]=\"link.queryParams\" \r\n [id]=\"'tab-' + $index\" [disableRipple]=\"true\">\r\n {{link.label | translate}}\r\n </a>\r\n }\r\n</nav>\r\n<!-- *The corresponding <router-outlet> must be wrapped in an <mat-tab-nav-panel> component -->\r\n<mat-tab-nav-panel #tabPanel>\r\n <router-outlet/>\r\n</mat-tab-nav-panel>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * The Softheon Sub Navigation component \r\n */\r\n@Component({\r\n selector: 'sof-sub-navigation',\r\n templateUrl: './sof-sub-navigation.component.html',\r\n styleUrl: './sof-sub-navigation.component.scss',\r\n standalone: false\r\n})\r\nexport class SofSubNavigationComponent {\r\n /** The nav links for the sub navigation. *required */\r\n @Input({required:true}) public subNavigationData: Array<SubNavigationData>;\r\n /** Whether to use route navigation indicator */\r\n @Input() public useRouteNavigation : boolean = true;\r\n /** Emit the current active index */\r\n @Output() public activeIndex: EventEmitter<number> = new EventEmitter<number>();\r\n /** The current active option index */\r\n public currentActiveOptionIndex: number = 0;\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** On component init */\r\n public ngOnInit() {}\r\n\r\n /**\r\n * Handle navigation link click event\r\n * @param index the nav link index in the subNavigationData config array\r\n * @param disabled whether the clicked navigation is disabled\r\n */\r\n public handleNavLinkClick(index:number, disabled: boolean): void {\r\n if (!disabled) {\r\n this.currentActiveOptionIndex = index;\r\n this.activeIndex.emit(index);\r\n }\r\n }\r\n\r\n /**\r\n * Handle selection option click event\r\n * @param value the nav link label value\r\n */\r\n public handleOptionClick(value: string): void {\r\n this.subNavigationData.forEach( (nav, index) => {\r\n if (nav.label == value) {\r\n this.currentActiveOptionIndex = index;\r\n this.activeIndex.emit(index);\r\n }\r\n }) \r\n }\r\n}\r\n/** \r\n * The navigation data for sub navigation interface \r\n * @property label: string, The text to display on the link\r\n * @property path (optional): string, The URL to navigate to \r\n * @property disabled (optional): boolean, Is the nav link disabled\r\n * @property queryParams (optional): Object, The queryParams to add to the path\r\n * @property icon (optional): string, The icon class tag to define the icon\r\n * */\r\nexport interface SubNavigationData {\r\n label: string;\r\n path?: string;\r\n disabled?: boolean;\r\n queryParams?: { [key:string] : string | string[] };\r\n icon?: string;\r\n};","<div fxLayout=\"row\" p-a-40>\r\n @if (useRouteNavigation) {\r\n <mat-nav-list fxLayout=\"column\" fxLayoutGap=\"5px\" [attr.aria-label]=\"'armature.sof-sub-navigation.aria.nav-list'|translate\">\r\n @for (nav of subNavigationData; track $index) {\r\n <a mat-list-item tabindex=\"0\" [id]=\"'sub-nav-' + $index\"\r\n [routerLink]=\"!nav.disabled && nav.path ? nav.path : null\" [disabled]=\"nav.disabled\" \r\n class=\"sub-nav-item\" [class.disabled]=\"nav.disabled\" routerLinkActive=\"active\" \r\n #rla=\"routerLinkActive\" [activated]=\"rla.isActive\" [queryParams]=\"nav.queryParams\" \r\n [disableRipple]=\"true\" (click)=\"handleNavLinkClick($index, nav.disabled)\">\r\n <div fxLayout=\"row\">\r\n <div class=\"selected-indicator-container\"></div>\r\n <div fxFlex class=\"nav-item-content-container\">\r\n @if (nav?.icon) {\r\n <span aria-hidden=\"true\" class=\"sub-nav-icon-styling\">\r\n <i class=\"{{nav?.icon}}\"></i>\r\n </span>\r\n }\r\n <span class=\"nav-label-text\">{{nav.label | translate}}</span>\r\n </div>\r\n </div>\r\n </a>\r\n }\r\n </mat-nav-list>\r\n } \r\n @else {\r\n <mat-selection-list #subNavSelection [multiple]=\"false\" fxLayout=\"column\" fxLayoutGap=\"5px\" \r\n [attr.aria-label]=\"'armature.sof-sub-navigation.aria.selection-list'|translate\" \r\n (selectionChange)=\"handleOptionClick(subNavSelection.selectedOptions.selected[0].value)\">\r\n @for (nav of subNavigationData; track $index) {\r\n <mat-list-option [value]=\"nav.label\" [disabled]=\"nav.disabled\" [id]=\"'sub-nav-' + $index\" #navOption\r\n class=\"sub-nav-item\" [class.active]=\"navOption.selected\" [class.disabled]=\"nav.disabled\"\r\n [disableRipple]=\"true\">\r\n <div fxLayout=\"row\">\r\n <div class=\"selected-indicator-container\"></div>\r\n <div fxFlex class=\"nav-item-content-container\">\r\n @if (nav?.icon) {\r\n <span aria-hidden=\"true\" class=\"sub-nav-icon-styling\">\r\n <i class=\"{{nav?.icon}}\"></i>\r\n </span>\r\n }\r\n <span class=\"nav-label-text\">{{nav.label | translate}}</span>\r\n </div>\r\n </div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n }\r\n <ng-content/>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { BannerService } from '../core/services/banner.service';\r\n\r\nimport { ArmatureNavigationComponent } from './components/navigation/navigation.component';\r\nimport { SofTabsComponent } from './components/sof-tabs-navigation/sof-tabs.component';\r\nimport { SofSubNavigationComponent } from './components/sof-sub-navigation/sof-sub-navigation.component';\r\n\r\n/** The components */\r\nconst components = [\r\n ArmatureNavigationComponent,\r\n SofTabsComponent,\r\n SofSubNavigationComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatTooltipModule,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatStepperModule,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatStepperModule,\r\n MatSelectModule,\r\n MatProgressBarModule,\r\n MatTabsModule\r\n];\r\n\r\n/** The Navigation Module */\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n ...components,\r\n ...materialModules\r\n ],\r\n providers: [TranslateService, BannerService]\r\n})\r\nexport class NavigationModule { }\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { CssOverride } from '../models/css-override';\r\n\r\n// tslint:disable: prefer-for-of\r\n// tslint:disable: prefer-function-over-method\r\n/** The css override service */\r\n@Directive({\r\n selector: '[sofArCssOverride]',\r\n standalone: false\r\n})\r\nexport class CssOverrideDirective {\r\n\r\n /** The css overrides */\r\n @Input() public sofArCssOverride: Array<CssOverride> = [];\r\n\r\n /** The changes mutation observer */\r\n private readonly changes: MutationObserver;\r\n\r\n /**\r\n * Constructs the directive\r\n */\r\n constructor(\r\n ) {\r\n this.changes = new MutationObserver((mutations: Array<MutationRecord>) => {\r\n this.overrideCss(this.sofArCssOverride);\r\n });\r\n this.changes.observe(document.body, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n\r\n /**\r\n * Overrides the css on the page\r\n * @param overrides the css overrides\r\n */\r\n private overrideCss(overrides: Array<CssOverride>): void {\r\n overrides.forEach(cssOverride => {\r\n switch (cssOverride.selector) {\r\n case 'class':\r\n const elementsByClass = document.getElementsByClassName(cssOverride.parameter);\r\n for (let i = 0; i < elementsByClass.length; i++) {\r\n const e: HTMLElement = elementsByClass[i] as HTMLElement;\r\n cssOverride.attributes.forEach(attr => {\r\n e.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n }\r\n break;\r\n case 'tag':\r\n const elementsByTag = document.getElementsByTagName(cssOverride.parameter);\r\n for (let i = 0; i < elementsByTag.length; i++) {\r\n const e: HTMLElement = elementsByTag[i] as HTMLElement;\r\n cssOverride.attributes.forEach(attr => {\r\n e.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n }\r\n break;\r\n case 'id':\r\n default:\r\n const element = document.getElementById(cssOverride.parameter);\r\n cssOverride.attributes.forEach(attr => {\r\n element.style.setProperty(attr.name, attr.value, 'important');\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { CssOverrideDirective } from './directives/css-override.directive';\r\n\r\nimport { ThemeService } from './services/theme.service';\r\n\r\n/** Armature theme module */\r\n@NgModule({\r\n declarations: [\r\n CssOverrideDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n ThemeService\r\n ],\r\n exports: [\r\n CssOverrideDirective\r\n ]\r\n})\r\nexport class ThemeModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n/**\r\n * ⚠️ this component needs to be audited ... \r\n*/\r\n@Component({\r\n selector: 'sof-modal',\r\n templateUrl: './sof-modal.component.html',\r\n styleUrls: ['./sof-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofModalComponent implements OnInit {\r\n\r\n /** The value of the dont show this message again checkbox */\r\n public dontShowAgainCheckboxValue: boolean = false;\r\n\r\n /** The dialog result object to return once closed */\r\n public dialogResult: DialogResult;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: ModalData,\r\n private dialogRef: MatDialogRef<SofModalComponent>\r\n ) { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.data.cancelButtonText = !this.data.cancelButtonText ? 'common.cancel' : this.data.cancelButtonText;\r\n this.data.confirmButtonText = !this.data.confirmButtonText ? 'common.okay' : this.data.confirmButtonText;\r\n }\r\n\r\n /**\r\n * Closes the dialog with the given value\r\n * @param value The value\r\n */\r\n public close(value: boolean): void {\r\n this.dialogResult = {\r\n closeDialogConfirm: value,\r\n showDontShowAgainCheckbox: this.data.showDontShowAgainCheckbox,\r\n dontShowAgainCheckboxValue: this.data.showDontShowAgainCheckbox ? this.dontShowAgainCheckboxValue : null\r\n } as DialogResult;\r\n\r\n this.dialogRef.close(this.dialogResult);\r\n }\r\n}\r\n\r\n/**\r\n * The dialog result object\r\n */\r\nexport class DialogResult {\r\n /** The value of the dialog closing */\r\n public closeDialogConfirm: boolean;\r\n /** Whether or not the dont show this message again checkbox was checked */\r\n public showDontShowAgainCheckbox: boolean;\r\n /** The value of the dont show this message again checkbox */\r\n public dontShowAgainCheckboxValue: boolean;\r\n}\r\n\r\n/**\r\n * The modal data class\r\n */\r\nexport class ModalData {\r\n /** The header text */\r\n public headerText: string;\r\n /** The content text */\r\n public contentText: string;\r\n /** The indicator for being a delete modal */\r\n public isDelete?: boolean;\r\n /** The indicator to show the don't show popup again checkbox */\r\n public showDontShowAgainCheckbox?: boolean;\r\n /** The cancel button text */\r\n public cancelButtonText?: string;\r\n /** The confirm button text */\r\n public confirmButtonText?: string;\r\n /** The indicator for hiding the cancel button */\r\n public hideCancel: boolean\r\n}","<div role=\"modal\" aria-labelledby=\"modal-heading\">\r\n <mat-toolbar class=\"dialog-header-container\" fxLayoutAlign=\"space-between\">\r\n <h2 id=\"modal-heading\" class=\"sof-dialog-header\" [innerHTML]=\"data.headerText | translate\"></h2>\r\n <button id=\"modal-close\" (click)=\"close(false)\" mat-icon-button mat-dialog-close\r\n aria-label=\"{{data.cancelButtonText | translate}}\">\r\n <mat-icon mat-list-icon [attr.aria-hidden]=\"true\">close</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n <div fxLayout=\"column\" class=\"dialog-body-container\">\r\n <div fxFlex=\"auto\" fxLayout=\"column\" fxLayoutAlign=\"center\">\r\n <div class=\"sof-dialog-body\" [innerHTML]=\"data.contentText | translate\" fxFlex=\"80%\" fxFlex.lt-md=\"auto\">\r\n </div>\r\n <mat-checkbox *ngIf=\"data.showDontShowAgainCheckbox\" [(ngModel)]=\"dontShowAgainCheckboxValue\"\r\n color=\"primary\">\r\n {{ 'armature.sof-modal.dont-show-this-message-again' | translate }}\r\n </mat-checkbox>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayout.lt-sm=\"column\" fxLayoutAlign=\"center center\" fxLayoutGap=\"5%\"\r\n fxLayoutGap.lt-sm=\"2%\" class=\"dialog-buttons-container\">\r\n <button *ngIf=\"!data.hideCancel\" mat-flat-button fxFlexOrder.lt-sm=\"2\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"primary\" emphasis=\"contained\" (click)=\"close(false)\"\r\n id=\"dialog-cancel\">\r\n {{ data.cancelButtonText | translate }}\r\n </button>\r\n <button *ngIf=\"!data.isDelete\" mat-flat-button fxFlexOrder.lt-sm=\"1\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"primary\" emphasis=\"solid\" (click)=\"close(true)\"\r\n id=\"dialog-accept\">\r\n {{ data.confirmButtonText | translate }}\r\n </button>\r\n <button *ngIf=\"data.isDelete\" mat-flat-button fxFlexOrder.lt-sm=\"1\" class=\"sof-button-v2\"\r\n [ngClass.lt-sm]=\"{'full-width': true}\" theme=\"destroy\" emphasis=\"solid\" (click)=\"close(true)\"\r\n id=\"dialog-error\">\r\n {{ data.confirmButtonText | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { Component, EventEmitter, inject, Input, OnDestroy, Output } from \"@angular/core\";\r\nimport { DOCUMENT } from \"@angular/common\";\r\n\r\n/** The handle component */\r\n@Component({\n selector: \"sof-handle\",\n templateUrl: \"./sof-handle.component.html\",\n styleUrls: [\"./sof-handle.component.scss\"],\n standalone: false\n})\r\nexport class SofHandleComponent implements OnDestroy {\r\n\r\n /** The checkmark color */\r\n @Input() public checkmarkColor: string = \"rgba(0, 0, 0, 0.87)\";\r\n\r\n /** The input */\r\n @Input() public handleList: Array<HandleInput> = [];\r\n\r\n /** The label text */\r\n @Input() public labelText: string = \"\";\r\n\r\n /** The handle order changed event */\r\n @Output() public orderChanged: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /** The checkbox toggled event */\r\n @Output() public checkboxToggled: EventEmitter<number> = new EventEmitter();\r\n\r\n /** The handle that's in focus */\r\n public handleInFocus: number = null;\r\n\r\n private document: Document = inject(DOCUMENT);\r\n\r\n /** The body element */\r\n private bodyElement: HTMLElement = this.document.body;\r\n\r\n /** Component Destruction */\r\n public ngOnDestroy(): void {\r\n window.removeEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /**\r\n * Moves the item in the array as per the drop\r\n * @param event The drop event\r\n */\r\n public drop(event: CdkDragDrop<string[]>): void {\r\n this.bodyElement.classList.remove('inheritCursors');\r\n this.bodyElement.style.cursor = 'unset';\r\n moveItemInArray(this.handleList, event.previousIndex, event.currentIndex);\r\n this.orderChanged.next(true);\r\n }\r\n\r\n /**\r\n * Handles drag start event\r\n */\r\n public dragStart(): void {\r\n this.bodyElement.classList.add('inheritCursors');\r\n this.bodyElement.style.cursor = 'grabbing';\r\n }\r\n\r\n /**\r\n * Manually changes order using keyboard events\r\n * @param currIdx The current index of the element\r\n * @param isDown If the order is down or not\r\n */\r\n public manualOrderChange(currIdx: number, isDown: boolean): void {\r\n const newIdx = isDown ? currIdx + 1 : currIdx - 1;\r\n if (newIdx >= 0 && newIdx <= this.handleList.length - 1) {\r\n moveItemInArray(this.handleList, currIdx, newIdx);\r\n this.handleInFocus = newIdx;\r\n setTimeout(() => {\r\n this.document.getElementById('drag' + newIdx)?.focus();\r\n }, 50);\r\n this.orderChanged.next(true);\r\n } else {\r\n this.document.getElementById('drag' + currIdx)?.blur();\r\n this.handleInFocus = null;\r\n }\r\n }\r\n\r\n /**\r\n * Checkbox change event\r\n * @param index The checkbox index\r\n * @param eventVal The checkbox event value\r\n */\r\n public checkboxChanged(index: number, eventVal: boolean): void {\r\n this.handleList[index].isChecked = eventVal;\r\n this.checkboxToggled.next(index);\r\n }\r\n\r\n /**\r\n * Triggered when a handle is in focus\r\n * @param idx The index of handle in focus\r\n */\r\n public onFocus(idx: number): void {\r\n this.handleInFocus = idx;\r\n window.addEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /** When handle goes out of focus */\r\n public outFocus(): void {\r\n this.handleInFocus = null;\r\n window.removeEventListener('keydown', this.keydownListener);\r\n }\r\n\r\n /** The custom keydown listener */\r\n private keydownListener(event: KeyboardEvent): void {\r\n if (event.code == 'ArrowDown' || event.code == 'ArrowUp') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n\r\n/** The handle input model */\r\nexport interface HandleInput {\r\n /** The text */\r\n text?: string;\r\n /** Is checked or not */\r\n isChecked?: boolean;\r\n}","<div \r\n cdkDropList \r\n class=\"handle-list full-width\" \r\n cdkDropListLockAxis=\"y\"\r\n cdkDropListAutoScrollStep=\"5\"\r\n (cdkDropListDropped)=\"drop($event)\">\r\n @if (labelText) {\r\n <span class=\"droplist-label\">{{ labelText | translate }}</span>\r\n }\r\n @for (item of handleList; track item; let idx = $index) {\r\n <div \r\n cdkDrag \r\n class=\"box-container\" \r\n cdkDragBoundary=\".handle-list\"\r\n (cdkDragStarted)=\"dragStart()\" \r\n [ngClass]=\"{'drag-in-focus': handleInFocus == idx}\">\r\n <div class=\"handle-box\" [ngClass]=\"{'checked': item.isChecked}\">\r\n <div \r\n cdkDragHandle\r\n tabindex=\"0\" \r\n class=\"drag-handle\" \r\n [id]=\"'drag'+idx\" \r\n (keyup.arrowup)=\"manualOrderChange(idx, false)\"\r\n (keyup.arrowdown)=\"manualOrderChange(idx, true)\" \r\n (keyup.enter)=\"checkboxChanged(idx, !item.isChecked)\" \r\n (focus)=\"onFocus(idx)\" \r\n (focusout)=\"outFocus()\">\r\n <i class=\"ph-bold ph-dots-six-vertical\"></i>\r\n </div>\r\n <div \r\n *cdkDragPlaceholder\r\n class=\"handle-custom-placeholder\">\r\n <i class=\"ph-bold ph-dots-six-vertical\"></i>\r\n </div>\r\n <div \r\n (click)=\"checkboxChanged(idx, !item.isChecked)\" \r\n [title]=\"item.text | translate\" \r\n class=\"check-container full-width\"\r\n fxLayout=\"row\" fxLayoutAlign=\"center\">\r\n <span fxFlex=\"90%\" class=\"handle-label\">{{ item.text | translate }}</span>\r\n @if(item.isChecked) {\r\n <i \r\n fxFlex=\"10%\" fxLayoutAlign=\"end center\" \r\n [style.color]=\"checkmarkColor\" class=\"check-icon ph-fill ph-check-circle\">\r\n </i>\r\n }\r\n @else {\r\n <i fxFlex=\"10%\" fxLayoutAlign=\"end center\" class=\"check-icon ph-bold ph-circle\"></i>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * The Context component for ag grid\r\n * @note You can use it like this:\r\n * \r\n * `<sof-context-menu></sof-context-menu>`\r\n*/\r\n@Component({\r\n selector: 'sof-context-menu',\r\n templateUrl: './sof-context.component.html',\r\n styleUrls: ['./sof-context.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false\r\n})\r\nexport class SofContextComponent {\r\n /** List of menu items */\r\n public menuItems: ContextMenuItem[] = [];\r\n\r\n /** Menu position (x, y) */\r\n public position = { x: '0px', y: '0px' };\r\n\r\n /** Selected row data */\r\n public selectedRowData: any = null;\r\n\r\n /** Whether the menu is visible */\r\n public isMenuVisible = false;\r\n\r\n /** Tooltip text */\r\n public tooltipText: string = '';\r\n\r\n /** Whether tooltip is visible */\r\n public tooltipVisible = false;\r\n\r\n /** The position of the tooltip */\r\n public tooltipPosition = { x: '0px', y: '0px' };\r\n\r\n /** The tooltip timer */\r\n private tooltipTimer: any;\r\n\r\n /**\r\n * Constructs the component\r\n * @param cdRef The change detector\r\n */\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) { }\r\n\r\n /**\r\n * Sets the menu items\r\n * @param items List of context menu items\r\n */\r\n public setMenuItems(items: ContextMenuItem[]): void {\r\n this.menuItems = [...items];\r\n }\r\n\r\n /**\r\n * Shows the context menu at the mouse position\r\n * @param event Mouse event\r\n * @param rowData Data of the clicked row\r\n */\r\n public showContextMenu(event: MouseEvent, rowData: any): void {\r\n event.preventDefault();\r\n this.selectedRowData = rowData;\r\n this.position = { x: `${event.clientX}px`, y: `${event.clientY}px` };\r\n\r\n this.isMenuVisible = true;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Handles menu item click event\r\n * @param item Clicked menu item\r\n */\r\n public onMenuItemClick(item: ContextMenuItem): void {\r\n if (!item.disabled) {\r\n item.action(this.selectedRowData);\r\n this.isMenuVisible = false;\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Shows tooltip when hovering over a menu item\r\n * @param event Mouse event\r\n * @param description Tooltip text\r\n */\r\n public showTooltip(event: MouseEvent, description: string): void {\r\n if (description) {\r\n if (this.tooltipTimer) {\r\n clearTimeout(this.tooltipTimer);\r\n }\r\n\r\n this.tooltipTimer = setTimeout(() => {\r\n this.tooltipText = description;\r\n this.tooltipVisible = true;\r\n\r\n const cursorX = event.clientX;\r\n const cursorY = event.clientY;\r\n const tooltipOffset = 10;\r\n\r\n let tooltipX = cursorX + tooltipOffset - 320;\r\n let tooltipY = cursorY + tooltipOffset - 60;\r\n\r\n if (tooltipX + 200 > window.innerWidth) {\r\n tooltipX = cursorX - 210;\r\n }\r\n\r\n if (tooltipY + 50 > window.innerHeight) {\r\n tooltipY = cursorY - 55;\r\n }\r\n\r\n this.tooltipPosition = { x: `${tooltipX}px`, y: `${tooltipY}px` };\r\n this.cdRef.detectChanges();\r\n }, 1000);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Hides the tooltip when the user moves the mouse away\r\n */\r\n public hideTooltip(): void {\r\n if (this.tooltipTimer) {\r\n clearTimeout(this.tooltipTimer);\r\n this.tooltipTimer = null;\r\n }\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Hides the menu when clicking outside\r\n */\r\n @HostListener('document:click')\r\n public onOutsideClick(): void {\r\n this.isMenuVisible = false;\r\n this.tooltipVisible = false;\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n\r\n/** Defines the structure of a context menu item */\r\nexport interface ContextMenuItem {\r\n type: string;\r\n text: string;\r\n iconClasses: string[];\r\n action: (data: any, mailbox?: string) => void;\r\n disabled?: boolean;\r\n description?: string;\r\n hidden?: boolean;\r\n}\r\n","<div class=\"sof-context-menu\" *ngIf=\"isMenuVisible\" [style.left]=\"position.x\" [style.top]=\"position.y\">\r\n <ng-container *ngFor=\"let item of menuItems\">\r\n <div *ngIf=\"!item.hidden\" class=\"sof-context-item\" [class.disabled]=\"item.disabled\" (click)=\"onMenuItemClick(item)\" (mouseenter)=\"showTooltip($event, item.description)\" (mouseleave)=\"hideTooltip()\">\r\n <mat-icon class=\"context-icon\" [ngClass]=\"item.iconClasses\"></mat-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<!-- Tooltip -->\r\n<div class=\"tooltip\" *ngIf=\"tooltipVisible\" [style.left]=\"tooltipPosition.x\" [style.top]=\"tooltipPosition.y\">\r\n {{ tooltipText }}\r\n</div>\r\n","import { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n/** \r\n * The softheon alert component \r\n * @deprecated please use `SofCallout` instead\r\n*/\r\n@Component({\r\n selector: 'sof-alert',\r\n templateUrl: './sof-alert.component.html',\r\n styleUrls: ['./sof-alert.component.scss'],\r\n animations: [\r\n trigger('animateExpand', [\r\n state('collapsed', style({ height: '0px', minHeight: '0' })),\r\n state('expanded', style({ height: '*' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\r\n ])\r\n ],\r\n host: { 'role': 'alert' },\r\n standalone: false\r\n})\r\nexport class SofAlertComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public alertText: string = \"\";\r\n\r\n /** Whether to show background color not */\r\n @Input() public hideBackground: boolean = false;\r\n\r\n /**\r\n * The alert color\r\n * Possible Values: 'information', 'success', 'warning', 'error', 'theme'\r\n */\r\n @Input() public alertColor: string = \"theme\";\r\n\r\n /** The icon class- this should be a font awesome class */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** Title for mobile banner text expand button */\r\n @Input() public mobileBannerExpandableTextTitle: string = \"\";\r\n\r\n /** Sub text for alert when mobileBannerExpandableTextTitle is provided */\r\n @Input() public alertSubText: string = \"\";\r\n\r\n /** If the screen is mobile size or not */\r\n public get isMobile(): boolean {\r\n return window.screen.width < 600;\r\n }\r\n\r\n /** If the mobile banner text is expanded or not */\r\n public expandedBanner: boolean = false;\r\n\r\n /** The default icons for the banner colors */\r\n public alertColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /** Implements on init */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.alertColorIconMapping[this.alertColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"alert-box\" [ngClass]=\"alertColor\" [class.alert-box-override]=\"hideBackground\">\r\n <div class=\"alert-inner\" [ngClass]=\"alertColor\" [class.no-background]=\"hideBackground\">\r\n <span class=\"alert-container\">\r\n @if (!(isMobile && mobileBannerExpandableTextTitle)) {\r\n <i class=\"alert-icon\" [ngClass]=\"[iconClass, alertColor]\"></i>\r\n }\r\n @if (true) {\r\n <span class=\"alert-title full-width\">\r\n <p class=\"alert-header\" [innerHtml]=\"(alertText | translate)\"></p>\r\n <div fxHide.gt-xs>\r\n <button (click)=\"expandedBanner = !expandedBanner\" id=\"expand-banner-text\"\r\n class=\"mobile-banner-expand\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\r\n <span [innerHtml]=\"mobileBannerExpandableTextTitle | translate\"></span>\r\n <i class=\"fas\" [ngClass]=\"expandedBanner ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\r\n </button>\r\n <p class=\"alert-description m-t-10\" class=\"hidden-overflow\"\r\n [@animateExpand]=\"expandedBanner ? 'expanded' : 'collapsed'\" [innerHtml]=\"alertSubText | translate\"></p>\r\n </div>\r\n <div fxHide.xs>\r\n <p class=\"alert-description\" [innerHtml]=\"alertSubText | translate\"></p>\r\n </div>\r\n </span>\r\n } @else {\r\n <span class=\"alert-title\" [innerHTML]=\"(alertText | translate)\"></span>\r\n }\r\n </span>\r\n </div>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n/** \r\n * The softheon simplified alert component \r\n * @deprecated please use `SofCallout` instead\r\n*/\r\n@Component({\n selector: 'sof-simple-alert',\n templateUrl: './sof-simple-alert.component.html',\n styleUrls: ['./sof-simple-alert.component.scss'],\n host: { 'role': 'alert' },\n standalone: false\n})\r\nexport class SofSimpleAlertComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public alertText: string = \"\";\r\n\r\n /** Whether to show background color not */\r\n @Input() public hideBackground: boolean = false;\r\n\r\n /** The alert color */\r\n @Input() public alertColor: 'information' | 'success' | 'warning' | 'error' | 'theme' = \"theme\";\r\n\r\n /** The icon class - this should be a font awesome class */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** The default icons for the banner colors */\r\n public alertColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /** Implements on init */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.alertColorIconMapping[this.alertColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"sof-simple-alert\" fxLayout=\"row\" fxLayoutAlign=\"start\" [ngClass]=\"alertColor\" [class.no-background]=\"hideBackground\">\r\n <i class=\"simple-alert-icon\" [ngClass]=\"[iconClass, alertColor]\"></i>\r\n <div fxFlex=\"100%\" fxLayoutAlign=\"space-between center\" >\r\n <span class=\"simple-alert-text\" [innerHtml]=\"alertText | translate\"></span>\r\n <ng-content select=\"[sof-simple-alert-right]\"></ng-content>\r\n </div>\r\n</div>","import { OnInit, Component, Input } from '@angular/core';\r\n\r\n/** The softheon banner component */\r\n@Component({\r\n selector: 'sof-banner',\r\n templateUrl: './sof-banner.component.html',\r\n styleUrls: ['./sof-banner.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofBannerComponent implements OnInit {\r\n\r\n /** The primary banner information key to be translated */\r\n @Input() public primaryInfoKey: string;\r\n\r\n /** The secondary banner information key to be translated */\r\n @Input() public secondaryInfoKey?: string;\r\n\r\n /** The indicator to show the secondary banner */\r\n @Input() public showSecondaryBanner?: boolean = false;\r\n\r\n /**\r\n * The banner color\r\n * Possible Values: 'information', 'success', 'warning', 'error', 'theme'\r\n */\r\n @Input() public bannerColor?: string = \"theme\";\r\n\r\n /** The banner icon class name*/\r\n @Input() public iconClass?: string;\r\n\r\n /** The default icons for the banner colors */\r\n public bannerColorIconMapping = {\r\n 'information': 'fal fa-info-circle',\r\n 'success': 'fal fa-check-circle',\r\n 'warning': 'fal fa-exclamation-triangle',\r\n 'error': 'fal fa-exclamation-circle',\r\n 'theme': 'fal fa-info-circle'\r\n }\r\n\r\n /**\r\n * Constructs the component\r\n */\r\n public constructor() { }\r\n\r\n /** Component initialization */\r\n public ngOnInit(): void {\r\n this.iconClass = !this.iconClass ? this.bannerColorIconMapping[this.bannerColor] : this.iconClass;\r\n }\r\n}\r\n","<div class=\"banner primary\" [ngClass]=\"bannerColor\">\r\n <i class=\"text-align-center banner-icon\" [ngClass]=\"[iconClass, bannerColor]\"></i> \r\n <p>{{ primaryInfoKey | translate }}</p>\r\n</div>\r\n<div *ngIf=\"showSecondaryBanner\" class=\"banner secondary\" [ngClass]=\"bannerColor\">\r\n <p>{{ secondaryInfoKey | translate }}</p>\r\n</div>","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/** The softheon progress bar component */\r\n@Component({\r\n selector: 'sof-progress-bar',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './sof-progress-bar.component.html',\r\n styleUrls: ['./sof-progress-bar.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofProgressBarComponent implements OnInit, OnChanges {\r\n /** The navigation route keys */\r\n @Input() public navbarStepKeys: Array<string> = [];\r\n\r\n /** The current active step */\r\n @Input() public stepActive: number = -1;\r\n\r\n /** The type of progress bar */\r\n @Input() public progressBarType: string = \"dot\";\r\n\r\n /** The navigation step titles */\r\n public navbarTitles: Array<string>;\r\n\r\n\r\n /**\r\n * Constructs the component\r\n * @param router The router\r\n */\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n /** Component initialization */\r\n public ngOnInit(): void {\r\n this.setNavbarTitles();\r\n }\r\n\r\n /**\r\n * On component @Input() changes\r\n * @param changes the changes\r\n */\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.setNavbarTitles();\r\n }\r\n\r\n /** Navigates to given step\r\n * @param stepNumber The step number to navigate to\r\n */\r\n public navigateToStep(stepNumber: number): void {\r\n if (stepNumber <= this.stepActive) {\r\n this.router.navigateByUrl(this.navbarStepKeys[stepNumber]);\r\n }\r\n }\r\n\r\n /** Navigates to step\r\n * @param step The step to navigate to\r\n */\r\n public navigateTo(step: string): void {\r\n this.router.navigateByUrl(step);\r\n }\r\n\r\n /** Sets the progress navigation bar step titles\r\n */\r\n public setNavbarTitles(): void {\r\n let tempTitlesArray: Array<string> = [];\r\n this.navbarStepKeys.forEach(key => {\r\n let stepPath = key.split(\"/\");\r\n let stepLanguageKey = `armature.sof-progress-bar.titles`;\r\n stepPath.forEach((step, i) => {\r\n if (i !== 0) {\r\n stepLanguageKey = `${stepLanguageKey}.${step}`;\r\n }\r\n });\r\n tempTitlesArray.push(stepLanguageKey);\r\n });\r\n this.navbarTitles = tempTitlesArray;\r\n }\r\n}","<ng-container *ngIf=\"progressBarType === 'slider'\">\r\n <div class=\"shopping-navbar\"\r\n [ngStyle]=\"{'background': 'linear-gradient(to right, #407BFF ' \r\n + (stepActive + 1) / navbarStepKeys.length * 100 + '%, #f0f0f0 ' + (stepActive + 1) / navbarStepKeys.length * 100 + '%)'}\">\r\n </div>\r\n <div fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" fxLayoutAlign=\"center\" fxLayoutGap=\"12%\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"3px\" *ngFor=\"let step of navbarStepKeys; let i = index\" (click)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\"\r\n [attr.aria-current]=\"i === stepActive ? 'step' : null\">\r\n <div class=\"step-title\"\r\n [ngClass]=\"{ 'step-title-active': i === stepActive, 'step-title-done': i < stepActive, 'step-title-not-reached': i > stepActive}\"\r\n [attr.role]=\"i < stepActive ? 'button' : null\" [attr.aria-pressed]=\"null\">\r\n {{ navbarTitles[i] | translate }}\r\n </div>\r\n </div>\r\n </div>\r\n <div fxHide.gt-sm>\r\n <mat-select class=\"step-titles-mobile\" disableOptionCentering panelClass=\"step-option\"\r\n [value]=\"navbarStepKeys[stepActive]\">\r\n <mat-option *ngFor=\"let step of navbarStepKeys; let i = index\" (click)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\" [disabled]=\"i > stepActive\"\r\n [value]=\"step\">\r\n {{ navbarTitles[i] | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"progressBarType === 'dot'\">\r\n <div fxHide.lt-md class=\"step-titles center\" fxLayout=\"row\" fxLayoutAlign=\"center\" fxLayoutGap=\"5%\">\r\n <div *ngFor=\"let step of navbarStepKeys; let i = index\" (keydown.enter)=\"i <= stepActive ? navigateToStep(i) : null\"\r\n (click)=\"i <= stepActive ? navigateToStep(i) : null\" fxLayout=\"row\" fxLayoutGap=\"3px\" tabindex=\"0\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\"\r\n [attr.aria-current]=\"i === stepActive ? 'step' : null\">\r\n <div>\r\n <span *ngIf=\"i >= stepActive\" class=\"dot\" [ngClass]=\"{ 'dot-active': i === stepActive }\"\r\n [attr.aria-label]=\"i === stepActive ? ('armature.sof-progress-bar.step-labels.in-progress'|translate):('armature.sof-progress-bar.step-labels.not-done'|translate)\">\r\n </span>\r\n <span *ngIf=\"i < stepActive\">\r\n <i class=\"fas fa-check-circle dot-done\" color=\"primary\" [title]=\"'armature.sof-progress-bar.step-labels.complete' | translate\"></i>\r\n </span>\r\n </div>\r\n <div class=\"step-title\"\r\n [ngClass]=\"{ 'step-title-active': i === stepActive, 'step-title-done': i < stepActive, 'step-title-not-reached': i > stepActive}\"\r\n [attr.role]=\"i < stepActive ? 'button' : null\" [attr.aria-pressed]=\"null\">\r\n {{ navbarTitles[i] | translate }}\r\n </div>\r\n </div>\r\n </div>\r\n <div fxHide.gt-sm fxLayout=\"row\">\r\n <div class=\"dot-mobile\"></div>\r\n <mat-select class=\"sof-stepper step-titles-mobile\" disableOptionCentering panelClass=\"step-option\"\r\n [value]=\"navbarStepKeys[stepActive]\" (selectionChange)=\"navigateTo($event.value)\">\r\n <mat-option fxHide.gt-sm *ngFor=\"let step of navbarStepKeys; let i = index\"\r\n [ngClass]=\"{ 'step-active': i === stepActive, 'step-done': i < stepActive}\" [disabled]=\"i > stepActive\"\r\n [value]=\"step\">\r\n <div class=\"dot\" [ngClass]=\"{ 'dot-active': i === stepActive, 'dot-done': i < stepActive}\"></div>\r\n {{ navbarTitles[i] | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</ng-container>","import { \r\n Component, \r\n Host, \r\n Input, \r\n OnDestroy, \r\n OnInit, \r\n Optional, \r\n Output, \r\n Self, \r\n EventEmitter, \r\n HostListener, \r\n ChangeDetectionStrategy \r\n} from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/** The sof button toggle group component */\r\n@Component({\r\n selector: 'sof-button-toggle-group',\r\n templateUrl: './sof-button-toggle-group.component.html',\r\n styleUrls: ['./sof-button-toggle-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofButtonToggleGroupComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n /** The label text */\r\n @Input() labelText: string = '';\r\n\r\n /** Any custom classes for the label */\r\n @Input() labelClass: string = '';\r\n\r\n /** Whether the field is required or not */\r\n @Input() isRequired: boolean = true;\r\n\r\n /** The toggle button data */\r\n @Input() buttonData!: ButtonToggleData;\r\n\r\n /** The tooltip data */\r\n @Input() tooltipData?: ButtonToggleTooltipData = {};\r\n\r\n /** The layout align input for styling */\r\n @Input() layoutAlign: { label?: string, toggle?: string } = {};\r\n\r\n /** Whether the toggle is disabled or not */\r\n @Input(\"disabled\") public isDisabled: boolean = false;\r\n\r\n /** The error message text */\r\n @Input() errorMessage: string = '';\r\n\r\n /** The aria-label for the button group */\r\n @Input() ariaLabel: string = '';\r\n\r\n /** Emits toggle change event */\r\n @Output() toggleChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The toggle value */\r\n public value: any = undefined;\r\n\r\n /** The form control name */\r\n public controlName: string | number = \"\";\r\n\r\n /** If the form control was touched or not */\r\n private touched: boolean = false;\r\n\r\n /** The OnChange form control method */\r\n private onChange = (toggleVal: any): void => { };\r\n\r\n /** The OnTouched form control method */\r\n private onTouched = (): void => { };\r\n\r\n /** The component subscription */\r\n private subscription: Subscription = new Subscription();\r\n\r\n /** Whether show error message or not */\r\n public showErrorMessage: boolean = false;\r\n\r\n /**\r\n * Constructor.\r\n * @param control The ng control\r\n */\r\n constructor(@Self() @Optional() @Host() private control: NgControl) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n setTimeout(() => {\r\n this.controlName = this.control.name;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Key down event\r\n * @param event Key Event\r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event): void {\r\n const e = event as KeyboardEvent;\r\n if (!this.showErrorMessage && !this.touched && this.errorMessage && this.errorMessage.length > 0 && this.value != ' ') {\r\n this.showErrorMessage = true;\r\n }\r\n }\r\n\r\n /** Component on init lifecycle method */\r\n public ngOnInit(): void {\r\n // Set default tooltip values\r\n this.tooltipData.position = this.tooltipData.position ?? 'right'; \r\n // Set default layout aligns\r\n this.layoutAlign.label = this.layoutAlign.label ?? 'start center';\r\n this.layoutAlign.toggle = this.layoutAlign.toggle ?? 'start center';\r\n if (!this.ariaLabel) {\r\n this.ariaLabel = this.labelText;\r\n }\r\n this.setIsRequired();\r\n // Subscribe to form control's validation\r\n this.subscription.add(this.control?.control?.valueChanges?.subscribe(() => {\r\n this.setIsRequired();\r\n }));\r\n }\r\n\r\n /** Component on destroy lifecycle method */\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Triggered when a value is selected\r\n * @param toggleVal The toggle value.\r\n */\r\n public valueSelected(toggleVal: any): void {\r\n if (toggleVal != undefined) {\r\n this.markAsTouched();\r\n this.value = toggleVal;\r\n this.showErrorMessage = false;\r\n this.onChange(this.value);\r\n this.toggleChange.emit(toggleVal);\r\n }\r\n }\r\n\r\n /** Triggered when the control is touched */\r\n private markAsTouched() {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n /** Triggered when the form control value is set outside the component\r\n * @param toggleVal The toggle value.\r\n */\r\n public writeValue(toggleVal: any): void {\r\n this.value = toggleVal;\r\n }\r\n\r\n /** Triggered when control is changed\r\n * @param fn The callback function.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /** Triggered when control is touched\r\n * @param fn The callback function.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** Sets the disabled state\r\n * @param isDisabled If the control is disabled or not\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n /** Updates the isRequired field based on the control */\r\n private setIsRequired(): void {\r\n // Only update if a control is available\r\n if (this.control?.control) {\r\n const controlValidator = this.control.control.validator;\r\n // Set the required state false when no control validator function is provided\r\n if (!controlValidator) {\r\n this.isRequired = false;\r\n return;\r\n }\r\n // Set the required state of the validator\r\n const validator = controlValidator({} as AbstractControl) || {};\r\n this.isRequired = validator && validator.required;\r\n }\r\n }\r\n}\r\n\r\n/** Possible values for the toggle position */\r\nconst enum ButtonToggleType {\r\n LEFT = 'left',\r\n MIDDLE = 'middle',\r\n RIGHT = 'right'\r\n}\r\n\r\nexport type ButtonToggleData = { [key in ButtonToggleType]?: { text: string, value: any } };\r\n\r\nexport interface ButtonToggleTooltipData {\r\n text?: string;\r\n position?: string\r\n}\r\n","<fieldset>\r\n <legend>\r\n <p fxLayout=\"row\" [fxLayoutAlign]=\"layoutAlign.label\" class=\"toggle-label\">\r\n <span [attr.aria-label]=\"labelText | translate\" [class]=\"labelClass\" \r\n [innerHtml]=\"(labelText | translate) + (isRequired ? ' *' : '')\"></span>\r\n @if (tooltipData?.text) {\r\n <i \r\n class=\"ph-bold ph-info more-information m-l-5\"\r\n [matTooltip]=\"tooltipData.text | translate\" \r\n [matTooltipPosition]=\"tooltipData.position\" tabindex=\"0\">\r\n </i>\r\n }\r\n </p>\r\n </legend>\r\n <div fxLayout=\"row wrap\" [fxLayoutAlign]=\"layoutAlign.toggle\">\r\n <mat-button-toggle-group \r\n #group=\"matButtonToggleGroup\"\r\n [name]=\"controlName\" \r\n class=\"sof-toggle-group\" \r\n [value]=\"value\" \r\n [disabled]=\"isDisabled\"\r\n [attr.aria-label]=\"ariaLabel | translate\" \r\n [hideSingleSelectionIndicator]=\"true\" \r\n (click)=\"valueSelected(group.value)\" \r\n ngDefaultControl>\r\n @if (buttonData.left) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-left\" [value]=\"buttonData.left.value\" \r\n aria-describedby=\"left-desc\" id=\"left-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"left-desc\">{{ buttonData.left.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n @if (buttonData.middle) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-middle\" [value]=\"buttonData.middle.value\" \r\n aria-describedby=\"middle-desc\" id=\"middle-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"middle-desc\">{{ buttonData.middle.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n @if (buttonData.right) {\r\n <mat-button-toggle \r\n [class.error]=\"showErrorMessage && !isDisabled\"\r\n class=\"toggle-right\" [value]=\"buttonData.right.value\" \r\n aria-describedby=\"right-desc\" id=\"right-toggle-{{controlName}}\" \r\n [disableRipple]=\"true\">\r\n <span id=\"right-desc\">{{ buttonData.right.text | translate }}</span>\r\n </mat-button-toggle>\r\n }\r\n </mat-button-toggle-group>\r\n </div>\r\n</fieldset>\r\n@if (showErrorMessage && !isDisabled) {\r\n <mat-error class=\"error-message\">{{ errorMessage | translate }}</mat-error>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n/** \r\n * The progress bar page component \r\n * @todo this component needs a design update\r\n * stars should be yellow/gold and smaller font-size ... \r\n * \r\n * see if any apps are using this, consumer is not ...\r\n*/\r\n@Component({\r\n selector: 'sof-star-rating',\r\n templateUrl: './sof-star-rating.component.html',\r\n styleUrls: ['./sof-star-rating.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofStarRatingComponent {\r\n\r\n /** The number of stars */\r\n @Input() public rating: number;\r\n\r\n /** The max number of stars */\r\n @Input() public maxStars: number = 5;\r\n \r\n // @todo getters are not good for Angular change detection ... \r\n\r\n /** Get full stars */\r\n get fullStars(): number[] {\r\n return Array(Math.floor(this.rating)).fill(0);\r\n }\r\n\r\n /** Get half stars */\r\n get hasHalfStar(): boolean {\r\n return this.rating % 1 > 0;\r\n }\r\n\r\n /** Get empty stars */\r\n get emptyStars(): number[] {\r\n return Array(Math.floor(this.maxStars - this.rating)).fill(0);\r\n }\r\n}\r\n","<!-- Star Ratings -->\r\n<div>\r\n <ng-container *ngTemplateOutlet=\"starRatings\"></ng-container>\r\n</div>\r\n\r\n<!-- Star Ratings Template -->\r\n<ng-template #starRatings>\r\n <div>\r\n <ng-container *ngIf=\"!!rating\">\r\n <!-- @todo this div below is really the only element needed for this component -->\r\n <div>\r\n <i *ngFor=\"let fullStar of fullStars\" class=\"ph-star ph-fill star-icon-fill\"></i>\r\n <i class=\"ph-fill ph-star-half star-icon-fill\" *ngIf=\"hasHalfStar\"></i>\r\n <i class=\"ph-star ph star-icon-empty\" *ngFor=\"let emptyStar of emptyStars\"></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-badge',\r\n templateUrl: './sof-badge.component.html',\r\n styleUrls: ['./sof-badge.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofBadgeComponent {\r\n\r\n /** Whether to show bold background color not */\r\n @Input() public bold: boolean = false;\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public badgeText: string = \"\";\r\n\r\n /**\r\n * The alert color\r\n * Possible Values: 'info, 'success', 'warn', 'error', 'theme', 'neutral', 'metal-tier'\r\n */\r\n @Input() public badgeColor: 'info' | 'success' | 'warn' | 'error' | 'theme' | 'neutral' | 'metal-tier' = \"theme\";\r\n\r\n /** Whether or not to use default icons */\r\n @Input() public useIcon: boolean = false;\r\n\r\n /** The icon class- this should be a Phosphor Icons class, type bold */\r\n @Input() public iconClass: string = \"\";\r\n\r\n /** The badge aria label */\r\n @Input() public badgeAria = \"\";\r\n\r\n /** The icon aria label */\r\n @Input() public iconAria = \"\";\r\n\r\n /** Whether or not the component has been init */\r\n public initialized: boolean;\r\n\r\n /** \r\n * Any logic related to ag grid cell renderer data can be added here \r\n * @note All `@Inputs` should be accepted through `params`\r\n */\r\n public agInit(params: any & SofBadgeComponent): void {\r\n this.iconClass = params.iconClass ?? this.iconClass;\r\n this.useIcon = params.useIcon ?? this.useIcon;\r\n this.bold = params.bold ?? this.bold;\r\n this.badgeColor = params.badgeColor ?? this.badgeColor;\r\n this.badgeAria = params.badgeAria ?? this.badgeAria;\r\n this.iconAria = params.iconAria ?? this.iconAria;\r\n this.badgeText = params.value;\r\n }\r\n\r\n /** On component init */\r\n public ngOnInit() {\r\n if (!this.badgeAria) {\r\n this.badgeAria = this.badgeText;\r\n }\r\n this.setIcon();\r\n this.initialized = true;\r\n }\r\n\r\n /** \r\n * On component changes \r\n * This method is used to help show the toggle in the Armature documentation\r\n * TODO: Implement using signals\r\n */\r\n public ngOnChanges(changes: any) {\r\n if (this.initialized) {\r\n if (changes.useIcon || changes.badgeColor || changes.badgeText) {\r\n this.iconClass = \"\";\r\n this.setIcon();\r\n } \r\n }\r\n }\r\n\r\n /** Sets the icon based on badge type */\r\n private setIcon() {\r\n if (this.useIcon && this.iconClass == \"\") {\r\n if (Object.values<string>(STATUS).includes(this.badgeColor.toLowerCase())) {\r\n switch(this.badgeColor.toLowerCase()) {\r\n case STATUS.INFO:\r\n this.iconClass = \"ph-bold ph-info\";\r\n break;\r\n case STATUS.SUCCESS:\r\n this.iconClass = \"ph-bold ph-check-circle\";\r\n break;\r\n case STATUS.WARNING:\r\n this.iconClass = \"ph-bold ph-warning\";\r\n break;\r\n case STATUS.ERROR:\r\n this.iconClass = \"ph-bold ph-warning-circle\";\r\n break;\r\n }\r\n }\r\n if (Object.values<string>(LINE_OF_COVERAGE).includes(this.badgeText.toLowerCase())) {\r\n switch(this.badgeText.toLowerCase()) {\r\n case LINE_OF_COVERAGE.MEDICAL:\r\n this.iconClass = \"ph-bold ph-first-aid\";\r\n break;\r\n case LINE_OF_COVERAGE.DENTAL:\r\n this.iconClass = \"ph-bold ph-tooth\";\r\n break;\r\n case LINE_OF_COVERAGE.VISION:\r\n this.iconClass = \"ph-bold ph-eye\";\r\n break;\r\n case LINE_OF_COVERAGE.MEDICARE:\r\n this.iconClass = \"ph-bold ph-first-aid\";\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport enum STATUS {\r\n INFO = 'info',\r\n SUCCESS = 'success',\r\n WARNING = 'warn',\r\n ERROR = 'error'\r\n}\r\n\r\nexport enum LINE_OF_COVERAGE {\r\n MEDICAL = \"medical\",\r\n DENTAL = 'dental',\r\n VISION = 'vision',\r\n MEDICARE = 'medicare'\r\n}","\r\n<div \r\n class=\"badge-container\" \r\n [attr.aria-label]=\"(badgeAria | translate)\" \r\n [ngClass]=\"{\r\n 'default': !bold, \r\n 'bold': bold,\r\n 'theme': (badgeColor === 'theme'), \r\n 'success': (badgeColor === 'success'), \r\n 'error': (badgeColor === 'error'),\r\n 'warn': (badgeColor === 'warn'),\r\n 'info': (badgeColor === 'info'),\r\n 'neutral': (badgeColor === 'neutral'),\r\n 'metal-tier': (badgeColor === 'metal-tier')\r\n }\">\r\n @if (iconClass) {\r\n <div class=\"badge-icon\">\r\n @switch (iconClass) {\r\n @case ('catastrophic') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14433)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14433\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E43030\"/>\r\n <stop offset=\"0.26\" stop-color=\"#EF5C5C\"/>\r\n <stop offset=\"0.85\" stop-color=\"#F48D8D\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('bronze') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14420)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14420\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#912E0D\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B15220\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CD8C66\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('expanded-bronze') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14420)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14420\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#912E0D\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B15220\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CD8C66\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('silver') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14428)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14428\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#778592\"/>\r\n <stop offset=\"0.26\" stop-color=\"#89939C\"/>\r\n <stop offset=\"0.85\" stop-color=\"#B8C5D1\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('gold') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13400_14430)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13400_14430\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#D79B32\"/>\r\n <stop offset=\"0.26\" stop-color=\"#E7BF5F\"/>\r\n <stop offset=\"0.85\" stop-color=\"#EED28F\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @case ('platinum') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" aria-hidden=\"true\">\r\n <rect width=\"8\" height=\"8\" rx=\"2\" fill=\"url(#paint0_linear_13449_7911)\"/>\r\n <defs>\r\n <linearGradient id=\"paint0_linear_13449_7911\" x1=\"1.06667\" y1=\"1.4\" x2=\"6.7\" y2=\"7.1\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#909090\"/>\r\n <stop offset=\"0.26\" stop-color=\"#B0B0B0\"/>\r\n <stop offset=\"0.85\" stop-color=\"#CCCCCC\"/>\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n }\r\n @default {\r\n <i \r\n [ngClass]=\"[iconClass + ' ' + badgeColor]\"\r\n [attr.aria-label]=\"iconAria !== '' ? (iconAria | translate) : null\" \r\n [attr.aria-hidden]=\"iconAria === '' ? true : null\">\r\n </i>\r\n }\r\n }\r\n </div>\r\n }\r\n <label \r\n [ngClass]=\"{\r\n 'coloredLabel': !bold,\r\n 'theme': (badgeColor === 'theme'), \r\n 'success': (badgeColor === 'success'), \r\n 'error': (badgeColor === 'error'),\r\n 'warn': (badgeColor === 'warn'),\r\n 'info': (badgeColor === 'info'),\r\n 'neutral': (badgeColor === 'neutral'),\r\n 'metal-tier': (badgeColor === 'metal-tier')\r\n }\" \r\n [innerHtml]=\"(badgeText | translate)\">\r\n </label>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-image-checkbox',\r\n templateUrl: './sof-image-checkbox.component.html',\r\n styleUrls: ['./sof-image-checkbox.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class SofImageCheckboxComponent implements OnInit {\r\n\r\n /** The language text or a key that will be shown in this component */\r\n @Input() public imageTitle: string = \"\";\r\n\r\n /** If Checkbox is checked */\r\n public isChecked: boolean = false;\r\n\r\n /** The image url of image */\r\n @Input() public imageUrl: string = \"\";\r\n\r\n /** Height of image */\r\n @Input() public imageHeight: string = \"200\";\r\n\r\n /** Width of image */\r\n @Input() public imageWidth: string = \"200\";\r\n\r\n /** Height of container */\r\n @Input() public containerHeight: string = \"300\";\r\n\r\n /** Width of container */\r\n @Input() public containerWidth: string = \"200\";\r\n\r\n /** Color theme */\r\n @Input() public matColor: string = \"primary\";\r\n\r\n /** Whether the image checkbox is disabled or not */\r\n @Input(\"disabled\") public isDisabled: boolean = false;\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** Component on init lifecycle method */\r\n public ngOnInit(): void { }\r\n}\r\n","<mat-card [ngStyle]=\"{'height.px': containerHeight, 'width.px': containerWidth}\" [ngClass]=\"{'checked': isChecked, 'disabled': isDisabled, \r\n'primary': (matColor === 'primary'), \r\n'success': (matColor === 'success'), \r\n'error': (matColor === 'error'), \r\n'accent': (matColor === 'accent'), \r\n'warn': (matColor === 'warn'),\r\n'info': (matColor === 'info')}\" appearance=\"outlined\" class=\"mat-elevation-z1 image-checkbox\">\r\n <mat-card-header>\r\n <mat-checkbox class=\"sof-checkbox\" color=\"{{matColor}}\" [disabled]=\"isDisabled\"\r\n [(ngModel)]=\"isChecked\"></mat-checkbox>\r\n </mat-card-header>\r\n <mat-card-content text-center fxLayoutAlign=\"center center\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"10px\" fxLayoutAlign=\"center center\">\r\n <div>\r\n <img [ngStyle]=\"{'height.px': imageHeight, 'width.px': imageWidth}\" [src]='imageUrl'>\r\n </div>\r\n <div>\r\n <div [innerHTML]=\"(imageTitle | translate)\"> </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n</mat-card>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** \r\n * Compares 2 address fields, returns true if different. \r\n * Used in the 'SofConfirmAddressComponent' to add a class to highlight any differences in address.\r\n*/\r\n@Pipe({\r\n name: 'compareAddress',\r\n standalone: false\r\n})\r\nexport class SofCompareAddressPipe implements PipeTransform {\r\n transform(givenAddressField: string, recommendAddressField: string): boolean {\r\n return givenAddressField?.toLowerCase() !== recommendAddressField?.toLowerCase();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n/** The ConfirmAddress Component shown on the dialog */\r\n@Component({\r\n selector: 'sof-confirm-address',\r\n templateUrl: './sof-confirm-address.component.html',\r\n styleUrls: ['./sof-confirm-address.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofConfirmAddressComponent implements OnInit {\r\n /** The selected option */\r\n public selectedOption = '';\r\n\r\n /** The confirmed address form */\r\n public confirmedAddressForm: FormGroup;\r\n\r\n /** Confirmed Address Form Control */\r\n public confirmedAddress: FormControl;\r\n\r\n /** Recommend address not found indicator */\r\n public recommendAddressNotFound: boolean;\r\n\r\n /**\r\n * class constructor\r\n * @param dialogRef the reference of the mat dialog\r\n * @param data injected data to the mat dialog data token\r\n */\r\n constructor(\r\n public dialogRef: MatDialogRef<any>, \r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmAddressData\r\n ) { }\r\n\r\n /** Life cycle hook on component init */\r\n public ngOnInit(): void {\r\n this.confirmedAddress = new FormControl(\"\", [Validators.required]);\r\n if (!this.data.recommendAddress || JSON.stringify(this.data.recommendAddress) === \"{}\") {\r\n this.recommendAddressNotFound = true;\r\n this.confirmedAddress.setValue(\"entered\");\r\n }\r\n this.confirmedAddressForm = new FormGroup({\r\n confirmedAddress: this.confirmedAddress\r\n });\r\n }\r\n\r\n /** On click of the cancel btn this function gets fired */\r\n public onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /** On click of the use address btn this function gets fired */\r\n public confirmAddr(): void {\r\n this.dialogRef.close(this.confirmedAddress.value);\r\n }\r\n}\r\n\r\n/**\r\n * The confirm address data class\r\n*/\r\nexport class ConfirmAddressData {\r\n /** The address type */\r\n public addressType?: string;\r\n /** The header text */\r\n public headerText?: string;\r\n /** The header text for recommend address not found */\r\n public headerTextRecommendAddressNotFound?: string;\r\n /** The content text */\r\n public contentText?: string;\r\n /** The content text for recommend address not found */\r\n public contentTextRecommendAddressNotFound?: string;\r\n /** The given address subtitle*/\r\n public givenAddressSubtitle?: string;\r\n /** The given address */\r\n public givenAddress?: any;\r\n /** The recommend address subtitle*/\r\n public recommendAddressSubtitle?: string;\r\n /** The recommend address */\r\n public recommendAddress?: any;\r\n /** The cancel button text */\r\n public cancelButtonText?: string;\r\n /** The confirm button text for select given address*/\r\n public confirmButtonTextGivenAddress?: string;\r\n /** The confirm button text for select recommend address*/\r\n public confirmButtonTextRecommendAddress?: string;\r\n /** The confirm button text for recommend address not found*/\r\n public confirmButtonTextRecommendAddressNotFound?: string;\r\n}\r\n","<div class=\"confirm-address-modal\">\r\n <div class=\"header\">\r\n @if (recommendAddressNotFound) {\r\n <h4 fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_11814_783)\">\r\n <path d=\"M11.1256 3.14219L17.9584 15.007C18.4373 15.843 17.8186 16.875 16.8326 16.875H3.16702C2.18108 16.875 1.56233 15.843 2.04124 15.007L8.87405 3.14219C9.36624 2.28594 10.6334 2.28594 11.1256 3.14219Z\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11.25V8.125\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 15C10.5178 15 10.9375 14.5803 10.9375 14.0625C10.9375 13.5447 10.5178 13.125 10 13.125C9.48223 13.125 9.0625 13.5447 9.0625 14.0625C9.0625 14.5803 9.48223 15 10 15Z\" fill=\"#E86E17\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_11814_783\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <span m-l-10>{{data?.headerTextRecommendAddressNotFound}}</span>\r\n </h4>\r\n } @else {\r\n <h4>{{data?.headerText}}</h4>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <form [formGroup]=\"confirmedAddressForm\" autocomplete=\"off\">\r\n @if (recommendAddressNotFound) {\r\n <p>{{data?.contentTextRecommendAddressNotFound}}</p>\r\n } @else {\r\n <p>{{data?.contentText}}</p>\r\n }\r\n <mat-radio-group \r\n class=\"address-cards\" formControlName=\"confirmedAddress\" \r\n fxLayout=\"row\" fxLayoutGap=\"16px\">\r\n <div fxLayout=\"column\">\r\n <p class=\"temp-label text-medium-emphasis\">{{data?.givenAddressSubtitle | uppercase}}</p>\r\n <mat-card appearance=\"outlined\" fxLayout=\"row\" class=\"radio-box-grey text-medium-emphasis\">\r\n @if (!recommendAddressNotFound) {\r\n <mat-radio-button value=\"entered\" color=\"primary\">\r\n <span [hidden]=\"true\">{{data?.givenAddressSubtitle}}</span>\r\n </mat-radio-button>\r\n }\r\n <div>\r\n <p>{{data?.givenAddress?.address1}}</p>\r\n <p>{{data?.givenAddress?.address2}}</p>\r\n <p>{{data?.givenAddress?.city}}, {{data?.givenAddress?.state}}</p>\r\n <p>{{data?.givenAddress?.zip5}}</p>\r\n </div>\r\n </mat-card>\r\n </div>\r\n @if (!recommendAddressNotFound) {\r\n <div fxLayout=\"column\">\r\n <p class=\"temp-label text-medium-emphasis\">{{data?.recommendAddressSubtitle | uppercase}}</p>\r\n <mat-card appearance=\"outlined\" fxLayout=\"row\" class=\"radio-box\">\r\n <mat-radio-button value=\"recommended\" color=\"primary\">\r\n <span [hidden]=\"true\">{{data?.recommendAddressSubtitle}}</span>\r\n </mat-radio-button>\r\n <div>\r\n <p [class.highlight]=\"data?.givenAddress?.street | compareAddress: data?.recommendAddress?.street\">\r\n {{data?.recommendAddress?.address1}}\r\n </p>\r\n <p [class.highlight]=\"data?.givenAddress?.address2 | compareAddress: data?.recommendAddress?.address2\">\r\n {{data?.recommendAddress?.address2}}\r\n </p>\r\n <p>\r\n <span [class.highlight]=\"data?.givenAddress?.city | compareAddress: data?.recommendAddress?.city\">\r\n {{data?.recommendAddress?.city}}\r\n </span>, \r\n <span [class.highlight]=\"data?.givenAddress?.state | compareAddress: data?.recommendAddress?.state\">\r\n {{data?.recommendAddress?.state}}\r\n </span>\r\n </p>\r\n <p>\r\n <span [class.highlight]=\"data?.givenAddress?.zip5 | compareAddress: data?.recommendAddress?.zip5\">\r\n {{data?.recommendAddress?.zip5}}\r\n </span>\r\n <span [class.highlight]=\"data?.givenAddress?.zip4 | compareAddress: data?.recommendAddress?.zip4\">\r\n -{{data?.recommendAddress?.zip4}}\r\n </span>\r\n </p>\r\n </div>\r\n </mat-card>\r\n </div>\r\n }\r\n </mat-radio-group>\r\n </form>\r\n <div class=\"button-group\">\r\n <button \r\n (click)=\"onNoClick()\" id=\"cancelAddressSelection\" \r\n mat-flat-button class=\"sof-button-v2\" theme=\"primary\" emphasis=\"floating\">\r\n {{data?.cancelButtonText}}\r\n </button>\r\n @if (confirmedAddress.value === 'entered' && !recommendAddressNotFound) {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseGivenAddress\" \r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"secondary\">\r\n {{data?.confirmButtonTextGivenAddress}}\r\n </button>\r\n }\r\n @if (confirmedAddress.value === 'recommended') {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseRecommendedAddress\"\r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"solid\">\r\n {{data?.confirmButtonTextRecommendAddress}}\r\n </button>\r\n }\r\n @if (recommendAddressNotFound) {\r\n <button \r\n (click)=\"confirmAddr()\" id=\"btnUseAddressNotFound\"\r\n class=\"sof-button-v2\" mat-flat-button theme=\"primary\" emphasis=\"solid\">\r\n {{data?.confirmButtonTextRecommendAddressNotFound}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\n\r\n/** The softheon radio card component */\r\n@Component({\r\n selector: 'sof-radio-card',\r\n templateUrl: './sof-radio-card.component.html',\r\n styleUrls: ['./sof-radio-card.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofRadioCardComponent implements OnInit {\r\n\r\n /** The title */\r\n @Input() public title: string;\r\n\r\n /** The id */\r\n @Input() public id: string;\r\n\r\n /** The value of the radio button */\r\n @Input() public value: any;\r\n\r\n /** True if the radio button should be disabled */\r\n @Input() public disabled: boolean = false;\r\n\r\n /** The color of the radio button */\r\n @Input() public color: ThemePalette = \"primary\";\r\n\r\n /** On component init */\r\n public ngOnInit() { }\r\n}\r\n","<mat-card appearance=\"outlined\" fxLayout=\"row\" fxFlex=\"100%\" class=\"sof-radio-card radio-box\">\r\n <mat-radio-button class=\"sof-radio-button\" id=\"radio-card-btn{{id}}\" name=\"radio-card{{id}}\" [value]=\"value\" [color]=\"color\" [disabled]=\"disabled\">\r\n </mat-radio-button>\r\n <div class=\"m-r-16\">\r\n <h4 *ngIf=\"title\">{{title | translate}}</h4>\r\n <ng-content select=\"[radio-card-content]\"></ng-content>\r\n </div>\r\n</mat-card>","import { Component, EventEmitter, Host, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Custom Input Stepper Component\r\n */\r\n@Component({\n selector: 'sof-input-stepper',\n templateUrl: 'sof-input-stepper.component.html',\n styleUrls: ['./sof-input-stepper.component.scss'],\n standalone: false\n})\r\nexport class SofInputStepperComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n /** The value */\r\n @Input() public customValue: number;\r\n\r\n /** The minimum value */\r\n @Input() public min: number = null;\r\n\r\n /** The max value */\r\n @Input() public max: number = null;\r\n\r\n /** The step by which the number increases/decreases */\r\n @Input() public step: number = 1;\r\n\r\n /** The label text */\r\n @Input() public labelText: string = '';\r\n\r\n /** If the input is required or not */\r\n @Input(\"required\") public isRequired: boolean = true;\r\n\r\n /** The error message */\r\n @Input() public requiredErrorMessage: string = '';\r\n\r\n /** The min max error message */\r\n @Input() public minMaxErrorMessage: string = '';\r\n\r\n /** The aria label */\r\n @Input() public ariaLabel: string = '';\r\n\r\n /** The value change event emitter */\r\n @Output() public valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n /** If the input is disabled or not */\r\n public isDisabled: boolean = false;\r\n\r\n /** The control name */\r\n public controlName: string | number = \"\";\r\n\r\n /** The derived form control */\r\n public get derivedFormControl(): AbstractControl {\r\n return this.control?.control;\r\n }\r\n\r\n /** The OnChange form control method */\r\n private onChange = (toggleVal: any): void => { };\r\n\r\n /** The OnTouched form control method */\r\n private onTouched = (): void => { };\r\n\r\n /** The component subscription */\r\n private subscription: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructor.\r\n * @param control The ng control\r\n */\r\n constructor(@Self() @Optional() @Host() private control: NgControl) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n setTimeout(() => {\r\n this.controlName = this.control.name;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Component Initialization\r\n */\r\n public ngOnInit(): void {\r\n if (!this.ariaLabel) {\r\n this.ariaLabel = this.labelText;\r\n }\r\n\r\n this.setDefinedValidators();\r\n\r\n // Subscribe to form control's validation\r\n this.subscription.add(this.derivedFormControl?.valueChanges?.subscribe(x => {\r\n this.customValue = x;\r\n this.setDefinedValidators();\r\n }));\r\n }\r\n\r\n /** Triggered when control is changed\r\n * @param fn The callback function.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /** Triggered when control is touched\r\n * @param fn The callback function.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n \r\n /** Sets the disabled state\r\n * @param isDisabled If the control is disabled or not\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n \r\n /** Component Destruction */\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Triggered when the form control value is set outside the component\r\n * @param newVal The new value.\r\n */\r\n public writeValue(newVal: any): void {\r\n this.customValue = newVal;\r\n }\r\n\r\n /** Increase the value by step */\r\n public increaseVal(): void {\r\n let newVal = this.customValue;\r\n if (!newVal) {\r\n newVal = 0;\r\n }\r\n newVal += this.step;\r\n if (this.max != null && newVal > this.max) {\r\n newVal = this.max;\r\n }\r\n this.customValue = newVal;\r\n this.derivedFormControl.setValue(this.customValue);\r\n this.derivedFormControl.markAsTouched();\r\n }\r\n\r\n /** Decrease the value by step */\r\n public decreaseVal(): void {\r\n let newVal = this.customValue;\r\n if (!newVal) {\r\n newVal = 0;\r\n }\r\n newVal -= this.step;\r\n if (this.min != null && newVal < this.min) {\r\n newVal = this.min;\r\n }\r\n this.customValue = newVal;\r\n this.derivedFormControl.setValue(this.customValue);\r\n this.derivedFormControl.markAsTouched();\r\n }\r\n\r\n /** Updates the isRequired field based on the control */\r\n private setDefinedValidators(): void {\r\n // Only update if a control is available\r\n if (this.derivedFormControl) {\r\n const controlValidator = this.control.control.validator;\r\n // Set the required state false when no control validator function is provided\r\n if (!controlValidator) {\r\n this.isRequired = false;\r\n return;\r\n }\r\n this.isRequired = this.derivedFormControl?.hasValidator(Validators.required);\r\n }\r\n }\r\n}","<div *ngIf=\"derivedFormControl\" fxLayoutAlign=\"row\" class=\"input-stepper-container\">\r\n <mat-form-field appearance=\"outline\" class=\"full-width sof-form-field\">\r\n <mat-label>{{ labelText | translate}}</mat-label>\r\n <input [formControl]=\"derivedFormControl\" matInput type=\"number\" [name]=\"controlName\" id=\"stepper-{{controlName}}\"\r\n attr.aria-label=\"{{ariaLabel | translate}}\" [required]=\"isRequired\" [value]=\"customValue\" [step]=\"step\"\r\n placeholder=\"{{ labelText | translate}}\" [disabled]=\"isDisabled\">\r\n <mat-error *ngIf=\"derivedFormControl?.errors?.required\">{{ requiredErrorMessage | translate}}</mat-error>\r\n <mat-error *ngIf=\"derivedFormControl?.errors?.min || derivedFormControl?.errors?.max\">{{ minMaxErrorMessage | translate}}</mat-error>\r\n <span matSuffix class=\"error\" *ngIf=\"derivedFormControl?.touched && derivedFormControl?.invalid\">\r\n <i class=\"fa-light fa-circle-exclamation\"></i>\r\n </span>\r\n </mat-form-field>\r\n <button mat-flat-button [ngClass]=\"{'invalid': derivedFormControl?.touched && derivedFormControl?.invalid}\" [disabled]=\"isDisabled\"\r\n class=\"sof-flat-icon-button\" size=\"large\" id=\"decrease-step-{{controlName}}\" (click)=\"decreaseVal()\">\r\n <i class=\"fa-regular fa-minus\"></i>\r\n </button>\r\n <button mat-flat-button [ngClass]=\"{'invalid': derivedFormControl?.touched && derivedFormControl?.invalid}\" [disabled]=\"isDisabled\"\r\n class=\"sof-flat-icon-button\" size=\"large\" id=\"increase-step-{{controlName}}\" (click)=\"increaseVal()\">\r\n <i class=\"fa-regular fa-plus\"></i>\r\n </button>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sof-utility-button',\r\n templateUrl: './sof-utility-button.component.html',\r\n styleUrls: ['./sof-utility-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class SofUtilityButtonComponent {\r\n\r\n /* Button Id */\r\n @Input() buttonId: string = '';\r\n\r\n /* Button Id */\r\n @Input() buttonAriaLabel: string = '';\r\n\r\n /* Button Theme */\r\n @Input() buttonTheme: 'primary' | 'neutral' | 'destroy' = \"primary\";\r\n\r\n /* Button Color Text */\r\n @Input() buttonEmphasis: 'solid' | 'secondary' | 'floating' | 'contained' = \"solid\";\r\n\r\n /* Button Is Disabled */\r\n @Input() buttonDisabled: boolean = false;\r\n\r\n /* Button Icon Class */\r\n @Input() buttonIconClass: string = '';\r\n\r\n /* Menu Dropdown Size */\r\n @Input() menuDropDown: ButtonData[] = [];\r\n\r\n /** Individual Button Click */\r\n @Input() buttonClick: Function;\r\n\r\n /** \r\n * Any logic related to ag grid cell renderer data can be added here \r\n * @note All `@Inputs` should be accepted through `params`\r\n */\r\n agInit(params: any & SofUtilityButtonComponent): void {\r\n this.buttonId = params.buttonId ?? this.buttonId;\r\n this.buttonTheme = params.buttonTheme ?? this.buttonTheme;\r\n this.buttonEmphasis = params.buttonEmphasis ?? this.buttonEmphasis;\r\n this.buttonAriaLabel = params.buttonAriaLabel ?? this.buttonAriaLabel;\r\n this.buttonDisabled = params.buttonDisabled ?? this.buttonDisabled;\r\n this.buttonIconClass = params.buttonIconClass ?? this.buttonIconClass;\r\n this.menuDropDown = params.menuDropDown ?? this.menuDropDown;\r\n this.buttonClick = params.buttonClick ?? this.buttonClick;\r\n }\r\n}\r\n\r\nexport interface ButtonData {\r\n name: string,\r\n icon: string,\r\n isDisabled: boolean,\r\n action: Function\r\n}\r\n","<!-- Menu Dropdown -->\r\n@if (menuDropDown.length) {\r\n <button \r\n mat-flat-button \r\n class=\"button-icon-utility\" \r\n [id]=\"buttonId\" \r\n [attr.theme]=\"buttonTheme\" \r\n [attr.emphasis]=\"buttonEmphasis\"\r\n [disabled]=\"buttonDisabled\" \r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"buttonAriaLabel\">\r\n <i [ngClass]=\"buttonIconClass\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n @for (item of menuDropDown; track $index) {\r\n <button \r\n mat-menu-item \r\n (click)=\"item.action()\"\r\n [disabled]=\"item.isDisabled\" \r\n disableRipple=\"true\">\r\n @if (item.icon) {\r\n <i [ngClass]=\"item.icon\" aria-hidden=\"true\"></i>\r\n }\r\n {{item.name | translate}}\r\n </button>\r\n }\r\n </mat-menu>\r\n <!-- Single Button -->\r\n} @else {\r\n <button \r\n mat-flat-button \r\n (click)=\"buttonClick()\" \r\n class=\"button-icon-utility\" \r\n [id]=\"buttonId\" \r\n [attr.theme]=\"buttonTheme\" \r\n [attr.emphasis]=\"buttonEmphasis\" \r\n [disabled]=\"buttonDisabled\"\r\n [attr.aria-label]=\"buttonAriaLabel\">\r\n <i [ngClass]=\"buttonIconClass\" aria-hidden=\"true\"></i>\r\n </button>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSelectChange } from '@angular/material/select';\r\n\r\n/** \r\n * The SofConfirmAddressCountyChangeComponent Component shown on the dialog \r\n * @description This component takes a list of counties and outputs the selected county \r\n * @note If there is only one county, can either confirm this county or go back to form\r\n*/\r\n@Component({\r\n selector: 'sof-confirm-address-county-change',\r\n templateUrl: './sof-confirm-address-county-change.component.html',\r\n styleUrls: ['./sof-confirm-address-county-change.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class SofConfirmAddressCountyChangeComponent implements OnInit { \r\n\r\n /** The selected county to emit on close */\r\n public selectedCounty: string;\r\n\r\n /**\r\n * class constructor\r\n * @param dialogRef the reference of the mat dialog\r\n * @param data injected data to the mat dialog data token\r\n */\r\n constructor(\r\n public dialogRef: MatDialogRef<any>, \r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmAddressCountyChangeData\r\n ) { }\r\n\r\n /** Life cycle hook on component init */ \r\n public ngOnInit(): void {\r\n if (this.data.counties.length === 1) {\r\n this.selectedCounty = this.data.counties[0];\r\n }\r\n }\r\n\r\n /** \r\n * Selects the county \r\n * @param county the select the county \r\n */\r\n public selectCounty(county: MatSelectChange): void {\r\n this.selectedCounty = county.value;\r\n }\r\n\r\n /** On click of the 'continue' || 'confirm' button */\r\n public confirmCounty(): void {\r\n this.dialogRef.close(this.selectedCounty);\r\n }\r\n\r\n /** Go back to form / close dialog */ \r\n public goBack(): void {\r\n this.dialogRef.close();\r\n }\r\n} \r\n\r\n/**\r\n * The confirm address county update data class\r\n*/\r\nexport interface ConfirmAddressCountyChangeData {\r\n /** The corrected county / counties to display */\r\n counties?: Array<string>;\r\n}\r\n","<div class=\"county-modal\">\r\n <div class=\"header\">\r\n @if (data.counties.length > 1) {\r\n <h4>{{'armature.confirm-address.county-change-modal.headings.multiple-counties' | translate}}</h4>\r\n } @else {\r\n <h4>{{'armature.confirm-address.county-change-modal.headings.single-county' | translate}}</h4>\r\n }\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"warning\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_11814_783)\">\r\n <path d=\"M11.1256 3.14219L17.9584 15.007C18.4373 15.843 17.8186 16.875 16.8326 16.875H3.16702C2.18108 16.875 1.56233 15.843 2.04124 15.007L8.87405 3.14219C9.36624 2.28594 10.6334 2.28594 11.1256 3.14219Z\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 11.25V8.125\" stroke=\"#E86E17\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 15C10.5178 15 10.9375 14.5803 10.9375 14.0625C10.9375 13.5447 10.5178 13.125 10 13.125C9.48223 13.125 9.0625 13.5447 9.0625 14.0625C9.0625 14.5803 9.48223 15 10 15Z\" fill=\"#E86E17\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_11814_783\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"warning-message\">\r\n <p class=\"bold\">{{'armature.confirm-address.county-change-modal.warning-message.reason' | translate}}</p>\r\n <p>{{'armature.confirm-address.county-change-modal.warning-message.review' | translate}}</p>\r\n </div>\r\n </div>\r\n <div class=\"action-description\">\r\n @if (data.counties.length > 1) {\r\n <p>{{'armature.confirm-address.county-change-modal.action-description.multiple-counties' | translate}}</p>\r\n } @else {\r\n <p>{{'armature.confirm-address.county-change-modal.action-description.single-county' | translate}}</p>\r\n }\r\n </div>\r\n <div class=\"action\"> \r\n @if (data.counties.length > 1) {\r\n <mat-form-field appearance=\"outline\" class=\"sof-form-field county-select\">\r\n <mat-label>{{'armature.confirm-address.county-change-modal.county' | translate}}</mat-label>\r\n <mat-select \r\n (selectionChange)=\"selectCounty($event)\" \r\n id=\"countySelect\" ngDefaultControl>\r\n @for (county of data.counties; track $index) {\r\n <mat-option [value]=\"county\" class=\"county-option-override\">\r\n {{county | lowercase}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field> \r\n } @else {\r\n <div class=\"changed-county-single\">\r\n <p class=\"county-label\">{{'armature.confirm-address.county-change-modal.county' | translate | uppercase}}</p>\r\n <p class=\"county\">{{selectedCounty | lowercase}}</p>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"button-group\">\r\n <button \r\n (click)=\"goBack()\" mat-flat-button id=\"goBackBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"floating\">\r\n {{'armature.confirm-address.county-change-modal.buttons.go-back' | translate}}\r\n </button>\r\n @if (data.counties.length > 1) {\r\n <button \r\n (click)=\"confirmCounty()\" mat-flat-button id=\"confirmBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"solid\" [disabled]=\"!selectedCounty\">\r\n {{'armature.confirm-address.county-change-modal.buttons.confirm' | translate}}\r\n </button>\r\n } @else {\r\n <button \r\n (click)=\"confirmCounty()\" mat-flat-button id=\"continueBtn\"\r\n class=\"sof-button-v2\" theme=\"primary\" emphasis=\"solid\">\r\n {{'armature.confirm-address.county-change-modal.buttons.continue' | translate}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule, MatIconButton } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { MatMenuModule} from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\n\r\nimport { SofModalComponent } from './sof-modal/sof-modal.component';\r\nimport { SofHandleComponent } from './sof-handle/sof-handle.component'\r\nimport { SofContextComponent} from './sof-context/sof-context.component';\r\nimport { SofAlertComponent } from './sof-alert/sof-alert.component';\r\nimport { SofSimpleAlertComponent } from './sof-simple-alert/sof-simple-alert.component';\r\nimport { SofBannerComponent } from './sof-banner/sof-banner.component';\r\nimport { SofProgressBarComponent } from './sof-progress-bar/sof-progress-bar.component';\r\nimport { SofButtonToggleGroupComponent } from './sof-button-toggle-group/sof-button-toggle-group.component';\r\nimport { SofStarRatingComponent } from './sof-star-rating/sof-star-rating.component';\r\nimport { SofBadgeComponent } from './sof-badge/sof-badge.component';\r\nimport { SofImageCheckboxComponent } from './sof-image-checkbox/sof-image-checkbox.component';\r\nimport { SofConfirmAddressComponent } from './confirm-address/sof-confirm-address/sof-confirm-address.component';\r\nimport { SofRadioCardComponent } from './sof-radio-card/sof-radio-card.component';\r\nimport { SofInputStepperComponent } from './sof-input-stepper/sof-input-stepper.component';\r\nimport { SofUtilityButtonComponent } from './sof-utility-button/sof-utility-button.component';\r\nimport { SofConfirmAddressCountyChangeComponent } from './confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component';\r\nimport { SofCompareAddressPipe } from './confirm-address/sof-confirm-address/compare-address-pipe/compare-address.pipe';\r\n\r\n\r\n/** The components */\r\nconst components = [\r\n SofProgressBarComponent,\r\n SofRadioCardComponent,\r\n SofBannerComponent,\r\n SofAlertComponent,\r\n SofModalComponent,\r\n SofButtonToggleGroupComponent,\r\n SofStarRatingComponent,\r\n SofBadgeComponent,\r\n SofUtilityButtonComponent, \r\n SofImageCheckboxComponent,\r\n SofSimpleAlertComponent,\r\n SofConfirmAddressComponent,\r\n SofConfirmAddressCountyChangeComponent,\r\n SofInputStepperComponent,\r\n SofHandleComponent,\r\n SofCompareAddressPipe,\r\n SofContextComponent\r\n];\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatRadioModule,\r\n MatPaginator,\r\n MatMenu,\r\n MatMenuModule,\r\n MatInputModule,\r\n MatIconButton,\r\n MatListModule\r\n];\r\n\r\nconst cdkModules = [\r\n CdkDropList,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n CdkDragHandle\r\n];\r\n\r\n/** The BaseComponentModule Module */\r\n@NgModule({\r\n declarations: [...components],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslateModule,\r\n ...materialModules,\r\n ...cdkModules\r\n ],\r\n exports: [...components]\r\n})\r\nexport class BaseComponentModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\nimport { AlertBannerModule } from './alert-banner/alert-banner.module';\r\n\r\nimport { SessionService as ServerSessionService } from './core/client-generated/api/session.service';\r\nimport { BASE_PATH } from './core/client-generated/variables';\r\n\r\nimport { AppTemplateComponent } from './core/components/app-template/app-template.component';\r\n\r\nimport { AbstractStartupService } from './core/initializer/abstract-startup-service';\r\nimport { Initializer } from './core/initializer/initializer.service';\r\n\r\nimport { ArmatureAuthTokenAppendInterceptor } from './core/interceptors/armature-auth-token-append.interceptor';\r\n\r\nimport { SESSION_CONFIG } from './core/models/constants';\r\nimport { SessionConfig } from './core/models/session-config';\r\n\r\nimport { BaseConfigService } from './core/services/base-config.service';\r\nimport { DefaultConfigService } from './core/services/default-config.service';\r\nimport { SessionService } from './core/services/session.service';\r\nimport { UserEntityService } from './core/services/user-entity.service';\r\n\r\nimport { ArmatureFooterModule } from './footer/footer.module';\r\n\r\nimport { FormsModule } from './forms/forms.module';\r\n\r\nimport { ArmatureHeaderModule } from './header/header.module';\r\n\r\nimport { NavigationModule } from './navigation/navigation.module';\r\n\r\nimport { ThemeModule } from './theming/theme.module';\r\n\r\nimport { BaseComponentModule } from './base-components/base-component.module';\r\n\r\nimport { FederatedModuleService } from './core/services/federated-module.service';\r\n\r\nimport { B2bNavComponent } from './navigation/components/b2b-nav/b2b-nav.component';\r\n\r\n/** The package modules */\r\nconst packageModules = [\r\n FormsModule,\r\n NavigationModule,\r\n ArmatureHeaderModule,\r\n ArmatureFooterModule,\r\n BaseComponentModule,\r\n ThemeModule,\r\n AlertBannerModule\r\n];\r\n\r\n/**\r\n * Session base path factory\r\n * @param injector The angular injector\r\n */\r\nexport function sessionBasePathFactory(injector: Injector): string {\r\n const sesConfigDefault = new SessionConfig();\r\n sesConfigDefault.sessionManagementBasePath = 'not-found';\r\n const sessionConfig: SessionConfig = injector.get<SessionConfig>(SESSION_CONFIG, sesConfigDefault);\r\n if (sessionConfig.sessionManagementBasePath !== 'not-found') {\r\n return sessionConfig.sessionManagementBasePath;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * The initializer factory\r\n * This needs to return a const instead of simplifying to return in one line\r\n * returning in one line causes compilation errors\r\n * @param initializer The initializer service\r\n */\r\nexport function initializerFactory(initializer: Initializer): () => Promise<any> {\r\n const result = () => initializer.initialize();\r\n\r\n return result;\r\n}\r\n\r\n/** The armature root module */\r\n@NgModule({\r\n declarations: [\r\n AppTemplateComponent\r\n],\r\n imports: [\r\n ...packageModules,\r\n RouterModule,\r\n CommonModule,\r\n FlexLayoutModule,\r\n B2bNavComponent\r\n ],\r\n providers: [\r\n FederatedModuleService,\r\n Initializer,\r\n ServerSessionService,\r\n SessionService,\r\n UserEntityService,\r\n {\r\n provide: BASE_PATH,\r\n useFactory: sessionBasePathFactory,\r\n deps: [Injector]\r\n },\r\n { provide: BaseConfigService, useClass: DefaultConfigService },\r\n { provide: HTTP_INTERCEPTORS, useClass: ArmatureAuthTokenAppendInterceptor, multi: true }\r\n ],\r\n exports: [\r\n ...packageModules,\r\n AppTemplateComponent\r\n ]\r\n})\r\nexport class ArmatureModule {\r\n\r\n /**\r\n * Constructs the module\r\n * Used to initialize services at module construction time\r\n * @param userEntityService The user entity service\r\n */\r\n // tslint:disable-next-line: unnecessary-constructor\r\n constructor(\r\n userEntityService: UserEntityService\r\n ) { }\r\n\r\n /**\r\n * Builds the module with custom arguments\r\n * This replace the armature config service with user provided custom one\r\n * It will also call the user provided start up service after default initialization has finished\r\n * @param configServiceClass The config service class for the parent application\r\n */\r\n public static forRoot(configServiceClass?: any, ignoreCustomAppInitializer: boolean = false): ModuleWithProviders<ArmatureModule> {\r\n const initFactory = (initService: AbstractStartupService, initializer: Initializer) => {\r\n const result = async () =>\r\n new Promise((resolve, reject) => {\r\n initializer.initialize()\r\n .then(() => {\r\n initService.load()\r\n .then(resolve)\r\n .catch(e => {\r\n console.error(e);\r\n reject(e);\r\n });\r\n })\r\n .catch(e => {\r\n console.error(e);\r\n reject(e);\r\n });\r\n });\r\n\r\n return result;\r\n };\r\n return {\r\n ngModule: ArmatureModule,\r\n providers: [\r\n { provide: BaseConfigService, useExisting: configServiceClass == null ? DefaultConfigService : configServiceClass },\r\n { provide: APP_INITIALIZER,\r\n useFactory: ignoreCustomAppInitializer ? initializerFactory : initFactory,\r\n deps: ignoreCustomAppInitializer ? [Initializer] : [AbstractStartupService, Initializer],\r\n multi: true }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","import { HttpVerb } from './http-verbs';\r\nimport { TypedSession } from '../../core/models/typed-session';\r\n\r\n/** The data store configurations */\r\nexport class DataStoreConfig<T = any> {\r\n /** The data store base uri */\r\n public baseUri: string;\r\n\r\n /** The retrieve http verb */\r\n public retrieveVerb: HttpVerb;\r\n\r\n /** The retrieve request delegate */\r\n public retrieveRequestDelegate: (baseUri: string, data: TypedSession<T>) => { uri: string, body?: any };\r\n\r\n /** The retrieve response delegate */\r\n public retrieveResponseDelegate: (response: any, session: TypedSession<T>) => TypedSession<T>;\r\n\r\n /** The retrieve securable delegate */\r\n public retrieveSecurableDelegate: (response: any) => Array<(arg: any) => any> | ((arg: any) => any);\r\n\r\n /** The update http verb */\r\n public updateVerb: HttpVerb;\r\n\r\n /** The update request delegate */\r\n public updateRequestDelegate: (baseUri: string, data: T) => { uri: string, body?: any};\r\n\r\n /** Delegate for determining when to make a call to update the data store */\r\n public shouldUpdateDataStoreDelegate: (data: T) => boolean;\r\n}\r\n","import { SessionResponseModel } from '../../core/client-generated/model/sessionResponseModel';\r\nimport { BrandingModel, TrackingModel, OAuthModel } from '../../core/client-generated/model/models';\r\n\r\n/** The session class */\r\nexport class TypedSession<T> implements SessionResponseModel {\r\n /** The initalizing origin */\r\n public initializingOrigin?: string;\r\n\r\n /** The session id */\r\n public sessionId?: string;\r\n\r\n /** The typed session data */\r\n public sessionData?: T;\r\n\r\n /** The branding model */\r\n public branding?: BrandingModel;\r\n\r\n /** The tracking model */\r\n public tracking?: TrackingModel;\r\n\r\n /** The oauth model */\r\n public oAuth?: OAuthModel;\r\n}","/** The route path enum */\r\nexport enum RoutePath {\r\n Internal = 'internal',\r\n External = 'external'\r\n}\r\n","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The error model\r\n */\r\nexport interface ErrorModel { \r\n /**\r\n * The error message\r\n */\r\n message?: string;\r\n /**\r\n * The response status\r\n */\r\n status?: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The OAuth Session Data\r\n */\r\nexport interface OAuthModel { \r\n /**\r\n * The Client ID\r\n */\r\n clientId: string;\r\n /**\r\n * The issuer\r\n */\r\n issuer: string;\r\n /**\r\n * The scope\r\n */\r\n scope: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The theme palette\r\n */\r\nexport interface ThemePaletteColorsModel { \r\n /**\r\n * The 50 palette color\r\n */\r\n fifty?: string;\r\n /**\r\n * The 100 palette color\r\n */\r\n oneHundred?: string;\r\n /**\r\n * The 200 palette color\r\n */\r\n twoHundred?: string;\r\n /**\r\n * The 300 palette color\r\n */\r\n threeHundred?: string;\r\n /**\r\n * The 400 palette color\r\n */\r\n fourHundred?: string;\r\n /**\r\n * The 500 palette color\r\n */\r\n fiveHundred?: string;\r\n /**\r\n * The 600 palette color\r\n */\r\n sixHundred?: string;\r\n /**\r\n * The 700 palette color\r\n */\r\n sevenHundred?: string;\r\n /**\r\n * The 800 palette color\r\n */\r\n eightHundred?: string;\r\n /**\r\n * The 900 palette color\r\n */\r\n nineHundred?: string;\r\n /**\r\n * The A50 palette color\r\n */\r\n a50?: string;\r\n /**\r\n * The A100 palette color\r\n */\r\n a100?: string;\r\n /**\r\n * The A200 palette color\r\n */\r\n a200?: string;\r\n /**\r\n * The A300 palette color\r\n */\r\n a300?: string;\r\n /**\r\n * The A400 palette color\r\n */\r\n a400?: string;\r\n /**\r\n * The A500 palette color\r\n */\r\n a500?: string;\r\n /**\r\n * The A600 palette color\r\n */\r\n a600?: string;\r\n /**\r\n * The A700 palette color\r\n */\r\n a700?: string;\r\n /**\r\n * The A800 palette color\r\n */\r\n a800?: string;\r\n /**\r\n * The A900 palette color\r\n */\r\n a900?: string;\r\n}","/**\r\n * Distributed Cache API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The tracking Data\r\n */\r\nexport interface TrackingModel { \r\n /**\r\n * The tracking ID\r\n */\r\n trackingId: string;\r\n /**\r\n * The tracking type\r\n */\r\n trackingType: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\nimport { FolderLink } from './folderLink';\r\nimport { IdentityProfile } from './identityProfile';\r\nimport { SettingsProfile } from './settingsProfile';\r\n\r\n/**\r\n * Application User Model\r\n */\r\nexport interface ApplicationUserModel { \r\n /**\r\n * Gets or sets the child links.\r\n */\r\n childLinks?: Array<FolderLink>;\r\n /**\r\n * The IdentityProfile.\r\n */\r\n identity?: IdentityProfile;\r\n /**\r\n * The SettingsProfile.\r\n */\r\n settings?: SettingsProfile;\r\n drawerId?: number;\r\n id?: number;\r\n name?: string;\r\n state?: ApplicationUserModel.StateEnum;\r\n}\r\nexport namespace ApplicationUserModel {\r\n export type StateEnum = 'Available' | 'Locked' | 'Suspended' | 'Archived' | 'Deleted' | 'Canceled' | 'Complete' | 'Reviewed' | 'ReviewedSuspended' | 'ReviewedComplete' | 'Rejected' | 'RoutingSlipOpen' | 'ReviewedRoutingSlipOpen' | 'Undefined';\r\n export const StateEnum = {\r\n Available: 'Available' as StateEnum,\r\n Locked: 'Locked' as StateEnum,\r\n Suspended: 'Suspended' as StateEnum,\r\n Archived: 'Archived' as StateEnum,\r\n Deleted: 'Deleted' as StateEnum,\r\n Canceled: 'Canceled' as StateEnum,\r\n Complete: 'Complete' as StateEnum,\r\n Reviewed: 'Reviewed' as StateEnum,\r\n ReviewedSuspended: 'ReviewedSuspended' as StateEnum,\r\n ReviewedComplete: 'ReviewedComplete' as StateEnum,\r\n Rejected: 'Rejected' as StateEnum,\r\n RoutingSlipOpen: 'RoutingSlipOpen' as StateEnum,\r\n ReviewedRoutingSlipOpen: 'ReviewedRoutingSlipOpen' as StateEnum,\r\n Undefined: 'Undefined' as StateEnum\r\n };\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface FolderLink { \r\n acl?: number;\r\n childDrawerID?: number;\r\n childEntityID?: number;\r\n childType?: number;\r\n classProperty?: number;\r\n drawerID?: number;\r\n entityID?: number;\r\n hasChildrenInSameDrawer?: boolean;\r\n id?: number;\r\n includerUserID?: number;\r\n insertionTime?: Date;\r\n modificationTime?: Date;\r\n modifierUserID?: number;\r\n name?: string;\r\n note?: string;\r\n ownerGroupID?: number;\r\n ownerUserID?: number;\r\n pageNumber?: number;\r\n parentDrawerID?: number;\r\n state?: string;\r\n virtualName?: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface PreferencesRow { \r\n key?: string;\r\n value?: string;\r\n}","/**\r\n * Softheon.UserManagement.API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\nexport interface ValidationRecordsRow { \r\n type?: string;\r\n status?: string;\r\n referenceID?: string;\r\n validationDate?: Date;\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = contentTypes.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length == 0) {\r\n return undefined;\r\n }\r\n\r\n let type = accepts.find(x => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime != null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n *//* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CreateCacheEntryRequestModel } from '../model/createCacheEntryRequestModel';\r\nimport { RetrieveCacheEntryResponseModel } from '../model/retrieveCacheEntryResponseModel';\r\nimport { UpdateCacheEntryRequestModel } from '../model/updateCacheEntryRequestModel';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n@Injectable()\r\nexport class CacheService {\r\n\r\n protected basePath = '/';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n if (basePath) {\r\n this.basePath = basePath;\r\n }\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.basePath = basePath || configuration.basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Deletes the specified key.\r\n * \r\n * @param key The key.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public _delete(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public _delete(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public _delete(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public _delete(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling _delete.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('delete',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates the specified request.\r\n * \r\n * @param body The request.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('post',`${this.basePath}/v1/Cache`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the cache entry\r\n * \r\n * @param key \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refresh(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refresh(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refresh(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refresh(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling refresh.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<any>('get',`${this.basePath}/v1/Cache/refresh/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves this instance.\r\n * \r\n * @param key \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public retrieve(key: string, observe?: 'body', reportProgress?: boolean): Observable<RetrieveCacheEntryResponseModel>;\r\n public retrieve(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling retrieve.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.request<RetrieveCacheEntryResponseModel>('get',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the specified key.\r\n * \r\n * @param key The key.\r\n * @param body The request.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {\r\n\r\n if (key === null || key === undefined) {\r\n throw new Error('Required parameter key was null or undefined when calling update.');\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (oauth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n let httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected != undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected != undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.request<any>('put',`${this.basePath}/v1/Cache/${encodeURIComponent(String(key))}`,\r\n {\r\n body: body,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","export * from './cache.service';\r\nimport { CacheService } from './cache.service';\r\nexport const APIS = [CacheService];\r\n","import { HttpEvent, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { CacheService } from '../client-generated/api/api';\r\nimport { CreateCacheEntryRequestModel } from '../client-generated/model/createCacheEntryRequestModel';\r\nimport { RetrieveCacheEntryResponseModel } from '../client-generated/model/retrieveCacheEntryResponseModel';\r\nimport { UpdateCacheEntryRequestModel } from '../client-generated/model/updateCacheEntryRequestModel';\r\n\r\n/** Server side cache service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServerCacheService {\r\n\r\n /**\r\n * Constructs the service\r\n * @param sessionService The session service\r\n * @param cacheService The cache service\r\n */\r\n constructor(\r\n private readonly sessionService: SessionService,\r\n private readonly cacheService: CacheService\r\n ) { }\r\n\r\n /**\r\n * Creates the server side cache entry\r\n * @param body The body\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public create(body?: CreateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n body.key = this.formatKey(body.key);\r\n\r\n return this.cacheService.create(body, observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Retrieves the entry from the server cache\r\n * @param key The key to retrieve\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public retrieve(key: string, observe?: 'body', reportProgress?: boolean): Observable<RetrieveCacheEntryResponseModel>;\r\n public retrieve(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<RetrieveCacheEntryResponseModel>>;\r\n public retrieve(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.retrieve(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n\r\n /**\r\n * Updates the server side cache entry\r\n * @param key The key\r\n * @param body The body\r\n * @param observe The observer\r\n * @param reportProgress Report progress flag\r\n */\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public update(key: string, body?: UpdateCacheEntryRequestModel, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.update(this.formatKey(key), body, observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Deletes the specified key.\r\n * @param key The key.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public delete(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public delete(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public delete(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public delete(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService._delete(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Refreshes the cache entry\r\n * @param key The key\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refresh(key: string, observe?: 'body', reportProgress?: boolean): Observable<any>;\r\n public refresh(key: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<any>>;\r\n public refresh(key: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<any>>;\r\n public refresh(key: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {\r\n return this.cacheService.refresh(this.formatKey(key), observe, reportProgress);\r\n }\r\n\r\n /**\r\n * Formats the provided key\r\n * @param key The key\r\n */\r\n private formatKey(key: string): string {\r\n return `${this.sessionService.sessionId}-${key}`;\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISTRIBUTED_CACHE_BASE_PATH: InjectionToken<string> = new InjectionToken<string>('DistributedCacheBasePath');\r\n","import { NgModule, InjectionToken, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CacheService } from './client-generated/api/cache.service';\r\nimport { BASE_PATH } from './client-generated/variables';\r\nimport { ServerCacheService } from './services/server-cache.service';\r\nimport { DISTRIBUTED_CACHE_BASE_PATH } from './models/constants';\r\n\r\n/** The distributed cache module */\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n {\r\n provide: BASE_PATH,\r\n useExisting: DISTRIBUTED_CACHE_BASE_PATH\r\n },\r\n CacheService,\r\n ServerCacheService\r\n ]\r\n})\r\nexport class DistributedCacheModule {}\r\n","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The cache expiration types\r\n */\r\nexport type CacheExpirationType = 'Sliding' | 'Absolute';\r\n\r\nexport const CacheExpirationType = {\r\n Sliding: 'Sliding' as CacheExpirationType,\r\n Absolute: 'Absolute' as CacheExpirationType\r\n};","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * The cache entry retrieve response model\r\n */\r\nexport interface RetrieveCacheEntryResponseModel { \r\n /**\r\n * Gets or sets the value.\r\n */\r\n value?: any;\r\n}","/**\r\n * Sample API\r\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\r\n *\r\n * OpenAPI spec version: 1\r\n * \r\n *\r\n * NOTE: This class is auto generated by the swagger code generator program.\r\n * https://github.com/swagger-api/swagger-codegen.git\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * Update Cache entry request model\r\n */\r\nexport interface UpdateCacheEntryRequestModel { \r\n /**\r\n * Gets or sets the value.\r\n */\r\n value: any;\r\n}","import { Person } from '../../oauth/models/generated/person';\r\nimport { Address } from '../../forms/models/address';\r\n\r\n/** The policy person */\r\nexport class PolicyPerson implements Person {\r\n /** Implemented props */\r\n public exchangeId: string;\r\n public groupPolicyNumber: string;\r\n public dob: Date;\r\n public gender: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public relationship: string;\r\n\r\n /** Additional Props */\r\n public homeAddress: Address = {};\r\n public mailingAddress: Address = {};\r\n public email: string;\r\n public phone: string;\r\n public phoneType: string;\r\n}\r\n","/** Public Api service for distributed cache */\r\nexport * from './distributed-cache.module';\r\n\r\nexport { DISTRIBUTED_CACHE_BASE_PATH } from './models/constants';\r\n\r\nexport * from './client-generated/configuration';\r\n\r\nexport * from './client-generated/model/models';\r\n\r\nexport * from './services/server-cache.service';\r\n\r\nexport * from './models/policy-person';\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ErrorCommonConfig } from '../../models/error-common-config';\r\n\r\n/** The Common Error component */\r\n@Component({\r\n selector: 'sof-ar-error-common',\r\n templateUrl: './error-common.component.html',\r\n styleUrls: ['./error-common.component.css'],\r\n standalone: false\r\n})\r\nexport class ErrorCommonComponent implements OnInit {\r\n\r\n /** The config input */\r\n @Input() public config: ErrorCommonConfig;\r\n\r\n /** Constructs the component */\r\n constructor() {}\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (!this.config) {\r\n throw new Error('sof-ar-error-common: [config] input is required');\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"config\" class=\"error-container\">\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center center\">\r\n <div fxFlex=\"100%\" fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <div *ngIf=\"config.showErrorImage\" fxFlex=\"100%\" fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"error-image-container\">\r\n <img src=\"{{config.errorImageUrl}}\">\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h1 class=\"{{config.headerOneClass}}\" fxFlex=\"auto\">{{config.headerOneText | translate}}</h1>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h2 class=\"{{config.headerTwoClass}}\" fxFlex=\"auto\">{{config.headerTwoText | translate}}</h2>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayout=\"row\" fxLayoutAlign=\"start start\">\r\n <h3 h5 class=\"{{config.infoTextClass}}\" fxFlex=\"auto\">{{config.infoText | translate}}</h3>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { ErrorCommonComponent } from './components/error-common/error-common.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The error module */\r\n@NgModule({\r\n declarations: [ErrorCommonComponent],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n ],\r\n exports: [\r\n ErrorCommonComponent\r\n ]\r\n})\r\nexport class ErrorModule { }\r\n","/** The Error Common Configurations */\r\nexport class ErrorCommonConfig {\r\n /** True if error image should be displayed */\r\n public showErrorImage: boolean;\r\n /** The image url */\r\n public errorImageUrl: string;\r\n /** The header one text */\r\n public headerOneText: string;\r\n /** The header one classes */\r\n public headerOneClass: string;\r\n /** The header two text */\r\n public headerTwoText: string;\r\n /** The header two classes */\r\n public headerTwoClass: string;\r\n /** The info text */\r\n public infoText: string;\r\n /** The info text classes */\r\n public infoTextClass: string;\r\n\r\n /** constructs the class */\r\n constructor() {\r\n this.errorImageUrl = 'https://softheoncdnstorage.blob.core.windows.net/images/common/error-cat.svg';\r\n }\r\n}","/** Public surface api for the error module */\r\nexport * from './error.module';\r\n\r\n// components\r\nexport * from './components/error-common/error-common.component';\r\n\r\n// models\r\nexport * from './models/error-common-config';\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { FAQ } from '../../models/faq';\r\nimport { FAQConfig } from '../../models/faq-config';\r\n\r\n/** \r\n * FAQ Component\r\n * @todo see if any apps are actually using this component ... do not see in any consumer apps ... \r\n */\r\n@Component({\r\n selector: 'sof-ar-faq',\r\n templateUrl: './faq.component.html',\r\n styleUrls: ['./faq.component.scss'],\r\n standalone: false\r\n})\r\nexport class FaqComponent implements OnInit {\r\n\r\n /** The FAQ INput Config */\r\n @Input() faqConfig: FAQConfig;\r\n\r\n /** The array of all FAQs */\r\n @Input() public allFaqs: Array<FAQ> = [];\r\n\r\n /** The icon color */\r\n public iconColor: string = '';\r\n\r\n /** The constructor */\r\n constructor() { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (this.faqConfig && this.faqConfig.iconHexColor) {\r\n if (this.faqConfig.iconHexColor.indexOf('#') > -1) {\r\n this.iconColor = this.faqConfig.iconHexColor;\r\n }\r\n else {\r\n this.iconColor = `#${this.faqConfig.iconHexColor}`;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"sof-ar-faq-container\">\r\n<div fxLayout=\"column\" class=\"all-faqs\" full-width>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"left\" class=\"faq-container\">\r\n <mat-accordion fxFlex=\"60%\" fxFlex.lt-md=\"100%\">\r\n <div *ngFor=\"let faq of allFaqs; let i = index\">\r\n <mat-expansion-panel hideToggle=\"true\" [id]=\"'exp'+i\" (click)=\"faq.expanded = !faq.expanded\" full-width>\r\n <mat-expansion-panel-header class=\"panel-header\">\r\n <mat-panel-title>\r\n <mat-icon>\r\n <i *ngIf=\"!faq.expanded; else remove\" class=\"{{faqConfig.expandIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.expandIconText}}</i>\r\n <ng-template #remove>\r\n <i class=\"{{faqConfig.minimizeIconClass}}\" [ngStyle]=\"{'color': iconColor}\">{{faqConfig.minimizeIconText}}</i>\r\n </ng-template>\r\n </mat-icon>\r\n <div class=\"question\" [innerHTML]=\"faq.title | translate\"></div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div [innerHTML]=\"faq.description | translate\"></div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-accordion>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FaqComponent } from './components/faq/faq.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The material modules */\r\nconst materialModules = [\r\n MatExpansionModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIconModule,\r\n FlexLayoutModule\r\n];\r\n\r\n/** The FAQ Module */\r\n@NgModule({\r\n declarations: [FaqComponent],\r\n imports: [\r\n CommonModule,\r\n ...materialModules,\r\n TranslateModule\r\n ],\r\n exports: [FaqComponent]\r\n})\r\nexport class FaqModule { }\r\n","/** The FAQ class */\r\nexport class FAQ {\r\n /** The FAQ title */\r\n public title: string;\r\n\r\n /** The FAQ description */\r\n public description: string;\r\n\r\n /** Is the FAQ expanded */\r\n public expanded: boolean = false;\r\n}\r\n","\r\n/** The FAQ Config Class */\r\nexport class FAQConfig {\r\n /** The expand icon class */\r\n public expandIconClass: string;\r\n\r\n /** The minimize icon class */\r\n public minimizeIconClass: string;\r\n\r\n /** The expand icon text */\r\n public expandIconText: string;\r\n\r\n /** The minimize icon text */\r\n public minimizeIconText: string;\r\n\r\n /** The icon hex color */\r\n public iconHexColor: string;\r\n}\r\n","/** Public api for faq */\r\nexport * from './faq.module';\r\n\r\n// models\r\nexport * from './models/faq';\r\nexport * from './models/faq-config';\r\n\r\n// components\r\nexport * from './components/faq/faq.component';\r\n","/**\r\n * Site Map Direction\r\n */\r\nexport enum SiteMapDirection {\r\n /**\r\n * Horizontal\r\n */\r\n Horizontal = 'Horizontal',\r\n\r\n /**\r\n * Vertical\r\n */\r\n Vertical = 'Vertical'\r\n}","/** Public api for the footer module */\r\nexport * from './footer.module';\r\n\r\n// models\r\nexport * from './models/footer-config';\r\nexport * from './models/site-map-models';\r\nexport * from './models/enum/site-map-direction';\r\n\r\n// components\r\nexport * from './components/footer/footer.component';\r\nexport * from './components/site-map/site-map.component';\r\n","/** Public API surface for the forms */\r\nexport * from './forms.module';\r\n\r\n// models\r\nexport * from './models/address';\r\nexport * from './models/county';\r\nexport * from './models/enums/states';\r\nexport * from './models/constants';\r\n\r\n// directives\r\nexport * from './directives/letters-characters/letters-characters.directive';\r\nexport * from './directives/letters-only/letters-only.directive';\r\nexport * from './directives/numbers-only/numbers-only.directive';\r\nexport * from './directives/alphanumeric/alphanumeric.directive';\r\nexport * from './directives/input-trim/input-trim.directive';\r\nexport * from './directives/date-input-filter/date-input-filter.directive';\r\n\r\n// components\r\nexport * from './components/sof-address/sof-address.component';\r\n\r\n// services\r\nexport * from './services/alert.service';\r\n\r\n// pipes\r\nexport * from './pipes/phone-format.pipe';\r\n","import { ChangeDetectionStrategy, Component, Input, signal, WritableSignal } from '@angular/core';\r\nimport { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';\r\nimport { filter, distinctUntilChanged, tap } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Breadcrumb } from '../../../models/breadcrumb';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The breadcrumbs hierarchy component */\r\n@Component({\r\n selector: 'sof-breadcrumbs-hierarchy',\r\n templateUrl: './sof-breadcrumbs-hierarchy.component.html',\r\n styleUrl: './sof-breadcrumbs-hierarchy.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBreadcrumbsHierarchyComponent {\r\n /** The navigation element aria label */\r\n @Input() public navAriaLabel: string = \"'breadcrumbs'\";\r\n /** The breadcrumbs array signal */\r\n public breadcrumbs: WritableSignal<Array<Breadcrumb>> = signal([]);\r\n /**\r\n * The component constructor \r\n * @param router A service that provides navigation among views and URL manipulation capabilities.\r\n * @param activatedRoute Provides access to information about a route associated with a component that is loaded in an outlet.\r\n * @event Subscribes to the router events to build further breadcrumbs on navigation end.\r\n */\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n ) {\r\n this.router.events.pipe(\r\n takeUntilDestroyed(),\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n tap((_) => {\r\n this.buildBreadCrumbs(this.activatedRoute.root);\r\n })\r\n ).subscribe();\r\n }\r\n /**\r\n * Recursively build breadcrumbs according to activated route.\r\n * @param route the activated route \r\n * @param url the url \r\n * @param breadcrumbs the breadcrumbs \r\n */\r\n private buildBreadCrumbs(\r\n route: ActivatedRoute, \r\n url: string = '', \r\n breadcrumbs: Array<Breadcrumb> = [] \r\n ): void {\r\n const label: string = route.routeConfig && route.routeConfig.data ? route.routeConfig.data.breadcrumb : '';\r\n const path: string = route.routeConfig && route.routeConfig.data ? route.routeConfig.path : '';\r\n const nextUrl: string = path ? `${url}/${path}` : url;\r\n const breadcrumb: Breadcrumb = {\r\n label: label,\r\n url: nextUrl,\r\n };\r\n const newBreadcrumbs: Array<Breadcrumb> = breadcrumb.label ? [ ...breadcrumbs, breadcrumb ] : [ ...breadcrumbs];\r\n if (route.firstChild) {\r\n return this.buildBreadCrumbs(route.firstChild, nextUrl, newBreadcrumbs);\r\n }\r\n this.breadcrumbs.set(newBreadcrumbs);\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"navAriaLabel | translate\">\r\n <ol class=\"breadcrumbs-list m-a-0 p-a-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); \r\n track $index; \r\n let last = $last; \r\n let first = $first; \r\n ) {\r\n <li>\r\n <a \r\n [routerLink]=\"!last && !first ? breadcrumb.url : null\" \r\n [class.crumb-disabled]=\"last || first\">\r\n {{ breadcrumb.label | translate }}\r\n </a>\r\n </li>\r\n @if (!last) {\r\n <span m-h-5>/</span>\r\n }\r\n }\r\n </ol>\r\n</nav>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Takes first & last name, returns the capitalized users initials\r\n */\r\n@Pipe({\r\n name: 'userInitials',\r\n standalone: true\r\n})\r\nexport class userInitialsPipe implements PipeTransform {\r\n transform(firstName: string, lastName: string): string {\r\n const firstInitial = firstName ? firstName.trim()[0].toUpperCase() : '';\r\n const lastInitial = lastName ? lastName.trim()[0].toUpperCase() : '';\r\n return `${firstInitial}${lastInitial}`;\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\n\r\n/** Directive to prevent mat-menu from closing on click */\r\n@Directive({\r\n selector: \"[menu-prevent-close]\",\r\n standalone: true\r\n})\r\nexport class MenuPreventCloseDirective {\r\n @HostListener(\"click\", [\"$event\"])\r\n onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n Signal\r\n} from '@angular/core';\r\n\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { SofBreadcrumbsHierarchyComponent } from '../../../navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component';\r\nimport { userInitialsPipe } from './user-initials-pipe/user-initials.pipe';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MenuPreventCloseDirective } from './menu-prevent-close-directive/menu-prevent-close.directive';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\n\r\n/**\r\n * The Header Component\r\n * @description Main header\r\n * @see [Figma/portal-ui-shell]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118395&t=G5IKDvYHpwU0vOFq-0})\r\n *\r\n * @todo `mobile styling` - awaiting design\r\n *\r\n * @todo update to be used with applications without a side navigation panel (shopping apps, ect.)\r\n *\r\n * @todo `language settings` - awaiting design ( its own component, modal )\r\n * @see [Figma/language-switcher]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118249&t=qMyPFk9iMfbU6iRS-0})\r\n *\r\n * @note * THERE ARE NO CONFIGS! for this component, `please remove any header based configs from appsettings when using this component.`\r\n*/\r\n@Component({\r\n selector: 'sof-header',\r\n templateUrl: './sof-header.component.html',\r\n styleUrls: ['./sof-header.component.scss'],\r\n imports: [\r\n SofBreadcrumbsHierarchyComponent,\r\n userInitialsPipe,\r\n MatMenuModule,\r\n MatDividerModule,\r\n TranslateModule,\r\n MenuPreventCloseDirective\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SofHeaderComponent implements OnInit {\r\n /**\r\n * To show the breadcrumbs hierarchy component\r\n * @default false\r\n */\r\n @Input() showBreadcrumbsHierarchy: boolean = false;\r\n\r\n /**\r\n * Is the nav panel opened\r\n * @default true\r\n */\r\n @Input() isNavPanelOpened: boolean = true;\r\n\r\n /**\r\n * The user data for header dropdown\r\n */\r\n @Input() userMenuData?: HeaderUserMenuData;\r\n\r\n /**\r\n * logout button text\r\n * @note can be translation key\r\n */\r\n @Input() public logoutText: string = 'armature.header.user-menu.log-out';\r\n\r\n /** Logout event, the application consuming this component is responsible for the actual logout */\r\n @Output() logoutEvent: EventEmitter<void> = new EventEmitter();\r\n\r\n /** Inject angular's document reference */\r\n private document: Document = inject(DOCUMENT);\r\n\r\n /** Inject the translate service */\r\n private translateService: TranslateService = inject(TranslateService);\r\n\r\n /** Current language to display */\r\n public currentLangLabel: string;\r\n\r\n /** Copy button data */\r\n public copyButton: CopyButton = {\r\n text: 'armature.header.user-menu.copy', \r\n icon: 'copy',\r\n class: 'copy'\r\n };\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** Inject manual change detection */\r\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** Initialize component & set lang from local store */\r\n public ngOnInit(): void {\r\n const currentLang = localStorage.getItem('language') || this.translateService.currentLang;\r\n this.currentLangLabel = currentLang === 'en' ? 'English' : 'Español';\r\n setTimeout(() => {\r\n this.translateService.use(currentLang);\r\n });\r\n }\r\n\r\n /** Prevent menu from closing on click */\r\n public preventCloseOnClick(e: Event): void {\r\n if (e) e.stopPropagation();\r\n }\r\n\r\n /** Copies npn number to clipboard */\r\n public copyNpnNumber(): void {\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(this.userMenuData.npn);\r\n } else {\r\n const textarea = this.document.createElement('textarea');\r\n textarea.value = this.userMenuData.npn;\r\n this.document.body.appendChild(textarea);\r\n textarea.select();\r\n this.document.execCommand('copy');\r\n this.document.body.removeChild(textarea);\r\n }\r\n this.copyButton = {\r\n text: 'armature.header.user-menu.copied',\r\n icon: 'check-circle',\r\n class: 'copied'\r\n };\r\n setTimeout(() => {\r\n this.copyButton = {\r\n text: 'armature.header.user-menu.copy',\r\n icon: 'copy',\r\n class: 'copy'\r\n };\r\n this.cdr.detectChanges();\r\n }, 800);\r\n }\r\n\r\n /**\r\n * Applies the language to the translate service\r\n * Sets local storage for preferred language\r\n * @todo right now are only using 'en' & 'es', will need to update if more langs are added.\r\n * @see [Figma/language-switcher]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118249&t=qMyPFk9iMfbU6iRS-0})\r\n */\r\n public toggleLanguage(): void {\r\n const currentLang: string = this.translateService.currentLang;\r\n switch (currentLang) {\r\n case 'en': {\r\n this.translateService.use('es');\r\n this.currentLangLabel = 'Español';\r\n localStorage.setItem(\"language\", 'es');\r\n break;\r\n }\r\n case 'es': {\r\n this.translateService.use('en');\r\n this.currentLangLabel = 'English';\r\n localStorage.setItem(\"language\", 'en');\r\n break;\r\n }\r\n default: {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /** Emits the logout event */\r\n public logout(): void {\r\n this.logoutEvent.emit();\r\n }\r\n}\r\n\r\n/** The user data for header dropdown interface */\r\nexport interface HeaderUserMenuData {\r\n firstName: string;\r\n lastName: string;\r\n email?: string;\r\n /** Only for Broker portal */\r\n npn?: string;\r\n}\r\n\r\n/** Copy button data interface */\r\ninterface CopyButton {\r\n text: string;\r\n icon: string;\r\n class: string;\r\n}\r\n","<header\r\n [class.nav-panel-closed]=\"(isNavPanelOpened != null && !isNavPanelOpened) || isSmallScreen().matches\">\r\n @if (showBreadcrumbsHierarchy) {\r\n <sof-breadcrumbs-hierarchy/>\r\n }\r\n <div class=\"header-right-section\">\r\n <!-- @note: can inject buttons only, spacing is controlled by this component -->\r\n <ng-content select=\"[header-right-section-buttons]\"></ng-content>\r\n @if (userMenuData) {\r\n <button [matMenuTriggerFor]=\"userMenu\" class=\"user-menu-trigger\" id=\"user-menu-trigger\" aria-label=\"open user menu\">\r\n <p>{{userMenuData.firstName | userInitials: userMenuData.lastName}}</p>\r\n </button>\r\n }\r\n </div>\r\n</header>\r\n\r\n<mat-menu\r\n #userMenu=\"matMenu\"\r\n class=\"user-menu\"\r\n aria-label=\"user menu\">\r\n @if (userMenuData) {\r\n <div menu-prevent-close class=\"user-menu-prevent-close\">\r\n <div class=\"user-menu-item border-bottom name-email\">\r\n <p class=\"name\">{{userMenuData.firstName + ' ' + userMenuData.lastName}}</p>\r\n @if (userMenuData.email) {\r\n <p class=\"email\">{{userMenuData.email}}</p>\r\n }\r\n </div>\r\n @if (userMenuData.npn) {\r\n <div class=\"user-menu-item border-bottom npn-number\">\r\n <p>NPN</p>\r\n <p class=\"number\">{{userMenuData.npn}}</p>\r\n <button\r\n (click)=\"copyNpnNumber()\"\r\n [class]=\"copyButton.class\"\r\n id=\"user-menu-copy-npn\"\r\n aria-label=\"copy npn number\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-{{copyButton.icon}}\" aria-hidden=\"true\"></i>\r\n {{copyButton.text | translate}}\r\n </button>\r\n </div>\r\n }\r\n <div class=\"user-menu-item-full-button\">\r\n <button\r\n (click)=\"toggleLanguage()\"\r\n id=\"user-menu-toggle-lang\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-globe\" aria-hidden=\"true\"></i>\r\n <span>{{'armature.header.user-menu.language' | translate}}</span>\r\n <span text-medium-emphasis>{{currentLangLabel}}</span>\r\n </button>\r\n </div>\r\n <div class=\"user-menu-item-full-button\">\r\n <button\r\n (click)=\"logout()\"\r\n class=\"log-out\" id=\"user-menu-logout\"\r\n mat-menu-item>\r\n <i class=\"ph-bold ph-sign-out\" aria-hidden=\"true\"></i>\r\n <span>{{logoutText | translate}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n</mat-menu>\r\n","/**\r\n * Header authorization settings.\r\n */\r\nexport class HeaderAuthSettings {\r\n public myAccountText?: string = 'My Account';\r\n public responseType?: string = 'code';\r\n /**\r\n * Constructor.\r\n * @param clientId Client ID. \r\n * @param redirectUri Redirect URI.\r\n * @param issuer Issuer.\r\n * @param scope Scope.\r\n * @param skipIssuerCheck Skip issuer check flag.\r\n * @param logInText Log In Text.\r\n * @param logOutText Log Out Text.\r\n */\r\n constructor(\r\n public clientId: string = '',\r\n public redirectUri: string = '',\r\n public issuer: string = '',\r\n public scope: string = '',\r\n public skipIssuerCheck: boolean = true,\r\n public logInText: string = 'SIGN IN',\r\n public logOutText: string = 'SIGN OUT',\r\n public timeoutFactor: number = 9,\r\n public returnRoute: string = '',\r\n public postLogOutUrl: string = '',\r\n public loginUrl: string = '',\r\n public authSetOnStartup: boolean = false\r\n ) { }\r\n}\r\n","/** Public API surface for components */\r\nexport * from './header.module';\r\n\r\n// components\r\nexport * from './components/header/header.component';\r\nexport * from './components/mobile-header-menu/mobile-header-menu.component';\r\nexport * from './components/sof-header/sof-header.component';\r\nexport * from './components/sof-header/user-initials-pipe/user-initials.pipe';\r\n\r\n// models\r\nexport * from './models/header.settings';\r\nexport * from './models/header-theme.settings';\r\nexport * from './models/header-auth.settings';\r\nexport * from './models/mobile-header-nav.settings';\r\nexport * from './models/header-language.settings';\r\nexport * from './models/header-external-links';\r\n","/** \r\n * The navigation links for tabs interface \r\n * @property url: string, The URL to navigate to \r\n * @property label: string, The text to display \r\n * */\r\nexport interface Breadcrumb {\r\n url: string;\r\n label: string;\r\n};\r\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, signal, WritableSignal } from '@angular/core';\r\nimport { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';\r\nimport { filter, distinctUntilChanged, tap } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Breadcrumb } from '../../../models/breadcrumb';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** The breadcrumbs history component */\r\n@Component({\r\n selector: 'sof-breadcrumbs-history',\r\n templateUrl: './sof-breadcrumbs-history.component.html',\r\n styleUrl: './sof-breadcrumbs-history.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBreadcrumbsHistoryComponent implements OnDestroy {\r\n /** Key to access the breadcrumbs session storage object */\r\n private readonly sessionKey: string = \"breadcrumbs\";\r\n /** The navigation element aria label */\r\n @Input() public navAriaLabel: string = \"'breadcrumbs'\";\r\n /** The breadcrumbs array signal */\r\n public breadcrumbs: WritableSignal<Array<Breadcrumb>> = signal(JSON.parse(sessionStorage.getItem(this.sessionKey)) ?? []);\r\n /**\r\n * The component constructor \r\n * @param router A service that provides navigation among views and URL manipulation capabilities.\r\n * @param activatedRoute Provides access to information about a route associated with a component that is loaded in an outlet.\r\n * @event Subscribes to the router events to build further breadcrumbs on navigation end.\r\n */\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n ) {\r\n if (!this.breadcrumbs().length && !!this.activatedRoute.root.firstChild) {\r\n this.buildBreadCrumbs(this.activatedRoute.root.firstChild);\r\n }\r\n this.router.events.pipe(\r\n takeUntilDestroyed(),\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n tap((_) => {\r\n this.buildBreadCrumbs(this.activatedRoute.firstChild);\r\n })\r\n ).subscribe();\r\n }\r\n /**\r\n * @description Build breadcrumbs according to activated route. \r\n * Saves to session storage to persist when browser is refreshed.\r\n * @param route The activated route \r\n */\r\n private buildBreadCrumbs(route: ActivatedRoute): void {\r\n if (route.routeConfig && route.routeConfig.data && route.routeConfig.data.breadcrumb) {\r\n const newBreadcrumb: Breadcrumb = {\r\n label: route.routeConfig.data.breadcrumb,\r\n url: `/${route.routeConfig.path}`\r\n };\r\n const tempBreadcrumbs: Array<Breadcrumb> = [...this.breadcrumbs(), newBreadcrumb];\r\n const length: number = tempBreadcrumbs.length;\r\n const existingIndex: number = tempBreadcrumbs.findIndex((crumb) => crumb.url === newBreadcrumb.url);\r\n if (length > 1 && existingIndex + 1 < length) {\r\n this.breadcrumbs.update((breadcrumbs) => breadcrumbs.slice(0, existingIndex + 1));\r\n } else {\r\n this.breadcrumbs.set(tempBreadcrumbs);\r\n }\r\n sessionStorage.setItem(this.sessionKey, JSON.stringify(this.breadcrumbs()));\r\n }\r\n }\r\n\r\n /** \r\n * A callback method that performs custom clean-up, \r\n * invoked immediately before a directive, pipe, or service instance is destroyed. \r\n * Will not be triggered on browser refresh.\r\n */\r\n ngOnDestroy(): void {\r\n sessionStorage.removeItem(this.sessionKey);\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"navAriaLabel | translate\">\r\n <ol class=\"breadcrumbs-list m-a-0 p-a-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); \r\n track $index; \r\n let last = $last; \r\n let first = $first; \r\n let length = $count; \r\n ) {\r\n @if (length > 1) {\r\n <li>\r\n @if (first) {\r\n <a [routerLink]=\"breadcrumb.url\">\r\n <i class=\"fa-solid fa-arrow-left p-r-5 crumb-icon\"></i>\r\n </a>\r\n }\r\n <a \r\n [routerLink]=\"!last ? breadcrumb.url : null\" \r\n [class.disabled-crumb]=\"last\" \r\n [class.first-crumb]=\"first\">\r\n {{ first ? \r\n ('Back to ' + (breadcrumb.label | translate)) : \r\n (breadcrumb.label | translate) \r\n }}\r\n </a>\r\n @if (!last) {\r\n <span m-h-5>/</span>\r\n }\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n Signal,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\n\r\nimport { filter } from 'rxjs';\r\n\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { BreakpointObserver, BreakpointState, LayoutModule } from '@angular/cdk/layout';\r\nimport { MatSidenavContent, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { NavPanelNode } from './models/nav-panel-nodes';\r\nimport { NavPanelSettings } from './models/nav-panel-settings';\r\nimport { NavPanelLogo } from './models/nav-panel-logo';\r\n\r\n/**\r\n * The Navigation Panel Component\r\n * @description Main navigation panel for Portals, part of the new Portal UI-shell.\r\n * @note Designed to be used with the 'SofHeaderPortalComponent' component as its child.\r\n * @see [Figma/portal-ui-shell]({@link https://www.figma.com/design/W5HVNCcN9HafDRvc5N7Z28/%5BWIP%5D-Softheon-Unified-Design-System-v1.0?node-id=14089-118395&t=G5IKDvYHpwU0vOFq-0})\r\n * \r\n * @todo `mobile styling` - awaiting design, minor adjustments have been made - 1/2/25 ... \r\n*/\r\n@Component({\r\n selector: 'sof-nav-panel',\r\n templateUrl: './sof-nav-panel.component.html',\r\n styleUrl: './sof-nav-panel.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n providers: [\r\n LayoutModule\r\n ]\r\n})\r\nexport class SofNavPanelComponent implements OnInit {\r\n\r\n /** \r\n * Component Input (required) - Navigation node data \r\n * @see {@link NavPanelNode}\r\n */\r\n @Input({required:true}) public nodes!: Array<NavPanelNode>;\r\n\r\n /** \r\n * Component Input - Basic navigation settings \r\n * @see {@link NavPanelSettings}\r\n * @note If any or all settings are not passed, defaults will be set.\r\n * @see {@link initSettings()}\r\n */\r\n @Input() public settings?: NavPanelSettings;\r\n\r\n /** \r\n * Should scroll to top on `NavigationEnd` event?\r\n * @default true\r\n */\r\n @Input() private scrollToTopOnNavigationEndEvent: boolean = true;\r\n\r\n /** The brand logo config */\r\n @Input() public brandLogo?: NavPanelLogo;\r\n\r\n /** \r\n * Is the nav panel open \r\n * @note this is needed to pass panel opened state to the SofHeaderPortalComponent\r\n */\r\n @Output() isNavPanelOpenedEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n /** \r\n * Main content for scroll position \r\n * @note this is the element which has the apps 'main' scrollbar.\r\n */\r\n @ViewChild(MatSidenavContent) sidenavContent!: MatSidenavContent;\r\n\r\n /** Utility for checking the matching state of media queries.*/\r\n private breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\r\n\r\n /** Has the small screen breakpoint been hit */\r\n public isSmallScreen: Signal<BreakpointState> = toSignal(this.breakpointObserver.observe('(max-width: 959px)'));\r\n\r\n /** Angular's router */\r\n private router: Router = inject(Router);\r\n\r\n /** On Init - Initialize the settings */\r\n public ngOnInit(): void {\r\n this.initSettings();\r\n if (this.scrollToTopOnNavigationEndEvent) {\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd)\r\n ).subscribe((_) => {\r\n this.scrollToTop();\r\n });\r\n }\r\n }\r\n\r\n /** \r\n * Initializes the nav panel settings, defaults will be set if `null` or `undefined` \r\n * @note The 'nullish coalescing assignment operator' `??=` assigns defaults for `boolean` and `number` types,\r\n * for `number` types this will allow for `0` to be accepted. For a `string`, use 'logical OR assignment' `||=` operator, \r\n * as this will also prevent empty strings `\" \"`.\r\n * @see `??=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment#using_nullish_coalescing_assignment)}\r\n * @see `||=` {@link [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment#try_it)}\r\n */\r\n private initSettings(): void {\r\n this.settings ??= {};\r\n this.settings.allowNavToggle ??= true;\r\n }\r\n\r\n /** \r\n * Scrolls to the top of page \r\n * @note using `window.scrollTo` will not work if using this component as the main scrollbar does not live on the window level.\r\n * Configuring `scrollPositionRestoration` in the router module will not work either.\r\n */\r\n scrollToTop(): void {\r\n if (this.sidenavContent) {\r\n this.sidenavContent.scrollTo({top: 0});\r\n }\r\n }\r\n}\r\n","<div \r\n class=\"sof-nav-panel-container\">\r\n @if (isSmallScreen().matches || settings.allowNavToggle) {\r\n <button \r\n (click)=\"navPanel.toggle(); isSmallScreen().matches ? null : isNavPanelOpenedEvent.emit(navPanel.opened)\" \r\n mat-flat-button theme=\"neutral\" emphasis=\"secondary\"\r\n id=\"sof-nav-panel-toggle\" class=\"sof-button-icon-v2 sof-nav-panel-toggle\"\r\n [class.opened]=\"navPanel.opened\"\r\n [class.mobile]=\"isSmallScreen().matches && navPanel.opened\"\r\n [matTooltip]=\"\r\n 'armature.navigation-panel.toggle-button-tooltip-' + \r\n (navPanel.opened ? 'close':'open') | translate\"\r\n [attr.aria-label]=\"navPanel.opened ? 'close sidebar' : 'open sidebar'\">\r\n <i class=\"ph-bold ph-sidebar-simple\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n <mat-sidenav-container>\r\n <mat-sidenav \r\n #navPanel class=\"sof-nav-panel\" [opened]=\"true\"\r\n [mode]=\"isSmallScreen().matches ? 'over' : 'side'\">\r\n <nav \r\n [attr.aria-label]=\"'main'\"\r\n [style.paddingBottom.px]=\"!!brandLogo ? 0 : 40\"\r\n [style.height]=\"!!brandLogo ? '100%' : 'auto'\">\r\n <ul \r\n class=\"sof-nav-panel-list\"\r\n [class.mobile]=\"isSmallScreen().matches\">\r\n @for (node of nodes; track $index) {\r\n <li \r\n class=\"sof-nav-panel-list-item\"\r\n [class.has-subnodes]=\"node.subnodes?.length\">\r\n @if (node.subnodes?.length) {\r\n <div class=\"sof-nav-panel-subnode-heading\">\r\n {{node.label | translate}}\r\n </div>\r\n <ul class=\"sof-nav-panel-list sub-list\">\r\n @for (subNode of node.subnodes; track $index) {\r\n <li>\r\n <a \r\n (click)=\"isSmallScreen().matches ? navPanel.close() : null\" \r\n class=\"sof-nav-panel-link\" [routerLink]=\"subNode.route\" \r\n routerLinkActive=\"sof-nav-panel-link-active\">\r\n <i class=\"{{subNode.iconClass}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span class=\"sof-nav-panel-link-label\">{{subNode.label | translate}} </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n } @else {\r\n <a \r\n (click)=\"isSmallScreen().matches ? navPanel.close() : null\" \r\n class=\"sof-nav-panel-link\" [routerLink]=\"node.route\"\r\n routerLinkActive=\"sof-nav-panel-link-active\">\r\n <i class=\"{{node.iconClass}} sof-nav-panel-link-icon\" aria-hidden=\"true\"></i>\r\n <span class=\"sof-nav-panel-link-label\">{{node.label | translate}}</span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n @if (brandLogo) {\r\n <div class=\"logo\" m-t-auto>\r\n <img [src]=\"brandLogo.url\" [alt]=\"brandLogo.altText\">\r\n </div>\r\n }\r\n </ul>\r\n </nav>\r\n </mat-sidenav>\r\n <!-- Use 'sof-nav-panel-main-content' to inject main content, usually header, main router-outlet & footer -->\r\n <mat-sidenav-content>\r\n <ng-content select=\"[sof-nav-panel-main-content]\"></ng-content>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n","/** Public API surface for components */\r\nexport * from './navigation.module';\r\n\r\n// models\r\nexport * from './models/navigation';\r\nexport * from './models/nav.settings';\r\nexport * from './models/nav-theme.settings';\r\nexport * from './models/breadcrumb';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-nodes';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-settings';\r\nexport * from './components/sof-navigation-panel/models/nav-panel-logo';\r\n\r\n\r\n// components\r\nexport * from './components/navigation/navigation.component';\r\nexport * from './components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component';\r\nexport * from './components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component';\r\nexport * from './components/sof-tabs-navigation/sof-tabs.component';\r\nexport * from './components/sof-sub-navigation/sof-sub-navigation.component';\r\nexport * from './components/sof-navigation-panel/sof-nav-panel.component';","import { RoleAccess } from './role-access';\r\nimport { Observable } from 'rxjs';\r\n\r\n/** The Role Based Access Control (RBAC) configuration */\r\nexport class RbacConfig {\r\n /** The role configuration */\r\n public roleConfig: { [key: string]: RoleAccess };\r\n\r\n /** Disables the role actions in the directive */\r\n public disableRoleActions: boolean;\r\n\r\n /** The access token observable */\r\n public accessToken$: Observable<string>;\r\n\r\n /** The user info endpoint */\r\n public userInfoEndpoint: string;\r\n}\r\n","import { NavNode } from '../../navigation/models/navigation';\r\nimport { RbacConfig } from '../models/rbac-config';\r\n\r\n/** The role navigation service interface */\r\nexport abstract class RoleNavService {\r\n /**\r\n * Creates a new navigation config using the provided default navigation config and the RABC configuration\r\n * @param defaultNav The default navigation config\r\n * @param rbacConfig The rbac config used for limiting the navigation\r\n * @param roles the array of roles\r\n */\r\n public abstract createRoleControlledNavigation(defaultNav: Array<NavNode>, rbacConfig: RbacConfig, roles: Array<string>): Array<NavNode>;\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { NavNode } from '../../navigation/navigation-api';\r\nimport { AccessTokenClaims } from '../models/access-token-claims';\r\nimport { RBAC_CONFIG } from '../models/constants';\r\nimport { DecodedAccessToken } from '../models/decoded-access-token';\r\nimport { RbacConfig } from '../models/rbac-config';\r\nimport { RoleNavService } from './role-nav.service';\r\n\r\n/**\r\n * The oauth 2 role service\r\n * Supplies the role using an OAuth 2.0 access token\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Oauth2RoleService {\r\n\r\n /** True if configs were provided at construction */\r\n private configsProvidedAtConstruction: boolean = false;\r\n\r\n /** The decoded access token behavior subject */\r\n private readonly decodeToken: ReplaySubject<DecodedAccessToken> = new ReplaySubject(undefined);\r\n\r\n /** The current access token */\r\n public token: string;\r\n\r\n /** The decoded access token */\r\n public decodedToken$: Observable<DecodedAccessToken>;\r\n\r\n /**\r\n * Constructs the service\r\n * @param rbacConfig The rbac configurations\r\n * @param httpClient The http client\r\n * @param roleNavService The role nav service\r\n */\r\n constructor(\r\n @Optional() private rbacConfig: RbacConfig,\r\n private readonly httpClient: HttpClient,\r\n private readonly roleNavService: RoleNavService\r\n ) {\r\n // get the token initially then update it based on injected refresh time\r\n this.decodedToken$ = this.decodeToken.asObservable();\r\n if (this.rbacConfig) {\r\n this.configsProvidedAtConstruction = true;\r\n this.init();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the role controlled navigation configuration\r\n * @param defaultNav The default navigation\r\n * @param roles The roles of the user\r\n */\r\n public getControlledNavObject(defaultNav: Array<NavNode>, roles: Array<string>): Array<NavNode> {\r\n return this.roleNavService.createRoleControlledNavigation(defaultNav, this.rbacConfig, roles);\r\n }\r\n\r\n /**\r\n * Configures the service\r\n * @param rbacConfig The rbac config\r\n */\r\n public configure(rbacConfig: RbacConfig): void {\r\n this.rbacConfig = rbacConfig;\r\n this.init();\r\n }\r\n\r\n /**\r\n * Determines if the current token has access to the action\r\n * @param action The action to check access for\r\n */\r\n public hasActionAccess(action: string): Observable<boolean> {\r\n if (this.rbacConfig.disableRoleActions) {\r\n return of(true);\r\n }\r\n\r\n return this.decodedToken$.pipe(map(token => {\r\n const roles = token.claims.getRole;\r\n // if no roles, no action access\r\n if (!roles || roles.length === 0) {\r\n return false;\r\n }\r\n // flatten role config into one set of actions for all the actions for the user\r\n const flattenedActions: Set<string> = new Set<string>();\r\n roles.forEach(role => {\r\n const roleConfig = this.rbacConfig.roleConfig[role];\r\n if (!roleConfig || !roleConfig.actions || !roleConfig.actions.length) {\r\n return false;\r\n }\r\n roleConfig.actions.forEach(a => flattenedActions.add(a.toLowerCase()));\r\n });\r\n\r\n return flattenedActions.has(action.toLowerCase());\r\n }));\r\n }\r\n\r\n /** Initializer logic for the service */\r\n private async init(): Promise<any> {\r\n this.rbacConfig.accessToken$.subscribe(token => {\r\n this.token = token;\r\n if (!this.token) {\r\n return;\r\n }\r\n const decoded = new DecodedAccessToken(this.token);\r\n\r\n // create the headers for the user info call with the existing access token\r\n const headers = new HttpHeaders({ Authorization: `Bearer ${this.token}`, 'Access-Control-Allow-Origin': '*' });\r\n this.httpClient.get<AccessTokenClaims>(this.rbacConfig.userInfoEndpoint, { headers })\r\n .pipe(\r\n // map the results to the props\r\n map(res => {\r\n decoded.claims = res;\r\n this.decodeToken.next(decoded);\r\n }),\r\n // continue on error and log to console\r\n catchError(error => {\r\n console.error(`Unable to retrieve user info for: ${this.token}`, error);\r\n\r\n return of(error);\r\n }))\r\n .subscribe();\r\n });\r\n }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/** Choose to disable access to all pages for roles with no pages */\r\nexport const DISABLE_ACCESS_FOR_NO_PAGES_ROLE: InjectionToken<boolean> = new InjectionToken<boolean>('disable-access-for-no-pages');","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { NavNode } from '../../navigation/models/navigation';\r\nimport { RbacConfig } from '../models/rbac-config';\r\nimport { RoleNavService } from './role-nav.service';\r\nimport { DISABLE_ACCESS_FOR_NO_PAGES_ROLE } from './tokens';\r\n\r\n/** The armature role navigation service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArRoleNavService implements RoleNavService {\r\n\r\n /** Constructs the service */\r\n constructor(\r\n @Optional() @Inject(DISABLE_ACCESS_FOR_NO_PAGES_ROLE) private disableAccessForNoPagesRole : boolean ) \r\n { }\r\n\r\n /**\r\n * Creates a new navigation configuration using the provided RBAC configuration\r\n * @param defaultNav The default navigation configuration\r\n * @param rbacConfig The rbac configuration\r\n * @param roles The roles\r\n */\r\n public createRoleControlledNavigation(defaultNav: Array<NavNode>, rbacConfig: RbacConfig, roles: Array<string>): Array<NavNode> {\r\n const controlledNav: Array<NavNode> = [];\r\n // flatten role config into one set of pages for all the roles for the user\r\n const flattenedPages: Set<string> = new Set<string>();\r\n let roleFound = false;\r\n roles.forEach(role => {\r\n const roleConfig = rbacConfig.roleConfig[role];\r\n if (roleConfig) {\r\n roleFound = true;\r\n // if they have at least one role where they have access to everything give access to everything\r\n if (!roleConfig.pages || roleConfig.pages.length === 0) {\r\n flattenedPages.clear();\r\n\r\n return;\r\n }\r\n roleConfig.pages.forEach(page => {\r\n flattenedPages.add(page);\r\n });\r\n }\r\n });\r\n if (flattenedPages.size === 0 && !roleFound) {\r\n console.warn(`no role matching: ${roles.join(', ')} found, no access is provided`);\r\n\r\n return controlledNav;\r\n }\r\n\r\n // if the role has no pages assigned for access and the token was passed, deny access to everything\r\n if (flattenedPages.size === 0 && this.disableAccessForNoPagesRole) {\r\n console.warn(`The role: ${roles.join(', ')} has no page access defined`);\r\n\r\n return [];\r\n }\r\n \r\n // if the user has no pages, give them access to all of the stuff\r\n if (flattenedPages.size === 0 && roleFound) {\r\n return defaultNav;\r\n }\r\n\r\n // loop over each level 1 node\r\n const deepCopyDefaultNav: Array<NavNode> = JSON.parse(JSON.stringify(defaultNav));\r\n deepCopyDefaultNav.forEach(n1 => {\r\n // first check which n2 are listed\r\n const foundSubNodes = [];\r\n n1.subNodes.forEach(sn => {\r\n if (this.isRouteMatch(Array.from(flattenedPages.values()), sn.route)) {\r\n foundSubNodes.push(sn);\r\n }\r\n });\r\n\r\n n1.subNodes = foundSubNodes;\r\n // if level 2 nodes found or level 1 is a route match, add the level 1 node\r\n if (foundSubNodes.length > 0 || (n1.route && this.isRouteMatch(Array.from(flattenedPages.values()), n1.route))) {\r\n controlledNav.push(n1);\r\n }\r\n });\r\n\r\n return controlledNav;\r\n }\r\n\r\n /**\r\n * Determines if the route is found in the pages array\r\n * @param pages The pages\r\n * @param route The route\r\n */\r\n private isRouteMatch(pages: Array<string>, route: string): boolean {\r\n // check wild card\r\n return pages.some(p => {\r\n if (p.indexOf('**') > -1) {\r\n const baseRoute = p.replace('/**/', '')\r\n .replace('**/', '')\r\n .replace('/**', '')\r\n .replace('**', '')\r\n .toLowerCase();\r\n\r\n if (route.toLowerCase()\r\n .indexOf(baseRoute) > -1) {\r\n return true;\r\n }\r\n }\r\n else if (route.toLowerCase() === p.toLowerCase()) {\r\n return true;\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, TemplateRef, ViewContainerRef, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { Oauth2RoleService } from '../services/oauth2-role.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[sofArRbacAction]',\r\n standalone: false\r\n})\r\nexport class RbacActionDirective implements OnInit, OnDestroy {\r\n\r\n /** The action of the directive */\r\n @Input() public sofArRbacAction: string;\r\n\r\n /** The directive subscription */\r\n private readonly directiveSub: Subscription = new Subscription();\r\n\r\n /** True if content is rendered */\r\n private isContentRendered: boolean;\r\n\r\n /**\r\n * Constructs the component\r\n * @param templateRef The template reference\r\n * @param viewContainer The view container reference\r\n * @param oAuth2RoleService The oauth 2 role service\r\n */\r\n constructor(\r\n private readonly templateRef: TemplateRef<any>,\r\n private readonly viewContainer: ViewContainerRef,\r\n private readonly oAuth2RoleService: Oauth2RoleService\r\n ) { }\r\n\r\n /** Life cycle hook for directive initialization */\r\n public ngOnInit(): void {\r\n this.directiveSub.add(this.oAuth2RoleService.hasActionAccess(this.sofArRbacAction)\r\n .subscribe(hasAccess => {\r\n if (hasAccess) {\r\n if (!this.isContentRendered) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n this.isContentRendered = true;\r\n }\r\n else {\r\n this.viewContainer.clear();\r\n this.isContentRendered = false;\r\n }\r\n }));\r\n }\r\n\r\n /** Life cycle hook for directive destruction */\r\n public ngOnDestroy(): void {\r\n this.directiveSub.unsubscribe();\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders, Provider } from '@angular/core';\r\n\r\nimport { Oauth2RoleService } from './services/oauth2-role.service';\r\nimport { ArRoleNavService } from './services/ar-role-nav.service';\r\nimport { RoleNavService } from './services/role-nav.service';\r\nimport { RbacActionDirective } from './directives/rbac-action.directive';\r\nimport { RbacConfig } from './models/rbac-config';\r\nimport { RBAC_CONFIG } from './models/constants';\r\n\r\n/** The role based access control module */\r\n@NgModule({\r\n declarations: [\r\n RbacActionDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n Oauth2RoleService,\r\n { provide: RoleNavService, useClass: ArRoleNavService }\r\n ],\r\n exports: [\r\n RbacActionDirective\r\n ]\r\n})\r\nexport class RbacModule {\r\n /**\r\n * True if role actions should be disabled\r\n * @param options the options for the module\r\n */\r\n public static forRoot(options: {config?: RbacConfig, rbacConfigProvider?: Provider}): ModuleWithProviders<RbacModule> {\r\n const provider: Provider = options.config ? { provide: RbacConfig, useValue: options.config } : options.rbacConfigProvider;\r\n return {\r\n ngModule: RbacModule,\r\n providers: [\r\n provider,\r\n Oauth2RoleService,\r\n { provide: RoleNavService, useClass: ArRoleNavService }\r\n ]\r\n };\r\n }\r\n }\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RbacConfig } from './rbac-config';\r\n\r\n/** The rbac config injection token */\r\nexport const RBAC_CONFIG: InjectionToken<RbacConfig> = new InjectionToken<RbacConfig>('RbacConfig');\r\n","/** The role access class */\r\nexport class RoleAccess {\r\n /** The pages the role has access to */\r\n public pages?: Array<string> = [];\r\n\r\n /** The actions the role has access to */\r\n public actions?: Array<string> = [];\r\n}","/** Public API Surface of armature */\r\nexport * from './rbac.module';\r\n\r\n// services\r\nexport * from './services/oauth2-role.service';\r\nexport * from './services/role-nav.service';\r\nexport * from './services/ar-role-nav.service';\r\n\r\n// models\r\nexport { RBAC_CONFIG } from './models/constants';\r\nexport * from './models/decoded-access-token';\r\nexport * from './models/access-token-claims';\r\nexport * from './models/rbac-config';\r\nexport * from './models/role-access';\r\n\r\n// directives\r\nexport * from './directives/rbac-action.directive';\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { RumConfig } from '../models/rum-config';\r\n\r\n/** The rum service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RumService implements OnDestroy {\r\n\r\n /** The service subscription */\r\n private readonly serviceSub: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructs the service\r\n * @param router The router\r\n * @param session The session\r\n */\r\n constructor(\r\n private readonly router: Router,\r\n private readonly session: SessionService\r\n ) { }\r\n\r\n /** Life cycle hook for service destruction */\r\n public ngOnDestroy(): void {\r\n this.serviceSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initializes rum\r\n * @param config The config\r\n * @param user The user info\r\n */\r\n public initializeRum(config: RumConfig, user?: { userName: string, userId: string }): void {\r\n // TODO: Rum support for angular 10+ not supported\r\n // const apm = this.apmService.init({\r\n // serviceName: config.serviceName,\r\n // serverUrl: config.serverUrl,\r\n // });\r\n // apm.setUserContext({\r\n // username: !!user ? user.userName : this.session.sessionId,\r\n // id: !!user ? user.userId : this.session.sessionId\r\n // });\r\n // this.apmService.apm = apm;\r\n // this.initRouteTracking();\r\n }\r\n\r\n /** initializes route tracking */\r\n private initRouteTracking(): void {\r\n let transaction;\r\n let span;\r\n this.serviceSub.add(\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n const name = event.url;\r\n // TODO: no elastic support for angular 10\r\n // transaction = this.apmService.apm.startTransaction(name, 'route-change', {\r\n // managed: true,\r\n // canReuse: false\r\n // });\r\n // span = transaction.startSpan(name, 'router');\r\n }\r\n\r\n else if (event instanceof NavigationError) {\r\n span.end();\r\n transaction && transaction.end();\r\n }\r\n\r\n else if (event instanceof NavigationEnd) {\r\n if (!transaction) {\r\n return;\r\n }\r\n const route = this.router.routerState.root.firstChild;\r\n\r\n if (route) {\r\n let child = route;\r\n let path = `/ ${child.routeConfig.path}`;\r\n\r\n while (child) {\r\n child = child.firstChild;\r\n if (child && child.routeConfig) {\r\n\r\n const currentPath = child.routeConfig.path;\r\n if (currentPath) {\r\n path = `${path}/${currentPath}`;\r\n }\r\n\r\n }\r\n }\r\n transaction.name = path;\r\n }\r\n span.end();\r\n transaction.end();\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets a custom event\r\n * @param data The data\r\n * @param type The even type\r\n */\r\n public getCustomEvent(data: any, type: string): any {\r\n // TODO: Elastic support for angular 10+\r\n // const transaction = this.apmService.apm.startTransaction(data, type, {\r\n // managed: true,\r\n // canReuse: false\r\n // });\r\n // const span = transaction.startSpan(data, type);\r\n\r\n // return { transaction, span };\r\n }\r\n\r\n /**\r\n * Ends the custom event\r\n * @param event The event\r\n */\r\n public endCustomEvent(event: { transaction: any, span: any }): void {\r\n event.span.end();\r\n event.transaction.end();\r\n }\r\n}\r\n","/** The armature error class */\r\nexport class ArmError {\r\n /** The message */\r\n public message: string;\r\n /** The error name */\r\n public name: string;\r\n /** The stack trace */\r\n public stack: string;\r\n /** The current application route */\r\n public route: string;\r\n /** The user session Id */\r\n public userId: string;\r\n /** The secondary errors */\r\n public secondaryErrors: Array<ArmError> = [];\r\n /** The original error */\r\n public originalError: Error;\r\n /** The original secondary error */\r\n public originalSecondaryErrors: Array<Error> = [];\r\n\r\n /**\r\n * Constructs the component\r\n * @param error The error\r\n * @param route The route\r\n * @param userId The user ID\r\n * @param populateOriginalError True if keeping the original error\r\n */\r\n constructor(err: Error, route?: string, userId?: string, populateOriginalError: boolean = true) {\r\n let errStr = err.toString();\r\n if (errStr === '[object Object]') {\r\n errStr = JSON.stringify(err);\r\n }\r\n\r\n this.message = errStr;\r\n this.stack = err.stack;\r\n this.route = route;\r\n this.userId = userId;\r\n this.name = err.name;\r\n if (populateOriginalError) {\r\n this.originalError = err;\r\n }\r\n }\r\n}","import { Injectable, Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { ArmError } from '../models/arm-error';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedErrorService {\r\n\r\n /** The session service */\r\n private readonly sessionService: SessionService;\r\n\r\n /** The error set */\r\n private readonly errorSet: Set<string> = new Set<string>();\r\n\r\n /**\r\n * constructs the service\r\n * @param injector the injector\r\n */\r\n constructor(\r\n private readonly injector: Injector,\r\n ) {\r\n this.sessionService = this.injector.get(SessionService);\r\n }\r\n\r\n /**\r\n * Determines if the error has been encountered before\r\n * @param err The error\r\n */\r\n public isNewError(err: Error): boolean {\r\n const error = new ArmError(err);\r\n if (this.errorSet.has(error.message)) {\r\n return false;\r\n }\r\n this.errorSet.add(error.message);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Formats the error\r\n * @param error The error\r\n */\r\n public formatError(error: Error, populateOriginalError: boolean = true): ArmError {\r\n console.warn(error);\r\n return new ArmError(error, window.location.pathname, this.sessionService.sessionId, populateOriginalError);\r\n }\r\n}\r\n","import { ErrorHandler, Inject, Injector, NgModule } from '@angular/core';\r\nimport { RumService } from './services/rum.service';\r\nimport { SharedErrorService } from './services/shared-error.service';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/** The real user monitoring */\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n RouterModule\r\n ],\r\n providers: [\r\n RumService,\r\n SharedErrorService\r\n ]\r\n})\r\nexport class RumModule {\r\n /**\r\n * Constructs the module\r\n * @param injector The injector\r\n */\r\n constructor(@Inject(Injector) injector: Injector) {\r\n // Hack: The generic error handler causes problems so we use the service directly\r\n const handler = injector.get(ErrorHandler);\r\n const original = console.error;\r\n console.error = (error) => {\r\n let e = error;\r\n if (typeof (error) === 'string') {\r\n e = new Error(error);\r\n }\r\n handler.handleError(error);\r\n original(error);\r\n };\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/** The rum configurations */\r\nexport class RumConfig {\r\n /** The service Name */\r\n public serviceName: string;\r\n\r\n /** The server url */\r\n public serverUrl: string;\r\n\r\n /** the secondary error window in Milliseconds */\r\n public secondaryErrorWindowMs: number;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { ErrorHandler, Injectable, Injector } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { SessionService } from '../../core/services/session.service';\r\nimport { RumConfig } from '../models/rum-config';\r\nimport { SharedErrorService } from './shared-error.service';\r\nimport { ArmError } from '../models/arm-error';\r\n\r\n/** The softheon error handler service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SoftheonErrorHandlerService implements ErrorHandler {\r\n\r\n /** The session Service */\r\n private readonly sessionService: SessionService;\r\n\r\n /** The shared error service */\r\n private readonly sharedErrorService: SharedErrorService;\r\n\r\n /** The secondary error window in ms */\r\n private readonly secondaryErrorWindowMs: number = 500;\r\n\r\n /** The current error */\r\n private currentError: ArmError;\r\n\r\n /**\r\n * Constructs the service\r\n * @param rumConfig The rum config\r\n * @param httpClient The http client\r\n * @param injector The injector\r\n */\r\n constructor(\r\n public rumConfig: RumConfig,\r\n private readonly httpClient: HttpClient,\r\n private readonly injector: Injector\r\n ) {\r\n this.sessionService = this.injector.get(SessionService);\r\n this.sharedErrorService = this.injector.get<SharedErrorService>(SharedErrorService);\r\n if (this.rumConfig && this.rumConfig.secondaryErrorWindowMs) {\r\n this.secondaryErrorWindowMs = this.rumConfig.secondaryErrorWindowMs;\r\n }\r\n }\r\n\r\n /**\r\n * Handles the error\r\n * @param error The error\r\n */\r\n public handleError(error: any): void {\r\n let e = error;\r\n if (typeof (error) === 'string') {\r\n e = new Error(e);\r\n }\r\n const err = e as Error;\r\n const appName = `${this.rumConfig.serviceName}`;\r\n\r\n if (!this.sharedErrorService.isNewError(err)) {\r\n return;\r\n }\r\n const errObj = this.sharedErrorService.formatError(err, false);\r\n if (!this.currentError) {\r\n this.currentError = errObj;\r\n setTimeout(() => {\r\n const errStr = JSON.stringify(this.currentError);\r\n this.httpClient.post(this.rumConfig.serverUrl, { error: errStr, applicationName: appName, logLevel: 'Warn' })\r\n .pipe(\r\n catchError(\r\n error => {\r\n console.warn(error);\r\n\r\n return of(error);\r\n }\r\n )\r\n )\r\n .subscribe(() => {\r\n this.currentError = undefined;\r\n });\r\n }, this.secondaryErrorWindowMs);\r\n }\r\n else {\r\n try {\r\n this.currentError.secondaryErrors.push(errObj);\r\n }\r\n catch (e) {\r\n console.error('Race condition hit where current error was cleared as a secondary error was thrown, re-throwing error', e);\r\n }\r\n }\r\n }\r\n}\r\n","/** Public api service the rum modules */\r\nexport * from './rum.module';\r\n\r\n// services\r\nexport * from './services/rum.service';\r\nexport * from './services/softheon-error-handler.service';\r\nexport * from './services/shared-error.service';\r\n\r\n// models\r\nexport * from './models/rum-config';\r\nexport * from './models/arm-error';\r\n\r\n","import { Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { ISamlRequest } from '../../models/i-saml-request';\r\nimport { ISamlResponse } from '../../models/i-saml-response';\r\n\r\n/** The SAML service abstract class */\r\nexport abstract class AbstractSamlService {\r\n\r\n /** The post saml observable */\r\n abstract postSaml$: Observable<string>;\r\n\r\n /** The post saml behavior subject */\r\n abstract postSaml: BehaviorSubject<string>;\r\n\r\n /** The base saml request */\r\n abstract baseRequest: BehaviorSubject<ISamlRequest>;\r\n\r\n /** The base request observable */\r\n abstract baseRequest$: Observable<ISamlRequest>;\r\n\r\n /**\r\n * Gets the SAML\r\n * @param request The request\r\n * @param endpointUri The full endpoint uri\r\n */\r\n abstract getSaml(request: ISamlRequest, endpointUri: string): Observable<ISamlResponse>;\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { RedirectSamlRequest } from '../../models/redirect-saml-request';\r\nimport { AbstractSamlService } from '../../services/send-off/abstract-saml.service';\r\n\r\n/** The SAML redirect component */\r\n@Component({\r\n selector: 'saml-redirect-saml',\r\n templateUrl: './redirect-saml.component.html',\r\n styleUrls: ['./redirect-saml.component.css'],\r\n standalone: false\r\n})\r\nexport class RedirectSamlComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /** The request used to get the SAML */\r\n @Input() public request: RedirectSamlRequest;\r\n\r\n /** The endpoint to use for getting the saml */\r\n @Input() public samlGetEndpointUri: string;\r\n\r\n /** The endpoint to post the saml to */\r\n @Input() public samlPostUrl: string;\r\n\r\n /** Event emitter for when the saml post is triggered */\r\n @Output() public readonly samlPostEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /** The saml submit button element reference */\r\n @ViewChild('samlSubmit') public samlSubmitBtn: ElementRef<HTMLButtonElement>;\r\n\r\n /** The saml input element reference */\r\n @ViewChild('samlInput') public samlInput: ElementRef<HTMLInputElement>;\r\n\r\n /** The SAML */\r\n public saml: string;\r\n\r\n /** The SAML post subscription */\r\n private readonly samlPostSubscription: Subscription;\r\n\r\n /** The saml subscription */\r\n private samlSubscription: Subscription;\r\n\r\n /**\r\n * Constructs the component\r\n * @param samlService The saml service\r\n */\r\n constructor(\r\n private readonly samlService: AbstractSamlService\r\n ) { }\r\n\r\n /** Life cycle hook from component initialization */\r\n public ngOnInit(): void {\r\n if (!this.validateComponentInputs()) {\r\n throw new Error('saml-redirect-saml component is missing required attributes');\r\n }\r\n this.samlService.baseRequest.next(this.request);\r\n }\r\n\r\n /** Life cycle hook for after component view initialization */\r\n public ngAfterViewInit(): void {\r\n // getting/posting is done here since they depend on each other and the button needs to exist\r\n\r\n // Subscribes to observable for posting a given saml\r\n this.samlSubscription = this.samlService.postSaml$.subscribe(saml => {\r\n if (saml) {\r\n this.saml = saml;\r\n setTimeout(() => {\r\n this.samlInput.nativeElement.value = saml;\r\n this.samlSubmitBtn.nativeElement.click();\r\n }, 50);\r\n }\r\n });\r\n\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n this.samlPostSubscription.unsubscribe();\r\n this.samlSubscription.unsubscribe();\r\n }\r\n\r\n /** Validates that component required component inputs are provided */\r\n private validateComponentInputs(): boolean {\r\n let errorCount = 0;\r\n if (!this.request) {\r\n console.error('saml-redirect-saml: Attribute \"request\" is required');\r\n errorCount++;\r\n }\r\n\r\n if (!this.samlGetEndpointUri) {\r\n console.error('saml-redirect-saml: Attribute \"samlGetEndpointUri\" is required');\r\n errorCount++;\r\n }\r\n\r\n if (!this.samlPostUrl) {\r\n console.error('saml-redirect-saml: Attribute \"samlPostUrl\" is required');\r\n errorCount++;\r\n }\r\n return errorCount === 0;\r\n }\r\n\r\n}\r\n","<form hidden ngNoForm action=\"{{samlPostUrl}}\" method=\"POST\">\r\n <button #samlSubmit id=\"samlSubmit\" type=\"submit\" color=\"primary\"></button>\r\n <input #samlInput hidden id=\"SAMLResponse\" name=\"SAMLResponse\" value={{saml}}>\r\n</form>\r\n","import { Observable } from 'rxjs';\r\nimport { SsoGatewayModel } from '../../models/sso-gateway-model';\r\n\r\n/** The abstract saml entry service */\r\nexport abstract class AbstractSamlEntryService {\r\n\r\n /** The key path prefix */\r\n public abstract keyPathPrefix: string;\r\n\r\n /**\r\n * Reads the values for the provided key path\r\n * @param keyPath The key path\r\n */\r\n public abstract readValue(keyPath: string): SsoGatewayModel;\r\n\r\n /**\r\n * Deletes value associated with the provided key path\r\n * @param keyPath The key path\r\n */\r\n public abstract deleteValue(keyPath: string): void;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SsoGatewayModel } from '../../models/sso-gateway-model';\r\nimport { AbstractSamlEntryService } from './abstract-saml-entry.service';\r\n\r\n/** The SAML entry service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SsoGatewayEntryService extends AbstractSamlEntryService {\r\n\r\n /** The key path prefix */\r\n public keyPathPrefix: string = 'SsoGateway-';\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Reads the values for the provided key path\r\n * @param keyPath The key path\r\n */\r\n public readValue(keyPath: string): SsoGatewayModel {\r\n const data = window.localStorage.getItem(`${this.keyPathPrefix}${keyPath}`);\r\n return JSON.parse(data);\r\n }\r\n\r\n /**\r\n * Deletes the value associated with the provided key path\r\n * @param keyPath The key path\r\n */\r\n public deleteValue(keyPath: string): void {\r\n window.localStorage.removeItem(`${this.keyPathPrefix}${keyPath}`);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\n\r\nimport { ISamlRequest } from '../../models/i-saml-request';\r\nimport { ISamlResponse } from '../../models/i-saml-response';\r\nimport { AbstractSamlService } from './abstract-saml.service';\r\nimport { RedirectSamlRequest } from '../../models/redirect-saml-request';\r\n\r\n/** The SAML service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamlService extends AbstractSamlService {\r\n\r\n /** The post saml observable */\r\n public postSaml$: Observable<string>;\r\n\r\n /** The post saml behavior subject */\r\n public postSaml: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n /** The base saml request behavior subject */\r\n public baseRequest: BehaviorSubject<RedirectSamlRequest> = new BehaviorSubject<RedirectSamlRequest>(undefined);\r\n\r\n /** The base saml request behavior subject */\r\n public baseRequest$: Observable<RedirectSamlRequest>;\r\n\r\n /**\r\n * Constructs the service\r\n * @param http The http client\r\n */\r\n constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n super();\r\n this.postSaml$ = this.postSaml.asObservable();\r\n this.baseRequest$ = this.baseRequest.asObservable();\r\n }\r\n\r\n /**\r\n * Gets the saml with provided body from the given endpoint\r\n * @param request The request body\r\n * @param endpointUri The full endpoint uri for getting the saml\r\n */\r\n public getSaml(request: ISamlRequest, endpointUri: string): Observable<ISamlResponse> {\r\n return this.http.post<ISamlResponse>(endpointUri, request);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { RedirectSamlComponent } from './components/redirect-saml/redirect-saml.component';\r\nimport { AbstractSamlEntryService } from './services/entry/abstract-saml-entry.service';\r\nimport { SsoGatewayEntryService } from './services/entry/sso-gateway-entry.service';\r\nimport { AbstractSamlService } from './services/send-off/abstract-saml.service';\r\nimport { SamlService } from './services/send-off/saml.service';\r\n\r\n/** The saml components */\r\nconst components = [\r\n RedirectSamlComponent\r\n];\r\n\r\n/** The implementations for the saml services */\r\nconst abstractServices = [\r\n { provide: AbstractSamlEntryService, useClass: SsoGatewayEntryService },\r\n { provide: AbstractSamlService, useClass: SamlService }\r\n];\r\n\r\n/** Armature saml module */\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n providers: [\r\n ...abstractServices\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SamlModule { }\r\n","import { ISamlRequest } from './i-saml-request';\r\n\r\n/** The redirect SAML request */\r\nexport class RedirectSamlRequest implements ISamlRequest {\r\n /** The redirect url that will be used for posting the SAML */\r\n public redirectUrl: string;\r\n\r\n /** The url to return to */\r\n public returnUrl: string;\r\n\r\n /** The OAuth 2.0 issuer */\r\n public oAuthIssuer: string;\r\n\r\n /** The OAuth 2.0 client id */\r\n public oAuthClientId: string;\r\n\r\n /** The OAuth 2.0 scopes, space delimited list */\r\n public oAuthScopes: string;\r\n\r\n /** The logo url */\r\n public logo: string;\r\n\r\n /** The theme */\r\n public theme: string;\r\n\r\n /** The CDN url for the theme */\r\n public themeCDN: string;\r\n\r\n /** The reference */\r\n public referenceId: string;\r\n\r\n /** The reference data */\r\n public referenceData: string;\r\n\r\n}\r\n","/** The Sso Gateway de-serialized SAML model */\r\nexport class SsoGatewayModel {\r\n /** The assertions dictionary */\r\n public Assertions: { [key: string]: string };\r\n\r\n /** The issuer of the saml */\r\n public Issuer: string;\r\n\r\n /** The audience of the saml */\r\n public Audience: string;\r\n\r\n /** The destination of the saml */\r\n public Destination: string;\r\n\r\n /** The hash of the assertions */\r\n public Hash: string;\r\n\r\n /** The Key Path suffix used for storing the values */\r\n public KeyPath: string;\r\n}\r\n","/** Public API Surface of saml */\r\nexport * from './saml.module';\r\n\r\n// services\r\nexport * from './services/entry/abstract-saml-entry.service';\r\nexport * from './services/entry/sso-gateway-entry.service';\r\nexport * from './services/send-off/abstract-saml.service';\r\nexport * from './services/send-off/saml.service';\r\n\r\n// components\r\nexport * from './components/redirect-saml/redirect-saml.component';\r\n\r\n// models\r\nexport * from './models/i-saml-request';\r\nexport * from './models/i-saml-response';\r\nexport * from './models/redirect-saml-request';\r\nexport * from './models/sso-gateway-model';\r\n","/**\r\n * CSS Override\r\n */\r\nexport class CssOverride {\r\n public selector: 'id' | 'class' | 'tag';\r\n public parameter: string;\r\n public attributes: Array<Attribute>;\r\n}\r\n\r\n/**\r\n * CSS attribute overrides\r\n */\r\nexport class Attribute {\r\n public name: string;\r\n public value: string;\r\n}\r\n","/** Public API Surface of Theming */\r\nexport * from './theme.module';\r\n\r\nexport * from './services/theme.service';\r\n\r\nexport * from './directives/css-override.directive';\r\n\r\nexport {\r\n CssOverride,\r\n Attribute\r\n} from './models/css-override';\r\n","/** Public API surfce for components */\r\nexport * from './alert-banner.module';\r\n\r\n// models\r\nexport * from './models/alert-banner-context';\r\nexport { AlertBannerConfig, AlertBannerColors } from './models/alert-banner-config';\r\nexport { ALERT_BANNER_CONFIG, BannerType } from './models/constants';\r\n\r\n// services\r\nexport * from './services/alert-banner.service';\r\n\r\n// component\r\nexport * from './components/alert-banner/alert-banner.component';\r\n","import { \r\n ChangeDetectionStrategy, \r\n Component, \r\n ElementRef, \r\n EventEmitter, \r\n inject, \r\n Input, \r\n Output \r\n} from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * The Callout component\r\n * @note If you need to include some custom HTML you can inject an - \r\n * \r\n * `<ng-container callout-custom-content>`\r\n*/\r\n@Component({\r\n selector: 'sof-callout',\r\n templateUrl: './sof-callout.component.html',\r\n styleUrl: './sof-callout.component.scss',\r\n imports: [TranslateModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SofCalloutComponent {\r\n\r\n /** The callout id */\r\n @Input() id: string = \"1\";\r\n\r\n /** The callout type */\r\n @Input({required: true}) type!: 'info' | 'warning' | 'error' | 'success' | 'neutral';\r\n\r\n /** \r\n * The callout text \r\n * @note Can be a translation key\r\n */\r\n @Input({required: true}) text!: string;\r\n\r\n /** \r\n * The callout extended message \r\n * @optional\r\n * @note Can be a translation key\r\n */\r\n @Input() extendedText?: string;\r\n\r\n /** \r\n * The text size \r\n * @optional\r\n * \r\n * @note \"body1\" = font-size: 16px,\r\n * \r\n * \"body2\" = font-size: 14px,\r\n * @default \"body1\"\r\n */\r\n @Input() textSize: 'body1' | 'body2' = 'body1';\r\n\r\n /** \r\n * Override the default icon with any phosphor icon class \r\n * @note should be using the 'ph-bold' icon type\r\n * @see [Phosphor Icons/bold]({@link https://phosphoricons.com/?weight=%22bold%22})\r\n */\r\n @Input() iconOverrideClass?: string;\r\n\r\n /** \r\n * Show close icon button \r\n * @optional\r\n * @default true\r\n */\r\n @Input() canDismiss: boolean = true;\r\n\r\n /** \r\n * Output when close is clicked \r\n * @optional\r\n * @note This component will close itself. \r\n * \r\n * This event is for if the parent component needs to do anything on close.\r\n */\r\n @Output() dismissEvent: EventEmitter<void> = new EventEmitter();\r\n\r\n /** The host element ref */\r\n private host: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n\r\n /** Close the callout */\r\n public dismissCallout(): void {\r\n this.dismissEvent.emit();\r\n this.host.nativeElement.remove();\r\n }\r\n}\r\n","\r\n<div \r\n class=\"callout callout--{{type}}\"\r\n role=\"alert\" id=\"callout-{{id}}\">\r\n <div class=\"callout__icon\" [class.small]=\"textSize === 'body2'\">\r\n @if (!!iconOverrideClass) {\r\n <i class=\"{{iconOverrideClass}}\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (type) {\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @default {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"callout__content\" [class.has-extended]=\"!!extendedText\">\r\n <p class=\"{{textSize}} fw-600\">{{text | translate}}</p>\r\n @if (!!extendedText) {\r\n <p class=\"{{textSize}}\">{{extendedText | translate}}</p>\r\n }\r\n <ng-content select=\"[callout-custom-content]\"></ng-content>\r\n </div>\r\n @if (canDismiss) {\r\n <div class=\"callout__close\">\r\n <button \r\n (click)=\"dismissCallout()\" \r\n id=\"callout-close-{{id}}\" \r\n aria-label=\"dismiss alert\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { \r\n AfterViewInit, \r\n ChangeDetectionStrategy, \r\n ChangeDetectorRef, \r\n Component, \r\n ElementRef, \r\n HostListener, \r\n inject, \r\n Renderer2, \r\n TemplateRef, \r\n ViewChild \r\n} from '@angular/core';\r\nimport { \r\n MAT_BOTTOM_SHEET_DATA, \r\n MatBottomSheetModule, \r\n MatBottomSheetRef \r\n} from '@angular/material/bottom-sheet';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** \r\n * The mobile bottom sheet \r\n * @note while designed for mobile/tablet will work on desktop as well.\r\n*/\r\n@Component({\r\n selector: 'sof-bottom-sheet',\r\n templateUrl: './sof-bottom-sheet.component.html',\r\n styleUrl: './sof-bottom-sheet.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatBottomSheetModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class SofBottomSheetComponent implements AfterViewInit {\r\n\r\n /** Reference to the bottom sheets content element */\r\n @ViewChild('sheetContent', { static: true }) sheetContent!: ElementRef<HTMLDivElement>;\r\n\r\n /** Sheet header height */\r\n private readonly bottomSheetHeaderHeight: number = 56;\r\n\r\n /** 25% of the viewport height, minus the headers height */ \r\n private minHeight: number = Math.round(window.innerHeight * 0.25 - this.bottomSheetHeaderHeight);\r\n\r\n /** 95% of the viewport height, minus the headers height */ \r\n private maxHeight: number = Math.round(window.innerHeight * 0.95 - this.bottomSheetHeaderHeight);\r\n\r\n /** 60% of the viewport height, minus the headers height */ \r\n private defaultHeight: number = Math.round(window.innerHeight * 0.6 - this.bottomSheetHeaderHeight);\r\n\r\n /** Initial sheet content height */ \r\n public sheetHeight: number = this.defaultHeight;\r\n\r\n /** Area tolerance for snapping to default height (in px) */ \r\n private readonly defaultHeightTolerance: number = Math.round((window.innerHeight / 4) - (this.bottomSheetHeaderHeight * 2));\r\n\r\n /** Is the user dragging the target (header) */\r\n private isDragging: boolean = false;\r\n\r\n /** The starting Y axis position when dragging */\r\n private startY: number;\r\n\r\n /** Initial height when drag started */\r\n private initialHeight: number;\r\n\r\n /** Is the user dragging the bottom sheets content element */\r\n private isContentDrag: boolean = false;\r\n\r\n /** ID for the dismiss button */\r\n public readonly dismissButtonId: string = \"dismiss-bottom-sheet\";\r\n\r\n /** Implement custom rendering */\r\n private renderer: Renderer2 = inject(Renderer2);\r\n\r\n /** Provide custom change detection functionality when using 'ChangeDetectionStrategy.OnPush' */\r\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** The bottom sheets data */\r\n public data: BottomSheetData = inject(MAT_BOTTOM_SHEET_DATA);\r\n\r\n /** The bottom sheet reference */\r\n public bottomSheetRef: MatBottomSheetRef = inject(MatBottomSheetRef);\r\n\r\n /** Ensure the bottom sheet starts at the default height (60% of the viewport) */\r\n public ngAfterViewInit() {\r\n this.sheetHeight = this.defaultHeight;\r\n }\r\n\r\n /** Start the drag operation (handles both mouse and touch events) */\r\n public startDrag(event: MouseEvent | TouchEvent, isContentDrag: boolean = false) {\r\n if (isContentDrag) {\r\n const isContentScrolledToTop: boolean = this.sheetContent.nativeElement.scrollTop === 0;\r\n if (isContentScrolledToTop) {\r\n this.isContentDrag = true;\r\n } else {\r\n return;\r\n }\r\n }\r\n this.isDragging = true;\r\n this.startY = this.getYPosition(event);\r\n this.initialHeight = this.sheetHeight;\r\n if (event instanceof MouseEvent) {\r\n const mouseMoveListener = this.renderer.listen('document', 'mousemove', this.onDrag);\r\n const mouseUpListener = this.renderer.listen('document', 'mouseup', () => {\r\n mouseMoveListener();\r\n mouseUpListener();\r\n this.endDrag(event);\r\n });\r\n } else if (event.touches && event.touches.length) {\r\n const touchMoveListener = this.renderer.listen('document', 'touchmove', this.onDrag);\r\n const touchEndListener = this.renderer.listen('document', 'touchend', () => {\r\n touchMoveListener();\r\n touchEndListener();\r\n this.endDrag(event);\r\n });\r\n }\r\n }\r\n\r\n /** Handle the drag movement event */\r\n private onDrag = (event: MouseEvent | TouchEvent) => {\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n const currentY: number = this.getYPosition(event);\r\n const deltaY: number = this.startY - currentY;\r\n const newHeight: number = this.initialHeight + deltaY;\r\n if (this.isContentDrag && newHeight > this.initialHeight) {\r\n return;\r\n }\r\n this.sheetHeight = newHeight > this.maxHeight ? this.maxHeight : newHeight;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /** End the drag operation and snap to the nearest state */\r\n private endDrag(event: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n this.isDragging = false;\r\n if (\r\n // If the close button is the target element & not dragged (mousedown/up (click) w/o moving), dismiss the bottom sheet,\r\n event.target['id'] === this.dismissButtonId && this.sheetHeight === this.initialHeight || \r\n // If dragging on the content & content is scrolled to the top & dragging down, dismiss the bottom sheet,\r\n this.isContentDrag && (this.sheetHeight + this.defaultHeightTolerance) < this.initialHeight || \r\n // If dragged below the minimum threshold (25%), dismiss the bottom sheet.\r\n this.sheetHeight < this.minHeight\r\n ) {\r\n this.bottomSheetRef.dismiss();\r\n return;\r\n }\r\n // If the current height is within defaultHeightTolerance of the default height, snap to default.\r\n if (Math.round(Math.abs(this.sheetHeight - this.defaultHeight)) <= this.defaultHeightTolerance) {\r\n this.sheetHeight = this.defaultHeight;\r\n } else {\r\n // Determine snapping based on position relative to the midpoint.\r\n const midPoint: number = Math.round((this.minHeight + this.maxHeight) / 2);\r\n this.sheetHeight = this.sheetHeight > midPoint ? this.maxHeight : this.minHeight;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /** Utility method to extract the Y position from mouse or touch events */\r\n private getYPosition(event: MouseEvent | TouchEvent): number {\r\n if (event instanceof MouseEvent) {\r\n return event.clientY;\r\n } else if (event.touches && event.touches.length) {\r\n return event.touches[0].clientY;\r\n }\r\n return 0;\r\n }\r\n\r\n /** Update the height variables on window resize */\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.minHeight = window.innerHeight * 0.25 - this.bottomSheetHeaderHeight;\r\n this.maxHeight = window.innerHeight * 0.95 - this.bottomSheetHeaderHeight;\r\n this.defaultHeight = window.innerHeight * 0.6 - this.bottomSheetHeaderHeight;\r\n // Ensure the current height is within bounds.\r\n this.sheetHeight = Math.max(this.minHeight, Math.min(this.sheetHeight, this.maxHeight));\r\n }\r\n}\r\n\r\n/** \r\n * The bottom sheet data\r\n * @note all properties are required\r\n*/\r\nexport interface BottomSheetData {\r\n headerIconClass: string;\r\n headerTitle: string;\r\n template: TemplateRef<any>;\r\n}\r\n","<div class=\"bottom-sheet\">\r\n <div \r\n class=\"header\"\r\n (mousedown)=\"startDrag($event)\" \r\n (touchstart)=\"startDrag($event)\">\r\n <div class=\"handle\"></div>\r\n <i class=\"{{data.headerIconClass}}\" aria-hidden=\"true\"></i>\r\n <h4>{{data.headerTitle | translate}}</h4>\r\n <button \r\n class=\"dismiss-bottom-sheet\" \r\n m-l-auto [id]=\"dismissButtonId\"\r\n aria-label=\"dismiss\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n <div \r\n class=\"content\" #sheetContent \r\n (mousedown)=\"startDrag($event, true)\" \r\n (touchstart)=\"startDrag($event, true)\"\r\n [style.height.px]=\"sheetHeight\">\r\n @if (data.template) {\r\n <ng-container [ngTemplateOutlet]=\"data.template\"/>\r\n }\r\n </div>\r\n</div>\r\n","import { \r\n ChangeDetectionStrategy, \r\n Component, \r\n EventEmitter, \r\n Input, \r\n OnChanges, \r\n Output, \r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** \r\n * The sof-chip component \r\n*/\r\n@Component({\r\n selector: 'sof-chip',\r\n templateUrl: './sof-chip.component.html',\r\n styleUrls: ['./sof-chip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [TranslateModule]\r\n})\r\nexport class SofChipComponent implements OnChanges {\r\n /** \r\n * The chip's label \r\n * @required\r\n * @note Can be a translation key\r\n */\r\n @Input({required: true}) label!: string;\r\n\r\n /** \r\n * Can the chip be removed \r\n * @optional\r\n * @default true\r\n */\r\n @Input() canRemove?: boolean = true;\r\n\r\n /** \r\n * Theme for the chip \r\n * @optional\r\n * @default 'neutral'\r\n */\r\n @Input() theme?: \"neutral\"|\"info\" = \"neutral\";\r\n\r\n /** \r\n * Icon class for the chip \r\n * @optional if omitted no icon will be shown\r\n * @note should be using the 'ph-bold' icon type\r\n * @see [Phosphor Icons/bold]({@link https://phosphoricons.com/?weight=%22bold%22})\r\n */\r\n @Input() iconClass?: string;\r\n\r\n /** \r\n * The id for the remove button\r\n * @optional needed if canRemove is true\r\n * @note Can simply be the index of the <Chip> array\r\n */\r\n @Input() removeButtonId?: string | number = \"\";\r\n\r\n /** Event to emit the chip's label for removal */\r\n @Output() removeEvent?: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /** If canRemove is null|undefined onChanges, set to true */\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.canRemove) {\r\n const canRemove = changes.canRemove.currentValue ?? true;\r\n this.canRemove = canRemove;\r\n }\r\n }\r\n\r\n /** Emit the chip's label for removal */\r\n public onRemove(): void {\r\n this.removeEvent.emit(this.label);\r\n }\r\n}\r\n\r\n/** \r\n * The Chip interface \r\n * @description Use to display chips from an Array<Chip>.\r\n*/\r\nexport interface Chip {\r\n label: string;\r\n iconClass?: string;\r\n canRemove?: boolean;\r\n}\r\n","<div \r\n class=\"sof-chip\" \r\n [class.no-remove]=\"!canRemove\"\r\n [attr.theme]=\"theme ?? 'neutral'\">\r\n @if (iconClass) {\r\n <i [class]=\"iconClass\" aria-hidden=\"true\"></i>\r\n }\r\n <span>{{ label | translate }}</span>\r\n @if (canRemove) {\r\n <button \r\n (click)=\"onRemove()\"\r\n [attr.aria-label]=\"'Remove ' + label\"\r\n [id]=\"'chip-remove-btn-' + removeButtonId\">\r\n <i class=\"ph-fill ph-x-circle\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** SSN Pipe */\r\n@Pipe({\r\n name: 'sofArSsn',\r\n standalone: false\r\n})\r\nexport class SofSsnPipe implements PipeTransform {\r\n\r\n /**\r\n * Transform\r\n * @param ssn SSN\r\n */\r\n public transform(ssn: string, maskedCharacter): string {\r\n\r\n // If input is undefined, then return itself\r\n if (!ssn || ssn.length !== 9) {\r\n return null;\r\n }\r\n\r\n if (!maskedCharacter) {\r\n return `${ssn.substring(0,3)}-${ssn.substring(3,5)}-${ssn.substring(5)}`;\r\n }\r\n\r\n return `${maskedCharacter}${maskedCharacter}${maskedCharacter}-${maskedCharacter}${maskedCharacter}-${ssn.substring(5)}`;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport { SofDatePipeFormat } from '../models/sof-date-pipe-format';\r\n\r\n/** The override for blank langauge */\r\nexport const SOF_BLANK_LANGUAGE_OVERRIDE: InjectionToken<string> = new InjectionToken<string>('SofBlankLanguageOverride');\r\n\r\n/** Sof Date Pipe Formats */\r\nexport const SOF_DATE_PIPE_FORMATS: InjectionToken<SofDatePipeFormat[]> = new InjectionToken<SofDatePipeFormat[]>('SofDatePipeFormats');\r\n\r\n/** Default Sof Date Pipe Formats */\r\nexport const DEFAULT_SOF_DATE_PIPE_FORMATS: SofDatePipeFormat[] = [{\r\n format: 'MM/DD/YYYY',\r\n matchRegExp: '^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}$'\r\n}, {\r\n format: 'YYYY-MM-DD',\r\n matchRegExp: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'\r\n}, {\r\n format: 'YYYYMMDD',\r\n matchRegExp: '^[0-9]{8}$'\r\n}];","import { DatePipe } from '@angular/common';\r\nimport { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport { DEFAULT_SOF_DATE_PIPE_FORMATS, SOF_DATE_PIPE_FORMATS } from '../../constants/constants';\r\nimport { SofDatePipeFormat } from '../../models/sof-date-pipe-format';\r\n\r\n/** Date Pipe */\r\n@Pipe({\r\n name: 'sofArDate',\r\n standalone: false\r\n})\r\nexport class SofDatePipe implements PipeTransform {\r\n\r\n /** Transform */\r\n public transform(date: string | Date | moment.Moment, transformFormat: string = 'M/d/yyyy', timezone: string, locale: string): string {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n if (moment.isMoment(date)) {\r\n date = date.toDate();\r\n }\r\n\r\n if (typeof date === 'string') {\r\n date = this.parseDate(date) || date;\r\n }\r\n\r\n return this.datePipe.transform(date, transformFormat, timezone, locale);\r\n }\r\n\r\n /** Constructor */\r\n public constructor(\r\n private datePipe: DatePipe,\r\n @Optional() @Inject(SOF_DATE_PIPE_FORMATS) private datePipeFormats: SofDatePipeFormat[] = []\r\n ) {\r\n this.datePipeFormats = (datePipeFormats || []).concat(DEFAULT_SOF_DATE_PIPE_FORMATS);\r\n }\r\n\r\n /**\r\n * Parses a date to a string\r\n * @param dateStr Date string\r\n */\r\n private parseDate(dateStr: string): Date {\r\n if (!dateStr || dateStr === '') {\r\n return undefined;\r\n }\r\n\r\n for (const datePipeFormat of this.datePipeFormats) {\r\n if (dateStr.match(datePipeFormat.matchRegExp)) {\r\n const momentDate = moment(dateStr, datePipeFormat.format);\r\n if (momentDate.isValid()) {\r\n return momentDate.toDate();\r\n }\r\n }\r\n }\r\n\r\n console.warn(`Unable to parse ${dateStr} to date using sof-date-pipe.`)\r\n }\r\n}\r\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { SOF_BLANK_LANGUAGE_OVERRIDE } from '../../constants/constants';\r\n\r\n/** Blank Pipe for strings when its blank */\r\n@Pipe({\r\n name: 'sofArBlank',\r\n standalone: false\r\n})\r\nexport class SofBlankPipe implements PipeTransform {\r\n\r\n /**\r\n * Constructor\r\n * @param blankLanguage The language to replace with when given value is blank\r\n */\r\n public constructor(\r\n @Optional() @Inject(SOF_BLANK_LANGUAGE_OVERRIDE) private blankLanguage: string = ''\r\n ) {\r\n this.blankLanguage = blankLanguage || 'common.default-blank';\r\n }\r\n\r\n /**\r\n * Transform \r\n * @param value Value \r\n * @returns \r\n */\r\n public transform(value: any): any {\r\n if (value == '0' || value === 0) {\r\n return value;\r\n }\r\n\r\n return value || this.blankLanguage;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\nimport { SofSsnPipe } from './pipes/sof-ssn/sof-ssn.pipe';\r\nimport { SofDatePipe } from './pipes/sof-date/sof-date.pipe';\r\nimport { SofBlankPipe } from './pipes/sof-blank/sof-blank.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SofBlankPipe,\r\n SofDatePipe,\r\n SofSsnPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SofBlankPipe,\r\n SofDatePipe,\r\n SofSsnPipe\r\n ],\r\n providers: [\r\n DatePipe\r\n ]\r\n})\r\nexport class SofPipeModule { }\r\n","/** Public API surface for the forms */\r\nexport * from './sof-pipe.module';\r\n\r\n// models\r\nexport { SofDatePipeFormat } from './models/sof-date-pipe-format';\r\n\r\n// constants\r\nexport { SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS } from './constants/constants';\r\n\r\n// pipes\r\nexport * from './pipes/sof-blank/sof-blank.pipe';\r\nexport * from './pipes/sof-date/sof-date.pipe';\r\nexport * from './pipes/sof-ssn/sof-ssn.pipe';\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ResizeEvent } from '../../models/resize-event';\r\n\r\n/** The Resize Panels Component */\r\n@Component({\r\n selector: 'sof-ar-resize-panels',\r\n templateUrl: './resize-panels.component.html',\r\n styleUrls: ['./resize-panels.component.scss'],\r\n standalone: false\r\n})\r\nexport class ResizePanelsComponent implements OnInit {\r\n\r\n /** The panel split direction */\r\n @Input() public direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n /** The panel split position */\r\n @Input() public splitPosition: number = 50;\r\n\r\n /** The min width or height of the first panel */\r\n @Input() public firstPanelMinSize: string;\r\n\r\n /** The min width or height of the second panel */\r\n @Input() public secondPanelMinSize: string;\r\n\r\n /** Whether the panels should be resizable */\r\n @Input() public resizable: boolean = true;\r\n\r\n /** The Resize Event */\r\n @Output() public onResize: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n\r\n /** The Resize Start Event */\r\n @Output() public onResizeStart: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n \r\n /** The Resize End Event */\r\n @Output() public onResizeEnd: EventEmitter<ResizeEvent> = new EventEmitter<ResizeEvent>();\r\n\r\n /** The container element */\r\n @ViewChild('container') private container: ElementRef;\r\n\r\n /** The first panel */\r\n @ViewChild('firstPanel') private firstPanel: ElementRef;\r\n\r\n /** The second panel */\r\n @ViewChild('secondPanel') private secondPanel: ElementRef;\r\n\r\n /** Whether the user is currently resizing */\r\n public isResizing: boolean = false;\r\n\r\n /** The first panel max height */\r\n private firstPanelMaxHeight = 'none';\r\n \r\n /** The second panel max height */\r\n private secondPanelMaxHeight = 'none';\r\n\r\n /** The initial split position */\r\n private initialSplit: number;\r\n\r\n /**\r\n * Creates an instance of ResizePanelsComponent\r\n */\r\n constructor() { }\r\n\r\n /** Initializes the component */\r\n public ngOnInit(): void {\r\n this.initialSplit = this.splitPosition;\r\n }\r\n\r\n /** On Changes Lifecycle Hook */\r\n public ngOnChanges(): void {\r\n if (this.resizable && !!this.initialSplit) {\r\n this.splitPosition = this.initialSplit;\r\n }\r\n }\r\n\r\n /** Gets the style for the first panel */\r\n public getFirstPanelStyle(): any {\r\n const contentHeight = this.firstPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;\r\n\r\n if (contentHeight < this.firstPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.firstPanelMaxHeight = contentHeight + 'px';\r\n }\r\n if (contentHeight > this.firstPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.firstPanelMaxHeight = 'none';\r\n }\r\n\r\n return {\r\n flex: this.splitPosition,\r\n minWidth: this.direction === 'vertical' ? this.firstPanelMinSize : 'auto',\r\n minHeight: this.direction === 'horizontal' ? this.firstPanelMinSize : 'auto',\r\n maxHeight: this.direction === 'horizontal' ? this.firstPanelMaxHeight : 'none'\r\n }\r\n }\r\n\r\n /** Gets the style for the second panel */\r\n public getSecondPanelStyle(): any {\r\n const contentHeight = this.secondPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;\r\n\r\n if (contentHeight < this.secondPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.secondPanelMaxHeight = contentHeight + 'px';\r\n }\r\n if (contentHeight > this.secondPanel?.nativeElement?.getBoundingClientRect().height) {\r\n this.secondPanelMaxHeight = 'none';\r\n }\r\n\r\n return {\r\n flex: 100 - this.splitPosition,\r\n minWidth: this.direction === 'vertical' ? this.secondPanelMinSize : 'auto',\r\n minHeight: this.direction === 'horizontal' ? this.secondPanelMinSize : 'auto',\r\n maxHeight: this.direction === 'horizontal' ? this.secondPanelMaxHeight : 'none'\r\n }\r\n }\r\n\r\n /** Start resizing */\r\n public startResize(): void {\r\n this.onResizeStart.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n this.isResizing = true;\r\n }\r\n\r\n /** Stop resizing on mouse up */\r\n @HostListener('window:mouseup')\r\n public stopResize(): void {\r\n if (this.isResizing) {\r\n this.isResizing = false;\r\n this.onResizeEnd.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * The mouse move listener\r\n * @param event the mouse event\r\n */\r\n @HostListener('window:mousemove', ['$event']) \r\n public onMouseMove(event: MouseEvent): void {\r\n if (this.isResizing) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.resize(event);\r\n }\r\n }\r\n\r\n /**\r\n * Resize the panels based on the mouse position relative to the container\r\n * @param event the mouse event\r\n */\r\n private resize(event: MouseEvent): void {\r\n const containerSize = this.direction === 'vertical' ? this.container.nativeElement.clientWidth : this.container.nativeElement.clientHeight;\r\n const containerPos = this.direction === 'vertical' ? this.container.nativeElement.getBoundingClientRect().x : this.container.nativeElement.getBoundingClientRect().y;\r\n const mousePos = this.direction === 'vertical' ? event.x : event.y;\r\n const pos = ((mousePos - containerPos) / containerSize) * 100;\r\n this.splitPosition = Math.min(Math.max(pos, 1), 99);\r\n\r\n this.onResize.emit({\r\n splitPosition: this.splitPosition,\r\n firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,\r\n secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight\r\n });\r\n }\r\n}","<div #container class=\"sof-ar-resize-panels-container\"\r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n\r\n <!-- First Panel -->\r\n <div [ngStyle]=\"getFirstPanelStyle()\" #firstPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n\r\n <!-- Drag Handle / Border -->\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\" *ngIf=\"resizable\">\r\n <div class=\"sof-ar-resize-panels-drag-handle\" (mousedown)=\"startResize()\" \r\n [ngClass]=\"{ \r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n </div>\r\n </div>\r\n \r\n <!-- Second Panel -->\r\n <div [ngStyle]=\"getSecondPanelStyle()\" #secondPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ResizePanelsComponent } from './components/resize-panels/resize-panels.component';\r\n\r\n\r\n/** The Resize Panels Module */\r\n@NgModule({\r\n declarations: [ ResizePanelsComponent ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ResizePanelsComponent\r\n ]\r\n})\r\nexport class ArmatureResizePanelsModule { }\r\n","/** Public API surface for components */\r\nexport * from './resize-panels.module';\r\n\r\n// components\r\nexport * from './components/resize-panels/resize-panels.component';\r\n\r\n// models\r\nexport { ResizeEvent } from './models/resize-event';","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\n/** \r\n * The feedback-tool component \r\n * @input application, the application using this component *required \r\n * @input experience, language key for the user experience, default is 'purchasingPlan',\r\n * @output close, the event to close/destroy this component\r\n * */\r\n@Component({\r\n selector: 'sof-ar-feedback-tool',\r\n templateUrl: './feedback-tool.component.html',\r\n styleUrl: './feedback-tool.component.scss',\r\n standalone: false\r\n})\r\nexport class FeedbackToolComponent implements OnInit {\r\n\r\n /** The application using this component *required */\r\n @Input({required:true}) private application: string;\r\n\r\n /** Language key for the user experience, default is 'purchasingPlan' */\r\n @Input() private experience: string = 'purchasingPlan';\r\n\r\n /** The event to close/destroy this component */\r\n @Output() public close = new EventEmitter();\r\n\r\n /** The event with the feedback object for submit */\r\n @Output() public feedbackSubmit = new EventEmitter<UserFeedback>();\r\n\r\n /** User feedback message textarea element ref */\r\n @ViewChild('message') public message: ElementRef<HTMLTextAreaElement>;\r\n\r\n /** The user feedback object for submit */\r\n private userFeedback: UserFeedback;\r\n\r\n /** Has the user selected feedback (thumbs) */\r\n public hasFeedback: boolean = false;\r\n\r\n /** Has the user submitted feedback */\r\n public isSubmitted: boolean = false;\r\n\r\n /** The headers icon class */\r\n public headerIcon: string = 'hand-wave';\r\n\r\n /** The headers title language key */\r\n public headerTitle: string = 'rate-us';\r\n \r\n /** The description language key */\r\n public description: string;\r\n\r\n constructor() {}\r\n\r\n public ngOnInit(): void {\r\n this.description = 'experience.'+this.experience;\r\n this.userFeedback = {\r\n application: this.application,\r\n experience: this.experience,\r\n isPositive: null,\r\n message: ''\r\n };\r\n }\r\n\r\n /** \r\n * Give positive/negative feedback \r\n * @param isPositive is the feedback positive \r\n */\r\n public giveFeedback(isPositive:boolean): void {\r\n this.headerIcon = this.headerTitle = this.description = `thumbs-${isPositive ? 'up':'down'}`;\r\n this.hasFeedback = true;\r\n this.userFeedback.isPositive = isPositive;\r\n }\r\n\r\n /** Submits the users feedback */\r\n public submitFeedback():void {\r\n this.userFeedback.message = this.message.nativeElement.value;\r\n this.feedbackSubmit.emit(this.userFeedback);\r\n this.headerIcon = 'sparkles';\r\n this.headerTitle = this.description = 'thanks';\r\n this.isSubmitted = true;\r\n }\r\n\r\n /** Emit the event to close/destroy this component */\r\n public closeFeedbackTool(): void {\r\n this.close.emit(null);\r\n }\r\n}\r\n\r\n/** \r\n * The user feedback interface \r\n * @property application: string, The application this feedback is for\r\n * @property experience: string, The experience this feedback is for\r\n * @property isPositive: boolean, Is the feedback positive\r\n * @property message: string, The feedback message\r\n * */\r\nexport interface UserFeedback {\r\n /** The application this feedback is for */\r\n application?: string;\r\n /** The experience this feedback is for */\r\n experience?: string;\r\n /** Is the feedback positive */\r\n isPositive?: boolean;\r\n /** The feedback message */\r\n message?: string;\r\n}\r\n","<div class=\"feedback-tool\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"feedback-tool_label\" aria-describedby=\"feedback-tool_desc\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"feedback-tool__heading p-v-15 p-h-20\">\r\n <i class=\"fa-regular fa-{{headerIcon}} m-r-10 feedback-tool__heading__icon\" aria-hidden=\"true\"></i>\r\n <h4 id=\"feedback-tool_label\">{{'armature.feedback-tool.headings.'+headerTitle|translate}}</h4>\r\n <button (click)=\"closeFeedbackTool()\" fxHide fxShow.lt-sm mat-flat-button class=\"sof-button-icon-v2 m-l-auto\" theme=\"neutral\" emphasis=\"secondary\"\r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.close'|translate\">\r\n <i class=\"fa-regular fa-xmark\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"20px\" p-a-20>\r\n <p id=\"feedback-tool_desc\" class=\"feedback-tool__description m-t-0\">{{'armature.feedback-tool.descriptions.'+description|translate}}</p>\r\n @if (!isSubmitted) {\r\n @if (!hasFeedback) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"center center\" p-v-20>\r\n <button (click)=\"giveFeedback(true)\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\" \r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.thumbs-up'|translate\">\r\n <i class=\"fa-regular fa-thumbs-up\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button (click)=\"giveFeedback(false)\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\" \r\n [attr.aria-label]=\"'armature.feedback-tool.buttons.thumbs-down'|translate\">\r\n <i class=\"fa-regular fa-thumbs-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n } @else {\r\n <mat-form-field class=\"feedback-tool__message\">\r\n <label for=\"feedback-tool-message_textarea\" id=\"feedback-tool-message_label\" class=\"sr-only\">\r\n {{'armature.feedback-tool.message.sr-only-label'|translate}}\r\n </label>\r\n <textarea matInput #message id=\"feedback-tool-message_textarea\" rows=\"4\" maxlength=\"1000\" \r\n [placeholder]=\"'armature.feedback-tool.message.placeholder'|translate\" aria-labelledby=\"feedback-tool-message_label\"></textarea>\r\n <mat-hint [align]=\"'end'\">{{message.value.length}}/1000</mat-hint>\r\n </mat-form-field>\r\n <div class=\"sr-only\" aria-live=\"assertive\">\r\n {{message.value.length === 1000 ? ('armature.feedback-tool.message.sr-only-max-char-limit'|translate):''}}\r\n </div>\r\n }\r\n }\r\n <div fxLayout=\"row\" fxLayoutGap=\"16px\">\r\n @if (!isSubmitted) {\r\n <button (click)=\"closeFeedbackTool()\" \r\n fxHide fxShow.gt-xs mat-flat-button class=\"sof-button-v2 m-l-auto\" emphasis=\"secondary\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.close'|translate}}\r\n </button>\r\n @if (hasFeedback) {\r\n <button (click)=\"submitFeedback()\" mat-flat-button class=\"sof-button-v2 full-width-mobile\" emphasis=\"solid\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.submit'|translate}}\r\n </button>\r\n }\r\n } @else {\r\n <button (click)=\"closeFeedbackTool()\" \r\n mat-flat-button class=\"sof-button-v2 m-l-auto full-width-mobile\" emphasis=\"solid\" theme=\"neutral\">\r\n {{'armature.feedback-tool.buttons.got-it'|translate}}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n<div fxHide fxShow.lt-sm class=\"mobile-space\"></div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FeedbackToolComponent } from './components/feedback-tool/feedback-tool.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nconst materialModules = [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule\r\n];\r\n\r\n/** The feedback-tool module */\r\n@NgModule({\r\n declarations: [\r\n FeedbackToolComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n ...materialModules\r\n ],\r\n exports: [\r\n FeedbackToolComponent\r\n ]\r\n})\r\nexport class FeedbackToolModule { }\r\n","/** Public API surface for components */\r\nexport * from './feedback-tool.module';\r\n// component\r\nexport * from './components/feedback-tool/feedback-tool.component';\r\n","import { Component, Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n/** The component print service */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ComponentSavePrintService {\r\n /** Emits when a component is requested to be save/printed */\r\n public readonly savePrintComponent$: Observable<any>;\r\n\r\n /** The component to print behavior subject */\r\n private readonly componentSavePrintBs: BehaviorSubject<any> = new BehaviorSubject<any>(undefined);\r\n\r\n /** Constructs the service */\r\n constructor() {\r\n this.savePrintComponent$ = this.componentSavePrintBs.asObservable()\r\n .pipe(filter(c => !!c));\r\n }\r\n\r\n /**\r\n * Save/Print the provided component\r\n * @param component The component to save/print\r\n */\r\n public savePrintComponent(component: any): void {\r\n this.componentSavePrintBs.next(component);\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, ComponentRef, ElementRef, OnDestroy, OnInit, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ComponentSavePrintService } from '../../services/component-save-print.service';\r\n\r\n/** The component save and print component */\r\n@Component({\r\n selector: 'sof-ar-component-save-print',\r\n templateUrl: './component-save-print.component.html',\r\n styleUrls: ['./component-save-print.component.scss'],\r\n standalone: false\r\n})\r\nexport class ComponentSavePrintComponent implements OnInit, OnDestroy {\r\n\r\n /** The iframe reference */\r\n @ViewChild('iframe', { static: false }) public iframeRef: ElementRef;\r\n\r\n /** The iframe doc */\r\n private doc: any;\r\n\r\n /** The printed component reference */\r\n private componentRef: ComponentRef<Component> | undefined;\r\n\r\n /** The component subscription */\r\n private readonly componentSub: Subscription = new Subscription();\r\n\r\n /**\r\n * Constructs the component\r\n * @param cfr The component factory resolver\r\n * @param vcr The view container reference\r\n * @param componentSavePrintService The component save print service\r\n */\r\n constructor(\r\n private readonly cfr: ComponentFactoryResolver,\r\n private readonly vcr: ViewContainerRef,\r\n private readonly componentSavePrintService: ComponentSavePrintService\r\n ) { }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.componentSub.add(\r\n this.componentSavePrintService.savePrintComponent$.subscribe(c => {\r\n this.print(c);\r\n })\r\n );\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n this.componentSub.unsubscribe();\r\n }\r\n\r\n /**\r\n * Prints the component\r\n * @param component The component type to print\r\n */\r\n public print(component: any): void {\r\n this.attachStyles(this.iframeRef.nativeElement.contentWindow);\r\n this.doc = this.iframeRef?.nativeElement.contentDocument || this.iframeRef.nativeElement.iFrameRef.contentWindow;\r\n const compFactory = this.cfr.resolveComponentFactory(component);\r\n this.componentRef = this.vcr.createComponent(compFactory);\r\n this.componentRef.location.nativeElement.id = 'sofArComponentSavePrintContainer';\r\n this.doc.body.appendChild(this.componentRef.location.nativeElement);\r\n const iframe = this.iframeRef.nativeElement;\r\n iframe.contentWindow.onafterprint = () => {\r\n iframe.contentDocument.body.innerHTML = '';\r\n };\r\n\r\n this.waitForImageToLoad(\r\n iframe,\r\n () => { iframe.contentWindow.print(); }\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to execute print function on hold until images finish loading\r\n * @param iframe The iframe to load images on\r\n * @param done The function to wait execution\r\n */\r\n private waitForImageToLoad(iframe: HTMLIFrameElement, done: Function): void {\r\n const interval = setInterval(() => {\r\n const allImages = iframe.contentDocument.body.querySelectorAll(\r\n 'img'\r\n );\r\n const loaded = Array.from({ length: allImages.length }).fill(false);\r\n allImages.forEach((img: HTMLImageElement, idx) => {\r\n loaded[idx] = img.complete;\r\n });\r\n if (loaded.every(c => !!c)) {\r\n clearInterval(interval);\r\n done();\r\n }\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Helper function to append all the styles to targe window\r\n * @param targetWindow The target window\r\n */\r\n private attachStyles(targetWindow: Window): void {\r\n // Copy styles from parent window\r\n document.querySelectorAll('style')\r\n .forEach(htmlElement => {\r\n targetWindow.document.head.appendChild(htmlElement.cloneNode(true));\r\n });\r\n // Copy stylesheet link from parent window\r\n document.querySelectorAll('link')\r\n .forEach(htmlElement => {\r\n targetWindow.document.head.appendChild(htmlElement.cloneNode(true));\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"save-print-container\">\r\n <iframe #iframe class=\"save-print\" tabindex=\"-1\">\r\n </iframe>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ComponentSavePrintService } from './services/component-save-print.service';\r\nimport { ComponentSavePrintComponent } from './components/component-save-print/component-save-print.component';\r\n\r\n/** The component save print module */\r\n@NgModule({\r\n declarations: [ComponentSavePrintComponent],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n ComponentSavePrintService\r\n ],\r\n exports: [\r\n ComponentSavePrintComponent\r\n ]\r\n})\r\nexport class SofArComponentSavePrintModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, Signal, WritableSignal, signal } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Observable, Subscription, lastValueFrom } from 'rxjs';\r\nimport { EntityDto } from '../models/entity-dto';\r\nimport { EntityConfigBase } from '../models/entity-config-base';\r\n\r\n/** The queue session storage prefix */\r\nexport const ENTITY_SESSION_STORAGE_PREFIX = \"mfe.entity.\";\r\n\r\n/** The session storage queue name key */\r\nexport const ENTITY_SS_CONFIG_PREFIX = `${ENTITY_SESSION_STORAGE_PREFIX}entity-config-prefix`;\r\n\r\n@Injectable()\r\nexport class EntityHelperService<TConfig extends EntityConfigBase> {\r\n\r\n /** The configuration behavior subject */\r\n private readonly configBs: BehaviorSubject<TConfig> = new BehaviorSubject<TConfig>(undefined);\r\n\r\n /** The activated route subscription */\r\n private activatedRouteSub: Subscription;\r\n\r\n /** The configuration observable */\r\n public readonly config$: Observable<TConfig>;\r\n\r\n /** The configurations */\r\n public get config(): TConfig {\r\n return this.configBs.value;\r\n }\r\n\r\n /** Sets the configurations */\r\n public set config(value: TConfig) {\r\n this.configBs.next(value);\r\n }\r\n\r\n /** isLoaded behavior subject */\r\n private readonly isLoadedBs: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n /** Is loaded observable */\r\n public readonly isLoaded$: Observable<boolean>;\r\n\r\n /** The current entity */\r\n public currentEntity: WritableSignal<EntityDto> = signal(undefined);\r\n\r\n /**\r\n * Constructor\r\n * @param http The http client\r\n * @param translateService The translate service\r\n */\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly translateService: TranslateService\r\n ) {\r\n this.isLoaded$ = this.isLoadedBs.asObservable();\r\n }\r\n\r\n /**\r\n * Initializes the current entity from route params\r\n * @param activatedRoute The activated route\r\n */\r\n public initializeRouteParams(activatedRoute: ActivatedRoute): void {\r\n this.activatedRouteSub = activatedRoute.paramMap.subscribe(paramMap => {\r\n const taskId = paramMap.get('taskId');\r\n const drawerId = paramMap.get('drawerId');\r\n const entityId = paramMap.get('entityId');\r\n document.dispatchEvent(new CustomEvent('queue-reload-ids', {}));\r\n\r\n this.currentEntity.set({ taskId: +taskId, drawerId: +drawerId, folderId: +entityId })\r\n this.activatedRouteSub?.unsubscribe();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the configurations\r\n */\r\n public initializeConfigurations(): void {\r\n const configPrefix = window.sessionStorage.getItem(ENTITY_SS_CONFIG_PREFIX) || 'common';\r\n if (configPrefix) {\r\n const configProm = lastValueFrom(this.http.get<{ [key: string]: TConfig }>(`./assets/configurations/entities.appsettings.json`));\r\n const enLangProm = lastValueFrom(this.http.get<{ [key: string]: JSON }>(`./assets/configurations/entities.en.json`));\r\n\r\n Promise.all([configProm, enLangProm]).then(([config, lang]) => {\r\n const entityConfig = config[configPrefix];\r\n const entityLang = lang[configPrefix];\r\n return this.loadConfigurations(configPrefix, entityConfig, entityLang);\r\n })\r\n .catch(e => {\r\n console.warn(e);\r\n return this.loadConfigurations(configPrefix)\r\n });\r\n }\r\n else {\r\n this.translateService.setDefaultLang('en');\r\n this.configBs.next({} as any);\r\n this.isLoadedBs.next(true);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param taskId The task id\r\n * @param drawerId The drawer id\r\n * @param entityId The entity id\r\n * @param configPrefix Teh config prefix\r\n * @param entityConfig The entity config\r\n * @param enLangConfig The en lang config\r\n */\r\n public loadConfigurations(configPrefix: string, entityConfig: TConfig = undefined, enLangConfig: JSON = undefined): void {\r\n\r\n const initConfig = (config: TConfig, lang: JSON) => {\r\n this.configBs.next(config);\r\n this.translateService.setTranslation('en', lang, false);\r\n this.translateService.setDefaultLang('en');\r\n this.isLoadedBs.next(true);\r\n }\r\n\r\n if (!entityConfig || !enLangConfig) {\r\n const configProm = lastValueFrom(this.http.get<TConfig>(`./assets/configurations/${configPrefix}.entity.appsettings.json`));\r\n const enLangProm = lastValueFrom(this.http.get<JSON>(`./assets/configurations/${configPrefix}.entity.en.json`));\r\n\r\n Promise.all([configProm, enLangProm]).then(([config, lang]) => {\r\n initConfig(config, lang);\r\n })\r\n .catch(e => {\r\n console.warn(e);\r\n });\r\n }\r\n else {\r\n initConfig(entityConfig, enLangConfig);\r\n }\r\n }\r\n\r\n public resetLoading(): void {\r\n this.isLoadedBs.next(false);\r\n this.configBs.next(undefined);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EntityHelperService } from './services/entity-helper.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule\r\n ],\r\n providers: [\r\n EntityHelperService\r\n ]\r\n})\r\nexport class MfeModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { EntityHelperService } from '../../services/entity-helper.service';\r\nimport { EntityDto } from '../../models/entity-dto';\r\nimport { EntityConfigBase } from '../../models/entity-config-base';\r\n\r\n/** The entity base component */\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\r\nexport abstract class EntityBaseComponent<TConfig extends EntityConfigBase> implements OnInit, OnDestroy {\r\n\r\n /** True if is expanded */\r\n protected isExpanded: boolean = false;\r\n\r\n /**\r\n * Constructor\r\n * @param activatedRoute The activated route\r\n * @param entityHelper The entity helper service\r\n */\r\n constructor(\r\n private readonly activatedRoute: ActivatedRoute,\r\n protected readonly entityHelper: EntityHelperService<TConfig>\r\n ) {\r\n document.addEventListener('task-row-click', this.taskRowClick)\r\n }\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n this.entityHelper.initializeRouteParams(this.activatedRoute);\r\n this.entityHelper.initializeConfigurations();\r\n }\r\n\r\n /** Life cycle hook for component destruction */\r\n public ngOnDestroy(): void {\r\n document.removeEventListener('task-row-click', this.taskRowClick);\r\n }\r\n\r\n public abstract onRowClick(entity: EntityDto): void;\r\n\r\n /** Navigate back to list view */\r\n public returnToQueueView(): void {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {}));\r\n document.dispatchEvent(new CustomEvent('close-entity-view', {}));\r\n }\r\n\r\n /** Copies the entity url */\r\n public copyEntityUrl(): void {\r\n const url = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}${this.entityHelper.config.copyEntityRoutePrefix || ''}${this.entityHelper.currentEntity().taskId ? `/task/${this.entityHelper.currentEntity().taskId}` : ``}/drawer/${this.entityHelper.currentEntity().drawerId}/entity/${this.entityHelper.currentEntity().folderId}/profiles`;\r\n navigator.clipboard.writeText(url);\r\n }\r\n\r\n /** Reloads the entity */\r\n public reloadEntity(): void {\r\n let selectedFolder = this.entityHelper.currentEntity();\r\n // create another task row click event for the entity to load again\r\n document.dispatchEvent(new CustomEvent('task-row-click', {\r\n detail: {\r\n folderId: selectedFolder.folderId,\r\n taskId: selectedFolder.taskId,\r\n drawerId: selectedFolder.drawerId,\r\n // Set override to force API call\r\n override: true\r\n }\r\n }));\r\n }\r\n\r\n /** Opens the entity view in a new route */\r\n public openEntityView(): void {\r\n if (!this.isExpanded) {\r\n document.dispatchEvent(new CustomEvent('expand-entity-view', {}));\r\n this.isExpanded = true;\r\n }\r\n else {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {}));\r\n this.isExpanded = false;\r\n }\r\n }\r\n\r\n /**\r\n * The task row click event\r\n * @param event The event\r\n */\r\n private taskRowClick(event: any): void {\r\n this.onRowClick(event.detail)\r\n }\r\n\r\n}\r\n","/** The custom work flow action event */\r\nexport interface CustomWorkFlowActionEvent {\r\n /** The data type */\r\n dataType: string;\r\n /** The data */\r\n data: Array<EntityDto>;\r\n}\r\n\r\n/** The entity dto */\r\nexport interface EntityDto<T = any> {\r\n /** The folder ID */\r\n folderId: number;\r\n /** The drawer ID */\r\n drawerId: number;\r\n /** The task ID */\r\n taskId: number;\r\n /** The folder data */\r\n folderData?: Folder;\r\n /** The user defined data */\r\n userDefinedData?: T;\r\n}\r\n\r\n/** The folder interface */\r\nexport interface Folder {\r\n accessCount?: number;\r\n accessTime?: Date;\r\n acl?: number;\r\n age?: number;\r\n area?: string;\r\n assignedGroup?: string;\r\n assignedUser?: string;\r\n attachmentCount?: number;\r\n category?: number;\r\n class?: number;\r\n creationTime?: Date;\r\n creatorGroupId?: number;\r\n creatorUserId?: number;\r\n crossFRId?: number;\r\n crossReferenceId?: number;\r\n id: number;\r\n modificationTime?: Date;\r\n modifierGroupId?: number;\r\n modifierUserId?: number;\r\n name?: string;\r\n noteCount?: number;\r\n ownerGroupId?: number;\r\n ownerUserId?: number;\r\n profileCount?: number;\r\n profiles?: Array<Profile>;\r\n referenceCount?: number;\r\n reservedInt1?: number;\r\n reservedInt2?: number;\r\n reservedString1?: string;\r\n resolutionTime?: Date;\r\n sState?: string;\r\n state?: number;\r\n subclass?: number;\r\n subtype?: number;\r\n template: any;\r\n type?: number;\r\n};\r\n\r\n/** The profile interface */\r\nexport interface Profile {\r\n acl: number;\r\n dateTimeProfile1?: Date;\r\n dateTimeProfile2?: Date;\r\n dateTimeProfile3?: Date;\r\n dateTimeProfile4?: Date;\r\n doubleProfile1?: number;\r\n doubleProfile2?: number;\r\n doubleProfile3?: number;\r\n doubleProfile4?: number;\r\n extensionCount: number;\r\n extensions?: Array<Extension>;\r\n folderId: number;\r\n id: number;\r\n intProfile1?: number;\r\n intProfile2?: number;\r\n intProfile3?: number;\r\n intProfile4?: number;\r\n intProfile5?: number;\r\n intProfile6?: number;\r\n intProfile7?: number;\r\n intProfile8?: number;\r\n modificationTime?: Date;\r\n modifierUserId: number;\r\n ownerGroupId: number;\r\n ownerUserId: number;\r\n stringProfile1?: string;\r\n stringProfile2?: string;\r\n stringProfile3?: string;\r\n stringProfile4?: string;\r\n stringProfile5?: string;\r\n stringProfile6?: string;\r\n stringProfile7?: string;\r\n stringProfile8?: string;\r\n stringProfile9?: string;\r\n stringProfile10?: string;\r\n stringProfile11?: string;\r\n stringProfile12?: string;\r\n stringProfile13?: string;\r\n stringProfile14?: string;\r\n stringProfile15?: string;\r\n stringProfile16?: string;\r\n stringProfile17?: string;\r\n stringProfile18?: string;\r\n stringProfile19?: string;\r\n stringProfile20?: string;\r\n stringProfile21?: string;\r\n stringProfile22?: string;\r\n stringProfile23?: string;\r\n stringProfile24?: string;\r\n stringProfile25?: string;\r\n stringProfile26?: string;\r\n stringProfile27?: string;\r\n stringProfile28?: string;\r\n stringProfile29?: string;\r\n stringProfile30?: string;\r\n stringProfile31?: string;\r\n stringProfile32?: string;\r\n type: number;\r\n};\r\n\r\n/** The extension interface */\r\nexport interface Extension {\r\n dextension1?: number;\r\n dextension2?: number;\r\n dextension3?: number;\r\n dextension4?: number;\r\n dextension5?: number;\r\n dextension6?: number;\r\n dextension7?: number;\r\n dextension8?: number;\r\n nRowNum?: number;\r\n nextension1?: number;\r\n nextension2?: number;\r\n nextension3?: number;\r\n nextension4?: number;\r\n nextension5?: number;\r\n nextension6?: number;\r\n nextension7?: number;\r\n nextension8?: number;\r\n nextension9?: number;\r\n nextension10?: number;\r\n nextension11?: number;\r\n nextension12?: number;\r\n nextension13?: number;\r\n nextension14?: number;\r\n nextension15?: number;\r\n nextension16?: number;\r\n nextensionid: number;\r\n ntype: number;\r\n profileId: number;\r\n sextension1?: string;\r\n sextension2?: string;\r\n sextension3?: string;\r\n sextension4?: string;\r\n sextension5?: string;\r\n sextension6?: string;\r\n sextension7?: string;\r\n sextension8?: string;\r\n sextension9?: string;\r\n sextension10?: string;\r\n sextension11?: string;\r\n sextension12?: string;\r\n sextension13?: string;\r\n sextension14?: string;\r\n sextension15?: string;\r\n sextension16?: string;\r\n sextension17?: string;\r\n sextension18?: string;\r\n sextension19?: string;\r\n sextension20?: string;\r\n sextension21?: string;\r\n sextension22?: string;\r\n sextension23?: string;\r\n sextension24?: string;\r\n sextension25?: string;\r\n sextension26?: string;\r\n sextension27?: string;\r\n sextension28?: string;\r\n sextension29?: string;\r\n sextension30?: string;\r\n sextension31?: string;\r\n sextension32?: string;\r\n textension1?: Date;\r\n textension2?: Date;\r\n textension3?: Date;\r\n textension4?: Date;\r\n textension5?: Date;\r\n textension6?: Date;\r\n textension7?: Date;\r\n textension8?: Date;\r\n};","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/** Entity inject wrapper */\r\n@Component({\r\n selector: 'lib-entity-inject-wrapper',\r\n imports: [\r\n MatTooltipModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n FlexLayoutModule\r\n ],\r\n templateUrl: './entity-inject-wrapper.component.html',\r\n styleUrl: './entity-inject-wrapper.component.scss'\r\n})\r\nexport class EntityInjectWrapperComponent implements OnInit {\r\n /** The expand clicked event emitter */\r\n @Output() public expandClicked: EventEmitter<any> = new EventEmitter();\r\n\r\n /** The close clicked event emitter */\r\n @Output() public closeClicked: EventEmitter<any> = new EventEmitter();\r\n\r\n /** The default size of the component on open */\r\n @Input() public defaultSize: 'split' | 'full' = 'split';\r\n\r\n /** True when the entity view is expanded */\r\n public isExpanded: boolean = false;\r\n \r\n /** The active entity storage key */\r\n private readonly activeEntityStorageKey: string = 'selected-active-entity';\r\n\r\n /** The active entity id */\r\n private activeEntityId: string;\r\n\r\n /** Life cycle hook for component initialization */\r\n public ngOnInit(): void {\r\n if (this.defaultSize === 'full') {\r\n this.openEntityView();\r\n }\r\n this.activeEntityId = window.sessionStorage.getItem(this.activeEntityStorageKey);\r\n }\r\n\r\n /** Opens the entity view to full screen */\r\n public openEntityView(): void {\r\n if (this.isExpanded) {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n }\r\n else {\r\n document.dispatchEvent(new CustomEvent('expand-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n }\r\n this.isExpanded = !this.isExpanded;\r\n this.expandClicked.emit(this.isExpanded);\r\n }\r\n\r\n /** Closes the entity view */\r\n public returnToQueueView(): void {\r\n document.dispatchEvent(new CustomEvent('collapse-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n document.dispatchEvent(new CustomEvent('close-entity-view', {\r\n detail: {\r\n guid: this.activeEntityId\r\n }\r\n }));\r\n this.closeClicked.emit();\r\n }\r\n}\r\n","<div fxLayout=\"column\" class=\"top-container\">\r\n <div fxFlex=\"row\" fxLayoutAlign=\"end center\" class=\"button-container\">\r\n <button id=\"expandBtn\" (click)=\"openEntityView()\" mat-flat-button class=\"icon-button sof-button-v2\"\r\n matTooltip=\"{{'entity.common.expand' | translate}}\" theme=\"primary\" emphasis=\"floating\">\r\n <i class=\"ph ph-arrows-out-simple\"></i>\r\n </button>\r\n \r\n <!-- Close -->\r\n <button id=\"closeBtn\" [disabled]=\"false\" (click)=\"returnToQueueView()\" mat-flat-button\r\n matTooltip=\"{{'entity.common.close' | translate}}\" class=\"icon-button sof-button-v2\" theme=\"primary\"\r\n emphasis=\"floating\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n </div>\r\n\r\n <div fxFlex=\"column\" class=\"content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","/** Public API Surface of armature */\r\nexport * from './lib/armature.module';\r\n\r\n// core\r\nexport * from './lib/core/services/session.service';\r\nexport * from './lib/core/services/user-entity.service';\r\nexport * from './lib/core/services/authorization.service';\r\n\r\nexport * from './lib/core/models/data-store-config';\r\nexport * from './lib/core/models/typed-session';\r\nexport * from './lib/core/models/http-verbs';\r\nexport * from './lib/core/models/session-config';\r\nexport * from './lib/core/models/route-path';\r\nexport * from './lib/core/models/styles';\r\nexport * from './lib/core/models/user-entity-service-config';\r\nexport * from './lib/core/client-generated/model/models';\r\nexport * from './lib/core/functions/guid';\r\nexport * from './lib/core/functions/naming-convention';\r\nexport * from './lib/core/functions/route-to-pre-login-route';\r\nexport * from './lib/core/initializer/abstract-startup-service';\r\nexport * from './lib/core/services/base-config.service';\r\nexport * from './lib/core/services/default-config.service';\r\nexport * from './lib/core/models/base-config';\r\nexport * from './lib/core/models/oidc-auth-settings';\r\nexport * from './lib/core/models/header-config';\r\nexport * from './lib/core/models/navigation-config';\r\nexport * from './lib/core/models/subdomain-config';\r\nexport * from './lib/core/services/custom-auth-config.service'\r\nexport * from './lib/core/components/app-template/app-template.component';\r\nexport * from './lib/core/services/banner.service';\r\nexport {\r\n SESSION_CONFIG,\r\n WINDOW,\r\n USER_ENTITY_SERVICE_CONFIG,\r\n preSignInRouteStorageKey,\r\n languageStorageKey,\r\n FEDERATED_MODULE_ID\r\n} from './lib/core/models/constants';\r\n\r\n// modules\r\nexport * from './lib/distributed-cache/distributed-cache-api';\r\nexport * from './lib/error/error-api';\r\nexport * from './lib/faq/faq-api';\r\nexport * from './lib/footer/footer-api';\r\nexport * from './lib/forms/forms-api';\r\nexport * from './lib/header/header-api';\r\nexport * from './lib/navigation/navigation-api';\r\nexport * from './lib/oauth/oauth-api';\r\nexport * from './lib/rbac/rbac-api';\r\nexport * from './lib/rum/rum-api';\r\nexport * from './lib/saml/saml-api';\r\nexport * from './lib/theming/theme-api';\r\nexport * from './lib/alert-banner/alert-banner-api';\r\nexport * from './lib/base-components/base-component-api';\r\nexport * from './lib/sof-pipe/sof-pipe.api';\r\nexport * from './lib/resize-panels/resize-panels-api';\r\nexport * from './lib/feedback-tool/feedback-tool-api';\r\n\r\nexport * from './lib/component-save-print/sof-ar-component-save-print.module';\r\nexport * from './lib/component-save-print/components/component-save-print/component-save-print.component';\r\nexport * from './lib/component-save-print/services/component-save-print.service';\r\nexport * from './lib/rbac/services/tokens';\r\n\r\n// MFE exports\r\nexport * from './lib/mfe/mfe.module';\r\nexport * from './lib/mfe/services/entity-helper.service';\r\nexport * from './lib/mfe/components/entity-base/entity-base.component';\r\nexport * from './lib/mfe/models/entity-config-base';\r\nexport * from './lib/mfe/models/entity-dto';\r\nexport * from './lib/navigation/components/b2b-nav/b2b-nav.component';\r\nexport * from './lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlertBannerService","i2","i3","i4","i5","i6","materialModules","BASE_PATH","COLLECTION_FORMATS","Configuration","i2.Configuration","SessionService","i1","i3.HybridSamlOauthService","i4.CustomAuthConfigService","i3.BannerService","i4.AuthorizationService","i5.BaseConfigService","i7","i8","i9","i10","i11","i12","i17","i5.HybridSamlOauthService","i13","i14","filter","i1.BaseConfigService","i3.FederatedModuleService","i6.ArmatureNavigationComponent","i7.ArmatureHeaderComponent","i8.ArmatureFooterComponent","i9.AlertBannerComponent","i13.B2bNavComponent","components","i8.NumbersOnlyDirective","i8.SofCompareAddressPipe","FormsModule","i1.UserEntityService","ServerSessionService","i1.SessionService","i2.CacheService","i1.RbacConfig","i3.RoleNavService","i1.Oauth2RoleService","i2.SessionService","i1.RumConfig","i1.AbstractSamlService","i1.ComponentSavePrintService","i2.EntityHelperService"],"mappings":"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"}
|