@spicainternational/ngx-sds-components 9.2.0-beta.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -16
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-app-switcher.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-avatar.mjs +4 -4
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-avatar.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-badge.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-badge.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-callout.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-callout.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-date-pipes.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-drawer.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-drawer.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-duration-box.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-duration-box.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-duration-pipe.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-intersection.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-layout.mjs +10 -10
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-layout.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-message.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-message.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs +4 -4
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-navigation.mjs +81 -139
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-number-box.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-number-box.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-page-header.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-page-header.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-pane.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-pane.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-quick-info.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-quick-info.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-ripple.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-segmented-control.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-side-bar.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-side-bar.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-static-value.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-static-value.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-table-actions.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-table-actions.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-timeline.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-timer.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-tooltip.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-tooltip.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-utils-date-time.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-utils.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/ripple/sds-ripple.css +20 -20
- package/types/spicainternational-ngx-sds-components-src-lib-navigation.d.ts +26 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-navigation.mjs","sources":["../../../projects/ngx-sds-components/src/lib/navigation/utils/navigation.utils.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-route-link/navigation-route-link.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-route-link/navigation-route-link.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-group/navigation-group.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-group/navigation-group.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-separator/navigation-separator.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-separator/navigation-separator.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-header/navigation-header.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-header/navigation-header.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-external-link/navigation-external-link.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-external-link/navigation-external-link.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-collapsible-frame/navigation-collapsible-frame.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-collapsible-frame/navigation-collapsible-frame.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-callout/navigation-callout.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-callout/navigation-callout.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-container/navigation-container.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-container/navigation-container.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.html","../../../projects/ngx-sds-components/src/lib/navigation/product-home/product-home.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/product-home/product-home.component.html","../../../projects/ngx-sds-components/src/lib/navigation/pipes/active-route-pattern.pipe.ts","../../../projects/ngx-sds-components/src/lib/navigation/spicainternational-ngx-sds-components-src-lib-navigation.ts"],"sourcesContent":["export function removeQueryParams(url: string): string {\r\n return url.split('?')[0];\r\n}\r\n\r\nexport function isUrlPartOfNavigationGroup(\r\n currentUrl: string[], \r\n nestedRoutes: string[], \r\n defaultGroupUrl: string): boolean {\r\n\r\n if (!currentUrl || currentUrl?.length === 0) {\r\n return false;\r\n }\r\n \r\n defaultGroupUrl = defaultGroupUrl.replace('/', '');\r\n \r\n if (nestedRoutes?.length > 0) {\r\n // Nested routes are provided. We should find out if current url is on the list of\r\n // the provided nested routes \r\n const currentUrlParts = currentUrl.slice();//.reverse();\r\n const routeItemIsPartOfNestedRoutes = nestedRoutes.some((routeName) => {\r\n const routeParts = routeName.split('/');//.reverse();\r\n return isSubsetOrSame(currentUrlParts, routeParts);\r\n });\r\n if (routeItemIsPartOfNestedRoutes) {\r\n return true;\r\n }\r\n }\r\n\r\n const currentUrlContainsGroupUrl = currentUrl.some(path => path === defaultGroupUrl);\r\n return currentUrlContainsGroupUrl;\r\n }\r\n\r\nfunction isSubsetOrSame(mainArray: string[], subArray: string[]): boolean {\r\n // if we have super wildcard we need to check reversed array\r\n // if (subArray.includes('**')) {\r\n const reversedMainArray = mainArray.slice(); //.reverse();\r\n const reversedSubArray = subArray.slice(); //.reverse();\r\n\r\n for (let i = 0; i < reversedSubArray.length; i++) {\r\n if (reversedSubArray[i] === '**') {\r\n return true;\r\n }\r\n if ((reversedMainArray[i] !== reversedSubArray[i]) && reversedSubArray[i] !== '*') {\r\n return false;\r\n }\r\n }\r\n return true;\r\n\r\n // } else {\r\n // if (subArray.length > mainArray.length) return false;\r\n\r\n // for (let i = 0; i < subArray.length; i++) {\r\n // if ((mainArray[i] !== subArray[i]) && subArray[i] !== '*') {\r\n // return false;\r\n // }\r\n // }\r\n // return true;\r\n // }\r\n}","import {\r\n Component,\r\n input,\r\n model,\r\n inject,\r\n computed,\r\n Signal\r\n} from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\nimport {\r\n Router,\r\n NavigationEnd,\r\n RouterLink,\r\n} from '@angular/router';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { filter, map } from 'rxjs';\r\nimport {\r\n isUrlPartOfNavigationGroup,\r\n removeQueryParams,\r\n} from '../utils/navigation.utils';\r\n\r\n@Component({\r\n selector: 'sds-navigation-route-link',\r\n templateUrl: './navigation-route-link.component.html',\r\n styleUrls: ['./navigation-route-link.component.scss'],\r\n imports: [NgIf, RouterLink]\r\n})\r\nexport class SdsNavigationRouteLinkComponent implements CollapsibleNavigationEntity {\r\n /**\r\n * This variable is used as 'routerLink' attribute in the anchor tag.\r\n *\r\n * Is named 'link' to avoid conflict with the 'routerLink' directive.\r\n */\r\n link = input<string>('');\r\n\r\n /** @deprecated Use `activeRoutePattern` instead. */\r\n nestedLinks = input<string[]>([]);\r\n text = input<string>('');\r\n\r\n /**\r\n * This variable can be used to provide a pattern for active route. \r\n * It has higher priority than default route matching (checking if current route starts with provided link or is part of nested links). \r\n * This is useful when we have more complex logic to determine if route is active.\r\n *\r\n * @memberof SdsNavigationRouteLinkComponent\r\n */\r\n activeRoutePattern = input<RegExp | string>('');\r\n\r\n additionalInfo = input<string | undefined>(undefined);\r\n\r\n disabled = input<boolean>(false);\r\n isCollapsed = model<boolean>(false);\r\n\r\n /** @deprecated Use `activeRoutePattern` instead. */\r\n ignoreQueryParamsInActiveRoute = input<boolean>(false);\r\n\r\n #router = inject(Router);\r\n\r\n #routerUrl: Signal<string>;\r\n\r\n constructor() {\r\n this.#routerUrl = toSignal(\r\n this.#router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n map((event) => (event as NavigationEnd).urlAfterRedirects),\r\n ),\r\n { initialValue: this.#router.url },\r\n );\r\n }\r\n\r\n #currentUrl = computed(() => {\r\n const activeRoute = this.ignoreQueryParamsInActiveRoute()\r\n ? removeQueryParams(this.#routerUrl())\r\n : this.#routerUrl();\r\n\r\n return activeRoute.split('/').filter((p) => p.length > 0);\r\n });\r\n\r\n #activeRoutePatternRegExp = computed(() => {\r\n if (!this.activeRoutePattern()) {\r\n return null;\r\n } \r\n if (typeof this.activeRoutePattern() === 'string') {\r\n return new RegExp(this.activeRoutePattern() as string);\r\n } \r\n return this.activeRoutePattern() as RegExp;\r\n });\r\n\r\n protected isActive = computed(() => {\r\n // If activeRoutePattern is provided, we should use it to determine if route is active\r\n if (this.#activeRoutePatternRegExp()) {\r\n return this.#activeRoutePatternRegExp()!.test(this.#routerUrl());\r\n }\r\n // Otherwise we should check if current route is part of navigation group (either default link or nested links)\r\n const currentUrl = this.#currentUrl();\r\n const nestedLinks = this.nestedLinks();\r\n const defaultLink = this.link();\r\n const isActive = isUrlPartOfNavigationGroup(currentUrl, nestedLinks, defaultLink);\r\n\r\n return isActive;\r\n });\r\n}\r\n","<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\r\n<div \r\n class=\"sds-navigation-router-link sds-navigation-item-container\"\r\n [class.disabled]=\"disabled()\"\r\n [class.active]=\"isActive()\"\r\n [title]=\"isCollapsed() ? text() : ''\"\r\n >\r\n \r\n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800 sds-fs-93\" \r\n [routerLink]=\"disabled() ? null : link()\"\r\n >\r\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!isCollapsed()\">\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text() }}\r\n </div>\r\n <span *ngIf=\"additionalInfo()\"\r\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\r\n >{{ additionalInfo() }}</span\r\n > \r\n </ng-container>\r\n </div>\r\n </a>\r\n</div>","import {\r\n Component,\r\n ContentChildren,\r\n input,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n signal,\r\n model,\r\n SimpleChanges,\r\n computed\r\n} from '@angular/core';\r\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\r\nimport { SdsNavigationRouteLinkComponent } from '../navigation-route-link/navigation-route-link.component';\r\n\r\nimport { faAngleUp, faAngleDown } from '@fortawesome/pro-regular-svg-icons';\r\nimport { filter, Subject, takeUntil } from 'rxjs';\r\nimport { isUrlPartOfNavigationGroup, removeQueryParams } from '../utils/navigation.utils';\r\nimport { DxoPositionModule } from 'devextreme-angular/ui/nested';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgIf } from '@angular/common';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\n\r\n@Component({\r\n selector: 'sds-navigation-group',\r\n templateUrl: './navigation-group.component.html',\r\n styleUrls: ['./navigation-group.component.scss'],\r\n imports: [\r\n RouterLink,\r\n NgIf,\r\n FaIconComponent,\r\n DxPopoverModule,\r\n DxoPositionModule\r\n ]\r\n})\r\nexport class SdsNavigationGroupComponent implements OnInit, OnDestroy, CollapsibleNavigationEntity, OnChanges {\r\n /**\r\n @deprecated Use `activeRoutePattern` instead. \r\n * List of paths allowed/expected within this module.\r\n * These are paths that are not accessible through child navigation\r\n * elements, but through links in other parts of the application (e.g. link\r\n * on form)\r\n */\r\n private _navigationGroupNestedRoutes: string[] = [];\r\n\r\n /** @deprecated Use `activeRoutePattern` instead. */\r\n @Input()\r\n set navigationGroupNestedRoutes(value: string[]) {\r\n this._navigationGroupNestedRoutes = value;\r\n }\r\n get navigationGroupNestedRoutes() {\r\n return this._navigationGroupNestedRoutes;\r\n }\r\n\r\n @Input() text: string = '';\r\n @Input() icon: string = '';\r\n @Input() defaultRouterLink: string = '';\r\n @Input() reverse = false;\r\n\r\n /** @deprecated Use `activeRoutePattern` instead. */\r\n @Input() ignoreQueryParamsInActiveRoute = false;\r\n\r\n @Input() disabled = false;\r\n @Input() showPopover = false;\r\n @Input() showPopoverHeader = false;\r\n\r\n lightStyle = input<boolean>(true);\r\n\r\n \r\n /**\r\n * This variable can be used to provide a pattern for active route. \r\n * It has higher priority than default route matching (checking if current route starts with provided link or is part of nested links). \r\n * This is useful when we have more complex logic to determine if route is active.\r\n *\r\n * @memberof SdsNavigationGroupComponent\r\n */\r\n activeRoutePattern = input<RegExp | string>('');\r\n\r\n additionalInfo = input<string | undefined>(undefined);\r\n\r\n @ContentChildren(SdsNavigationRouteLinkComponent)\r\n routerLinkComponents: QueryList<SdsNavigationRouteLinkComponent> = new QueryList<SdsNavigationRouteLinkComponent>();\r\n\r\n active: boolean = false;\r\n\r\n isPopoverVisible = signal(false);\r\n\r\n faAngleUpRegular = faAngleUp;\r\n faAngleDownRegular = faAngleDown;\r\n\r\n /**\r\n * Current app URL (e.g. ['layout-showcase', 'default'])\r\n */\r\n currentUrl: string[] = [];\r\n\r\n private _unsubscribe: Subject<void> = new Subject<void>();\r\n\r\n public isGroupActive: boolean = false;\r\n protected isActiveGroupClosed = false;\r\n\r\n #MOUSE_MOVE_TO_POPOVER_DELAY = 200;\r\n\r\n #pendingOpenTimeoutId: number | null = null;\r\n #pendingCloseTimeoutId: number | null = null;\r\n #closeRequested = false;\r\n \r\n\r\n constructor(private _router: Router) {\r\n }\r\n \r\n isCollapsed = model<boolean>(false);\r\n\r\n protected lastPointerType = signal<PointerEvent['pointerType']>('mouse');\r\n protected isTouchPointerType = computed(() => this.lastPointerType() === 'touch');\r\n\r\n #activeRoutePatternRegExp = computed(() => {\r\n if (!this.activeRoutePattern()) {\r\n return null;\r\n } \r\n if (typeof this.activeRoutePattern() === 'string') {\r\n return new RegExp(this.activeRoutePattern() as string);\r\n } \r\n return this.activeRoutePattern() as RegExp;\r\n });\r\n\r\n ngOnInit(): void {\r\n this._router.events.pipe(\r\n filter((event: any) => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribe)\r\n ).subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.isPopoverVisible.set(false);\r\n if (this.#activeRoutePatternRegExp()) {\r\n this.isGroupActive = this.#activeRoutePatternRegExp()!.test(event.urlAfterRedirects);\r\n } else {\r\n const activeRoute = this.ignoreQueryParamsInActiveRoute ? removeQueryParams(event.urlAfterRedirects) : event.urlAfterRedirects;\r\n const route: string[] = activeRoute.split('/').filter(item => item.length > 0);\r\n this.currentUrl = route; \r\n this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink);\r\n } \r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['navigationGroupNestedRoutes'] || changes['defaultRouterLink']) {\r\n this.isPopoverVisible.set(false);\r\n if (this.#activeRoutePatternRegExp()) {\r\n this.isGroupActive = this.#activeRoutePatternRegExp()!.test(this._router.url);\r\n } else {\r\n const activeRoute = this.ignoreQueryParamsInActiveRoute ? removeQueryParams(this._router.url) : this._router.url;\r\n const route: string[] = activeRoute.split('/').filter(item => item.length > 0);\r\n this.currentUrl = route;\r\n\r\n this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink); \r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribe.next();\r\n this._unsubscribe.complete();\r\n }\r\n\r\n onMouseEnter(): void {\r\n const isTouchPointerType = this.isTouchPointerType();\r\n if (!isTouchPointerType) {\r\n\r\n if(this.#pendingCloseTimeoutId != null) {\r\n clearTimeout(this.#pendingCloseTimeoutId); \r\n }\r\n this.#pendingCloseTimeoutId = null;\r\n this.#closeRequested = false;\r\n\r\n const timeoutId = window.setTimeout(() => {\r\n if (!this.#closeRequested) {\r\n this.isPopoverVisible.set(true);\r\n }\r\n this.#pendingOpenTimeoutId = null;\r\n }, \r\n this.#MOUSE_MOVE_TO_POPOVER_DELAY\r\n );\r\n this.#pendingOpenTimeoutId = timeoutId;\r\n }\r\n }\r\n\r\n onMouseLeave(): void {\r\n const isTouchPointerType = this.isTouchPointerType();\r\n if (!isTouchPointerType) {\r\n\r\n if(!this.isPopoverVisible()){\r\n if(this.#pendingOpenTimeoutId != null) {\r\n clearTimeout(this.#pendingOpenTimeoutId); \r\n }\r\n this.#pendingOpenTimeoutId = null;\r\n this.#closeRequested = true;\r\n } else {\r\n const timeoutId = window.setTimeout(() => {\r\n this.isPopoverVisible.set(false);\r\n this.#closeRequested = true;\r\n this.#pendingCloseTimeoutId = null;\r\n }, this.#MOUSE_MOVE_TO_POPOVER_DELAY);\r\n this.#pendingCloseTimeoutId = timeoutId;\r\n }\r\n }\r\n }\r\n\r\n onClick(): void {\r\n const isTouchPointerType = this.isTouchPointerType();\r\n if (isTouchPointerType && this.isCollapsed()) {\r\n this.isPopoverVisible.set(true);\r\n } else {\r\n if (this.defaultRouterLink) {\r\n this._router.navigateByUrl(this.defaultRouterLink);\r\n }\r\n }\r\n }\r\n\r\n onHiding(e: any) {\r\n const isTouchPointerType = this.isTouchPointerType();\r\n if (!isTouchPointerType) {\r\n const popoverContent = e.component.content().parentNode;\r\n const isMouseInsidePopover = popoverContent.matches(':hover');\r\n e.cancel = isMouseInsidePopover;\r\n\r\n if (isMouseInsidePopover) {\r\n this.#closeRequested = false;\r\n popoverContent.addEventListener('mouseleave', () => {\r\n popoverContent.removeEventListener('mouseleave', () => {});\r\n e.component.hide();\r\n });\r\n }\r\n }\r\n }\r\n\r\n rememberPointer(e: PointerEvent) {\r\n this.lastPointerType.set(e.pointerType ?? 'mouse');\r\n }\r\n\r\n}\r\n","<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.sds-navigation-group-light-style]=\"lightStyle()\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n [class.collapsed]=\"isCollapsed()\"\r\n [class.popoverVisible]=\"isPopoverVisible()\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content p-2 text-gray-800 sds-fs-93\"\r\n [class.collapsed]=\"isCollapsed()\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"(isCollapsed() && isTouchPointerType()) ? undefined : [defaultRouterLink]\"\r\n (pointerdown)=\"rememberPointer($event)\"\r\n\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n (click)=\"onClick()\"\r\n >\r\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n \r\n <ng-container *ngIf=\"!isCollapsed()\">\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <span *ngIf=\"additionalInfo() && !isGroupActive\"\r\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body me-2\"\r\n >{{ additionalInfo() }}\r\n </span>\r\n <div class=\"text-right group-dropdown\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </a>\r\n\r\n <div \r\n class=\"sub-menu\" \r\n *ngIf=\"!isCollapsed()\">\r\n\r\n <div class=\"sds-navigation-group-items sds-flex-column gap-05\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"isCollapsed() || (showPopover && !isGroupActive)\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n \r\n \r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2', style: 'border-left: none'}\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n [(visible)]=\"isPopoverVisible\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-10 -5\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader && isCollapsed()\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n","import { Component, input, OnInit, signal, model } from '@angular/core';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\n\r\n@Component({\r\n selector: 'sds-navigation-separator',\r\n templateUrl: './navigation-separator.component.html',\r\n styleUrls: ['./navigation-separator.component.scss'],\r\n standalone: true\r\n})\r\nexport class SdsNavigationSeparatorComponent\r\n implements OnInit, CollapsibleNavigationEntity\r\n{\r\n isCollapsed = model<boolean>(false);\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div \r\n class=\"sds-navigation-separator nav-separator\">\r\n</div>\r\n","import { Component, input, Input, OnInit, signal, model } from '@angular/core';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { NgIf } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'sds-navigation-header',\r\n templateUrl: './navigation-header.component.html',\r\n styleUrls: ['./navigation-header.component.scss'],\r\n imports: [\r\n NgIf\r\n ]\r\n})\r\nexport class SdsNavigationHeaderComponent implements OnInit, CollapsibleNavigationEntity {\r\n @Input() text: string;\r\n \r\n isCollapsed = model<boolean>(false);\r\n \r\n constructor() {\r\n this.text = '';\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n<div class=\"sds-navigation-header text-gray-800\">\r\n <span *ngIf=\"!isCollapsed()\">{{ text }}</span>\r\n</div>\r\n","import { Component, Input, model } from '@angular/core';\r\nimport { faExternalLink } from '@fortawesome/pro-regular-svg-icons';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgIf } from '@angular/common';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\n\r\n@Component({\r\n selector: 'sds-navigation-external-link',\r\n templateUrl: './navigation-external-link.component.html',\r\n styleUrls: ['./navigation-external-link.component.scss'],\r\n imports: [NgIf, FaIconComponent]\r\n})\r\n export class SdsNavigationExternalLinkComponent implements CollapsibleNavigationEntity {\r\n\r\n @Input() link: string = '';\r\n @Input() text: string = '';\r\n @Input() tabName: string = '_blank'\r\n @Input() externalLinkHint = '';\r\n @Input() showExternalLinkIcon = true;\r\n\r\n\r\n public externalLinkIcon = faExternalLink;\r\n\r\n isCollapsed = model<boolean>(false);\r\n\r\n}\r\n","<div \r\n class=\"sds-navigation-external-link sds-navigation-item-container\"\r\n [title]=\"isCollapsed() ? text : ''\"\r\n >\r\n <a\r\n class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\"\r\n [attr.href]=\"link || null\"\r\n [attr.target]=\"tabName || null\"\r\n [attr.rel]=\"tabName === '_blank' ? 'noopener noreferrer' : null\"\r\n >\r\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!isCollapsed()\">\r\n \r\n <div class=\"sds-navigation-text\">\r\n <span>{{ text }}</span>\r\n </div>\r\n\r\n <div \r\n class=\"sds-navigation-external-link-info-container\">\r\n <fa-icon \r\n class=\"sds-navigation-external-link-info-icon\"\r\n *ngIf=\"showExternalLinkIcon\"\r\n\r\n [icon]=\"externalLinkIcon\"\r\n [size]=\"'xs'\"\r\n [title]=\"externalLinkHint\"\r\n >\r\n </fa-icon>\r\n </div> \r\n </ng-container>\r\n \r\n <ng-content></ng-content>\r\n\r\n </div>\r\n </a>\r\n</div>","import { ChangeDetectionStrategy, Component, signal, model } from '@angular/core';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { NgIf } from '@angular/common';\r\n@Component({\r\n selector: 'sds-navigation-collapsible-frame',\r\n templateUrl: './navigation-collapsible-frame.component.html',\r\n styleUrls: ['./navigation-collapsible-frame.component.scss'],\r\n imports: [\r\n NgIf\r\n ]\r\n})\r\nexport class SdsNavigationCollapsibleFrameComponent implements CollapsibleNavigationEntity {\r\n isCollapsed = model<boolean>(false);\r\n\r\n}\r\n\r\n\r\n","<ng-container *ngIf=\"!isCollapsed()\">\r\n <ng-content></ng-content>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isCollapsed()\">\r\n <ng-content select=\"[collapsed]\"></ng-content>\r\n</ng-container>\r\n\r\n","import { NgIf } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n\r\n@Component({\r\n selector: 'sds-user-profile-action-button',\r\n templateUrl: './user-profile-action-button.component.html',\r\n styleUrls: ['./user-profile-action-button.component.scss'],\r\n imports: [\r\n NgIf,\r\n FontAwesomeModule\r\n ]\r\n})\r\nexport class SdsUserProfileActionButtonComponent {\r\n @Input() text: string = '';\r\n @Input() icon?: IconProp;\r\n\r\n @Output() actionClick = new EventEmitter<void>();\r\n\r\n onActionClick(): void {\r\n this.actionClick.emit();\r\n }\r\n\r\n}\r\n","<a \r\n class=\"\r\n d-block \r\n text-black \r\n sds-navigation-user-profile-action-button \r\n sds-hoverable-150 \r\n sds-fs-93 \r\n sds-cursor-pointer\r\n \"\r\n (click)=\"onActionClick()\" \r\n>\r\n <fa-icon\r\n *ngIf=\"icon\"\r\n class=\"me-2\"\r\n [fixedWidth]=\"true\"\r\n [size]=\"'sm'\"\r\n [icon]=\"icon\">\r\n </fa-icon>\r\n\r\n <span>{{text}}</span>\r\n</a>","import { Component, EventEmitter, input, Input, model, OnInit, OnChanges, Output, signal, SimpleChanges } from '@angular/core';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { NgIf } from '@angular/common';\r\nimport { SdsAvatarComponent } from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { NavigationProfile } from './navigation-profile.model';\r\nimport { faSignOut, faUser } from '@fortawesome/pro-regular-svg-icons';\r\nimport { SdsUserProfileActionButtonComponent } from './components/user-profile-action-button/user-profile-action-button.component';\r\n\r\n\r\n@Component({\r\n selector: 'sds-navigation-user-profile',\r\n templateUrl: './navigation-user-profile.component.html',\r\n styleUrls: ['./navigation-user-profile.component.scss'],\r\n imports: [\r\n SdsAvatarComponent,\r\n SdsUserProfileActionButtonComponent,\r\n NgIf,\r\n DxPopoverModule,\r\n ]\r\n})\r\nexport class SdsNavigationUserProfileComponent implements OnInit, OnChanges, CollapsibleNavigationEntity {\r\n @Input() profile: NavigationProfile | null = null;\r\n @Input() profileInfo: string = '';\r\n\r\n @Input() showSignOut: boolean = true;\r\n @Input() showProfile: boolean = true;\r\n\r\n @Input() signOutText: string = 'Sign out';\r\n @Input() profileText: string = 'Profile';\r\n\r\n @Input() showNotificationBadge: boolean = false;\r\n @Input() newNotificationsText: string = 'New Notifications';\r\n\r\n @Output() profileClick: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() signOutClick: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output() notificationBadgeClick: EventEmitter<void> = new EventEmitter<void>();\r\n \r\n @Input() showOptions: boolean = false;\r\n @Output() showOptionsChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n protected userProfileIcon = faUser;\r\n protected signOutIcon = faSignOut\r\n\r\n constructor() {}\r\n \r\n isCollapsed = model<boolean>(false);\r\n sideBarInstanceName = input<string>('');\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // if (changes['activeProfileId'] || changes['profile'] || changes['additionalProfiles']) {\r\n // if (this.activeProfileId === null) {\r\n // this.activeProfile = this.profile;\r\n // } else if (this.activeProfileId === this.profile?.id) {\r\n // this.activeProfile = this.profile;\r\n // } else {\r\n // this.activeProfile = this.additionalProfiles.find(profile => profile.id === this.activeProfileId) || null;\r\n // }\r\n // }\r\n }\r\n\r\n public onProfileClick(): void {\r\n this.showOptions = false;\r\n this.showOptionsChange.emit(this.showOptions);\r\n this.profileClick.emit();\r\n }\r\n\r\n public onSignOutClick(): void {\r\n this.showOptions = false;\r\n this.showOptionsChange.emit(this.showOptions);\r\n this.signOutClick.emit();\r\n }\r\n\r\n public closeOptions(): void {\r\n this.showOptions = false;\r\n this.showOptionsChange.emit(this.showOptions);\r\n\r\n }\r\n\r\n public openOptions(): void {\r\n this.showOptions = true;\r\n this.showOptionsChange.emit(this.showOptions);\r\n }\r\n\r\n protected toggleOptions(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.showOptions = !this.showOptions;\r\n // console.log(this.showOptions);\r\n this.showOptionsChange.emit(this.showOptions);\r\n }\r\n\r\n public onNotificationBadgeClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.notificationBadgeClick.emit();\r\n }\r\n}\r\n","<div\r\n class=\"\r\n d-flex\r\n flex-row\r\n align-items-center\r\n gap-2\r\n sds-navigation-user-profile-container\r\n user-select-none\r\n mb-1 ms-1 me-1 mt-2\r\n pt-1 pb-1 ps-2\r\n sds-hoverable\r\n sds-rounded-2\r\n \"\r\n (click)=\"toggleOptions($event)\"\r\n>\r\n <div \r\n #popoverTarget\r\n class=\"\r\n position-relative\r\n\r\n \">\r\n <sds-avatar\r\n [text]=\"profile?.name\"\r\n [colorKey]=\"profile?.id\"\r\n [pictureUri]=\"profile?.pictureUri\"\r\n >\r\n </sds-avatar>\r\n\r\n <span\r\n *ngIf=\"showNotificationBadge\"\r\n class=\"\r\n position-absolute\r\n notification-badge\r\n translate-middle\r\n bg-danger\r\n border border-light\r\n rounded-circle\r\n \"\r\n (click)=\"onNotificationBadgeClick($event)\"\r\n >\r\n <span class=\"visually-hidden\">{{ newNotificationsText }}</span>\r\n </span>\r\n </div>\r\n\r\n @if(!isCollapsed()) {\r\n <div class=\"sds-flex-column\">\r\n <span class=\"truncate-two-lines text-gray-800 sds-fs-93\">\r\n {{ profile?.name }}\r\n </span>\r\n\r\n <span class=\"sds-fw-400 sds-fs-75 text-truncate text-muted\">\r\n {{ profileInfo }}\r\n </span>\r\n </div>\r\n }\r\n</div>\r\n\r\n<dx-popover\r\n [target]=\"popoverTarget\"\r\n [position]=\"{ my: 'left bottom', at: 'left top' }\"\r\n collision=\"fit none\"\r\n minWidth=\"20rem\"\r\n maxWidth=\"20rem\"\r\n [(visible)]=\"showOptions\"\r\n [wrapperAttr]=\"{\r\n class: 'sds-navigation-user-profile-popover sds-dx-popup-no-arrow sds-dx-popup-content-padding-0'\r\n }\"\r\n>\r\n <div class=\"py-2 pb-3 main-profile-container border-bottom\">\r\n\r\n <div class=\"sds-flex-column align-items-center\">\r\n <sds-avatar\r\n [text]=\"profile?.name\"\r\n [colorKey]=\"profile?.id\"\r\n [pictureUri]=\"profile?.pictureUri\"\r\n [size]=\"7\"\r\n >\r\n </sds-avatar>\r\n\r\n <h5 class=\"text-center mt-2 px-3\">\r\n {{profile?.name}}\r\n </h5>\r\n\r\n <div class=\"sds-fw-400 text-center text-gray-800 sds-fs-87 px-3 text-truncate w-100\">\r\n {{profile?.info}}\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n <ul\r\n class=\"\r\n list-unstyled\r\n sds-navigation-user-profile-actions\r\n mb-0\r\n sds-ul-gap-1\r\n mx-2\r\n mb-2\r\n \"\r\n >\r\n <li *ngIf=\"showProfile\">\r\n <sds-user-profile-action-button\r\n [text]=\"profileText\"\r\n [icon]=\"userProfileIcon\"\r\n (actionClick)=\"onProfileClick()\"\r\n >\r\n </sds-user-profile-action-button>\r\n </li>\r\n\r\n <li *ngIf=\"showSignOut\">\r\n <sds-user-profile-action-button\r\n [text]=\"signOutText\"\r\n [icon]=\"signOutIcon\"\r\n (actionClick)=\"onSignOutClick()\"\r\n >\r\n </sds-user-profile-action-button>\r\n </li>\r\n </ul>\r\n</dx-popover>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { RouterLink, UrlTree } from '@angular/router';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faCircleExclamation,\r\n faCircleInfo,\r\n faTriangleExclamation,\r\n} from '@fortawesome/pro-regular-svg-icons';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\n\r\n/**\r\n * Color scheme and default icon of the callout:\r\n * - `info` - base color `--bs-primary`, icon `faCircleInfo`\r\n * - `warning` - base color `--bs-orange`, icon `faTriangleExclamation`\r\n * - `danger` - base color `--bs-pink`, icon `faCircleExclamation`\r\n */\r\nexport type SdsNavigationCalloutVariant = 'info' | 'warning' | 'danger';\r\n\r\n/**\r\n * Behaviour of the callout when the navigation is collapsed:\r\n * - `hide` - the callout is not rendered at all\r\n * - `icon` - only the icon is rendered; clicking it opens a popup with the full callout\r\n */\r\nexport type SdsNavigationCalloutCollapsedMode = 'hide' | 'icon';\r\n\r\nconst DEFAULT_ICONS: Record<SdsNavigationCalloutVariant, IconProp> = {\r\n info: faCircleInfo,\r\n warning: faTriangleExclamation,\r\n danger: faCircleExclamation,\r\n};\r\n\r\n/**\r\n * Generic sidebar message: icon + title + description + an optional action. Carries no\r\n * knowledge of what it's displaying (trial status, payment issues, announcements, ...) - callers\r\n * pass in already-resolved text.\r\n *\r\n * The action is either a button (handle `actionClicked`) or, when `actionLink` is set, a router\r\n * link that navigates on its own. When the navigation is collapsed the callout is either hidden\r\n * or shown as an icon that opens the full callout in a popup (see `collapsedMode`).\r\n *\r\n * Colors are CSS custom properties derived from the base color `--sds-navigation-callout-color`\r\n * (set by `variant`); override the base or any of the derived ones:\r\n * `--sds-navigation-callout-bg`, `-border`, `-title` (also the icon), `-description`, `-action`.\r\n *\r\n * @example\r\n * <!-- Action button -->\r\n * <sds-navigation-callout\r\n * variant=\"warning\"\r\n * title=\"Trial ends today\"\r\n * description=\"Choose a plan to keep using the app.\"\r\n * actionText=\"Upgrade to paid\"\r\n * (actionClicked)=\"openUpgradeDialog()\">\r\n * </sds-navigation-callout>\r\n *\r\n * <!-- Redirect -->\r\n * <sds-navigation-callout\r\n * variant=\"danger\"\r\n * title=\"Payment failed\"\r\n * description=\"Pay the invoice to keep your subscription.\"\r\n * actionText=\"Go to billing page\"\r\n * actionLink=\"/billing\">\r\n * </sds-navigation-callout>\r\n */\r\n@Component({\r\n selector: 'sds-navigation-callout',\r\n templateUrl: './navigation-callout.component.html',\r\n styleUrls: ['./navigation-callout.component.scss'],\r\n imports: [FaIconComponent, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, RouterLink],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': \"'sds-navigation-callout-' + variant()\",\r\n '[class.sds-navigation-callout-collapsed]': 'isCollapsed()',\r\n '[style.display]': \"isHidden() ? 'none' : null\",\r\n },\r\n})\r\nexport class SdsNavigationCalloutComponent implements CollapsibleNavigationEntity {\r\n /**\r\n * Required. Color scheme and default icon:\r\n * `info` (`--bs-primary`), `warning` (`--bs-orange`) or `danger` (`--bs-pink`).\r\n */\r\n variant = input.required<SdsNavigationCalloutVariant>();\r\n\r\n /**\r\n * Font Awesome icon shown next to the title (and as the collapsed icon).\r\n * Falls back to the default icon of the `variant` when not provided.\r\n * @default null\r\n */\r\n icon = input<IconProp | null>(null);\r\n\r\n /** Required. Title shown next to the icon. Displayed as given - pass already translated text. */\r\n title = input.required<string>();\r\n\r\n /** Required. Text shown below the title. Displayed as given - pass already translated text. */\r\n description = input.required<string>();\r\n\r\n /**\r\n * Text of the action. The action is shown only when this is not empty.\r\n * @default ''\r\n */\r\n actionText = input<string>('');\r\n\r\n /**\r\n * Route of the action - accepts the same values as `routerLink` (string, commands array or `UrlTree`).\r\n * When set the action is rendered as a link that navigates to the route, otherwise as a button.\r\n * Ignored when `actionText` is empty.\r\n * @default null\r\n */\r\n actionLink = input<string | readonly any[] | UrlTree | null>(null);\r\n\r\n /**\r\n * Behaviour when the navigation is collapsed:\r\n * `icon` shows only the icon, which opens the full callout in a popup; `hide` hides the callout.\r\n * @default 'icon'\r\n */\r\n collapsedMode = input<SdsNavigationCalloutCollapsedMode>('icon');\r\n\r\n /**\r\n * Collapsed state of the navigation. Set automatically by `sds-navigation-container` -\r\n * bind it only when the callout is used outside of a container.\r\n * @default false\r\n */\r\n isCollapsed = model<boolean>(false);\r\n\r\n /**\r\n * Emitted when the action is clicked, for both buttons and links. For a link it is only a\r\n * notification - the router navigates on its own. The popup (collapsed mode) is closed first.\r\n */\r\n actionClicked = output<void>();\r\n\r\n protected resolvedIcon = computed(() => this.icon() ?? DEFAULT_ICONS[this.variant()]);\r\n protected isHidden = computed(() => this.isCollapsed() && this.collapsedMode() === 'hide');\r\n protected isIconOnly = computed(() => this.isCollapsed() && this.collapsedMode() === 'icon');\r\n\r\n protected isPopupOpen = signal(false);\r\n\r\n // Right of the icon with bottom edges aligned; falls back to top alignment when there's no room.\r\n protected popupPositions: ConnectedPosition[] = [\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: 8 },\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 8 },\r\n ];\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.isIconOnly()) {\r\n this.isPopupOpen.set(false);\r\n }\r\n });\r\n }\r\n\r\n protected togglePopup(): void {\r\n this.isPopupOpen.update((isOpen) => !isOpen);\r\n }\r\n\r\n protected onPopupOutsideClick(event: MouseEvent, origin: HTMLElement): void {\r\n // The origin click toggles the popup itself; closing here as well would re-open it.\r\n if (origin.contains(event.target as Node)) {\r\n return;\r\n }\r\n this.isPopupOpen.set(false);\r\n }\r\n\r\n protected onPopupKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n this.isPopupOpen.set(false);\r\n }\r\n }\r\n\r\n protected onActionClick(): void {\r\n this.isPopupOpen.set(false);\r\n this.actionClicked.emit();\r\n }\r\n}\r\n","@if (isIconOnly()) {\r\n <button\r\n #origin\r\n type=\"button\"\r\n class=\"sds-navigation-callout-icon-button\"\r\n cdkOverlayOrigin\r\n #overlayOrigin=\"cdkOverlayOrigin\"\r\n [attr.aria-label]=\"title()\"\r\n [attr.aria-expanded]=\"isPopupOpen()\"\r\n (click)=\"togglePopup()\"\r\n >\r\n <fa-icon\r\n class=\"sds-navigation-callout-icon\"\r\n [icon]=\"resolvedIcon()\"\r\n ></fa-icon>\r\n </button>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\r\n [cdkConnectedOverlayOpen]=\"isPopupOpen()\"\r\n [cdkConnectedOverlayPositions]=\"popupPositions\"\r\n (overlayOutsideClick)=\"onPopupOutsideClick($event, origin)\"\r\n (detach)=\"isPopupOpen.set(false)\"\r\n (overlayKeydown)=\"onPopupKeydown($event)\"\r\n >\r\n <div [class]=\"'sds-navigation-callout-popup sds-navigation-callout-' + variant()\">\r\n <ng-container *ngTemplateOutlet=\"card\"></ng-container>\r\n </div>\r\n </ng-template>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"card\"></ng-container>\r\n}\r\n\r\n<ng-template #card>\r\n <div class=\"sds-navigation-callout-card\">\r\n <div class=\"sds-navigation-callout-title d-flex align-items-center gap-1 sds-fs-87 sds-fw-600\">\r\n <fa-icon\r\n class=\"sds-navigation-callout-icon\"\r\n [icon]=\"resolvedIcon()\"\r\n ></fa-icon>\r\n <span>{{ title() }}</span>\r\n </div>\r\n <span class=\"sds-navigation-callout-description\">{{ description() }}</span>\r\n @if (actionText()) {\r\n @if (actionLink()) {\r\n <a\r\n class=\"btn btn-sm btn-link sds-navigation-callout-action sds-fw-600\"\r\n [routerLink]=\"actionLink()\"\r\n (click)=\"onActionClick()\"\r\n >\r\n {{ actionText() }}\r\n </a>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-sm btn-link sds-navigation-callout-action sds-fw-600\"\r\n (click)=\"onActionClick()\"\r\n >\r\n {{ actionText() }}\r\n </button>\r\n }\r\n }\r\n </div>\r\n</ng-template>\r\n","import {\r\n Component,\r\n contentChildren,\r\n effect,\r\n OnInit,\r\n untracked,\r\n model,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { SdsNavigationGroupComponent } from '../navigation-group/navigation-group.component';\r\nimport { SdsNavigationRouteLinkComponent } from '../navigation-route-link/navigation-route-link.component';\r\nimport { SdsNavigationSeparatorComponent } from '../navigation-separator/navigation-separator.component';\r\nimport { SdsNavigationHeaderComponent } from '../navigation-header/navigation-header.component';\r\nimport { SdsNavigationExternalLinkComponent } from '../navigation-external-link/navigation-external-link.component';\r\nimport { SdsNavigationCollapsibleFrameComponent } from '../navigation-collapsible-frame/navigation-collapsible-frame.component';\r\nimport { SdsNavigationUserProfileComponent } from '../navigation-user-profile/navigation-user-profile.component';\r\nimport { SdsNavigationCalloutComponent } from '../navigation-callout/navigation-callout.component';\r\n\r\n@Component({\r\n selector: 'sds-navigation-container',\r\n templateUrl: './navigation-container.component.html',\r\n styleUrls: ['./navigation-container.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdsNavigationContainerComponent implements OnInit, CollapsibleNavigationEntity\r\n{\r\n isCollapsed = model<boolean>(false);\r\n\r\n groupComponentChildren = contentChildren(SdsNavigationGroupComponent);\r\n routeLinkComponentChildren = contentChildren(SdsNavigationRouteLinkComponent);\r\n separatorComponentChildren = contentChildren(SdsNavigationSeparatorComponent);\r\n headerComponentChildren = contentChildren(SdsNavigationHeaderComponent);\r\n externalLinkComponentChildren = contentChildren(SdsNavigationExternalLinkComponent);\r\n userProfileComponentChildren = contentChildren(SdsNavigationUserProfileComponent);\r\n collapsibleFrameComponentChildren = contentChildren(SdsNavigationCollapsibleFrameComponent);\r\n calloutComponentChildren = contentChildren(SdsNavigationCalloutComponent);\r\n\r\n constructor() {\r\n // Reading the content queries inside the effect makes it re-run once they resolve\r\n // (so an initial collapsed state is applied) and whenever children are added later.\r\n effect(() => {\r\n const isCollapsed = this.isCollapsed();\r\n const children: { isCollapsed: { set(value: boolean): void } }[] = [\r\n ...this.groupComponentChildren(),\r\n ...this.routeLinkComponentChildren(),\r\n ...this.separatorComponentChildren(),\r\n ...this.headerComponentChildren(),\r\n ...this.externalLinkComponentChildren(),\r\n ...this.userProfileComponentChildren(),\r\n ...this.collapsibleFrameComponentChildren(),\r\n ...this.calloutComponentChildren(),\r\n ];\r\n untracked(() => {\r\n children.forEach((child) => child.isCollapsed.set(isCollapsed));\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div class=\"sds-navigation-container\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { NavigationProfile } from '../../navigation-profile.model';\r\nimport { SdsAvatarComponent } from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\n\r\n@Component({\r\n selector: 'sds-user-profile-tile',\r\n templateUrl: './user-profile-tile.component.html',\r\n styleUrls: ['./user-profile-tile.component.scss'],\r\n imports: [\r\n SdsAvatarComponent\r\n ]\r\n})\r\nexport class SdsUserProfileTileComponent {\r\n @Input() profile: NavigationProfile | null = null;\r\n @Input() emphasizeName: boolean = true;\r\n @Input() size: 'small' | 'medium' = 'medium';\r\n}\r\n","\r\n<div class=\"sds-flex-row-center gap-3\">\r\n <sds-avatar\r\n [text]=\"profile?.name\"\r\n [colorKey]=\"profile?.id\"\r\n [pictureUri]=\"profile?.pictureUri\"\r\n [size]=\"size === 'small' ? 2 : 3\"\r\n borderColor=\"white\"\r\n borderWidth=\"2\"\r\n >\r\n </sds-avatar>\r\n\r\n <div \r\n class=\"flex-grow-1 flex-shrink-1 text-body\"\r\n [style.minWidth.px]=\"1\"\r\n >\r\n <span \r\n class=\"sds-fs-100 text-truncate\"\r\n [class.sds-fs-100]=\"size === 'medium'\"\r\n [class.sds-fs-95]=\"size === 'small'\"\r\n [class.sds-fw-500]=\"emphasizeName\"\r\n >\r\n {{profile?.name}}\r\n </span>\r\n <div \r\n class=\"sds-fw-400 text-truncate text-gray-800\"\r\n [class.sds-fs-75]=\"size === 'medium'\"\r\n [class.sds-fs-75]=\"size === 'small'\"\r\n >\r\n {{profile?.info}}\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { NavigationProfile } from '../../navigation-profile.model';\r\nimport { faEyeSlash } from '@fortawesome/pro-regular-svg-icons';\r\nimport { UserProfileSelectorContent } from './user-profile-selector.types';\r\nimport { SdsUserProfileActionButtonComponent } from '../user-profile-action-button/user-profile-action-button.component';\r\nimport { SdsUserProfileTileComponent } from '../user-profile-tile/user-profile-tile.component';\r\nimport { NgFor, NgIf } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-user-profile-selector',\r\n templateUrl: './user-profile-selector.component.html',\r\n styleUrls: ['./user-profile-selector.component.scss'],\r\n imports: [\r\n NgIf,\r\n NgFor,\r\n SdsUserProfileTileComponent,\r\n SdsUserProfileActionButtonComponent\r\n ]\r\n})\r\nexport class SdsUserProfileSelectorComponent {\r\n\r\n @Input() content: UserProfileSelectorContent = 'profileList';\r\n @Input() profiles: NavigationProfile[] = [];\r\n @Input() selectDefaultProfileText: string = 'Stop Impersonation';\r\n @Input() switchText: string = 'Switch to';\r\n\r\n @Output() profileIdChange = new EventEmitter<string>();\r\n\r\n protected isSelectedOneOfProfiles: boolean = false;\r\n protected readonly SELECT_DEFAULT_PROFILE_ICON = faEyeSlash;\r\n\r\n public selectProfile(profileId: string): void {\r\n this.profileIdChange.emit(profileId);\r\n }\r\n\r\n public selectDefaultProfile(): void {\r\n this.profileIdChange.emit('');\r\n }\r\n\r\n}\r\n","<div class=\"mx-2\"> \r\n <div \r\n *ngIf=\"content === 'profileList' && profiles && profiles.length > 0\"\r\n class=\"pt-2 pb-3 mt-1 mb-2 ps-2 border-bottom\">\r\n\r\n <div class=\"sds-fs-75 py-1 mb-2 text-uppercase\">{{switchText}}</div>\r\n\r\n <ul class=\"list-unstyled mb-0 sds-ul-gap-1 ps-2 profile-list sds-scrollbar sds-scrollbar-thin\">\r\n <li\r\n class=\"rounded sds-hoverable-150 pe-2 py-1\"\r\n *ngFor=\"let profile of profiles\"\r\n >\r\n <sds-user-profile-tile\r\n class=\"sds-cursor-pointer\"\r\n [profile]=\"profile\"\r\n [size]=\"'small'\"\r\n [emphasizeName]=\"false\"\r\n (click)=\"selectProfile(profile.id)\"\r\n >\r\n </sds-user-profile-tile>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"content === 'selectDefaultProfile'\"\r\n class=\"mt-2 mb-1\">\r\n <sds-user-profile-action-button\r\n [text]=\"selectDefaultProfileText\"\r\n [icon]=\"SELECT_DEFAULT_PROFILE_ICON\"\r\n (click)=\"selectDefaultProfile()\"\r\n >\r\n </sds-user-profile-action-button>\r\n </div>\r\n</div>","import { Component, EventEmitter, input, Input, model, OnInit, Output, output } from '@angular/core';\r\nimport { ProductModel } from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nimport { SdsAppSwitcherComponent } from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nimport { NgIf } from '@angular/common';\r\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\r\nimport { faArrowLeftFromLine, faArrowRightFromLine, faSidebar } from '@fortawesome/pro-regular-svg-icons';\r\nimport { faSidebar as falSidebar} from '@fortawesome/pro-light-svg-icons';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n\r\n@Component({\r\n selector: 'sds-product-home',\r\n templateUrl: './product-home.component.html',\r\n styleUrls: ['./product-home.component.scss'],\r\n imports: [\r\n NgIf,\r\n FontAwesomeModule,\r\n SdsAppSwitcherComponent\r\n ]\r\n})\r\nexport class SdsProductHomeComponent implements OnInit, CollapsibleNavigationEntity {\r\n\r\n @Input() public logoUrl?: string;\r\n @Input() public logoAltText?: string;\r\n @Input() public moduleTitle?: string;\r\n\r\n @Input() public showAppSwitcher = false;\r\n @Input() public appSwitcherProductCode: string | undefined;\r\n @Input() public appSwitcherUserProductCodes: string[] | undefined;\r\n @Input() public appSwitcherTenantProducts: ProductModel[] | undefined;\r\n @Input() public appSwitcherSwitchText: string = '';\r\n @Input() public appSwitcherDiscoverText: string = ''; \r\n\r\n textOpen = input<string>('Expand sidebar');\r\n textClose = input<string>('Collapse sidebar');\r\n\r\n @Input() public allowHeaderClick = false;\r\n\r\n @Output() public productSwitched: EventEmitter<ProductModel> = new EventEmitter<ProductModel>(); \r\n @Output() public headerClick: EventEmitter<void> = new EventEmitter<void>();\r\n public collapsedToggle = output<boolean>();\r\n\r\n protected ICON_CLOSE = faArrowLeftFromLine;\r\n protected ICON_OPEN = faArrowRightFromLine;\r\n\r\n constructor() {}\r\n\r\n isCollapsed = model<boolean>(false);\r\n\r\n sideBarInstanceName = input<string>('');\r\n\r\n ngOnInit(): void {}\r\n\r\n protected onProductClick(product: ProductModel): void {\r\n this.productSwitched.emit(product);\r\n }\r\n\r\n protected onHeaderClick(): void {\r\n if (this. allowHeaderClick) {\r\n this.headerClick.emit();\r\n }\r\n }\r\n\r\n protected toggleState(): void {\r\n const collapsed = !this.isCollapsed();\r\n this.isCollapsed.set(collapsed);\r\n this.collapsedToggle.emit(collapsed);\r\n }\r\n}\r\n","<div \r\n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\r\n >\r\n @if(!isCollapsed()) {\r\n <sds-app-switcher\r\n *ngIf=\"showAppSwitcher\"\r\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\r\n [productCode]=\"appSwitcherProductCode\"\r\n [userProductCodes]=\"appSwitcherUserProductCodes\"\r\n [tenantProducts]=\"appSwitcherTenantProducts\"\r\n [switchText]=\"appSwitcherSwitchText\"\r\n [discoverText]=\"appSwitcherDiscoverText\"\r\n (productClick)=\"onProductClick($event)\"\r\n >\r\n </sds-app-switcher>\r\n \r\n <div \r\n class=\"sds-flex-grow-shrink product-title\"\r\n (click)=\"onHeaderClick()\"\r\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\r\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\r\n >\r\n <div \r\n class=\"product-logo-container\"\r\n [class.collapsed]=\"isCollapsed()\"\r\n >\r\n <img\r\n class=\"product-logo\"\r\n [src]=\"logoUrl\" \r\n [alt]=\"logoAltText\"\r\n > \r\n </div>\r\n\r\n @if(moduleTitle && !isCollapsed()) {\r\n <h6 class=\"mt-2\">\r\n {{moduleTitle}}\r\n </h6>\r\n }\r\n </div>\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"\r\n toggle-collapsed-button \r\n text-gray-800 sds-fs-93 \r\n sds-hoverable sds-rounded-2 \r\n p-1 ml-2\r\n d-flex align-items-center justify-content-center\r\n sds-cursor-pointer\r\n \" \r\n (click)=\"toggleState()\" \r\n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\r\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \r\n >\r\n <fa-icon \r\n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \r\n [fixedWidth]=\"true\"\r\n >\r\n </fa-icon>\r\n </button>\r\n \r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * A standalone Angular pipe that dynamically generates a strict Regular Expression string \r\n * used to determine active route states. It transforms a single route or array of routes \r\n * into a unified, URL-safe regex pattern.\r\n * * ### Key Technical Behaviors:\r\n * - **Strict Boundary Enforcement:** Wraps the resulting pattern with `^\\/` (start) and \r\n * `([?#]|$)` (end, query param, or hash fragment) to ensure exact path matching and prevent false positives.\r\n * - **Wildcard Support:** Intercepts the `**` syntax and compiles it into a safe regex wildcard (`[^?#]*`), \r\n * allowing for easy matching of a base route and all deeply nested child routes.\r\n * - **Auto-Escaping:** Automatically sanitizes input by escaping forward slashes (`/`) and hash symbols (`#`).\r\n * * @param route A single route string or an array of route strings (e.g., `'nav-showcase'` or `['route', 'route/**']`)\r\n * @returns A strictly bounded regex pattern string (e.g., `^\\/(route|route\\/[^?#]*)([?#]|$)`)\r\n */\r\n@Pipe({\r\n name: 'sdsActiveRoutePattern',\r\n standalone: true,\r\n})\r\nexport class SdsActiveRoutePatternPipe implements PipeTransform {\r\n transform(route: string | string[]): string {\r\n const routes = Array.isArray(route) ? route : [route];\r\n return this.buildActiveRoutePattern(routes);\r\n }\r\n\r\n buildActiveRoutePattern(routes: string[]): string {\r\n const patterns = routes.map(route => \r\n route\r\n .replace(/\\*\\*/g, '[^?#]*')\r\n .replace(/[#]/g, '\\\\#')\r\n .replace(/\\//g, '\\\\/')\r\n );\r\n return `^\\\\/(${patterns.join('|')})(\\\\/[^?#]*)*([?#]|$)`;\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-navigation.mjs","sources":["../../../projects/ngx-sds-components/src/lib/navigation/utils/navigation.utils.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-route-link/navigation-route-link.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-route-link/navigation-route-link.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-group/navigation-group.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-group/navigation-group.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-separator/navigation-separator.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-separator/navigation-separator.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-header/navigation-header.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-header/navigation-header.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-external-link/navigation-external-link.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-external-link/navigation-external-link.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-collapsible-frame/navigation-collapsible-frame.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-collapsible-frame/navigation-collapsible-frame.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-callout/navigation-callout.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-callout/navigation-callout.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-container/navigation-container.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-container/navigation-container.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.html","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.html","../../../projects/ngx-sds-components/src/lib/navigation/product-home/product-home.component.ts","../../../projects/ngx-sds-components/src/lib/navigation/product-home/product-home.component.html","../../../projects/ngx-sds-components/src/lib/navigation/pipes/active-route-pattern.pipe.ts","../../../projects/ngx-sds-components/src/lib/navigation/spicainternational-ngx-sds-components-src-lib-navigation.ts"],"sourcesContent":["export function removeQueryParams(url: string): string {\n return url.split('?')[0];\n}\n\nexport interface RouteActiveOptions {\n /** Pattern tested against the full URL. Has priority over the legacy options below. */\n activeRoutePattern?: RegExp | string | null;\n /** @deprecated Use `activeRoutePattern` instead. */\n nestedRoutes?: string[];\n defaultLink?: string;\n /** @deprecated Use `activeRoutePattern` instead. */\n ignoreQueryParams?: boolean;\n}\n\nexport function toActiveRouteRegExp(pattern: RegExp | string | null | undefined): RegExp | null {\n if (!pattern) {\n return null;\n }\n return typeof pattern === 'string' ? new RegExp(pattern) : pattern;\n}\n\n/**\n * Determines if the provided URL (e.g. router.url) is active for a navigation entity.\n * If `activeRoutePattern` is provided, it is tested against the full URL.\n * Otherwise the legacy matching (default link + nested routes) is used.\n */\nexport function isRouteActive(url: string, options: RouteActiveOptions): boolean {\n const activeRouteRegExp = toActiveRouteRegExp(options.activeRoutePattern);\n if (activeRouteRegExp) {\n return activeRouteRegExp.test(url);\n }\n\n const activeRoute = options.ignoreQueryParams ? removeQueryParams(url) : url;\n const currentUrl = activeRoute.split('/').filter((part) => part.length > 0);\n\n return isUrlPartOfNavigationGroup(currentUrl, options.nestedRoutes ?? [], options.defaultLink ?? '');\n}\n\nexport function isUrlPartOfNavigationGroup(\n currentUrl: string[], \n nestedRoutes: string[], \n defaultGroupUrl: string): boolean {\n\n if (!currentUrl || currentUrl?.length === 0) {\n return false;\n }\n \n defaultGroupUrl = defaultGroupUrl.replace('/', '');\n \n if (nestedRoutes?.length > 0) {\n // Nested routes are provided. We should find out if current url is on the list of\n // the provided nested routes \n const currentUrlParts = currentUrl.slice();//.reverse();\n const routeItemIsPartOfNestedRoutes = nestedRoutes.some((routeName) => {\n const routeParts = routeName.split('/');//.reverse();\n return isSubsetOrSame(currentUrlParts, routeParts);\n });\n if (routeItemIsPartOfNestedRoutes) {\n return true;\n }\n }\n\n const currentUrlContainsGroupUrl = currentUrl.some(path => path === defaultGroupUrl);\n return currentUrlContainsGroupUrl;\n }\n\nfunction isSubsetOrSame(mainArray: string[], subArray: string[]): boolean {\n // if we have super wildcard we need to check reversed array\n // if (subArray.includes('**')) {\n const reversedMainArray = mainArray.slice(); //.reverse();\n const reversedSubArray = subArray.slice(); //.reverse();\n\n for (let i = 0; i < reversedSubArray.length; i++) {\n if (reversedSubArray[i] === '**') {\n return true;\n }\n if ((reversedMainArray[i] !== reversedSubArray[i]) && reversedSubArray[i] !== '*') {\n return false;\n }\n }\n return true;\n\n // } else {\n // if (subArray.length > mainArray.length) return false;\n\n // for (let i = 0; i < subArray.length; i++) {\n // if ((mainArray[i] !== subArray[i]) && subArray[i] !== '*') {\n // return false;\n // }\n // }\n // return true;\n // }\n}","import {\n Component,\n input,\n model,\n inject,\n computed,\n Signal\n} from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport {\n Router,\n NavigationEnd,\n RouterLink,\n} from '@angular/router';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { filter, map } from 'rxjs';\nimport { isRouteActive } from '../utils/navigation.utils';\n\n@Component({\n selector: 'sds-navigation-route-link',\n templateUrl: './navigation-route-link.component.html',\n styleUrls: ['./navigation-route-link.component.scss'],\n imports: [NgIf, RouterLink]\n})\nexport class SdsNavigationRouteLinkComponent implements CollapsibleNavigationEntity {\n /**\n * This variable is used as 'routerLink' attribute in the anchor tag.\n *\n * Is named 'link' to avoid conflict with the 'routerLink' directive.\n */\n link = input<string>('');\n\n /** @deprecated Use `activeRoutePattern` instead. */\n nestedLinks = input<string[]>([]);\n text = input<string>('');\n\n /**\n * This variable can be used to provide a pattern for active route. \n * It has higher priority than default route matching (checking if current route starts with provided link or is part of nested links). \n * This is useful when we have more complex logic to determine if route is active.\n *\n * @memberof SdsNavigationRouteLinkComponent\n */\n activeRoutePattern = input<RegExp | string>('');\n\n additionalInfo = input<string | undefined>(undefined);\n\n disabled = input<boolean>(false);\n isCollapsed = model<boolean>(false);\n\n /** @deprecated Use `activeRoutePattern` instead. */\n ignoreQueryParamsInActiveRoute = input<boolean>(false);\n\n #router = inject(Router);\n\n #routerUrl: Signal<string>;\n\n constructor() {\n this.#routerUrl = toSignal(\n this.#router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n map((event) => (event as NavigationEnd).urlAfterRedirects),\n ),\n { initialValue: this.#router.url },\n );\n }\n\n protected isActive = computed(() =>\n isRouteActive(this.#routerUrl(), {\n activeRoutePattern: this.activeRoutePattern(),\n nestedRoutes: this.nestedLinks(),\n defaultLink: this.link(),\n ignoreQueryParams: this.ignoreQueryParamsInActiveRoute(),\n })\n );\n}\n","<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\n<div \n class=\"sds-navigation-router-link sds-navigation-item-container\"\n [class.disabled]=\"disabled()\"\n [class.active]=\"isActive()\"\n [title]=\"isCollapsed() ? text() : ''\"\n >\n \n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800 sds-fs-93\" \n [routerLink]=\"disabled() ? null : link()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text() }}\n </div>\n <span *ngIf=\"additionalInfo()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\n >{{ additionalInfo() }}</span\n > \n </ng-container>\n </div>\n </a>\n</div>","import {\n Component,\n ContentChildren,\n input,\n Input,\n QueryList,\n signal,\n model,\n computed,\n inject\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\nimport { SdsNavigationRouteLinkComponent } from '../navigation-route-link/navigation-route-link.component';\n\nimport { faAngleUp, faAngleDown } from '@fortawesome/pro-regular-svg-icons';\nimport { filter, map, tap } from 'rxjs';\nimport { isRouteActive } from '../utils/navigation.utils';\nimport { DxoPositionModule } from 'devextreme-angular/ui/nested';\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { NgIf } from '@angular/common';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\n\n@Component({\n selector: 'sds-navigation-group',\n templateUrl: './navigation-group.component.html',\n styleUrls: ['./navigation-group.component.scss'],\n imports: [\n RouterLink,\n NgIf,\n FaIconComponent,\n DxPopoverModule,\n DxoPositionModule\n ]\n})\nexport class SdsNavigationGroupComponent implements CollapsibleNavigationEntity {\n /**\n @deprecated Use `activeRoutePattern` instead. \n * List of paths allowed/expected within this module.\n * These are paths that are not accessible through child navigation\n * elements, but through links in other parts of the application (e.g. link\n * on form)\n */\n navigationGroupNestedRoutes = input<string[]>([]);\n\n @Input() text: string = '';\n @Input() icon: string = '';\n defaultRouterLink = input<string>('');\n @Input() reverse = false;\n\n /** @deprecated Use `activeRoutePattern` instead. */\n ignoreQueryParamsInActiveRoute = input<boolean>(false);\n\n @Input() disabled = false;\n @Input() showPopover = false;\n @Input() showPopoverHeader = false;\n\n lightStyle = input<boolean>(true);\n\n \n /**\n * This variable can be used to provide a pattern for active route. \n * It has higher priority than default route matching (checking if current route starts with provided link or is part of nested links). \n * This is useful when we have more complex logic to determine if route is active.\n *\n * @memberof SdsNavigationGroupComponent\n */\n activeRoutePattern = input<RegExp | string>('');\n\n additionalInfo = input<string | undefined>(undefined);\n\n @ContentChildren(SdsNavigationRouteLinkComponent)\n routerLinkComponents: QueryList<SdsNavigationRouteLinkComponent> = new QueryList<SdsNavigationRouteLinkComponent>();\n\n active: boolean = false;\n\n isPopoverVisible = signal(false);\n\n faAngleUpRegular = faAngleUp;\n faAngleDownRegular = faAngleDown;\n\n #router = inject(Router);\n\n #routerUrl = toSignal(\n this.#router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n tap(() => this.isPopoverVisible.set(false)),\n map((event) => event.urlAfterRedirects)\n ),\n { initialValue: this.#router.url }\n );\n\n isGroupActive = computed(() =>\n isRouteActive(this.#routerUrl(), {\n activeRoutePattern: this.activeRoutePattern(),\n nestedRoutes: this.navigationGroupNestedRoutes(),\n defaultLink: this.defaultRouterLink(),\n ignoreQueryParams: this.ignoreQueryParamsInActiveRoute()\n })\n );\n\n protected isActiveGroupClosed = false;\n\n #MOUSE_MOVE_TO_POPOVER_DELAY = 200;\n\n #pendingOpenTimeoutId: number | null = null;\n #pendingCloseTimeoutId: number | null = null;\n #closeRequested = false;\n\n isCollapsed = model<boolean>(false);\n\n protected lastPointerType = signal<PointerEvent['pointerType']>('mouse');\n protected isTouchPointerType = computed(() => this.lastPointerType() === 'touch');\n\n onMouseEnter(): void {\n const isTouchPointerType = this.isTouchPointerType();\n if (!isTouchPointerType) {\n\n if(this.#pendingCloseTimeoutId != null) {\n clearTimeout(this.#pendingCloseTimeoutId); \n }\n this.#pendingCloseTimeoutId = null;\n this.#closeRequested = false;\n\n const timeoutId = window.setTimeout(() => {\n if (!this.#closeRequested) {\n this.isPopoverVisible.set(true);\n }\n this.#pendingOpenTimeoutId = null;\n }, \n this.#MOUSE_MOVE_TO_POPOVER_DELAY\n );\n this.#pendingOpenTimeoutId = timeoutId;\n }\n }\n\n onMouseLeave(): void {\n const isTouchPointerType = this.isTouchPointerType();\n if (!isTouchPointerType) {\n\n if(!this.isPopoverVisible()){\n if(this.#pendingOpenTimeoutId != null) {\n clearTimeout(this.#pendingOpenTimeoutId); \n }\n this.#pendingOpenTimeoutId = null;\n this.#closeRequested = true;\n } else {\n const timeoutId = window.setTimeout(() => {\n this.isPopoverVisible.set(false);\n this.#closeRequested = true;\n this.#pendingCloseTimeoutId = null;\n }, this.#MOUSE_MOVE_TO_POPOVER_DELAY);\n this.#pendingCloseTimeoutId = timeoutId;\n }\n }\n }\n\n onClick(): void {\n const isTouchPointerType = this.isTouchPointerType();\n if (isTouchPointerType && this.isCollapsed()) {\n this.isPopoverVisible.set(true);\n } else {\n if (this.defaultRouterLink()) {\n this.#router.navigateByUrl(this.defaultRouterLink());\n }\n }\n }\n\n onHiding(e: any) {\n const isTouchPointerType = this.isTouchPointerType();\n if (!isTouchPointerType) {\n const popoverContent = e.component.content().parentNode;\n const isMouseInsidePopover = popoverContent.matches(':hover');\n e.cancel = isMouseInsidePopover;\n\n if (isMouseInsidePopover) {\n this.#closeRequested = false;\n popoverContent.addEventListener('mouseleave', () => {\n popoverContent.removeEventListener('mouseleave', () => {});\n e.component.hide();\n });\n }\n }\n }\n\n rememberPointer(e: PointerEvent) {\n this.lastPointerType.set(e.pointerType ?? 'mouse');\n }\n\n}\n","<div \n #navigationGroup\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\n [class.sds-navigation-group-light-style]=\"lightStyle()\"\n [class.flex-column-reverse]=\"reverse\"\n [class.flex-column]=\"!reverse\"\n [class.disabled]=\"disabled\"\n [class.active]=\"isGroupActive()\"\n [class.collapsed]=\"isCollapsed()\"\n [class.popoverVisible]=\"isPopoverVisible()\"\n >\n <a \n class=\"w-100 sds-navigation-item-content p-2 text-gray-800 sds-fs-93\"\n [class.collapsed]=\"isCollapsed()\"\n style=\"cursor: pointer\"\n [routerLink]=\"(isCollapsed() && isTouchPointerType()) ? undefined : [defaultRouterLink()]\"\n (pointerdown)=\"rememberPointer($event)\"\n\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onClick()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n \n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text }}\n </div>\n <span *ngIf=\"additionalInfo() && !isGroupActive()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body me-2\"\n >{{ additionalInfo() }}\n </span>\n <div class=\"text-right group-dropdown\">\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\n </div>\n </ng-container>\n </div>\n </a>\n\n <div \n class=\"sub-menu\" \n *ngIf=\"!isCollapsed()\">\n\n <div class=\"sds-navigation-group-items sds-flex-column gap-05\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"isCollapsed() || (showPopover && !isGroupActive())\">\n <dx-popover\n [target]=\"navigationGroup\"\n \n \n (onHiding)=\"onHiding($event)\"\n width=\"15rem\"\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2', style: 'border-left: none'}\"\n [hideOnOutsideClick]=\"true\"\n [hideOnParentScroll]=\"true\"\n [animation]=\"{}\"\n [(visible)]=\"isPopoverVisible\"\n >\n\n <dxo-position\n my=\"top left\"\n at=\"top right\"\n [of]=\"navigationGroup\"\n offset=\"-10 -5\"\n >\n </dxo-position>\n\n <div *ngIf=\"showPopoverHeader && isCollapsed()\" class=\"group-header user-select-none\">\n {{ text }}\n </div>\n <div \n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\n >\n <div class=\"sds-navigation-group-items\">\n <ng-content select=\"[popoverContent]\"></ng-content>\n </div>\n </div>\n </dx-popover>\n</ng-container>\n","import { Component, input, OnInit, signal, model } from '@angular/core';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\n\n@Component({\n selector: 'sds-navigation-separator',\n templateUrl: './navigation-separator.component.html',\n styleUrls: ['./navigation-separator.component.scss'],\n standalone: true\n})\nexport class SdsNavigationSeparatorComponent\n implements OnInit, CollapsibleNavigationEntity\n{\n isCollapsed = model<boolean>(false);\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div \n class=\"sds-navigation-separator nav-separator\">\n</div>\n","import { Component, input, Input, OnInit, signal, model } from '@angular/core';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { NgIf } from '@angular/common';\n\n\n@Component({\n selector: 'sds-navigation-header',\n templateUrl: './navigation-header.component.html',\n styleUrls: ['./navigation-header.component.scss'],\n imports: [\n NgIf\n ]\n})\nexport class SdsNavigationHeaderComponent implements OnInit, CollapsibleNavigationEntity {\n @Input() text: string;\n \n isCollapsed = model<boolean>(false);\n \n constructor() {\n this.text = '';\n }\n\n ngOnInit(): void {}\n}\n","\n<div class=\"sds-navigation-header text-gray-800\">\n <span *ngIf=\"!isCollapsed()\">{{ text }}</span>\n</div>\n","import { Component, Input, model } from '@angular/core';\nimport { faExternalLink } from '@fortawesome/pro-regular-svg-icons';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { NgIf } from '@angular/common';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\n\n@Component({\n selector: 'sds-navigation-external-link',\n templateUrl: './navigation-external-link.component.html',\n styleUrls: ['./navigation-external-link.component.scss'],\n imports: [NgIf, FaIconComponent]\n})\n export class SdsNavigationExternalLinkComponent implements CollapsibleNavigationEntity {\n\n @Input() link: string = '';\n @Input() text: string = '';\n @Input() tabName: string = '_blank'\n @Input() externalLinkHint = '';\n @Input() showExternalLinkIcon = true;\n\n\n public externalLinkIcon = faExternalLink;\n\n isCollapsed = model<boolean>(false);\n\n}\n","<div \n class=\"sds-navigation-external-link sds-navigation-item-container\"\n [title]=\"isCollapsed() ? text : ''\"\n >\n <a\n class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\"\n [attr.href]=\"link || null\"\n [attr.target]=\"tabName || null\"\n [attr.rel]=\"tabName === '_blank' ? 'noopener noreferrer' : null\"\n >\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n \n <div class=\"sds-navigation-text\">\n <span>{{ text }}</span>\n </div>\n\n <div \n class=\"sds-navigation-external-link-info-container\">\n <fa-icon \n class=\"sds-navigation-external-link-info-icon\"\n *ngIf=\"showExternalLinkIcon\"\n\n [icon]=\"externalLinkIcon\"\n [size]=\"'xs'\"\n [title]=\"externalLinkHint\"\n >\n </fa-icon>\n </div> \n </ng-container>\n \n <ng-content></ng-content>\n\n </div>\n </a>\n</div>","import { ChangeDetectionStrategy, Component, signal, model } from '@angular/core';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { NgIf } from '@angular/common';\n@Component({\n selector: 'sds-navigation-collapsible-frame',\n templateUrl: './navigation-collapsible-frame.component.html',\n styleUrls: ['./navigation-collapsible-frame.component.scss'],\n imports: [\n NgIf\n ]\n})\nexport class SdsNavigationCollapsibleFrameComponent implements CollapsibleNavigationEntity {\n isCollapsed = model<boolean>(false);\n\n}\n\n\n","<ng-container *ngIf=\"!isCollapsed()\">\n <ng-content></ng-content>\n</ng-container>\n\n<ng-container *ngIf=\"isCollapsed()\">\n <ng-content select=\"[collapsed]\"></ng-content>\n</ng-container>\n\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\n\n@Component({\n selector: 'sds-user-profile-action-button',\n templateUrl: './user-profile-action-button.component.html',\n styleUrls: ['./user-profile-action-button.component.scss'],\n imports: [\n NgIf,\n FontAwesomeModule\n ]\n})\nexport class SdsUserProfileActionButtonComponent {\n @Input() text: string = '';\n @Input() icon?: IconProp;\n\n @Output() actionClick = new EventEmitter<void>();\n\n onActionClick(): void {\n this.actionClick.emit();\n }\n\n}\n","<a \n class=\"\n d-block \n text-black \n sds-navigation-user-profile-action-button \n sds-hoverable-150 \n sds-fs-93 \n sds-cursor-pointer\n \"\n (click)=\"onActionClick()\" \n>\n <fa-icon\n *ngIf=\"icon\"\n class=\"me-2\"\n [fixedWidth]=\"true\"\n [size]=\"'sm'\"\n [icon]=\"icon\">\n </fa-icon>\n\n <span>{{text}}</span>\n</a>","import { Component, EventEmitter, input, Input, model, OnInit, OnChanges, Output, signal, SimpleChanges } from '@angular/core';\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\nimport { NgIf } from '@angular/common';\nimport { SdsAvatarComponent } from '@spicainternational/ngx-sds-components/src/lib/avatar';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { NavigationProfile } from './navigation-profile.model';\nimport { faSignOut, faUser } from '@fortawesome/pro-regular-svg-icons';\nimport { SdsUserProfileActionButtonComponent } from './components/user-profile-action-button/user-profile-action-button.component';\n\n\n@Component({\n selector: 'sds-navigation-user-profile',\n templateUrl: './navigation-user-profile.component.html',\n styleUrls: ['./navigation-user-profile.component.scss'],\n imports: [\n SdsAvatarComponent,\n SdsUserProfileActionButtonComponent,\n NgIf,\n DxPopoverModule,\n ]\n})\nexport class SdsNavigationUserProfileComponent implements OnInit, OnChanges, CollapsibleNavigationEntity {\n @Input() profile: NavigationProfile | null = null;\n @Input() profileInfo: string = '';\n\n @Input() showSignOut: boolean = true;\n @Input() showProfile: boolean = true;\n\n @Input() signOutText: string = 'Sign out';\n @Input() profileText: string = 'Profile';\n\n @Input() showNotificationBadge: boolean = false;\n @Input() newNotificationsText: string = 'New Notifications';\n\n @Output() profileClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() signOutClick: EventEmitter<void> = new EventEmitter<void>();\n\n @Output() notificationBadgeClick: EventEmitter<void> = new EventEmitter<void>();\n \n @Input() showOptions: boolean = false;\n @Output() showOptionsChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n protected userProfileIcon = faUser;\n protected signOutIcon = faSignOut\n\n constructor() {}\n \n isCollapsed = model<boolean>(false);\n sideBarInstanceName = input<string>('');\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges) {\n // if (changes['activeProfileId'] || changes['profile'] || changes['additionalProfiles']) {\n // if (this.activeProfileId === null) {\n // this.activeProfile = this.profile;\n // } else if (this.activeProfileId === this.profile?.id) {\n // this.activeProfile = this.profile;\n // } else {\n // this.activeProfile = this.additionalProfiles.find(profile => profile.id === this.activeProfileId) || null;\n // }\n // }\n }\n\n public onProfileClick(): void {\n this.showOptions = false;\n this.showOptionsChange.emit(this.showOptions);\n this.profileClick.emit();\n }\n\n public onSignOutClick(): void {\n this.showOptions = false;\n this.showOptionsChange.emit(this.showOptions);\n this.signOutClick.emit();\n }\n\n public closeOptions(): void {\n this.showOptions = false;\n this.showOptionsChange.emit(this.showOptions);\n\n }\n\n public openOptions(): void {\n this.showOptions = true;\n this.showOptionsChange.emit(this.showOptions);\n }\n\n protected toggleOptions(event: MouseEvent): void {\n event.stopPropagation();\n this.showOptions = !this.showOptions;\n // console.log(this.showOptions);\n this.showOptionsChange.emit(this.showOptions);\n }\n\n public onNotificationBadgeClick(event: MouseEvent): void {\n event.stopPropagation();\n this.notificationBadgeClick.emit();\n }\n}\n","<div\n class=\"\n d-flex\n flex-row\n align-items-center\n gap-2\n sds-navigation-user-profile-container\n user-select-none\n mb-1 ms-1 me-1 mt-2\n pt-1 pb-1 ps-2\n sds-hoverable\n sds-rounded-2\n \"\n (click)=\"toggleOptions($event)\"\n>\n <div \n #popoverTarget\n class=\"\n position-relative\n\n \">\n <sds-avatar\n [text]=\"profile?.name\"\n [colorKey]=\"profile?.id\"\n [pictureUri]=\"profile?.pictureUri\"\n >\n </sds-avatar>\n\n <span\n *ngIf=\"showNotificationBadge\"\n class=\"\n position-absolute\n notification-badge\n translate-middle\n bg-danger\n border border-light\n rounded-circle\n \"\n (click)=\"onNotificationBadgeClick($event)\"\n >\n <span class=\"visually-hidden\">{{ newNotificationsText }}</span>\n </span>\n </div>\n\n @if(!isCollapsed()) {\n <div class=\"sds-flex-column\">\n <span class=\"truncate-two-lines text-gray-800 sds-fs-93\">\n {{ profile?.name }}\n </span>\n\n <span class=\"sds-fw-400 sds-fs-75 text-truncate text-muted\">\n {{ profileInfo }}\n </span>\n </div>\n }\n</div>\n\n<dx-popover\n [target]=\"popoverTarget\"\n [position]=\"{ my: 'left bottom', at: 'left top' }\"\n collision=\"fit none\"\n minWidth=\"20rem\"\n maxWidth=\"20rem\"\n [(visible)]=\"showOptions\"\n [wrapperAttr]=\"{\n class: 'sds-navigation-user-profile-popover sds-dx-popup-no-arrow sds-dx-popup-content-padding-0'\n }\"\n>\n <div class=\"py-2 pb-3 main-profile-container border-bottom\">\n\n <div class=\"sds-flex-column align-items-center\">\n <sds-avatar\n [text]=\"profile?.name\"\n [colorKey]=\"profile?.id\"\n [pictureUri]=\"profile?.pictureUri\"\n [size]=\"7\"\n >\n </sds-avatar>\n\n <h5 class=\"text-center mt-2 px-3\">\n {{profile?.name}}\n </h5>\n\n <div class=\"sds-fw-400 text-center text-gray-800 sds-fs-87 px-3 text-truncate w-100\">\n {{profile?.info}}\n </div>\n \n </div>\n\n </div>\n\n <ng-content></ng-content>\n\n <ul\n class=\"\n list-unstyled\n sds-navigation-user-profile-actions\n mb-0\n sds-ul-gap-1\n mx-2\n mb-2\n \"\n >\n <li *ngIf=\"showProfile\">\n <sds-user-profile-action-button\n [text]=\"profileText\"\n [icon]=\"userProfileIcon\"\n (actionClick)=\"onProfileClick()\"\n >\n </sds-user-profile-action-button>\n </li>\n\n <li *ngIf=\"showSignOut\">\n <sds-user-profile-action-button\n [text]=\"signOutText\"\n [icon]=\"signOutIcon\"\n (actionClick)=\"onSignOutClick()\"\n >\n </sds-user-profile-action-button>\n </li>\n </ul>\n</dx-popover>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { RouterLink, UrlTree } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport {\n faCircleExclamation,\n faCircleInfo,\n faTriangleExclamation,\n} from '@fortawesome/pro-regular-svg-icons';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\n\n/**\n * Color scheme and default icon of the callout:\n * - `info` - base color `--bs-primary`, icon `faCircleInfo`\n * - `warning` - base color `--bs-orange`, icon `faTriangleExclamation`\n * - `danger` - base color `--bs-pink`, icon `faCircleExclamation`\n */\nexport type SdsNavigationCalloutVariant = 'info' | 'warning' | 'danger';\n\n/**\n * Behaviour of the callout when the navigation is collapsed:\n * - `hide` - the callout is not rendered at all\n * - `icon` - only the icon is rendered; clicking it opens a popup with the full callout\n */\nexport type SdsNavigationCalloutCollapsedMode = 'hide' | 'icon';\n\nconst DEFAULT_ICONS: Record<SdsNavigationCalloutVariant, IconProp> = {\n info: faCircleInfo,\n warning: faTriangleExclamation,\n danger: faCircleExclamation,\n};\n\n/**\n * Generic sidebar message: icon + title + description + an optional action. Carries no\n * knowledge of what it's displaying (trial status, payment issues, announcements, ...) - callers\n * pass in already-resolved text.\n *\n * The action is either a button (handle `actionClicked`) or, when `actionLink` is set, a router\n * link that navigates on its own. When the navigation is collapsed the callout is either hidden\n * or shown as an icon that opens the full callout in a popup (see `collapsedMode`).\n *\n * Colors are CSS custom properties derived from the base color `--sds-navigation-callout-color`\n * (set by `variant`); override the base or any of the derived ones:\n * `--sds-navigation-callout-bg`, `-border`, `-title` (also the icon), `-description`, `-action`.\n *\n * @example\n * <!-- Action button -->\n * <sds-navigation-callout\n * variant=\"warning\"\n * title=\"Trial ends today\"\n * description=\"Choose a plan to keep using the app.\"\n * actionText=\"Upgrade to paid\"\n * (actionClicked)=\"openUpgradeDialog()\">\n * </sds-navigation-callout>\n *\n * <!-- Redirect -->\n * <sds-navigation-callout\n * variant=\"danger\"\n * title=\"Payment failed\"\n * description=\"Pay the invoice to keep your subscription.\"\n * actionText=\"Go to billing page\"\n * actionLink=\"/billing\">\n * </sds-navigation-callout>\n */\n@Component({\n selector: 'sds-navigation-callout',\n templateUrl: './navigation-callout.component.html',\n styleUrls: ['./navigation-callout.component.scss'],\n imports: [FaIconComponent, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, RouterLink],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': \"'sds-navigation-callout-' + variant()\",\n '[class.sds-navigation-callout-collapsed]': 'isCollapsed()',\n '[style.display]': \"isHidden() ? 'none' : null\",\n },\n})\nexport class SdsNavigationCalloutComponent implements CollapsibleNavigationEntity {\n /**\n * Required. Color scheme and default icon:\n * `info` (`--bs-primary`), `warning` (`--bs-orange`) or `danger` (`--bs-pink`).\n */\n variant = input.required<SdsNavigationCalloutVariant>();\n\n /**\n * Font Awesome icon shown next to the title (and as the collapsed icon).\n * Falls back to the default icon of the `variant` when not provided.\n * @default null\n */\n icon = input<IconProp | null>(null);\n\n /** Required. Title shown next to the icon. Displayed as given - pass already translated text. */\n title = input.required<string>();\n\n /** Required. Text shown below the title. Displayed as given - pass already translated text. */\n description = input.required<string>();\n\n /**\n * Text of the action. The action is shown only when this is not empty.\n * @default ''\n */\n actionText = input<string>('');\n\n /**\n * Route of the action - accepts the same values as `routerLink` (string, commands array or `UrlTree`).\n * When set the action is rendered as a link that navigates to the route, otherwise as a button.\n * Ignored when `actionText` is empty.\n * @default null\n */\n actionLink = input<string | readonly any[] | UrlTree | null>(null);\n\n /**\n * Behaviour when the navigation is collapsed:\n * `icon` shows only the icon, which opens the full callout in a popup; `hide` hides the callout.\n * @default 'icon'\n */\n collapsedMode = input<SdsNavigationCalloutCollapsedMode>('icon');\n\n /**\n * Collapsed state of the navigation. Set automatically by `sds-navigation-container` -\n * bind it only when the callout is used outside of a container.\n * @default false\n */\n isCollapsed = model<boolean>(false);\n\n /**\n * Emitted when the action is clicked, for both buttons and links. For a link it is only a\n * notification - the router navigates on its own. The popup (collapsed mode) is closed first.\n */\n actionClicked = output<void>();\n\n protected resolvedIcon = computed(() => this.icon() ?? DEFAULT_ICONS[this.variant()]);\n protected isHidden = computed(() => this.isCollapsed() && this.collapsedMode() === 'hide');\n protected isIconOnly = computed(() => this.isCollapsed() && this.collapsedMode() === 'icon');\n\n protected isPopupOpen = signal(false);\n\n // Right of the icon with bottom edges aligned; falls back to top alignment when there's no room.\n protected popupPositions: ConnectedPosition[] = [\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: 8 },\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: 8 },\n ];\n\n constructor() {\n effect(() => {\n if (!this.isIconOnly()) {\n this.isPopupOpen.set(false);\n }\n });\n }\n\n protected togglePopup(): void {\n this.isPopupOpen.update((isOpen) => !isOpen);\n }\n\n protected onPopupOutsideClick(event: MouseEvent, origin: HTMLElement): void {\n // The origin click toggles the popup itself; closing here as well would re-open it.\n if (origin.contains(event.target as Node)) {\n return;\n }\n this.isPopupOpen.set(false);\n }\n\n protected onPopupKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.isPopupOpen.set(false);\n }\n }\n\n protected onActionClick(): void {\n this.isPopupOpen.set(false);\n this.actionClicked.emit();\n }\n}\n","@if (isIconOnly()) {\n <button\n #origin\n type=\"button\"\n class=\"sds-navigation-callout-icon-button\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n [attr.aria-label]=\"title()\"\n [attr.aria-expanded]=\"isPopupOpen()\"\n (click)=\"togglePopup()\"\n >\n <fa-icon\n class=\"sds-navigation-callout-icon\"\n [icon]=\"resolvedIcon()\"\n ></fa-icon>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPopupOpen()\"\n [cdkConnectedOverlayPositions]=\"popupPositions\"\n (overlayOutsideClick)=\"onPopupOutsideClick($event, origin)\"\n (detach)=\"isPopupOpen.set(false)\"\n (overlayKeydown)=\"onPopupKeydown($event)\"\n >\n <div [class]=\"'sds-navigation-callout-popup sds-navigation-callout-' + variant()\">\n <ng-container *ngTemplateOutlet=\"card\"></ng-container>\n </div>\n </ng-template>\n} @else {\n <ng-container *ngTemplateOutlet=\"card\"></ng-container>\n}\n\n<ng-template #card>\n <div class=\"sds-navigation-callout-card\">\n <div class=\"sds-navigation-callout-title d-flex align-items-center gap-1 sds-fs-87 sds-fw-600\">\n <fa-icon\n class=\"sds-navigation-callout-icon\"\n [icon]=\"resolvedIcon()\"\n ></fa-icon>\n <span>{{ title() }}</span>\n </div>\n <span class=\"sds-navigation-callout-description\">{{ description() }}</span>\n @if (actionText()) {\n @if (actionLink()) {\n <a\n class=\"btn btn-sm btn-link sds-navigation-callout-action sds-fw-600\"\n [routerLink]=\"actionLink()\"\n (click)=\"onActionClick()\"\n >\n {{ actionText() }}\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"btn btn-sm btn-link sds-navigation-callout-action sds-fw-600\"\n (click)=\"onActionClick()\"\n >\n {{ actionText() }}\n </button>\n }\n }\n </div>\n</ng-template>\n","import {\n Component,\n contentChildren,\n effect,\n OnInit,\n untracked,\n model,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { SdsNavigationGroupComponent } from '../navigation-group/navigation-group.component';\nimport { SdsNavigationRouteLinkComponent } from '../navigation-route-link/navigation-route-link.component';\nimport { SdsNavigationSeparatorComponent } from '../navigation-separator/navigation-separator.component';\nimport { SdsNavigationHeaderComponent } from '../navigation-header/navigation-header.component';\nimport { SdsNavigationExternalLinkComponent } from '../navigation-external-link/navigation-external-link.component';\nimport { SdsNavigationCollapsibleFrameComponent } from '../navigation-collapsible-frame/navigation-collapsible-frame.component';\nimport { SdsNavigationUserProfileComponent } from '../navigation-user-profile/navigation-user-profile.component';\nimport { SdsNavigationCalloutComponent } from '../navigation-callout/navigation-callout.component';\n\n@Component({\n selector: 'sds-navigation-container',\n templateUrl: './navigation-container.component.html',\n styleUrls: ['./navigation-container.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SdsNavigationContainerComponent implements OnInit, CollapsibleNavigationEntity\n{\n isCollapsed = model<boolean>(false);\n\n groupComponentChildren = contentChildren(SdsNavigationGroupComponent);\n routeLinkComponentChildren = contentChildren(SdsNavigationRouteLinkComponent);\n separatorComponentChildren = contentChildren(SdsNavigationSeparatorComponent);\n headerComponentChildren = contentChildren(SdsNavigationHeaderComponent);\n externalLinkComponentChildren = contentChildren(SdsNavigationExternalLinkComponent);\n userProfileComponentChildren = contentChildren(SdsNavigationUserProfileComponent);\n collapsibleFrameComponentChildren = contentChildren(SdsNavigationCollapsibleFrameComponent);\n calloutComponentChildren = contentChildren(SdsNavigationCalloutComponent);\n\n constructor() {\n // Reading the content queries inside the effect makes it re-run once they resolve\n // (so an initial collapsed state is applied) and whenever children are added later.\n effect(() => {\n const isCollapsed = this.isCollapsed();\n const children: { isCollapsed: { set(value: boolean): void } }[] = [\n ...this.groupComponentChildren(),\n ...this.routeLinkComponentChildren(),\n ...this.separatorComponentChildren(),\n ...this.headerComponentChildren(),\n ...this.externalLinkComponentChildren(),\n ...this.userProfileComponentChildren(),\n ...this.collapsibleFrameComponentChildren(),\n ...this.calloutComponentChildren(),\n ];\n untracked(() => {\n children.forEach((child) => child.isCollapsed.set(isCollapsed));\n });\n });\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"sds-navigation-container\">\n <ng-content></ng-content>\n</div>","import { Component, Input } from '@angular/core';\nimport { NavigationProfile } from '../../navigation-profile.model';\nimport { SdsAvatarComponent } from '@spicainternational/ngx-sds-components/src/lib/avatar';\n\n@Component({\n selector: 'sds-user-profile-tile',\n templateUrl: './user-profile-tile.component.html',\n styleUrls: ['./user-profile-tile.component.scss'],\n imports: [\n SdsAvatarComponent\n ]\n})\nexport class SdsUserProfileTileComponent {\n @Input() profile: NavigationProfile | null = null;\n @Input() emphasizeName: boolean = true;\n @Input() size: 'small' | 'medium' = 'medium';\n}\n","\n<div class=\"sds-flex-row-center gap-3\">\n <sds-avatar\n [text]=\"profile?.name\"\n [colorKey]=\"profile?.id\"\n [pictureUri]=\"profile?.pictureUri\"\n [size]=\"size === 'small' ? 2 : 3\"\n borderColor=\"white\"\n borderWidth=\"2\"\n >\n </sds-avatar>\n\n <div \n class=\"flex-grow-1 flex-shrink-1 text-body\"\n [style.minWidth.px]=\"1\"\n >\n <span \n class=\"sds-fs-100 text-truncate\"\n [class.sds-fs-100]=\"size === 'medium'\"\n [class.sds-fs-95]=\"size === 'small'\"\n [class.sds-fw-500]=\"emphasizeName\"\n >\n {{profile?.name}}\n </span>\n <div \n class=\"sds-fw-400 text-truncate text-gray-800\"\n [class.sds-fs-75]=\"size === 'medium'\"\n [class.sds-fs-75]=\"size === 'small'\"\n >\n {{profile?.info}}\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { NavigationProfile } from '../../navigation-profile.model';\nimport { faEyeSlash } from '@fortawesome/pro-regular-svg-icons';\nimport { UserProfileSelectorContent } from './user-profile-selector.types';\nimport { SdsUserProfileActionButtonComponent } from '../user-profile-action-button/user-profile-action-button.component';\nimport { SdsUserProfileTileComponent } from '../user-profile-tile/user-profile-tile.component';\nimport { NgFor, NgIf } from '@angular/common';\n\n@Component({\n selector: 'sds-user-profile-selector',\n templateUrl: './user-profile-selector.component.html',\n styleUrls: ['./user-profile-selector.component.scss'],\n imports: [\n NgIf,\n NgFor,\n SdsUserProfileTileComponent,\n SdsUserProfileActionButtonComponent\n ]\n})\nexport class SdsUserProfileSelectorComponent {\n\n @Input() content: UserProfileSelectorContent = 'profileList';\n @Input() profiles: NavigationProfile[] = [];\n @Input() selectDefaultProfileText: string = 'Stop Impersonation';\n @Input() switchText: string = 'Switch to';\n\n @Output() profileIdChange = new EventEmitter<string>();\n\n protected isSelectedOneOfProfiles: boolean = false;\n protected readonly SELECT_DEFAULT_PROFILE_ICON = faEyeSlash;\n\n public selectProfile(profileId: string): void {\n this.profileIdChange.emit(profileId);\n }\n\n public selectDefaultProfile(): void {\n this.profileIdChange.emit('');\n }\n\n}\n","<div class=\"mx-2\"> \n <div \n *ngIf=\"content === 'profileList' && profiles && profiles.length > 0\"\n class=\"pt-2 pb-3 mt-1 mb-2 ps-2 border-bottom\">\n\n <div class=\"sds-fs-75 py-1 mb-2 text-uppercase\">{{switchText}}</div>\n\n <ul class=\"list-unstyled mb-0 sds-ul-gap-1 ps-2 profile-list sds-scrollbar sds-scrollbar-thin\">\n <li\n class=\"rounded sds-hoverable-150 pe-2 py-1\"\n *ngFor=\"let profile of profiles\"\n >\n <sds-user-profile-tile\n class=\"sds-cursor-pointer\"\n [profile]=\"profile\"\n [size]=\"'small'\"\n [emphasizeName]=\"false\"\n (click)=\"selectProfile(profile.id)\"\n >\n </sds-user-profile-tile>\n </li>\n </ul>\n </div>\n\n <div \n *ngIf=\"content === 'selectDefaultProfile'\"\n class=\"mt-2 mb-1\">\n <sds-user-profile-action-button\n [text]=\"selectDefaultProfileText\"\n [icon]=\"SELECT_DEFAULT_PROFILE_ICON\"\n (click)=\"selectDefaultProfile()\"\n >\n </sds-user-profile-action-button>\n </div>\n</div>","import { Component, EventEmitter, input, Input, model, OnInit, Output, output } from '@angular/core';\nimport { ProductModel } from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\nimport { SdsAppSwitcherComponent } from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\nimport { NgIf } from '@angular/common';\nimport { CollapsibleNavigationEntity } from '../models/navigation-models';\nimport { faArrowLeftFromLine, faArrowRightFromLine, faSidebar } from '@fortawesome/pro-regular-svg-icons';\nimport { faSidebar as falSidebar} from '@fortawesome/pro-light-svg-icons';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\n\n@Component({\n selector: 'sds-product-home',\n templateUrl: './product-home.component.html',\n styleUrls: ['./product-home.component.scss'],\n imports: [\n NgIf,\n FontAwesomeModule,\n SdsAppSwitcherComponent\n ]\n})\nexport class SdsProductHomeComponent implements OnInit, CollapsibleNavigationEntity {\n\n @Input() public logoUrl?: string;\n @Input() public logoAltText?: string;\n @Input() public moduleTitle?: string;\n\n @Input() public showAppSwitcher = false;\n @Input() public appSwitcherProductCode: string | undefined;\n @Input() public appSwitcherUserProductCodes: string[] | undefined;\n @Input() public appSwitcherTenantProducts: ProductModel[] | undefined;\n @Input() public appSwitcherSwitchText: string = '';\n @Input() public appSwitcherDiscoverText: string = ''; \n\n textOpen = input<string>('Expand sidebar');\n textClose = input<string>('Collapse sidebar');\n\n @Input() public allowHeaderClick = false;\n\n @Output() public productSwitched: EventEmitter<ProductModel> = new EventEmitter<ProductModel>(); \n @Output() public headerClick: EventEmitter<void> = new EventEmitter<void>();\n public collapsedToggle = output<boolean>();\n\n protected ICON_CLOSE = faArrowLeftFromLine;\n protected ICON_OPEN = faArrowRightFromLine;\n\n constructor() {}\n\n isCollapsed = model<boolean>(false);\n\n sideBarInstanceName = input<string>('');\n\n ngOnInit(): void {}\n\n protected onProductClick(product: ProductModel): void {\n this.productSwitched.emit(product);\n }\n\n protected onHeaderClick(): void {\n if (this. allowHeaderClick) {\n this.headerClick.emit();\n }\n }\n\n protected toggleState(): void {\n const collapsed = !this.isCollapsed();\n this.isCollapsed.set(collapsed);\n this.collapsedToggle.emit(collapsed);\n }\n}\n","<div \n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\n >\n @if(!isCollapsed()) {\n <sds-app-switcher\n *ngIf=\"showAppSwitcher\"\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\n [productCode]=\"appSwitcherProductCode\"\n [userProductCodes]=\"appSwitcherUserProductCodes\"\n [tenantProducts]=\"appSwitcherTenantProducts\"\n [switchText]=\"appSwitcherSwitchText\"\n [discoverText]=\"appSwitcherDiscoverText\"\n (productClick)=\"onProductClick($event)\"\n >\n </sds-app-switcher>\n \n <div \n class=\"sds-flex-grow-shrink product-title\"\n (click)=\"onHeaderClick()\"\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\n >\n <div \n class=\"product-logo-container\"\n [class.collapsed]=\"isCollapsed()\"\n >\n <img\n class=\"product-logo\"\n [src]=\"logoUrl\" \n [alt]=\"logoAltText\"\n > \n </div>\n\n @if(moduleTitle && !isCollapsed()) {\n <h6 class=\"mt-2\">\n {{moduleTitle}}\n </h6>\n }\n </div>\n }\n\n <button\n type=\"button\"\n class=\"\n toggle-collapsed-button \n text-gray-800 sds-fs-93 \n sds-hoverable sds-rounded-2 \n p-1 ml-2\n d-flex align-items-center justify-content-center\n sds-cursor-pointer\n \" \n (click)=\"toggleState()\" \n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \n >\n <fa-icon \n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n </button>\n \n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * A standalone Angular pipe that dynamically generates a strict Regular Expression string \n * used to determine active route states. It transforms a single route or array of routes \n * into a unified, URL-safe regex pattern.\n * * ### Key Technical Behaviors:\n * - **Strict Boundary Enforcement:** Wraps the resulting pattern with `^\\/` (start) and \n * `([?#]|$)` (end, query param, or hash fragment) to ensure exact path matching and prevent false positives.\n * - **Wildcard Support:** Intercepts the `**` syntax and compiles it into a safe regex wildcard (`[^?#]*`), \n * allowing for easy matching of a base route and all deeply nested child routes.\n * - **Auto-Escaping:** Automatically sanitizes input by escaping forward slashes (`/`) and hash symbols (`#`).\n * * @param route A single route string or an array of route strings (e.g., `'nav-showcase'` or `['route', 'route/**']`)\n * @returns A strictly bounded regex pattern string (e.g., `^\\/(route|route\\/[^?#]*)([?#]|$)`)\n */\n@Pipe({\n name: 'sdsActiveRoutePattern',\n standalone: true,\n})\nexport class SdsActiveRoutePatternPipe implements PipeTransform {\n transform(route: string | string[]): string {\n const routes = Array.isArray(route) ? route : [route];\n return this.buildActiveRoutePattern(routes);\n }\n\n buildActiveRoutePattern(routes: string[]): string {\n const patterns = routes.map(route => \n route\n .replace(/\\*\\*/g, '[^?#]*')\n .replace(/[#]/g, '\\\\#')\n .replace(/\\//g, '\\\\/')\n );\n return `^\\\\/(${patterns.join('|')})(\\\\/[^?#]*)*([?#]|$)`;\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -110,11 +110,11 @@ class SdsNumberBoxComponent {
|
|
|
110
110
|
this.newValue$.complete();
|
|
111
111
|
}
|
|
112
112
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SdsNumberBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SdsNumberBoxComponent, isStandalone: true, selector: "sds-number-box", inputs: { value: "value", width: "width", disabled: "disabled", max: "max", min: "min", step: "step", iconSet: "iconSet", burstInterval: "burstInterval", debounceTime: "debounceTime" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div \
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SdsNumberBoxComponent, isStandalone: true, selector: "sds-number-box", inputs: { value: "value", width: "width", disabled: "disabled", max: "max", min: "min", step: "step", iconSet: "iconSet", burstInterval: "burstInterval", debounceTime: "debounceTime" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div \n class=\"input-group\"\n [style.width]=\"width\"\n>\n\n <button \n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startDecrement()\" \n (mouseup)=\"stopDecrement()\"\n (mouseleave)=\"stopDecrement()\"\n [disabled]=\"disabled\"\n > \n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n \n <input \n type=\"text\" \n class=\"form-control text-center bg-white text-monospace\" \n [class.text-muted]=\"disabled\"\n [style.padding-top.rem]=\"0.31\"\n [style.padding-bottom.rem]=\"0.31\"\n placeholder=\"\"\n [value]=\"value\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n >\n \n <button \n #incrementButton\n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startIncrement()\" \n (mouseup)=\"stopIncrement()\"\n (mouseleave)=\"stopIncrement()\"\n [disabled]=\"disabled\"\n >\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n\n</div>", styles: ["input{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] }); }
|
|
114
114
|
}
|
|
115
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SdsNumberBoxComponent, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
|
-
args: [{ selector: 'sds-number-box', imports: [NgIf, FaIconComponent], template: "<div \
|
|
117
|
+
args: [{ selector: 'sds-number-box', imports: [NgIf, FaIconComponent], template: "<div \n class=\"input-group\"\n [style.width]=\"width\"\n>\n\n <button \n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startDecrement()\" \n (mouseup)=\"stopDecrement()\"\n (mouseleave)=\"stopDecrement()\"\n [disabled]=\"disabled\"\n > \n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n \n <input \n type=\"text\" \n class=\"form-control text-center bg-white text-monospace\" \n [class.text-muted]=\"disabled\"\n [style.padding-top.rem]=\"0.31\"\n [style.padding-bottom.rem]=\"0.31\"\n placeholder=\"\"\n [value]=\"value\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n >\n \n <button \n #incrementButton\n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startIncrement()\" \n (mouseup)=\"stopIncrement()\"\n (mouseleave)=\"stopIncrement()\"\n [disabled]=\"disabled\"\n >\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n\n</div>", styles: ["input{pointer-events:none}\n"] }]
|
|
118
118
|
}], ctorParameters: () => [], propDecorators: { value: [{
|
|
119
119
|
type: Input
|
|
120
120
|
}], valueChange: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-number-box.mjs","sources":["../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.ts","../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.html","../../../projects/ngx-sds-components/src/lib/number-box/spicainternational-ngx-sds-components-src-lib-number-box.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { faChevronLeft, faChevronRight, faMinus, faPlus } from '@fortawesome/pro-regular-svg-icons';\r\nimport { Subject, debounceTime, fromEvent, interval, map, takeUntil, throttleTime } from 'rxjs';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { NgIf } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'sds-number-box',\r\n templateUrl: './number-box.component.html',\r\n styleUrls: ['./number-box.component.scss'],\r\n imports: [NgIf, FaIconComponent]\r\n})\r\nexport class SdsNumberBoxComponent implements OnInit, OnDestroy {\r\n @Input() value: number = 0;\r\n @Output() valueChange = new EventEmitter<number>();\r\n\r\n /**\r\n * Width of component. By default 8rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() width: string = '8rem';\r\n\r\n /**\r\n * Specifies whether the UI component responds to user interaction.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * The maximum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() max?: number;\r\n\r\n /**\r\n * The minimum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() min?: number;\r\n\r\n /**\r\n * The increment by which the value is increased or decreased.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() step: number = 1;\r\n\r\n /**\r\n * The icon set to use for the increment and decrement buttons.\r\n * Icons used are from the FrontAwesome library, so you must include them in the project to use them. \r\n * You can add them to FA library on the module/component level.\r\n * Icons: regular, minus/plus, chevron-left/right\r\n *\r\n * @type {('plus-minus' | 'left-right')}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() iconSet: 'plus-minus' | 'left-right' = 'plus-minus';\r\n\r\n /**\r\n * Interval between value changes when the increment or decrement button is held down.\r\n *\r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() burstInterval: number = 120;\r\n\r\n /**\r\n * Interval in which new value is emitted to the parent component.\r\n * It should be higher than burstInterval to prevent multiple value changes in burst mode.\r\n * \r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() debounceTime: number = 150;\r\n\r\n public ICON_MINUS = faMinus;\r\n public ICON_PLUS = faPlus;\r\n public ICON_LEFT = faChevronLeft;\r\n public ICON_RIGHT = faChevronRight;\r\n\r\n private destroy$: Subject<void> = new Subject<void>();\r\n private newValue$: Subject<number> = new Subject<number>();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.newValue$.pipe(\r\n debounceTime(this.debounceTime)\r\n ).subscribe(() => {\r\n this.valueChange.emit(this.value);\r\n });\r\n }\r\n\r\n public increment() {\r\n const newValue = this.value + this.step;\r\n if (typeof this.max !== 'undefined' && newValue > this.max) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n public decrement() {\r\n const newValue = this.value - this.step;\r\n if (typeof this.min !== 'undefined' && newValue < this.min) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n startIncrement() {\r\n this.increment();\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.increment();\r\n });\r\n }\r\n\r\n stopIncrement() {\r\n this.destroy$.next();\r\n }\r\n\r\n startDecrement() {\r\n this.decrement();\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.decrement();\r\n });\r\n }\r\n\r\n stopDecrement() {\r\n this.destroy$.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.complete();\r\n this.newValue$.complete();\r\n }\r\n}\r\n","<div \r\n class=\"input-group\"\r\n [style.width]=\"width\"\r\n>\r\n\r\n <button \r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startDecrement()\" \r\n (mouseup)=\"stopDecrement()\"\r\n (mouseleave)=\"stopDecrement()\"\r\n [disabled]=\"disabled\"\r\n > \r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n \r\n <input \r\n type=\"text\" \r\n class=\"form-control text-center bg-white text-monospace\" \r\n [class.text-muted]=\"disabled\"\r\n [style.padding-top.rem]=\"0.31\"\r\n [style.padding-bottom.rem]=\"0.31\"\r\n placeholder=\"\"\r\n [value]=\"value\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n \r\n <button \r\n #incrementButton\r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startIncrement()\" \r\n (mouseup)=\"stopIncrement()\"\r\n (mouseleave)=\"stopIncrement()\"\r\n [disabled]=\"disabled\"\r\n >\r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-number-box.mjs","sources":["../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.ts","../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.html","../../../projects/ngx-sds-components/src/lib/number-box/spicainternational-ngx-sds-components-src-lib-number-box.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { faChevronLeft, faChevronRight, faMinus, faPlus } from '@fortawesome/pro-regular-svg-icons';\nimport { Subject, debounceTime, fromEvent, interval, map, takeUntil, throttleTime } from 'rxjs';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sds-number-box',\n templateUrl: './number-box.component.html',\n styleUrls: ['./number-box.component.scss'],\n imports: [NgIf, FaIconComponent]\n})\nexport class SdsNumberBoxComponent implements OnInit, OnDestroy {\n @Input() value: number = 0;\n @Output() valueChange = new EventEmitter<number>();\n\n /**\n * Width of component. By default 8rem.\n *\n * @type {string}\n * @memberof SdsDurationBoxComponent\n */\n @Input() width: string = '8rem';\n\n /**\n * Specifies whether the UI component responds to user interaction.\n *\n * @type {boolean}\n * @memberof SdsDurationBoxComponent\n */\n @Input() disabled: boolean = false;\n\n /**\n * The maximum value accepted by the duration box.\n *\n * @type {number}\n * @memberof SdsDurationBoxComponent\n */\n @Input() max?: number;\n\n /**\n * The minimum value accepted by the duration box.\n *\n * @type {number}\n * @memberof SdsDurationBoxComponent\n */\n @Input() min?: number;\n\n /**\n * The increment by which the value is increased or decreased.\n *\n * @type {number}\n * @memberof SdsDurationBoxComponent\n */\n @Input() step: number = 1;\n\n /**\n * The icon set to use for the increment and decrement buttons.\n * Icons used are from the FrontAwesome library, so you must include them in the project to use them. \n * You can add them to FA library on the module/component level.\n * Icons: regular, minus/plus, chevron-left/right\n *\n * @type {('plus-minus' | 'left-right')}\n * @memberof SdsNumberBoxComponent\n */\n @Input() iconSet: 'plus-minus' | 'left-right' = 'plus-minus';\n\n /**\n * Interval between value changes when the increment or decrement button is held down.\n *\n * @type {number}\n * @memberof SdsNumberBoxComponent\n */\n @Input() burstInterval: number = 120;\n\n /**\n * Interval in which new value is emitted to the parent component.\n * It should be higher than burstInterval to prevent multiple value changes in burst mode.\n * \n * @type {number}\n * @memberof SdsNumberBoxComponent\n */\n @Input() debounceTime: number = 150;\n\n public ICON_MINUS = faMinus;\n public ICON_PLUS = faPlus;\n public ICON_LEFT = faChevronLeft;\n public ICON_RIGHT = faChevronRight;\n\n private destroy$: Subject<void> = new Subject<void>();\n private newValue$: Subject<number> = new Subject<number>();\n\n constructor() {}\n\n ngOnInit(): void {\n this.newValue$.pipe(\n debounceTime(this.debounceTime)\n ).subscribe(() => {\n this.valueChange.emit(this.value);\n });\n }\n\n public increment() {\n const newValue = this.value + this.step;\n if (typeof this.max !== 'undefined' && newValue > this.max) {\n return;\n }\n this.value = newValue;\n this.newValue$.next(this.value);\n }\n\n public decrement() {\n const newValue = this.value - this.step;\n if (typeof this.min !== 'undefined' && newValue < this.min) {\n return;\n }\n this.value = newValue;\n this.newValue$.next(this.value);\n }\n\n startIncrement() {\n this.increment();\n interval(this.burstInterval)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.increment();\n });\n }\n\n stopIncrement() {\n this.destroy$.next();\n }\n\n startDecrement() {\n this.decrement();\n interval(this.burstInterval)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.decrement();\n });\n }\n\n stopDecrement() {\n this.destroy$.next();\n }\n\n ngOnDestroy() {\n this.destroy$.complete();\n this.newValue$.complete();\n }\n}\n","<div \n class=\"input-group\"\n [style.width]=\"width\"\n>\n\n <button \n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startDecrement()\" \n (mouseup)=\"stopDecrement()\"\n (mouseleave)=\"stopDecrement()\"\n [disabled]=\"disabled\"\n > \n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n \n <input \n type=\"text\" \n class=\"form-control text-center bg-white text-monospace\" \n [class.text-muted]=\"disabled\"\n [style.padding-top.rem]=\"0.31\"\n [style.padding-bottom.rem]=\"0.31\"\n placeholder=\"\"\n [value]=\"value\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n >\n \n <button \n #incrementButton\n class=\"btn btn-secondary btn-sm border\" \n type=\"button\"\n (mousedown)=\"startIncrement()\" \n (mouseup)=\"stopIncrement()\"\n (mouseleave)=\"stopIncrement()\"\n [disabled]=\"disabled\"\n >\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\n </button>\n\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|