@opendevstack/ngx-appshell 19.0.5
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 +131 -0
- package/fesm2022/opendevstack-ngx-appshell.mjs +727 -0
- package/fesm2022/opendevstack-ngx-appshell.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/appshell-breadcrumb/appshell-breadcrumb.component.d.ts +7 -0
- package/lib/components/appshell-chip/appshell-chip.component.d.ts +6 -0
- package/lib/components/appshell-filters/appshell-filters.component.d.ts +12 -0
- package/lib/components/appshell-header/appshell-header.component.d.ts +24 -0
- package/lib/components/appshell-icon/appshell-icon.component.d.ts +12 -0
- package/lib/components/appshell-layout/appshell-layout.component.d.ts +25 -0
- package/lib/components/appshell-page-header/appshell-page-header.component.d.ts +18 -0
- package/lib/components/appshell-platform-header/appshell-platform-header.component.d.ts +37 -0
- package/lib/components/appshell-platform-layout/appshell-platform-layout.component.d.ts +30 -0
- package/lib/components/appshell-product-card/appshell-product-card.component.d.ts +23 -0
- package/lib/components/appshell-product-card-v2/appshell-product-card-v2.component.d.ts +16 -0
- package/lib/components/appshell-select/appshell-select.component.d.ts +9 -0
- package/lib/components/appshell-sidebar-menu/appshell-sidebar-menu.component.d.ts +12 -0
- package/lib/components/appshell-toast/appshell-toast.component.d.ts +9 -0
- package/lib/components/appshell-toasts/appshell-toasts.component.d.ts +14 -0
- package/lib/components/index.d.ts +15 -0
- package/lib/directives/appshell-link.directive.d.ts +15 -0
- package/lib/directives/index.d.ts +1 -0
- package/lib/models/appshell-button.d.ts +5 -0
- package/lib/models/appshell-filter.d.ts +4 -0
- package/lib/models/appshell-link.d.ts +6 -0
- package/lib/models/appshell-links-group.d.ts +5 -0
- package/lib/models/appshell-notification.d.ts +10 -0
- package/lib/models/appshell-picker.d.ts +9 -0
- package/lib/models/appshell-product.d.ts +12 -0
- package/lib/models/appshell-tag.d.ts +4 -0
- package/lib/models/appshell-toast.d.ts +6 -0
- package/lib/models/appshell-user.d.ts +5 -0
- package/lib/models/index.d.ts +10 -0
- package/lib/screens/appshell-notifications-screen/appshell-notifications-screen.component.d.ts +23 -0
- package/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.d.ts +16 -0
- package/lib/screens/appshell-product-view-screen/appshell-product-view-screen.component.d.ts +19 -0
- package/lib/screens/index.d.ts +3 -0
- package/lib/services/appshell-toast.service.d.ts +12 -0
- package/lib/services/icon-registry.service.d.ts +14 -0
- package/lib/services/index.d.ts +2 -0
- package/opendevstack-ngx-appshell-19.0.5.tgz +0 -0
- package/package.json +44 -0
- package/public-api.d.ts +5 -0
- package/schematics/azure-login/files/app-config/config.json.template +12 -0
- package/schematics/azure-login/files/app-config-service/app-config.service.spec.ts.template +48 -0
- package/schematics/azure-login/files/app-config-service/app-config.service.ts.template +39 -0
- package/schematics/azure-login/files/azure-config/azure.config.ts.template +94 -0
- package/schematics/azure-login/files/azure-service/azure.service.spec.ts.template +311 -0
- package/schematics/azure-login/files/azure-service/azure.service.ts.template +161 -0
- package/schematics/azure-login/index.d.ts +2 -0
- package/schematics/azure-login/index.js +325 -0
- package/schematics/azure-login/index.js.map +1 -0
- package/schematics/azure-login/schema.json +8 -0
- package/schematics/collection.json +19 -0
- package/schematics/nats-notifications/files/nats-service/nats.service.spec.ts.template +473 -0
- package/schematics/nats-notifications/files/nats-service/nats.service.ts.template +255 -0
- package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.html.template +7 -0
- package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.spec.ts.template +152 -0
- package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.ts.template +61 -0
- package/schematics/nats-notifications/index.d.ts +2 -0
- package/schematics/nats-notifications/index.js +502 -0
- package/schematics/nats-notifications/index.js.map +1 -0
- package/schematics/nats-notifications/schema.json +8 -0
- package/schematics/ng-add/files/_fonts.scss +85 -0
- package/schematics/ng-add/files/styles.scss +47 -0
- package/schematics/ng-add/index.d.ts +2 -0
- package/schematics/ng-add/index.js +442 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/styles/appshell-typography-config.scss +19 -0
- package/styles/appshell.theme.scss +75 -0
- package/styles/palette.css +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opendevstack-ngx-appshell.mjs","sources":["../../../projects/ngx-appshell/src/lib/directives/appshell-link.directive.ts","../../../projects/ngx-appshell/src/lib/components/appshell-icon/appshell-icon.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-icon/appshell-icon.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-breadcrumb/appshell-breadcrumb.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-breadcrumb/appshell-breadcrumb.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-chip/appshell-chip.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-chip/appshell-chip.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-page-header/appshell-page-header.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-page-header/appshell-page-header.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-select/appshell-select.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-select/appshell-select.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-filters/appshell-filters.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-filters/appshell-filters.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-header/appshell-header.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-header/appshell-header.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-sidebar-menu/appshell-sidebar-menu.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-sidebar-menu/appshell-sidebar-menu.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-layout/appshell-layout.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-layout/appshell-layout.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-platform-header/appshell-platform-header.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-platform-header/appshell-platform-header.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-platform-layout/appshell-platform-layout.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-platform-layout/appshell-platform-layout.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-product-card/appshell-product-card.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-product-card/appshell-product-card.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-product-card-v2/appshell-product-card-v2.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-product-card-v2/appshell-product-card-v2.component.html","../../../projects/ngx-appshell/src/lib/components/appshell-toast/appshell-toast.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-toast/appshell-toast.component.html","../../../projects/ngx-appshell/src/lib/services/appshell-toast.service.ts","../../../projects/ngx-appshell/src/lib/components/appshell-toasts/appshell-toasts.component.ts","../../../projects/ngx-appshell/src/lib/components/appshell-toasts/appshell-toasts.component.html","../../../projects/ngx-appshell/src/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.ts","../../../projects/ngx-appshell/src/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.html","../../../projects/ngx-appshell/src/lib/screens/appshell-product-view-screen/appshell-product-view-screen.component.ts","../../../projects/ngx-appshell/src/lib/screens/appshell-product-view-screen/appshell-product-view-screen.component.html","../../../projects/ngx-appshell/src/lib/screens/appshell-notifications-screen/appshell-notifications-screen.component.ts","../../../projects/ngx-appshell/src/lib/screens/appshell-notifications-screen/appshell-notifications-screen.component.html","../../../projects/ngx-appshell/src/lib/services/icon-registry.service.ts","../../../projects/ngx-appshell/src/public-api.ts","../../../projects/ngx-appshell/src/opendevstack-ngx-appshell.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Directive({\n selector: '[appShellLink]',\n standalone: true\n})\nexport class AppShellLinkDirective implements OnChanges {\n\n @Input('appShellLink') link!: string;\n\n constructor(private readonly el: ElementRef, private readonly router: Router, private readonly renderer: Renderer2) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['link']?.currentValue) {\n this.renderer.setAttribute(this.el.nativeElement, 'href', this.link);\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: UIEvent) {\n if (!this.isExternalLink()) {\n event.preventDefault();\n this.router.navigate([this.link]);\n }\n }\n\n private isExternalLink() {\n return this.link.startsWith('http') || this.link.startsWith('www.');\n }\n\n}\n","import { Component, effect, input, signal, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\n\n@Component({\n selector: 'appshell-icon',\n imports: [MatIconModule],\n templateUrl: './appshell-icon.component.html',\n styleUrls: ['./appshell-icon.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellIconComponent {\n\n icon = input.required<string>();\n private namespace = 'appshell';\n\n // Resolved values for template rendering\n resolvedSvgIcon = signal<string>('');\n resolvedFontIcon = signal<string>('');\n\n constructor(private iconRegistry: MatIconRegistry) {\n effect((onCleanup) => {\n const iconName = this.icon();\n\n // Try to resolve namespaced appshell icon; fall back to material font icon\n // getNamedSvgIcon emits if the icon exists, errors if it doesn't.\n let sub: Subscription | undefined;\n sub = this.iconRegistry.getNamedSvgIcon(iconName, this.namespace).subscribe({\n next: () => {\n this.resolvedSvgIcon.set(`${this.namespace}:${iconName}`);\n this.resolvedFontIcon.set('');\n },\n error: () => {\n this.resolvedSvgIcon.set('');\n this.resolvedFontIcon.set(iconName);\n }\n });\n\n onCleanup(() => sub?.unsubscribe());\n });\n }\n\n}\n","@if (resolvedSvgIcon()) {\n <mat-icon [svgIcon]=\"resolvedSvgIcon()\"></mat-icon>\n} @else {\n <mat-icon>{{ resolvedFontIcon() }}</mat-icon>\n}","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { AppShellLinkDirective } from '../../directives/appshell-link.directive';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellIconComponent } from '../appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-breadcrumb',\n imports: [AppShellLinkDirective, AppShellIconComponent],\n templateUrl: './appshell-breadcrumb.component.html',\n styleUrl: './appshell-breadcrumb.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppShellBreadcrumbComponent {\n links = input<AppShellLink[]>();\n}\n","<nav>\n @for (link of links(); track link.label) {\n @if ($index > 0) {\n <appshell-icon class=\"separator\" aria-hidden=\"true\" [icon]=\"'chevron_right'\" />\n }\n @if (link.icon) {\n @if (link.anchor !== '') {\n <a [appShellLink]=\"link.anchor\" target=\"{{link.target || '_self'}}\">\n <appshell-icon [icon]=\"link.icon\" />\n </a>\n } @else {\n <appshell-icon [icon]=\"link.icon\" />\n }\n } @else {\n @if (link.anchor !== '') {\n <a [appShellLink]=\"link.anchor\" target=\"{{link.target || '_self'}}\">{{ link.label }}</a>\n } @else {\n <span>{{ link.label }}</span>\n }\n }\n }\n</nav>","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@Component({\n selector: 'appshell-chip',\n imports: [MatChipsModule],\n templateUrl: './appshell-chip.component.html',\n styleUrl: './appshell-chip.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellChipComponent {\n label = input.required<string>();\n}\n","<mat-chip class=\"appshell-chip\" disableRipple>{{label()}}</mat-chip>","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellBreadcrumbComponent } from '../appshell-breadcrumb/appshell-breadcrumb.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { AppShellButton } from '../../models/appshell-button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { AppShellIconComponent } from '../appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-page-header',\n imports: [MatButtonModule, AppShellBreadcrumbComponent, MatMenuModule, MatTooltipModule, AppShellIconComponent],\n templateUrl: './appshell-page-header.component.html',\n styleUrl: './appshell-page-header.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellPageHeaderComponent {\n breadcrumbLinks = input<AppShellLink[]>();\n title = input<string>();\n button = input<AppShellButton>();\n buttonClicked = output<void>();\n secondaryButton = input<AppShellButton>();\n secondaryButtonClicked = output<void>();\n picker = input<AppShellPicker>();\n pick = output<string>();\n\n clickButton() {\n this.buttonClicked.emit();\n }\n\n clickSecondaryButton() {\n this.secondaryButtonClicked.emit();\n }\n}\n","<div class=\"top-section\">\n <div class=\"left-ctn\">\n <appshell-breadcrumb [links]=\"breadcrumbLinks()\"></appshell-breadcrumb>\n <h2>{{title()}}</h2>\n </div>\n @if (picker() && picker()?.label && picker()?.options && picker()?.options!.length > 0) {\n <button [matMenuTriggerFor]=\"pickerMenu\" #pickerTrigger=\"matMenuTrigger\" mat-button class=\"action-picker-btn\">\n <span class=\"action-picker-label\">\n {{picker()!.label}}\n <appshell-icon [icon]=\"pickerTrigger.menuOpen ? 'expand_less' : 'expand_more'\" />\n </span>\n </button>\n <mat-menu #pickerMenu=\"matMenu\" xPosition=\"after\" class=\"appshell-picker-panel\">\n @for (opt of picker()!.options; track opt; let index = $index) {\n <button mat-menu-item (click)=\"pick.emit(opt)\" (keypress)=\"pick.emit(opt)\" [class.active]=\"picker()?.selected === opt\" attr.aria-label=\"{{opt}}\">{{ opt }}</button>\n }\n </mat-menu>\n }\n @if (secondaryButton()) {\n <div [matTooltip]=\"secondaryButton()?.tooltip || ''\" class=\"btn-ctn\">\n <button mat-flat-button color=\"secondary\" (click)=\"clickSecondaryButton()\" [disabled]=\"secondaryButton()?.disabled\">{{secondaryButton()?.label}}</button>\n </div>\n }\n @if (button()) {\n <div [matTooltip]=\"button()?.tooltip || ''\" class=\"btn-ctn\">\n <button mat-flat-button color=\"accent\" (click)=\"clickButton()\" [disabled]=\"button()?.disabled\">{{button()?.label}}</button>\n </div>\n }\n</div>","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n selector: 'appshell-select',\n imports: [MatSelectModule],\n templateUrl: './appshell-select.component.html',\n styleUrl: './appshell-select.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellSelectComponent {\n label = input.required<string>();\n options = input.required<string[]>();\n placeholder = input.required<string>();\n\n selectValueChange = output<string[]>();\n}\n","<mat-label>{{label()}}</mat-label>\n<mat-form-field appearance=\"outline\">\n <mat-select (selectionChange)=\"selectValueChange.emit($event.value)\" multiple [placeholder]=\"placeholder()\" panelClass=\"appshell-select-panel\" attr.aria-label=\"{{label()}}\">\n @for (option of options(); track option) {\n <mat-option value=\"{{option}}\">{{option}}</mat-option>\n }\n </mat-select>\n</mat-form-field>","import { Component, input, OnChanges, output, SimpleChanges } from '@angular/core';\nimport { AppShellFilter } from '../../models/appshell-filter';\nimport { AppShellSelectComponent } from '../appshell-select/appshell-select.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'appshell-filters',\n imports: [MatButtonModule, AppShellSelectComponent],\n templateUrl: './appshell-filters.component.html',\n styleUrl: './appshell-filters.component.scss'\n})\nexport class AppShellFiltersComponent implements OnChanges {\n filters = input<AppShellFilter[]>();\n \n activeFilters: Map<string, string[]> = new Map<string, string[]>();\n activeFiltersChange = output<Map<string, string[]>>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['filters']) {\n this.activeFilters.clear();\n }\n }\n\n onFilterChange(label: string, values: string | string[]) {\n if (typeof values === 'string') {\n if(values === '') {\n this.activeFilters.delete(label);\n } else {\n this.activeFilters.set(label, [values]);\n }\n } else if(values.length === 0) {\n this.activeFilters.delete(label);\n } else {\n this.activeFilters.set(label, values);\n }\n \n this.activeFiltersChange.emit(this.activeFilters);\n }\n}\n","<div class=\"filters-ctn\">\n @for (filter of filters(); track filter.label) {\n <appshell-select [label]=\"filter.label\" \n [options]=\"filter.options\" \n [placeholder]=\"filter.placeholder\" \n (selectValueChange)=\"onFilterChange(filter.label, $event)\">\n </appshell-select>\n }\n</div>","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { AppShellUser } from '../../models/appshell-user';\nimport { AppShellLinkDirective } from '../../directives/appshell-link.directive';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { Router } from '@angular/router';\nimport { AppShellIconComponent } from '../appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-header',\n imports: [AppShellLinkDirective, MatTooltipModule, CommonModule, MatMenuModule, AppShellIconComponent],\n templateUrl: './appshell-header.component.html',\n styleUrl: './appshell-header.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellHeaderComponent {\n\n applicationName = input.required<string>();\n symbol = input<string>();\n applicationNameLink = input<string>();\n helpLink = input<AppShellLink>();\n notificationsLink = input<AppShellLink>();\n notificationsCount = input<number>(0);\n links = input.required<AppShellLink[]>();\n picker = input<AppShellPicker>();\n loggedUser=input<AppShellUser|null>();\n userLoggedIn = output();\n userLoggedOut = output();\n userPick = output<string>();\n\n constructor(private readonly router: Router) {}\n\n getCurrentUrlPath(): string {\n return this.router.url;\n }\n\n}\n","<nav class=\"appshell-meta-navigation\" aria-label=\"Top of the header navigation\">\n @if (applicationNameLink() && applicationNameLink() !== '') {\n <a class=\"app-id-ctn\" [href]=\"applicationNameLink()\">\n @if (symbol()) {\n <img src=\"assets/logo/{{symbol()}}\" alt=\"App symbol in the header\" />\n }\n <h1>{{applicationName()}}</h1>\n </a>\n } @else {\n <div class=\"app-id-ctn\">\n @if (symbol()) {\n <img src=\"assets/logo/{{symbol()}}\" alt=\"App symbol in the header\" />\n }\n <h1>{{applicationName()}}</h1>\n </div>\n }\n <div class=\"header-space\"></div>\n @for (link of links(); track link.label; let index = $index) {\n <a class=\"header-link\" [appShellLink]=\"link.anchor\" [class.active]=\"getCurrentUrlPath() === link.anchor\" target=\"{{link!.target || '_self'}}\" [class.last]=\"index+1 === links().length\">\n {{link.label}}\n </a>\n }\n @if (picker() && picker()?.label && picker()?.options && picker()?.options!.length > 0) {\n <button [matMenuTriggerFor]=\"pickerMenu\" #pickerTrigger=\"matMenuTrigger\" class=\"header-picker\">\n {{picker()!.label}}\n <appshell-icon [icon]=\"pickerTrigger.menuOpen ? 'expand_less' : 'expand_more'\" />\n </button>\n <mat-menu #pickerMenu=\"matMenu\" xPosition=\"after\" class=\"appshell-picker-panel\">\n @for (opt of picker()!.options; track opt; let index = $index) {\n <button mat-menu-item (click)=\"userPick.emit(opt)\" (keypress)=\"userPick.emit(opt)\" [class.active]=\"picker()?.selected === opt\" attr.aria-label=\"{{opt}}\">{{ opt }}</button>\n }\n </mat-menu>\n }\n @if (helpLink() && helpLink()?.icon) {\n <a class=\"header-icon\" [appShellLink]=\"helpLink()!.anchor\" target=\"{{helpLink()!.target || '_self'}}\" [matTooltip]=\"helpLink()!.label\" aria-label=\"Visit the help page\">\n <appshell-icon [icon]=\"helpLink()!.icon!\" aria-label=\"Help icon\" />\n </a>\n }\n @if (notificationsLink() && notificationsLink()?.icon) {\n <a class=\"header-icon\" [appShellLink]=\"notificationsLink()!.anchor\" target=\"{{notificationsLink()!.target || '_self'}}\" [matTooltip]=\"notificationsLink()!.label\" aria-label=\"Visit the notifications page\">\n <appshell-icon [icon]=\"notificationsLink()!.icon!\" aria-label=\"Notifications icon\" />\n @if (notificationsCount() > 0) {\n <div class=\"notification-count\" aria-label=\"Number of notifications\">\n {{notificationsCount() > 9 ? '9+' : notificationsCount()}}\n </div>\n }\n </a>\n }\n <div class=\"separator\"></div>\n <div class=\"user-ctn\">\n @if (loggedUser() !== null) {\n <button [matMenuTriggerFor]=\"logoutMenu\">\n @if (loggedUser()!.avatarSrc) {\n <div class=\"header-profile-picture\" [style.backgroundImage]=\"'url('+loggedUser()!.avatarSrc+')'\"></div>\n } @else {\n <appshell-icon [icon]=\"'person'\" aria-label=\"Guest user icon\" />\n }\n <div class=\"user-text\">{{loggedUser()?.fullName}}</div>\n </button>\n <mat-menu #logoutMenu=\"matMenu\" xPosition=\"before\" class=\"appshell-logout-panel\">\n <button mat-menu-item (click)=\"userLoggedOut.emit()\" (keypress)=\"userLoggedOut.emit()\" aria-label=\"Logout\">Log Out</button>\n </mat-menu>\n } @else {\n <button (click)=\"userLoggedIn.emit()\" (keypress)=\"userLoggedIn.emit()\" aria-label=\"Login\">\n <appshell-icon [icon]=\"'person'\" aria-label=\"Guest user icon\" />\n <div class=\"user-text\">Login</div>\n </button>\n }\n </div>\n</nav>","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { AppShellLinkDirective } from '../../directives/appshell-link.directive';\nimport { Router } from '@angular/router';\nimport { AppShellLinksGroup } from '../../models/appshell-links-group';\nimport { AppShellIconComponent } from '../appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-sidebar-menu',\n imports: [AppShellLinkDirective, AppShellIconComponent],\n templateUrl: './appshell-sidebar-menu.component.html',\n styleUrl: './appshell-sidebar-menu.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellSidebarMenuComponent {\n\n sections = input.required<AppShellLinksGroup[]>();\n links = input<AppShellLinksGroup>();\n\n constructor(private readonly router: Router) {}\n\n getCurrentUrlPath(): string {\n return this.router.url;\n }\n}\n","<div class=\"appshell-sidebar-menu-ctn\">\n @for (section of sections(); track $index) {\n <div class=\"link-group\">\n @if (section.label !== '') {\n <div class=\"menu-item link-group-header\">\n {{section.label}}\n </div>\n }\n <nav attr.aria-label=\"Sidebar menu for {{section.label}}\">\n @for (page of section.links; track $index) {\n <div class=\"menu-item link\" [class.active]=\"getCurrentUrlPath() === page.anchor\">\n <a [appShellLink]=\"page.anchor\" target=\"{{page.target || '_self'}}\">\n @if (page.icon) {\n <appshell-icon [icon]=\"page.icon\" aria-hidden=\"true\" />\n }\n {{page.label}}\n </a>\n </div>\n }\n </nav>\n </div>\n }\n @if (links() && links()!.links.length > 0) {\n <nav class=\"links\" aria-label=\"Links from sidebar menu\">\n <div class=\"links-separator\"></div>\n @if (links()!.label !== '') {\n <div class=\"links-header\">\n {{links()!.label}}\n </div>\n }\n @for (link of links()!.links; track $index) {\n <div class=\"menu-item link\">\n <a [appShellLink]=\"link.anchor\" target=\"{{link.target || '_self'}}\">\n @if (link.icon) {\n <appshell-icon [icon]=\"link.icon\" aria-hidden=\"true\" />\n }\n {{link.label}}\n </a>\n </div>\n }\n </nav>\n }\n</div>","import { Component, input, output } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { AppShellUser } from '../../models/appshell-user';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { AppShellLinksGroup } from '../../models/appshell-links-group';\nimport { AppShellSidebarMenuComponent } from '../appshell-sidebar-menu/appshell-sidebar-menu.component';\nimport { AppShellHeaderComponent } from '../appshell-header/appshell-header.component';\n\n@Component({\n selector: 'appshell-layout',\n imports: [AppShellSidebarMenuComponent, RouterOutlet, MatSidenavModule, AppShellHeaderComponent],\n templateUrl: './appshell-layout.component.html',\n styleUrl: './appshell-layout.component.scss'\n})\nexport class AppShellLayoutComponent {\n\n headerVariant = input<string>('');\n applicationSymbol = input.required<string>();\n applicationName = input.required<string>();\n applicationNameLink = input<string>();\n appShellHelpLink = input<AppShellLink>();\n appShellNotificationsLink = input<AppShellLink>();\n appShellNotificationsCount = input<number>(0);\n headerLinks = input.required<AppShellLink[]>();\n headerPicker = input<AppShellPicker>();\n sidenavSections = input.required<AppShellLinksGroup[]>();\n sidenavLinks = input<AppShellLinksGroup>();\n loggedUser = input.required<AppShellUser|null>();\n \n userLoggedIn = output();\n userLoggedOut = output();\n userPick = output<string>();\n\n constructor() {}\n}\n","<appshell-header\n [class]=\"headerVariant()\"\n [symbol]=\"applicationSymbol()\"\n [applicationName]=\"applicationName()\"\n [applicationNameLink]=\"applicationNameLink()\"\n [helpLink]=\"appShellHelpLink()\"\n [notificationsLink]=\"appShellNotificationsLink()\"\n [notificationsCount]=\"appShellNotificationsCount()\"\n [links]=\"headerLinks()\"\n [picker]=\"headerPicker()\"\n [loggedUser]=\"loggedUser()\"\n (userLoggedIn)=\"userLoggedIn.emit()\"\n (userLoggedOut)=\"userLoggedOut.emit()\"\n (userPick)=\"userPick.emit($event)\">\n</appshell-header>\n\n<section id=\"appshell-layout-content\">\n <mat-sidenav-container>\n @if (sidenavSections() && sidenavSections().length) {\n <mat-sidenav opened mode=\"side\" disableClose [fixedInViewport]=\"true\" [fixedTopGap]=\"48\">\n <appshell-sidebar-menu [sections]=\"sidenavSections()\" [links]=\"sidenavLinks()\"></appshell-sidebar-menu>\n </mat-sidenav>\n }\n <mat-sidenav-content>\n <main>\n <router-outlet></router-outlet>\n </main>\n </mat-sidenav-content>\n </mat-sidenav-container>\n</section>","import { Component, effect, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { AppShellUser } from '../../models/appshell-user';\nimport { AppShellLinkDirective } from '../../directives/appshell-link.directive';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { Router } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { AppShellIconComponent } from '../appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-platform-header',\n imports: [AppShellLinkDirective, MatTooltipModule, CommonModule, MatMenuModule, FormsModule, MatFormFieldModule, MatInputModule, AppShellIconComponent],\n templateUrl: './appshell-platform-header.component.html',\n styleUrl: './appshell-platform-header.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellPlatformHeaderComponent {\n\n applicationName = input.required<string>();\n symbol = input<string>();\n logo = input<string>();\n applicationNameLink = input<string>();\n helpLink = input<AppShellLink>();\n notificationsLink = input<AppShellLink>();\n notificationsCount = input<number>(0);\n links = input.required<AppShellLink[]>();\n projectPicker = input<AppShellPicker>();\n secondaryPicker = input<AppShellPicker>();\n loggedUser=input<AppShellUser|null>();\n userLoggedIn = output();\n userLoggedOut = output();\n userProjectPick = output<string>();\n userProjectPickChoice: string | null = null;\n userSecondaryPick = output<string>();\n userSecondaryPickChoice: string | null = null;\n isPlatformPickerOpened = input<boolean | null>(null);\n platformPickerClick = output<void>();\n\n projectPickerSearch: string = '';\n\n constructor(private readonly router: Router) {\n effect(() => {\n if (this.projectPicker()) {\n this.userProjectPickChoice = this.projectPicker()!.selected ?? null;\n }\n })\n effect(() => {\n if (this.secondaryPicker()) {\n this.userSecondaryPickChoice = this.secondaryPicker()!.selected ?? null;\n }\n })\n }\n\n getCurrentUrlPath(): string {\n return this.router.url;\n }\n\n filteredProjectPickerOptions(): string[] {\n const picker = this.projectPicker();\n if (!picker?.options) {\n return [];\n }\n if (!this.projectPickerSearch) {\n return picker.options;\n }\n return picker.options.filter(opt =>\n opt.toLowerCase().includes(this.projectPickerSearch.toLowerCase())\n );\n }\n\n pickProject(option: string): void {\n this.userProjectPickChoice = option;\n this.userProjectPick.emit(option);\n this.projectPickerSearch = '';\n }\n\n pickSecondChoice(option: string): void {\n this.userSecondaryPickChoice = option;\n this.userSecondaryPick.emit(option);\n }\n\n openPlatformPicker() {\n this.platformPickerClick.emit();\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n // Prevent mat-menu's keyboard navigation from interfering\n event.stopPropagation();\n }\n\n}\n","<nav class=\"appshell-meta-navigation\" aria-label=\"Top of the header navigation\">\n @if(isPlatformPickerOpened() !== null) {\n <div class=\"platform-picker-trigger\" [class.opened-widget]=\"isPlatformPickerOpened()\" (click)=\"openPlatformPicker()\" (keypress)=\"openPlatformPicker()\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"10\" y=\"10\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"40\" y=\"10\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"70\" y=\"10\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"10\" y=\"40\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"40\" y=\"40\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"70\" y=\"40\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"10\" y=\"70\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"40\" y=\"70\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/><rect x=\"70\" y=\"70\" width=\"20\" height=\"20\" fill=\"#FFFFFF\"/></svg>\n </div>\n }\n\n <div class=\"app-id-ctn\">\n @if (symbol()) {\n <img src=\"assets/logo/{{symbol()}}\" alt=\"App symbol in the header\" class=\"header-symbol\" />\n }\n @if (logo()) {\n <img src=\"assets/logo/{{logo()}}\" alt=\"App logo in the header\" class=\"header-logo\" />\n }\n <h1>{{applicationName()}}</h1>\n </div>\n @if (projectPicker() && projectPicker()?.label) {\n <div class=\"header-picker\">\n <button [matMenuTriggerFor]=\"projectPickerMenu\" #projectPickerTrigger=\"matMenuTrigger\" (menuOpened)=\"projectPickerSearchInput?.focus()\"\n [class.active]=\"projectPickerTrigger.menuOpen\">\n {{userProjectPickChoice && projectPicker()?.options && projectPicker()?.options!.length > 0 ? projectPicker()!.label + userProjectPickChoice : projectPicker()!.label}}\n <appshell-icon [icon]=\"projectPickerTrigger.menuOpen ? 'expand_less' : 'expand_more'\" />\n </button>\n </div>\n <mat-menu #projectPickerMenu=\"matMenu\" xPosition=\"after\" class=\"appshell-platform-header-picker-panel\">\n <div class=\"picker-search-ctn\" \n (click)=\"$event.stopPropagation()\" \n (mousedown)=\"$event.stopPropagation()\" \n [hidden]=\"!projectPicker()?.options || projectPicker()?.options!.length === 0\">\n <mat-form-field>\n @if (!projectPickerSearch) {\n <appshell-icon matPrefix class=\"prefix-icon\" aria-label=\"Search icon\" [icon]=\"'search'\" />\n }\n <input matInput type=\"text\" placeholder=\"Search for ...\" aria-label=\"Search options\"\n [(ngModel)]=\"projectPickerSearch\" (keydown)=\"onSearchKeydown($event)\"\n #projectPickerSearchInput />\n @if (projectPickerSearch) {\n <button matSuffix aria-label=\"Clear\" (click)=\"projectPickerSearch=''\">\n <appshell-icon [icon]=\"'close'\" aria-hidden=\"true\" />\n </button>\n }\n </mat-form-field>\n </div>\n <div class=\"picker-options-ctn\">\n @for (opt of filteredProjectPickerOptions(); track opt; let index = $index) {\n <button mat-menu-item (click)=\"pickProject(opt)\" (keypress)=\"pickProject(opt)\" [class.active]=\"projectPicker()?.selected === opt\" attr.aria-label=\"{{opt}}\">{{ opt }}</button>\n }\n @if (!projectPicker()?.options || projectPicker()?.options!.length === 0) {\n <div class=\"no-options-text\">\n @if(projectPicker()?.noOptionsTitle) {\n <b>{{ projectPicker()?.noOptionsTitle }}</b>\n }\n @if(projectPicker()?.noOptionsMessage) {\n <div [innerHTML]=\"projectPicker()?.noOptionsMessage\"></div>\n }\n </div>\n } @else if (filteredProjectPickerOptions().length === 0) {\n <div class=\"no-options-text\">\n @if(projectPicker()?.noFilteredOptionsTitle) {\n <b>{{ projectPicker()?.noFilteredOptionsTitle }}</b>\n }\n @if(projectPicker()?.noFilteredOptionsMessage) {\n <div [innerHTML]=\"projectPicker()?.noFilteredOptionsMessage\"></div>\n }\n </div>\n <button class=\"clear-search-btn\" mat-button (click)=\"projectPickerSearch=''; $event.stopPropagation()\" aria-label=\"Clear search\">Clear search</button>\n }\n </div>\n </mat-menu>\n }\n @if (secondaryPicker() && secondaryPicker()?.label && secondaryPicker()?.options && secondaryPicker()?.options!.length > 0) {\n <div class=\"header-picker\">\n <button [matMenuTriggerFor]=\"pickerMenu\" #pickerTrigger=\"matMenuTrigger\"\n [class.active]=\"pickerTrigger.menuOpen\">\n {{userSecondaryPickChoice ? secondaryPicker()!.label + userSecondaryPickChoice : secondaryPicker()!.label}}\n <appshell-icon [icon]=\"pickerTrigger.menuOpen ? 'expand_less' : 'expand_more'\" />\n </button>\n </div>\n <mat-menu #pickerMenu=\"matMenu\" xPosition=\"after\" class=\"appshell-platform-header-picker-panel\">\n @for (opt of secondaryPicker()!.options; track opt; let index = $index) {\n <button mat-menu-item (click)=\"pickSecondChoice(opt)\" (keypress)=\"pickSecondChoice(opt)\" [class.active]=\"secondaryPicker()?.selected === opt\" attr.aria-label=\"{{opt}}\">{{ opt }}</button>\n }\n </mat-menu>\n }\n <div class=\"header-space\"></div>\n @for (link of links(); track link.label; let index = $index) {\n <a class=\"header-link\" [appShellLink]=\"link.anchor\" [class.active]=\"getCurrentUrlPath() === link.anchor\" target=\"{{link!.target || '_self'}}\" [class.last]=\"index+1 === links().length\">\n {{link.label}}\n </a>\n }\n @if (helpLink() && helpLink()?.icon) {\n <a class=\"header-icon\" [appShellLink]=\"helpLink()!.anchor\" target=\"{{helpLink()!.target || '_self'}}\" [matTooltip]=\"helpLink()!.label\" aria-label=\"Visit the help page\">\n <appshell-icon [icon]=\"helpLink()!.icon!\" aria-label=\"Help icon\" />\n </a>\n }\n @if (notificationsLink() && notificationsLink()?.icon) {\n <a class=\"header-icon\" [appShellLink]=\"notificationsLink()!.anchor\" target=\"{{notificationsLink()!.target || '_self'}}\" [matTooltip]=\"notificationsLink()!.label\" aria-label=\"Visit the notifications page\">\n <appshell-icon [icon]=\"notificationsLink()!.icon!\" aria-label=\"Notifications icon\" />\n @if (notificationsCount() > 0) {\n <div class=\"notification-count\" aria-label=\"Number of notifications\">\n {{notificationsCount() > 9 ? '9+' : notificationsCount()}}\n </div>\n }\n </a>\n }\n <div class=\"separator\"></div>\n <div class=\"user-ctn\">\n @if (loggedUser() !== null) {\n <button [matMenuTriggerFor]=\"logoutMenu\">\n @if (loggedUser()!.avatarSrc) {\n <div class=\"header-profile-picture\" [style.backgroundImage]=\"'url('+loggedUser()!.avatarSrc+')'\"></div>\n } @else {\n <appshell-icon [icon]=\"'person'\" aria-label=\"Guest user icon\" />\n }\n <div class=\"user-text\">{{loggedUser()?.fullName}}</div>\n </button>\n <mat-menu #logoutMenu=\"matMenu\" xPosition=\"before\" class=\"appshell-logout-panel\">\n <button mat-menu-item (click)=\"userLoggedOut.emit()\" (keypress)=\"userLoggedOut.emit()\" aria-label=\"Logout\">Log Out</button>\n </mat-menu>\n } @else {\n <button (click)=\"userLoggedIn.emit()\" (keypress)=\"userLoggedIn.emit()\" aria-label=\"Login\">\n <appshell-icon [icon]=\"'person'\" aria-label=\"Guest user icon\" />\n <div class=\"user-text\">Login</div>\n </button>\n }\n </div>\n</nav>","import { Component, input, output } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { AppShellUser } from '../../models/appshell-user';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { AppShellLinksGroup } from '../../models/appshell-links-group';\nimport { AppShellSidebarMenuComponent } from '../appshell-sidebar-menu/appshell-sidebar-menu.component';\nimport { AppShellPlatformHeaderComponent } from '../appshell-platform-header/appshell-platform-header.component';\n\n@Component({\n selector: 'appshell-platform-layout',\n imports: [AppShellSidebarMenuComponent, RouterOutlet, MatSidenavModule, AppShellPlatformHeaderComponent],\n templateUrl: './appshell-platform-layout.component.html',\n styleUrl: './appshell-platform-layout.component.scss'\n})\nexport class AppShellPlatformLayoutComponent {\n\n headerVariant = input<string>('');\n applicationSymbol = input<string>();\n applicationLogo = input<string>();\n applicationName = input.required<string>();\n applicationNameLink = input<string>();\n appShellHelpLink = input<AppShellLink>();\n appShellNotificationsLink = input<AppShellLink>();\n appShellNotificationsCount = input<number>(0);\n headerLinks = input.required<AppShellLink[]>();\n headerProjectPicker = input<AppShellPicker>();\n headerSecondaryPicker = input<AppShellPicker>();\n sidenavSections = input.required<AppShellLinksGroup[]>();\n sidenavLinks = input<AppShellLinksGroup>();\n loggedUser = input.required<AppShellUser|null>();\n isPlatformPickerOpened = input<boolean | null>(null);\n \n userLoggedIn = output();\n userLoggedOut = output();\n userProjectPick = output<string>();\n userSecondaryPick = output<string>();\n platformPickerClick = output<void>();\n\n constructor() {}\n}\n","<appshell-platform-header\n [class]=\"headerVariant()\"\n [symbol]=\"applicationSymbol()\"\n [logo]=\"applicationLogo()\"\n [applicationName]=\"applicationName()\"\n [applicationNameLink]=\"applicationNameLink()\"\n [helpLink]=\"appShellHelpLink()\"\n [notificationsLink]=\"appShellNotificationsLink()\"\n [notificationsCount]=\"appShellNotificationsCount()\"\n [links]=\"headerLinks()\"\n [projectPicker]=\"headerProjectPicker()\"\n [secondaryPicker]=\"headerSecondaryPicker()\"\n [loggedUser]=\"loggedUser()\"\n [isPlatformPickerOpened]=\"isPlatformPickerOpened()\"\n (userLoggedIn)=\"userLoggedIn.emit()\"\n (userLoggedOut)=\"userLoggedOut.emit()\"\n (platformPickerClick)=\"platformPickerClick.emit()\"\n (userProjectPick)=\"userProjectPick.emit($event)\"\n (userSecondaryPick)=\"userSecondaryPick.emit($event)\">\n</appshell-platform-header>\n\n<section id=\"appshell-layout-content\">\n <mat-sidenav-container>\n @if (sidenavSections() && sidenavSections().length) {\n <mat-sidenav opened mode=\"side\" disableClose [fixedInViewport]=\"true\" [fixedTopGap]=\"64\">\n <appshell-sidebar-menu [sections]=\"sidenavSections()\" [links]=\"sidenavLinks()\"></appshell-sidebar-menu>\n </mat-sidenav>\n }\n <mat-sidenav-content>\n <main>\n <router-outlet></router-outlet>\n </main>\n </mat-sidenav-content>\n </mat-sidenav-container>\n</section>","import { AfterViewChecked, Component, ElementRef, input, NgZone, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { Router } from '@angular/router';\nimport { AppShellChipComponent } from \"../appshell-chip/appshell-chip.component\";\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'appshell-product-card',\n imports: [MatCardModule, MatButtonModule, MatChipsModule, AppShellChipComponent, AppShellChipComponent, MatTooltipModule],\n templateUrl: './appshell-product-card.component.html',\n styleUrl: './appshell-product-card.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellProductCardComponent implements AfterViewChecked, OnDestroy {\n \n @ViewChild('labelsChipSet', { static: true, read: ElementRef }) labelsChipSet!: ElementRef<HTMLElement>;\n\n title = input.required<string>();\n description = input.required<string>();\n image = input<string>();\n labels = input<string[]>();\n redirectTo = input<string>();\n\n resizeObserver: ResizeObserver = new ResizeObserver(\n this.debounce(() => {\n this.ngZone.run(() => {\n window.requestAnimationFrame(() => {\n this.hideOverflowingLabels();\n });\n });\n }, 100)\n );\n\n constructor(private readonly router: Router, private readonly ngZone: NgZone) {}\n\n debounce(func: Function, wait: number) {\n let timeout: number;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => func.apply(this, args), wait);\n };\n }\n\n ngAfterViewChecked() {\n this.hideOverflowingLabels();\n this.resizeObserver.observe(this.labelsChipSet.nativeElement);\n }\n\n onClick() {\n this.router.navigate([this.redirectTo()]);\n }\n\n hideOverflowingLabels() {\n const twoLinesHeight = 4.5 * 16; // Each label uses 2 rem with a gap of .5 rem where 1 rem = 16px\n const labelsChipSetDiv = this.labelsChipSet.nativeElement.firstChild as HTMLElement;\n\n const chipsChildren = Array.from(labelsChipSetDiv.children).filter((child: Element) => child.tagName.toLowerCase() === 'appshell-chip');\n \n chipsChildren.forEach((child: Element) => {\n if (child.id === 'extra-labels') {\n (child as HTMLElement).style.display = 'none';\n } else {\n (child as HTMLElement).style.display = 'block';\n }\n });\n \n if(chipsChildren.length <= 2) {return;}\n let index = chipsChildren.length - 2; // Start from the second last child\n\n const hiddenLabels: string[] = [];\n\n const extraLabels = labelsChipSetDiv.querySelector('#extra-labels');\n if(labelsChipSetDiv.scrollHeight > twoLinesHeight && extraLabels) {\n (extraLabels as HTMLElement).style.display = 'block';\n }\n\n while (labelsChipSetDiv.scrollHeight > twoLinesHeight && index >= 0) {\n const label = chipsChildren[index] as HTMLElement;\n label.style.display = 'none';\n const labelText = label.querySelector('.mdc-evolution-chip__text-label.mat-mdc-chip-action-label')?.textContent;\n if(labelText) {\n hiddenLabels.push(labelText);\n index--;\n }\n }\n\n if(hiddenLabels.length > 0 && extraLabels) {\n this.changeExtraLabel(extraLabels, hiddenLabels);\n }\n }\n\n changeExtraLabel(labelEl: Element, removedLabels: Array<string>) {\n labelEl.classList.add('tooltip-chip');\n let existingSpan = labelEl.querySelector('.tooltip-text');\n if(existingSpan) {labelEl.removeChild(existingSpan);}\n existingSpan = document.createElement('span')\n existingSpan.classList.add('tooltip-text');\n existingSpan.textContent = `${[...removedLabels].reverse().join(', ')}`;\n labelEl.appendChild(existingSpan);\n const textLabel = labelEl?.querySelector('.mdc-evolution-chip__text-label.mat-mdc-chip-action-label');\n if (textLabel) {\n textLabel.textContent = `+${removedLabels.length}`;\n }\n }\n\n ngOnDestroy() {\n if(this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n}\n","<mat-card class=\"appshell-product-card\" appearance=\"outlined\" tabindex=\"0\" (click)=\"onClick()\" (keydown.enter)=\"onClick()\" (keydown.space)=\"onClick()\">\n <mat-card-header>\n <mat-card-title-group>\n <mat-card-title>{{title()}}</mat-card-title>\n @if (image()) {\n <img mat-card-image [src]=\"image()\" alt=\"\">\n }\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content>\n {{description()}}\n </mat-card-content>\n <mat-card-actions>\n <mat-chip-set attr.aria-label=\"{{title()}} label\" class=\"appshell-product-card-labels\" #labelsChipSet>\n @for (label of labels(); track label) {\n <appshell-chip [label]=\"label\"></appshell-chip>\n }\n <appshell-chip id=\"extra-labels\" class=\"tooltip-chip\" label=\"+X\"></appshell-chip>\n </mat-chip-set>\n </mat-card-actions>\n</mat-card>","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'appshell-product-card-v2',\n imports: [MatCardModule, MatButtonModule, MatChipsModule],\n templateUrl: './appshell-product-card-v2.component.html',\n styleUrl: './appshell-product-card-v2.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellProductCardV2Component {\n title = input.required<string>();\n description = input.required<string>();\n image = input<string>();\n link = input<string>();\n buttonText = input<string>();\n labels = input<string[]>();\n redirectTo = input<string>();\n\n constructor(private readonly router: Router) {}\n\n onClick() {\n this.router.navigate([this.redirectTo()]);\n }\n}\n","<mat-card class=\"appshell-product-card-v2\" appearance=\"outlined\" tabindex=\"0\" (click)=\"onClick()\" (keydown.enter)=\"onClick()\" (keydown.space)=\"onClick()\">\n <mat-card-content>\n <div class=\"appshell-product-card-v2-img\">\n <img mat-card-image [src]=\"image()\" alt=\"\">\n </div>\n <div class=\"appshell-product-card-v2-data\">\n <div class=\"labels\">\n @for (label of labels(); track label; let index = $index) {\n <span>\n {{label}}\n </span>\n }\n </div>\n <span class=\"title\">{{title()}}</span>\n <div class=\"description\">{{description()}}</div>\n </div>\n </mat-card-content>\n</mat-card>","import { Component, input, output } from '@angular/core';\nimport { AppShellNotification } from '../../models/appshell-notification';\nimport { AppShellIconComponent } from \"../appshell-icon/appshell-icon.component\";\n\n@Component({\n selector: 'appshell-toast',\n imports: [AppShellIconComponent],\n templateUrl: './appshell-toast.component.html',\n styleUrl: './appshell-toast.component.scss'\n})\nexport class AppShellToastComponent {\n\n notification = input<AppShellNotification>();\n closed = output<boolean>();\n\n closeToast() {\n this.closed.emit(true);\n }\n}\n","<div class=\"appshell-toast\">\n <div class=\"appshell-toast-content\">\n <h4>{{ notification()?.title }}</h4>\n <p>{{ notification()?.message }}</p>\n </div>\n <button (click)=\"closeToast()\">\n <appshell-icon [icon]=\"'close'\"></appshell-icon>\n </button>\n</div>","import { Injectable } from '@angular/core';\nimport { AppShellNotification, AppShellToast } from 'ngx-appshell';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppShellToastService {\n toastsSubject = new BehaviorSubject<AppShellToast[]>([]);\n toasts$ = this.toastsSubject.asObservable();\n private currentId = 0;\n\n showToast(notification: AppShellNotification, duration?: number, closeFn?: () => void) {\n if (closeFn) {\n const originalCloseFn = closeFn;\n closeFn = () => {\n originalCloseFn();\n this.removeToast(this.currentId);\n };\n } else {\n closeFn = () => this.removeToast(this.currentId);\n }\n\n const toast: AppShellToast = { id: this.currentId++, notification, closeFn: () => closeFn() };\n\n this.toastsSubject.next([...this.toastsSubject.value, toast]);\n \n if(duration) {\n setTimeout(() => this.removeToast(toast.id), duration);\n }\n }\n\n removeToast(id: number) {\n this.toastsSubject.next(this.toastsSubject.value.filter(toast => toast.id !== id));\n }\n}\n","import { SlicePipe } from '@angular/common';\nimport { Component, input, OnInit } from '@angular/core';\nimport { AppShellToastComponent } from '../appshell-toast/appshell-toast.component'\nimport { AppShellToastService } from '../../services/appshell-toast.service';\nimport { AppShellToast } from '../../models/appshell-toast';\n\n@Component({\n selector: 'appshell-toasts',\n imports: [AppShellToastComponent, SlicePipe],\n templateUrl: './appshell-toasts.component.html',\n styleUrl: './appshell-toasts.component.scss'\n})\nexport class AppShellToastsComponent implements OnInit {\n\n toastsLimit = input<number>(3);\n\n toasts: AppShellToast[] = [];\n\n constructor(private readonly toastService: AppShellToastService) {}\n\n ngOnInit() {\n this.toastService.toasts$.subscribe((toasts: any) => this.toasts = toasts);\n }\n\n closeToast(id: number) {\n this.toastService.removeToast(id);\n }\n}\n","<div class=\"toast-container\">\n @for (toast of toasts | slice:0:toastsLimit(); track toast.id) {\n <appshell-toast [notification]=\"toast.notification\" (closed)=\"closeToast(toast.id)\"></appshell-toast>\n }\n</div>","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { AppShellProductCardComponent } from \"../../components/appshell-product-card/appshell-product-card.component\";\nimport { AppShellLink } from '../../models/appshell-link';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AppShellProduct } from '../../models/appshell-product';\nimport { AppShellFilter } from '../../models/appshell-filter';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { AppShellPageHeaderComponent } from \"../../components/appshell-page-header/appshell-page-header.component\";\nimport { AppShellFiltersComponent } from '../../components/appshell-filters/appshell-filters.component';\nimport { AppShellIconComponent } from '../../components/appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-product-catalog-screen',\n standalone: true,\n imports: [AppShellProductCardComponent, MatFormFieldModule, MatInputModule, MatButtonModule, MatChipsModule, AppShellPageHeaderComponent, AppShellFiltersComponent, AppShellIconComponent],\n templateUrl: './appshell-product-catalog-screen.component.html',\n styleUrl: './appshell-product-catalog-screen.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellProductCatalogScreenComponent {\n\n pageTitle = input.required<string>();\n breadcrumbLinks = input.required<AppShellLink[]>();\n products = input.required<AppShellProduct[]>();\n filters = input.required<AppShellFilter[]>();\n noProductsIcon = input<string>();\n noProductsHtmlMessage = input<string>();\n activeFiltersChange = output<Map<string, string[]>>();\n\n getProductLabels(product: AppShellProduct) {\n return product.tags?.flatMap(tag => tag.options) || [];\n }\n}\n","<appshell-page-header \n [title]=\"pageTitle()\"\n [breadcrumbLinks]=\"breadcrumbLinks()\"></appshell-page-header>\n<appshell-filters\n [filters]=\"filters()\"\n (activeFiltersChange)=\"activeFiltersChange.emit($event)\"></appshell-filters>\n<section class=\"catalog-main\">\n @if(products().length > 0) {\n <div class=\"products-ctn\">\n @for (product of products(); track product.id) {\n <appshell-product-card\n [title]=\"product.title\"\n [description]=\"product.shortDescription\"\n [image]=\"product.image\"\n [labels]=\"getProductLabels(product)\"\n [redirectTo]=\"product.link\"\n ></appshell-product-card>\n }\n </div>\n }\n @if(products().length === 0 && (noProductsHtmlMessage() || noProductsIcon())) {\n <div class=\"no-results-ctn\" role=\"status\" aria-live=\"polite\" tabindex=\"0\">\n @if(noProductsIcon()) {\n <appshell-icon [class]=\"'no-results-icon'\" [icon]=\"noProductsIcon()!\" />\n }\n <div [innerHTML]=\"noProductsHtmlMessage()\"></div>\n </div>\n }\n</section>","import { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { AppShellChipComponent } from '../../components/appshell-chip/appshell-chip.component';\nimport { AppShellPageHeaderComponent } from '../../components/appshell-page-header/appshell-page-header.component';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellProduct } from '../../models/appshell-product';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { AppShellPicker } from '../../models/appshell-picker';\nimport { AppShellButton } from '../../models/appshell-button';\n\n@Component({\n selector: 'appshell-product-view-screen',\n standalone: true,\n imports: [AppShellPageHeaderComponent, MatButtonModule, MatChipsModule, AppShellChipComponent, MarkdownComponent],\n templateUrl: './appshell-product-view-screen.component.html',\n styleUrl: './appshell-product-view-screen.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class AppShellProductViewScreenComponent {\n\n pageTitle = input.required<string>();\n breadcrumbLinks = input.required<AppShellLink[]>();\n actionButton = input<AppShellButton>();\n actionButtonClicked = output<void>();\n product = input.required<AppShellProduct>();\n secondaryButton = input<AppShellButton>();\n secondaryButtonClicked = output<void>();\n actionPicker = input<AppShellPicker>();\n actionPick = output<string>();\n \n productLabels = computed(() => this.product().tags?.flatMap(tag => tag.options) || []);\n}","<appshell-page-header \n [breadcrumbLinks]=\"breadcrumbLinks()\"\n [title]=\"pageTitle()\"\n [button]=\"actionButton()\"\n (buttonClicked)=\"actionButtonClicked.emit()\"\n [secondaryButton]=\"secondaryButton()\"\n (secondaryButtonClicked)=\"secondaryButtonClicked.emit()\"\n [picker]=\"actionPicker()\"\n (pick)=\"actionPick.emit($event)\"></appshell-page-header>\n<div class=\"product-ctn\">\n @if (product().image) {\n <div class=\"product-img\">\n <img [src]=\"product().image\" [alt]=\"'Product image for ' + product().title\">\n </div>\n }\n <div class=\"product-metadata\">\n <h2>{{ product().title }}</h2>\n <div class=\"subheadline\">\n @if (product().authors && product().authors!.length > 0) {\n <span>{{ product().authors.join(', ') }}</span>\n }\n @if (product().authors && product().authors!.length > 0 && product().date) {\n <div class=\"row-separator\"></div>\n }\n @if (product().date) {\n <span>{{ product().date!.toJSON().slice(0,10) }}</span>\n }\n </div>\n @if (product().tags && product().tags!.length > 0) {\n <div class=\"tags-ctn\">\n <mat-chip-set aria-label=\"Product categories\">\n @for (tag of productLabels(); track tag) {\n <appshell-chip [label]=\"tag\"></appshell-chip>\n }\n </mat-chip-set>\n </div>\n }\n </div>\n <div class=\"description\">\n <markdown\n [data]=\"product().description\"\n [disableSanitizer]=\"true\">\n </markdown>\n </div>\n</div>","import { Component, computed, input, output } from '@angular/core';\nimport { AppShellPageHeaderComponent } from '../../components/appshell-page-header/appshell-page-header.component';\nimport { AppShellLink } from '../../models/appshell-link';\nimport { AppShellNotification } from 'ngx-appshell';\nimport { DatePipe, SlicePipe } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MarkdownService } from 'ngx-markdown';\nimport { AppShellIconComponent } from '../../components/appshell-icon/appshell-icon.component';\n\n@Component({\n selector: 'appshell-notifications-screen',\n standalone: true,\n imports: [AppShellPageHeaderComponent, DatePipe, SlicePipe, MatButtonModule, AppShellIconComponent],\n templateUrl: './appshell-notifications-screen.component.html',\n styleUrl: './appshell-notifications-screen.component.scss'\n})\nexport class AppShellNotificationsScreenComponent {\n pageTitle = input.required<string>();\n breadcrumbLinks = input.required<AppShellLink[]>();\n notifications = input.required<AppShellNotification[]>();\n\n computedNotifications = computed(() => { \n return this.notifications().map((notification) => {\n notification.expanded = this.expandedNotifications.includes(notification.id);\n if(notification.message) {\n const parsed = this.markdownService.parse(notification.message.replace(/\\\\n/g, '\\n'), { markedOptions: { gfm: true, breaks: false } }) as string;\n notification.message = parsed;\n }\n return notification;\n });\n });\n\n readNotification = output<AppShellNotification>();\n readAllNotifications = output<void>();\n expandedNotifications: string[] = [];\n\n constructor(private readonly markdownService: MarkdownService) {}\n\n getIcon(notification: AppShellNotification): string {\n if (notification.type === 'success') {\n return 'check_circle';\n }\n if (notification.type === 'error') {\n return 'x_circle';\n }\n // Default to info \n return 'info';\n }\n\n getIconClasses(notification: AppShellNotification): string {\n if (notification.type === 'success') {\n return 'notification success';\n }\n if (notification.type === 'error') {\n return 'notification error';\n }\n return 'notification';\n }\n\n expandNotification(notification: AppShellNotification) {\n const index = this.expandedNotifications.indexOf(notification.id);\n if (index === -1) {\n this.expandedNotifications.push(notification.id);\n } else {\n this.expandedNotifications.splice(index, 1);\n }\n }\n\n isNotificationExpanded(notification: AppShellNotification): boolean {\n return this.expandedNotifications.includes(notification.id);\n }\n\n markAsRead(notification: AppShellNotification) {\n this.readNotification.emit(notification);\n }\n\n markAllAsRead() {\n this.readAllNotifications.emit();\n }\n}","<appshell-page-header \n [breadcrumbLinks]=\"breadcrumbLinks()\"\n [title]=\"pageTitle()\"></appshell-page-header>\n<div class=\"notifications-ctn\">\n <button class=\"mark-all-read-btn\" mat-button (click)=\"markAllAsRead()\">Mark all as read</button>\n @for (notification of computedNotifications(); track notification.date) {\n <div class=\"notification-ctn\" [class.unread]=\"!notification.read\" (click)=\"markAsRead(notification)\">\n <div class=\"notification-icon\">\n <appshell-icon [icon]=\"getIcon(notification)\" [class]=\"getIconClasses(notification)\" />\n </div>\n <div class=\"notification-content\">\n <span class=\"notification-title\">{{ notification.title }}</span>\n <span class=\"notification-body\" [class.expanded]=\"notification.expanded\">\n @if (notification.message && notification.message.length > 80) {\n @if (notification.expanded) {\n <span [innerHTML]=\"notification.message\"></span>\n } @else {\n <span [innerHTML]=\"notification.message | slice:0:70\" class=\"sliced-message\"></span>...\n }\n <span class=\"read-more-less\" (click)=\"expandNotification(notification)\">{{ notification.expanded ? 'Show less' : 'Read more' }}</span>\n } @else {\n <span [innerHTML]=\"notification.message\"></span>\n }\n </span>\n </div>\n <span class=\"notification-date\">{{ notification.date | date:'dd/MM/YY' }}</span>\n </div>\n }\n</div>","import { Injectable, Provider } from '@angular/core';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Injectable({ providedIn: 'root' })\nexport class IconRegistryService {\n \n private namespace = 'appshell';\n\n private http: HttpClient;\n\n constructor(\n httpBackend: HttpBackend,\n private matIconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.http = new HttpClient(httpBackend);\n }\n\n registerIconsFromManifest(manifestUrl: string = 'assets/icons/icons.json'): Promise<void> {\n return new Promise<void>((resolve) => {\n this.http.get<Record<string, string> | string[]>(manifestUrl).subscribe({\n next: (manifest) => {\n const basePath = manifestUrl.substring(0, manifestUrl.lastIndexOf('/') + 1);\n\n if (Array.isArray(manifest)) {\n manifest\n .filter((f) => typeof f === 'string' && f.endsWith('.svg'))\n .forEach((file) => {\n const iconName = file.replace(/\\.svg$/i, '');\n const url = basePath + file;\n this.matIconRegistry.addSvgIconInNamespace(\n this.namespace,\n iconName,\n this.sanitizer.bypassSecurityTrustResourceUrl(url)\n );\n });\n } else if (manifest && typeof manifest === 'object') {\n Object.entries(manifest).forEach(([iconName, relativePath]) => {\n if (typeof relativePath !== 'string' || !relativePath.endsWith('.svg')) {\n return;\n }\n const isAbsolute = /^https?:\\/\\//i.test(relativePath);\n const url = isAbsolute ? relativePath : basePath + relativePath;\n this.matIconRegistry.addSvgIconInNamespace(\n this.namespace,\n iconName,\n this.sanitizer.bypassSecurityTrustResourceUrl(url)\n );\n });\n }\n\n resolve();\n },\n error: () => {\n resolve();\n },\n });\n });\n }\n}","/*\n * Public API Surface of ngx-appshell\n */\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/models';\nexport * from './lib/screens';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i5","i1.AppShellToastService"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AppShellBreadcrumbComponent {
|
|
4
|
+
links: import("@angular/core").InputSignal<AppShellLink[] | undefined>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellBreadcrumbComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellBreadcrumbComponent, "appshell-breadcrumb", never, { "links": { "alias": "links"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AppShellChipComponent {
|
|
3
|
+
label: import("@angular/core").InputSignal<string>;
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellChipComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellChipComponent, "appshell-chip", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { AppShellFilter } from '../../models/appshell-filter';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AppShellFiltersComponent implements OnChanges {
|
|
5
|
+
filters: import("@angular/core").InputSignal<AppShellFilter[] | undefined>;
|
|
6
|
+
activeFilters: Map<string, string[]>;
|
|
7
|
+
activeFiltersChange: import("@angular/core").OutputEmitterRef<Map<string, string[]>>;
|
|
8
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
9
|
+
onFilterChange(label: string, values: string | string[]): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellFiltersComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellFiltersComponent, "appshell-filters", never, { "filters": { "alias": "filters"; "required": false; "isSignal": true; }; }, { "activeFiltersChange": "activeFiltersChange"; }, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AppShellUser } from '../../models/appshell-user';
|
|
2
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
3
|
+
import { AppShellPicker } from '../../models/appshell-picker';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AppShellHeaderComponent {
|
|
7
|
+
private readonly router;
|
|
8
|
+
applicationName: import("@angular/core").InputSignal<string>;
|
|
9
|
+
symbol: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
applicationNameLink: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
helpLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
12
|
+
notificationsLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
13
|
+
notificationsCount: import("@angular/core").InputSignal<number>;
|
|
14
|
+
links: import("@angular/core").InputSignal<AppShellLink[]>;
|
|
15
|
+
picker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
16
|
+
loggedUser: import("@angular/core").InputSignal<AppShellUser | null | undefined>;
|
|
17
|
+
userLoggedIn: import("@angular/core").OutputEmitterRef<void>;
|
|
18
|
+
userLoggedOut: import("@angular/core").OutputEmitterRef<void>;
|
|
19
|
+
userPick: import("@angular/core").OutputEmitterRef<string>;
|
|
20
|
+
constructor(router: Router);
|
|
21
|
+
getCurrentUrlPath(): string;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellHeaderComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellHeaderComponent, "appshell-header", never, { "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "symbol": { "alias": "symbol"; "required": false; "isSignal": true; }; "applicationNameLink": { "alias": "applicationNameLink"; "required": false; "isSignal": true; }; "helpLink": { "alias": "helpLink"; "required": false; "isSignal": true; }; "notificationsLink": { "alias": "notificationsLink"; "required": false; "isSignal": true; }; "notificationsCount": { "alias": "notificationsCount"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": true; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; "loggedUser": { "alias": "loggedUser"; "required": false; "isSignal": true; }; }, { "userLoggedIn": "userLoggedIn"; "userLoggedOut": "userLoggedOut"; "userPick": "userPick"; }, never, never, true, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MatIconRegistry } from '@angular/material/icon';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AppShellIconComponent {
|
|
4
|
+
private iconRegistry;
|
|
5
|
+
icon: import("@angular/core").InputSignal<string>;
|
|
6
|
+
private namespace;
|
|
7
|
+
resolvedSvgIcon: import("@angular/core").WritableSignal<string>;
|
|
8
|
+
resolvedFontIcon: import("@angular/core").WritableSignal<string>;
|
|
9
|
+
constructor(iconRegistry: MatIconRegistry);
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellIconComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellIconComponent, "appshell-icon", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AppShellUser } from '../../models/appshell-user';
|
|
2
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
3
|
+
import { AppShellPicker } from '../../models/appshell-picker';
|
|
4
|
+
import { AppShellLinksGroup } from '../../models/appshell-links-group';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AppShellLayoutComponent {
|
|
7
|
+
headerVariant: import("@angular/core").InputSignal<string>;
|
|
8
|
+
applicationSymbol: import("@angular/core").InputSignal<string>;
|
|
9
|
+
applicationName: import("@angular/core").InputSignal<string>;
|
|
10
|
+
applicationNameLink: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
appShellHelpLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
12
|
+
appShellNotificationsLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
13
|
+
appShellNotificationsCount: import("@angular/core").InputSignal<number>;
|
|
14
|
+
headerLinks: import("@angular/core").InputSignal<AppShellLink[]>;
|
|
15
|
+
headerPicker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
16
|
+
sidenavSections: import("@angular/core").InputSignal<AppShellLinksGroup[]>;
|
|
17
|
+
sidenavLinks: import("@angular/core").InputSignal<AppShellLinksGroup | undefined>;
|
|
18
|
+
loggedUser: import("@angular/core").InputSignal<AppShellUser | null>;
|
|
19
|
+
userLoggedIn: import("@angular/core").OutputEmitterRef<void>;
|
|
20
|
+
userLoggedOut: import("@angular/core").OutputEmitterRef<void>;
|
|
21
|
+
userPick: import("@angular/core").OutputEmitterRef<string>;
|
|
22
|
+
constructor();
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellLayoutComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellLayoutComponent, "appshell-layout", never, { "headerVariant": { "alias": "headerVariant"; "required": false; "isSignal": true; }; "applicationSymbol": { "alias": "applicationSymbol"; "required": true; "isSignal": true; }; "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "applicationNameLink": { "alias": "applicationNameLink"; "required": false; "isSignal": true; }; "appShellHelpLink": { "alias": "appShellHelpLink"; "required": false; "isSignal": true; }; "appShellNotificationsLink": { "alias": "appShellNotificationsLink"; "required": false; "isSignal": true; }; "appShellNotificationsCount": { "alias": "appShellNotificationsCount"; "required": false; "isSignal": true; }; "headerLinks": { "alias": "headerLinks"; "required": true; "isSignal": true; }; "headerPicker": { "alias": "headerPicker"; "required": false; "isSignal": true; }; "sidenavSections": { "alias": "sidenavSections"; "required": true; "isSignal": true; }; "sidenavLinks": { "alias": "sidenavLinks"; "required": false; "isSignal": true; }; "loggedUser": { "alias": "loggedUser"; "required": true; "isSignal": true; }; }, { "userLoggedIn": "userLoggedIn"; "userLoggedOut": "userLoggedOut"; "userPick": "userPick"; }, never, never, true, never>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
2
|
+
import { AppShellPicker } from '../../models/appshell-picker';
|
|
3
|
+
import { AppShellButton } from '../../models/appshell-button';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class AppShellPageHeaderComponent {
|
|
6
|
+
breadcrumbLinks: import("@angular/core").InputSignal<AppShellLink[] | undefined>;
|
|
7
|
+
title: import("@angular/core").InputSignal<string | undefined>;
|
|
8
|
+
button: import("@angular/core").InputSignal<AppShellButton | undefined>;
|
|
9
|
+
buttonClicked: import("@angular/core").OutputEmitterRef<void>;
|
|
10
|
+
secondaryButton: import("@angular/core").InputSignal<AppShellButton | undefined>;
|
|
11
|
+
secondaryButtonClicked: import("@angular/core").OutputEmitterRef<void>;
|
|
12
|
+
picker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
13
|
+
pick: import("@angular/core").OutputEmitterRef<string>;
|
|
14
|
+
clickButton(): void;
|
|
15
|
+
clickSecondaryButton(): void;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellPageHeaderComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellPageHeaderComponent, "appshell-page-header", never, { "breadcrumbLinks": { "alias": "breadcrumbLinks"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "secondaryButton": { "alias": "secondaryButton"; "required": false; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; }, { "buttonClicked": "buttonClicked"; "secondaryButtonClicked": "secondaryButtonClicked"; "pick": "pick"; }, never, never, true, never>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AppShellUser } from '../../models/appshell-user';
|
|
2
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
3
|
+
import { AppShellPicker } from '../../models/appshell-picker';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AppShellPlatformHeaderComponent {
|
|
7
|
+
private readonly router;
|
|
8
|
+
applicationName: import("@angular/core").InputSignal<string>;
|
|
9
|
+
symbol: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
logo: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
applicationNameLink: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
helpLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
13
|
+
notificationsLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
14
|
+
notificationsCount: import("@angular/core").InputSignal<number>;
|
|
15
|
+
links: import("@angular/core").InputSignal<AppShellLink[]>;
|
|
16
|
+
projectPicker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
17
|
+
secondaryPicker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
18
|
+
loggedUser: import("@angular/core").InputSignal<AppShellUser | null | undefined>;
|
|
19
|
+
userLoggedIn: import("@angular/core").OutputEmitterRef<void>;
|
|
20
|
+
userLoggedOut: import("@angular/core").OutputEmitterRef<void>;
|
|
21
|
+
userProjectPick: import("@angular/core").OutputEmitterRef<string>;
|
|
22
|
+
userProjectPickChoice: string | null;
|
|
23
|
+
userSecondaryPick: import("@angular/core").OutputEmitterRef<string>;
|
|
24
|
+
userSecondaryPickChoice: string | null;
|
|
25
|
+
isPlatformPickerOpened: import("@angular/core").InputSignal<boolean | null>;
|
|
26
|
+
platformPickerClick: import("@angular/core").OutputEmitterRef<void>;
|
|
27
|
+
projectPickerSearch: string;
|
|
28
|
+
constructor(router: Router);
|
|
29
|
+
getCurrentUrlPath(): string;
|
|
30
|
+
filteredProjectPickerOptions(): string[];
|
|
31
|
+
pickProject(option: string): void;
|
|
32
|
+
pickSecondChoice(option: string): void;
|
|
33
|
+
openPlatformPicker(): void;
|
|
34
|
+
onSearchKeydown(event: KeyboardEvent): void;
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellPlatformHeaderComponent, never>;
|
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellPlatformHeaderComponent, "appshell-platform-header", never, { "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "symbol": { "alias": "symbol"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "applicationNameLink": { "alias": "applicationNameLink"; "required": false; "isSignal": true; }; "helpLink": { "alias": "helpLink"; "required": false; "isSignal": true; }; "notificationsLink": { "alias": "notificationsLink"; "required": false; "isSignal": true; }; "notificationsCount": { "alias": "notificationsCount"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": true; "isSignal": true; }; "projectPicker": { "alias": "projectPicker"; "required": false; "isSignal": true; }; "secondaryPicker": { "alias": "secondaryPicker"; "required": false; "isSignal": true; }; "loggedUser": { "alias": "loggedUser"; "required": false; "isSignal": true; }; "isPlatformPickerOpened": { "alias": "isPlatformPickerOpened"; "required": false; "isSignal": true; }; }, { "userLoggedIn": "userLoggedIn"; "userLoggedOut": "userLoggedOut"; "userProjectPick": "userProjectPick"; "userSecondaryPick": "userSecondaryPick"; "platformPickerClick": "platformPickerClick"; }, never, never, true, never>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AppShellUser } from '../../models/appshell-user';
|
|
2
|
+
import { AppShellLink } from '../../models/appshell-link';
|
|
3
|
+
import { AppShellPicker } from '../../models/appshell-picker';
|
|
4
|
+
import { AppShellLinksGroup } from '../../models/appshell-links-group';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AppShellPlatformLayoutComponent {
|
|
7
|
+
headerVariant: import("@angular/core").InputSignal<string>;
|
|
8
|
+
applicationSymbol: import("@angular/core").InputSignal<string | undefined>;
|
|
9
|
+
applicationLogo: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
applicationName: import("@angular/core").InputSignal<string>;
|
|
11
|
+
applicationNameLink: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
appShellHelpLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
13
|
+
appShellNotificationsLink: import("@angular/core").InputSignal<AppShellLink | undefined>;
|
|
14
|
+
appShellNotificationsCount: import("@angular/core").InputSignal<number>;
|
|
15
|
+
headerLinks: import("@angular/core").InputSignal<AppShellLink[]>;
|
|
16
|
+
headerProjectPicker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
17
|
+
headerSecondaryPicker: import("@angular/core").InputSignal<AppShellPicker | undefined>;
|
|
18
|
+
sidenavSections: import("@angular/core").InputSignal<AppShellLinksGroup[]>;
|
|
19
|
+
sidenavLinks: import("@angular/core").InputSignal<AppShellLinksGroup | undefined>;
|
|
20
|
+
loggedUser: import("@angular/core").InputSignal<AppShellUser | null>;
|
|
21
|
+
isPlatformPickerOpened: import("@angular/core").InputSignal<boolean | null>;
|
|
22
|
+
userLoggedIn: import("@angular/core").OutputEmitterRef<void>;
|
|
23
|
+
userLoggedOut: import("@angular/core").OutputEmitterRef<void>;
|
|
24
|
+
userProjectPick: import("@angular/core").OutputEmitterRef<string>;
|
|
25
|
+
userSecondaryPick: import("@angular/core").OutputEmitterRef<string>;
|
|
26
|
+
platformPickerClick: import("@angular/core").OutputEmitterRef<void>;
|
|
27
|
+
constructor();
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellPlatformLayoutComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellPlatformLayoutComponent, "appshell-platform-layout", never, { "headerVariant": { "alias": "headerVariant"; "required": false; "isSignal": true; }; "applicationSymbol": { "alias": "applicationSymbol"; "required": false; "isSignal": true; }; "applicationLogo": { "alias": "applicationLogo"; "required": false; "isSignal": true; }; "applicationName": { "alias": "applicationName"; "required": true; "isSignal": true; }; "applicationNameLink": { "alias": "applicationNameLink"; "required": false; "isSignal": true; }; "appShellHelpLink": { "alias": "appShellHelpLink"; "required": false; "isSignal": true; }; "appShellNotificationsLink": { "alias": "appShellNotificationsLink"; "required": false; "isSignal": true; }; "appShellNotificationsCount": { "alias": "appShellNotificationsCount"; "required": false; "isSignal": true; }; "headerLinks": { "alias": "headerLinks"; "required": true; "isSignal": true; }; "headerProjectPicker": { "alias": "headerProjectPicker"; "required": false; "isSignal": true; }; "headerSecondaryPicker": { "alias": "headerSecondaryPicker"; "required": false; "isSignal": true; }; "sidenavSections": { "alias": "sidenavSections"; "required": true; "isSignal": true; }; "sidenavLinks": { "alias": "sidenavLinks"; "required": false; "isSignal": true; }; "loggedUser": { "alias": "loggedUser"; "required": true; "isSignal": true; }; "isPlatformPickerOpened": { "alias": "isPlatformPickerOpened"; "required": false; "isSignal": true; }; }, { "userLoggedIn": "userLoggedIn"; "userLoggedOut": "userLoggedOut"; "userProjectPick": "userProjectPick"; "userSecondaryPick": "userSecondaryPick"; "platformPickerClick": "platformPickerClick"; }, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AfterViewChecked, ElementRef, NgZone, OnDestroy } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AppShellProductCardComponent implements AfterViewChecked, OnDestroy {
|
|
5
|
+
private readonly router;
|
|
6
|
+
private readonly ngZone;
|
|
7
|
+
labelsChipSet: ElementRef<HTMLElement>;
|
|
8
|
+
title: import("@angular/core").InputSignal<string>;
|
|
9
|
+
description: import("@angular/core").InputSignal<string>;
|
|
10
|
+
image: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
labels: import("@angular/core").InputSignal<string[] | undefined>;
|
|
12
|
+
redirectTo: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
resizeObserver: ResizeObserver;
|
|
14
|
+
constructor(router: Router, ngZone: NgZone);
|
|
15
|
+
debounce(func: Function, wait: number): (...args: any[]) => void;
|
|
16
|
+
ngAfterViewChecked(): void;
|
|
17
|
+
onClick(): void;
|
|
18
|
+
hideOverflowingLabels(): void;
|
|
19
|
+
changeExtraLabel(labelEl: Element, removedLabels: Array<string>): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellProductCardComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellProductCardComponent, "appshell-product-card", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "redirectTo": { "alias": "redirectTo"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AppShellProductCardV2Component {
|
|
4
|
+
private readonly router;
|
|
5
|
+
title: import("@angular/core").InputSignal<string>;
|
|
6
|
+
description: import("@angular/core").InputSignal<string>;
|
|
7
|
+
image: import("@angular/core").InputSignal<string | undefined>;
|
|
8
|
+
link: import("@angular/core").InputSignal<string | undefined>;
|
|
9
|
+
buttonText: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
labels: import("@angular/core").InputSignal<string[] | undefined>;
|
|
11
|
+
redirectTo: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
constructor(router: Router);
|
|
13
|
+
onClick(): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellProductCardV2Component, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellProductCardV2Component, "appshell-product-card-v2", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "buttonText": { "alias": "buttonText"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "redirectTo": { "alias": "redirectTo"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AppShellSelectComponent {
|
|
3
|
+
label: import("@angular/core").InputSignal<string>;
|
|
4
|
+
options: import("@angular/core").InputSignal<string[]>;
|
|
5
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
6
|
+
selectValueChange: import("@angular/core").OutputEmitterRef<string[]>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellSelectComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellSelectComponent, "appshell-select", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": true; "isSignal": true; }; }, { "selectValueChange": "selectValueChange"; }, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Router } from '@angular/router';
|
|
2
|
+
import { AppShellLinksGroup } from '../../models/appshell-links-group';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AppShellSidebarMenuComponent {
|
|
5
|
+
private readonly router;
|
|
6
|
+
sections: import("@angular/core").InputSignal<AppShellLinksGroup[]>;
|
|
7
|
+
links: import("@angular/core").InputSignal<AppShellLinksGroup | undefined>;
|
|
8
|
+
constructor(router: Router);
|
|
9
|
+
getCurrentUrlPath(): string;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellSidebarMenuComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellSidebarMenuComponent, "appshell-sidebar-menu", never, { "sections": { "alias": "sections"; "required": true; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AppShellNotification } from '../../models/appshell-notification';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AppShellToastComponent {
|
|
4
|
+
notification: import("@angular/core").InputSignal<AppShellNotification | undefined>;
|
|
5
|
+
closed: import("@angular/core").OutputEmitterRef<boolean>;
|
|
6
|
+
closeToast(): void;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellToastComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellToastComponent, "appshell-toast", never, { "notification": { "alias": "notification"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
9
|
+
}
|