@opendevstack/ngx-appshell 19.0.6 → 19.0.8
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 +1 -1
- package/fesm2022/opendevstack-ngx-appshell.mjs +14 -7
- package/fesm2022/opendevstack-ngx-appshell.mjs.map +1 -1
- package/lib/components/appshell-product-card/appshell-product-card.component.d.ts +3 -2
- package/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.d.ts +2 -1
- package/opendevstack-ngx-appshell-19.0.8.tgz +0 -0
- package/package.json +1 -1
- package/schematics/azure-login/index.js +17 -2
- package/schematics/azure-login/index.js.map +1 -1
- package/opendevstack-ngx-appshell-19.0.6.tgz +0 -0
package/README.md
CHANGED
|
@@ -374,6 +374,7 @@ class AppShellProductCardComponent {
|
|
|
374
374
|
router;
|
|
375
375
|
ngZone;
|
|
376
376
|
labelsChipSet;
|
|
377
|
+
loading = input(false);
|
|
377
378
|
title = input.required();
|
|
378
379
|
description = input.required();
|
|
379
380
|
image = input();
|
|
@@ -398,13 +399,18 @@ class AppShellProductCardComponent {
|
|
|
398
399
|
};
|
|
399
400
|
}
|
|
400
401
|
ngAfterViewChecked() {
|
|
401
|
-
this.
|
|
402
|
-
|
|
402
|
+
if (this.labelsChipSet) {
|
|
403
|
+
this.hideOverflowingLabels();
|
|
404
|
+
this.resizeObserver.observe(this.labelsChipSet.nativeElement);
|
|
405
|
+
}
|
|
403
406
|
}
|
|
404
407
|
onClick() {
|
|
405
408
|
this.router.navigate([this.redirectTo()]);
|
|
406
409
|
}
|
|
407
410
|
hideOverflowingLabels() {
|
|
411
|
+
if (!this.labelsChipSet) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
408
414
|
const twoLinesHeight = 4.5 * 16; // Each label uses 2 rem with a gap of .5 rem where 1 rem = 16px
|
|
409
415
|
const labelsChipSetDiv = this.labelsChipSet.nativeElement.firstChild;
|
|
410
416
|
const chipsChildren = Array.from(labelsChipSetDiv.children).filter((child) => child.tagName.toLowerCase() === 'appshell-chip');
|
|
@@ -459,14 +465,14 @@ class AppShellProductCardComponent {
|
|
|
459
465
|
}
|
|
460
466
|
}
|
|
461
467
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: AppShellProductCardComponent, deps: [{ token: i1.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
462
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: AppShellProductCardComponent, isStandalone: true, selector: "appshell-product-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, redirectTo: { classPropertyName: "redirectTo", publicName: "redirectTo", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "labelsChipSet", first: true, predicate: ["labelsChipSet"], descendants: true, read: ElementRef
|
|
468
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: AppShellProductCardComponent, isStandalone: true, selector: "appshell-product-card", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, redirectTo: { classPropertyName: "redirectTo", publicName: "redirectTo", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "labelsChipSet", first: true, predicate: ["labelsChipSet"], descendants: true, read: ElementRef }], ngImport: i0, template: "<mat-card class=\"appshell-product-card\" [class.loading]=\"loading()\" appearance=\"outlined\" [attr.tabindex]=\"loading() ? -1 : 0\" (click)=\"!loading() && onClick()\" (keydown.enter)=\"!loading() && onClick()\" (keydown.space)=\"!loading() && onClick()\">\n @if (loading()) {\n <mat-card-header>\n <mat-card-title-group>\n <mat-card-title>\n <div class=\"skeleton skeleton-title\"></div>\n </mat-card-title>\n <div class=\"skeleton skeleton-image\"></div>\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\" style=\"width: 70%;\"></div>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"skeleton-chips\">\n <div class=\"skeleton skeleton-chip\"></div>\n <div class=\"skeleton skeleton-chip\"></div>\n </div>\n </mat-card-actions>\n } @else {\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 }\n</mat-card>", styles: [".appshell-product-card{padding:.5rem;border-radius:.15rem!important;border-width:1px!important;border-color:var(--appshell-color-grey-warm)!important;text-decoration:none;cursor:pointer;color:var(--appshell-color-secondary-main);height:100%;max-width:35rem}.appshell-product-card.loading{cursor:default;pointer-events:none}.appshell-product-card:hover{color:var(--appshell-color-secondary-medium)}.appshell-product-card mat-card-header{height:3rem;padding:1rem}.appshell-product-card mat-card-header mat-card-title-group{gap:1rem;align-items:center}.appshell-product-card mat-card-header mat-card-title-group mat-card-title{font-family:AppShellHeadingFont;font-size:1.25rem;font-style:normal;font-weight:500;line-height:120%;letter-spacing:.00625rem;overflow:hidden;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.appshell-product-card mat-card-header mat-card-title-group img{width:2.5rem;height:2.5rem}.appshell-product-card mat-card-content{font-family:AppShellTextFont;font-size:.875rem;font-style:normal;font-weight:400;line-height:120%;letter-spacing:.00625rem;overflow:hidden;display:-webkit-box;line-clamp:3;-webkit-line-clamp:3;-webkit-box-orient:vertical;height:3rem}.appshell-product-card mat-card-actions{padding:0 1rem;display:flex;flex-direction:column;align-items:start;gap:1rem;margin:1.5rem 0 1rem;min-height:unset}.appshell-product-card mat-card-actions .appshell-product-card-labels{max-height:4.5rem;width:100%}.appshell-product-card mat-card-actions .appshell-product-card-labels>div{row-gap:.5rem;column-gap:1rem}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip{position:relative}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip .tooltip-text{visibility:hidden;font-size:.875rem;width:10rem;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:.5rem;position:absolute;z-index:1;bottom:130%;left:50%;margin-left:-5.5rem}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip .tooltip-text:after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:black transparent transparent transparent}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip:hover .tooltip-text{visibility:visible}.appshell-product-card.loading mat-card-title-group>div:first-of-type{width:100%}.appshell-product-card .skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:.25rem}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.appshell-product-card .skeleton-title{height:2.5rem;width:80%}.appshell-product-card .skeleton-image{width:2.5rem;height:2.5rem;border-radius:.25rem;flex-shrink:0}.appshell-product-card .skeleton-line{height:1rem;width:100%;margin-bottom:.5rem}.appshell-product-card .skeleton-line:last-child{margin-bottom:0}.appshell-product-card .skeleton-chips{display:flex;gap:1rem;flex-wrap:wrap}.appshell-product-card .skeleton-chips .skeleton-chip{height:2rem;width:5rem;border-radius:1rem}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2$1.MatCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i2$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i2$1.MatCardTitleGroup, selector: "mat-card-title-group" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i1$2.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: AppShellChipComponent, selector: "appshell-chip", inputs: ["label"] }, { kind: "ngmodule", type: MatTooltipModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
463
469
|
}
|
|
464
470
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: AppShellProductCardComponent, decorators: [{
|
|
465
471
|
type: Component,
|
|
466
|
-
args: [{ selector: 'appshell-product-card', imports: [MatCardModule, MatButtonModule, MatChipsModule, AppShellChipComponent, AppShellChipComponent, MatTooltipModule], encapsulation: ViewEncapsulation.None, template: "<mat-card class=\"appshell-product-card\" appearance=\"outlined\" tabindex=\"0\" (click)=\"onClick()\" (keydown.enter)=\"onClick()\" (keydown.space)=\"onClick()\">\n <mat-card-header>\n
|
|
472
|
+
args: [{ selector: 'appshell-product-card', imports: [MatCardModule, MatButtonModule, MatChipsModule, AppShellChipComponent, AppShellChipComponent, MatTooltipModule], encapsulation: ViewEncapsulation.None, template: "<mat-card class=\"appshell-product-card\" [class.loading]=\"loading()\" appearance=\"outlined\" [attr.tabindex]=\"loading() ? -1 : 0\" (click)=\"!loading() && onClick()\" (keydown.enter)=\"!loading() && onClick()\" (keydown.space)=\"!loading() && onClick()\">\n @if (loading()) {\n <mat-card-header>\n <mat-card-title-group>\n <mat-card-title>\n <div class=\"skeleton skeleton-title\"></div>\n </mat-card-title>\n <div class=\"skeleton skeleton-image\"></div>\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\" style=\"width: 70%;\"></div>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"skeleton-chips\">\n <div class=\"skeleton skeleton-chip\"></div>\n <div class=\"skeleton skeleton-chip\"></div>\n </div>\n </mat-card-actions>\n } @else {\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 }\n</mat-card>", styles: [".appshell-product-card{padding:.5rem;border-radius:.15rem!important;border-width:1px!important;border-color:var(--appshell-color-grey-warm)!important;text-decoration:none;cursor:pointer;color:var(--appshell-color-secondary-main);height:100%;max-width:35rem}.appshell-product-card.loading{cursor:default;pointer-events:none}.appshell-product-card:hover{color:var(--appshell-color-secondary-medium)}.appshell-product-card mat-card-header{height:3rem;padding:1rem}.appshell-product-card mat-card-header mat-card-title-group{gap:1rem;align-items:center}.appshell-product-card mat-card-header mat-card-title-group mat-card-title{font-family:AppShellHeadingFont;font-size:1.25rem;font-style:normal;font-weight:500;line-height:120%;letter-spacing:.00625rem;overflow:hidden;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.appshell-product-card mat-card-header mat-card-title-group img{width:2.5rem;height:2.5rem}.appshell-product-card mat-card-content{font-family:AppShellTextFont;font-size:.875rem;font-style:normal;font-weight:400;line-height:120%;letter-spacing:.00625rem;overflow:hidden;display:-webkit-box;line-clamp:3;-webkit-line-clamp:3;-webkit-box-orient:vertical;height:3rem}.appshell-product-card mat-card-actions{padding:0 1rem;display:flex;flex-direction:column;align-items:start;gap:1rem;margin:1.5rem 0 1rem;min-height:unset}.appshell-product-card mat-card-actions .appshell-product-card-labels{max-height:4.5rem;width:100%}.appshell-product-card mat-card-actions .appshell-product-card-labels>div{row-gap:.5rem;column-gap:1rem}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip{position:relative}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip .tooltip-text{visibility:hidden;font-size:.875rem;width:10rem;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:.5rem;position:absolute;z-index:1;bottom:130%;left:50%;margin-left:-5.5rem}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip .tooltip-text:after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:black transparent transparent transparent}.appshell-product-card mat-card-actions .appshell-product-card-labels>div .tooltip-chip:hover .tooltip-text{visibility:visible}.appshell-product-card.loading mat-card-title-group>div:first-of-type{width:100%}.appshell-product-card .skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:.25rem}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.appshell-product-card .skeleton-title{height:2.5rem;width:80%}.appshell-product-card .skeleton-image{width:2.5rem;height:2.5rem;border-radius:.25rem;flex-shrink:0}.appshell-product-card .skeleton-line{height:1rem;width:100%;margin-bottom:.5rem}.appshell-product-card .skeleton-line:last-child{margin-bottom:0}.appshell-product-card .skeleton-chips{display:flex;gap:1rem;flex-wrap:wrap}.appshell-product-card .skeleton-chips .skeleton-chip{height:2rem;width:5rem;border-radius:1rem}\n"] }]
|
|
467
473
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i0.NgZone }], propDecorators: { labelsChipSet: [{
|
|
468
474
|
type: ViewChild,
|
|
469
|
-
args: ['labelsChipSet', { static:
|
|
475
|
+
args: ['labelsChipSet', { static: false, read: ElementRef }]
|
|
470
476
|
}] } });
|
|
471
477
|
|
|
472
478
|
class AppShellProductCardV2Component {
|
|
@@ -566,6 +572,7 @@ class AppShellProductCatalogScreenComponent {
|
|
|
566
572
|
breadcrumbLinks = input.required();
|
|
567
573
|
products = input.required();
|
|
568
574
|
filters = input.required();
|
|
575
|
+
isLoading = input(false);
|
|
569
576
|
noProductsIcon = input();
|
|
570
577
|
noProductsHtmlMessage = input();
|
|
571
578
|
activeFiltersChange = output();
|
|
@@ -573,11 +580,11 @@ class AppShellProductCatalogScreenComponent {
|
|
|
573
580
|
return product.tags?.flatMap(tag => tag.options) || [];
|
|
574
581
|
}
|
|
575
582
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: AppShellProductCatalogScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
576
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: AppShellProductCatalogScreenComponent, isStandalone: true, selector: "appshell-product-catalog-screen", inputs: { pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: true, transformFunction: null }, breadcrumbLinks: { classPropertyName: "breadcrumbLinks", publicName: "breadcrumbLinks", isSignal: true, isRequired: true, transformFunction: null }, products: { classPropertyName: "products", publicName: "products", isSignal: true, isRequired: true, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: true, transformFunction: null }, noProductsIcon: { classPropertyName: "noProductsIcon", publicName: "noProductsIcon", isSignal: true, isRequired: false, transformFunction: null }, noProductsHtmlMessage: { classPropertyName: "noProductsHtmlMessage", publicName: "noProductsHtmlMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeFiltersChange: "activeFiltersChange" }, ngImport: i0, template: "<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 }
|
|
583
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: AppShellProductCatalogScreenComponent, isStandalone: true, selector: "appshell-product-catalog-screen", inputs: { pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: true, transformFunction: null }, breadcrumbLinks: { classPropertyName: "breadcrumbLinks", publicName: "breadcrumbLinks", isSignal: true, isRequired: true, transformFunction: null }, products: { classPropertyName: "products", publicName: "products", isSignal: true, isRequired: true, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, noProductsIcon: { classPropertyName: "noProductsIcon", publicName: "noProductsIcon", isSignal: true, isRequired: false, transformFunction: null }, noProductsHtmlMessage: { classPropertyName: "noProductsHtmlMessage", publicName: "noProductsHtmlMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeFiltersChange: "activeFiltersChange" }, ngImport: i0, template: "<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(isLoading()) {\n <div class=\"products-ctn\">\n @for (i of [1,2,3,4,5,6]; track i) {\n <appshell-product-card\n [loading]=\"true\"\n title=\"\"\n description=\"\"\n ></appshell-product-card>\n }\n </div>\n } @else 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 } @else 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>", styles: ["appshell-product-catalog-screen{display:flex;flex-direction:column;height:100%}.catalog-main{flex:1;background-color:var(--appshell-color-grey-light)}.catalog-main .products-ctn{display:grid;grid-template-columns:repeat(auto-fill,minmax(25rem,1fr));grid-auto-rows:1fr;gap:1.5rem;padding:1.5rem;box-sizing:border-box;max-width:127.5rem}.catalog-main .products-ctn>*{width:100%;min-width:25rem;max-width:35rem}.catalog-main .no-results-ctn{width:100%;height:100%;max-width:120rem;display:flex;flex-direction:column;align-items:center;padding-top:4.5rem;color:var(--appshell-color-secondary-main);text-align:center;font-size:1rem;font-style:normal;font-weight:400;line-height:1.5rem}.catalog-main .no-results-ctn .no-results-icon{width:6rem;height:6rem;color:var(--appshell-color-secondary-light);margin-bottom:1.25rem}.catalog-main .no-results-ctn .no-results-icon appshell-icon,.catalog-main .no-results-ctn .no-results-icon mat-icon{height:6rem;width:6rem;font-size:6rem}\n"], dependencies: [{ kind: "component", type: AppShellProductCardComponent, selector: "appshell-product-card", inputs: ["loading", "title", "description", "image", "labels", "redirectTo"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: AppShellPageHeaderComponent, selector: "appshell-page-header", inputs: ["breadcrumbLinks", "title", "button", "secondaryButton", "picker"], outputs: ["buttonClicked", "secondaryButtonClicked", "pick"] }, { kind: "component", type: AppShellFiltersComponent, selector: "appshell-filters", inputs: ["filters"], outputs: ["activeFiltersChange"] }, { kind: "component", type: AppShellIconComponent, selector: "appshell-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
577
584
|
}
|
|
578
585
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: AppShellProductCatalogScreenComponent, decorators: [{
|
|
579
586
|
type: Component,
|
|
580
|
-
args: [{ selector: 'appshell-product-catalog-screen', standalone: true, imports: [AppShellProductCardComponent, MatFormFieldModule, MatInputModule, MatButtonModule, MatChipsModule, AppShellPageHeaderComponent, AppShellFiltersComponent, AppShellIconComponent], encapsulation: ViewEncapsulation.None, template: "<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 }
|
|
587
|
+
args: [{ selector: 'appshell-product-catalog-screen', standalone: true, imports: [AppShellProductCardComponent, MatFormFieldModule, MatInputModule, MatButtonModule, MatChipsModule, AppShellPageHeaderComponent, AppShellFiltersComponent, AppShellIconComponent], encapsulation: ViewEncapsulation.None, template: "<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(isLoading()) {\n <div class=\"products-ctn\">\n @for (i of [1,2,3,4,5,6]; track i) {\n <appshell-product-card\n [loading]=\"true\"\n title=\"\"\n description=\"\"\n ></appshell-product-card>\n }\n </div>\n } @else 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 } @else 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>", styles: ["appshell-product-catalog-screen{display:flex;flex-direction:column;height:100%}.catalog-main{flex:1;background-color:var(--appshell-color-grey-light)}.catalog-main .products-ctn{display:grid;grid-template-columns:repeat(auto-fill,minmax(25rem,1fr));grid-auto-rows:1fr;gap:1.5rem;padding:1.5rem;box-sizing:border-box;max-width:127.5rem}.catalog-main .products-ctn>*{width:100%;min-width:25rem;max-width:35rem}.catalog-main .no-results-ctn{width:100%;height:100%;max-width:120rem;display:flex;flex-direction:column;align-items:center;padding-top:4.5rem;color:var(--appshell-color-secondary-main);text-align:center;font-size:1rem;font-style:normal;font-weight:400;line-height:1.5rem}.catalog-main .no-results-ctn .no-results-icon{width:6rem;height:6rem;color:var(--appshell-color-secondary-light);margin-bottom:1.25rem}.catalog-main .no-results-ctn .no-results-icon appshell-icon,.catalog-main .no-results-ctn .no-results-icon mat-icon{height:6rem;width:6rem;font-size:6rem}\n"] }]
|
|
581
588
|
}] });
|
|
582
589
|
|
|
583
590
|
class AppShellProductViewScreenComponent {
|
|
@@ -1 +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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"}
|
|
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: false, read: ElementRef }) labelsChipSet?: ElementRef<HTMLElement>;\n\n loading = input<boolean>(false);\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 if (this.labelsChipSet) {\n this.hideOverflowingLabels();\n this.resizeObserver.observe(this.labelsChipSet.nativeElement);\n }\n }\n\n onClick() {\n this.router.navigate([this.redirectTo()]);\n }\n\n hideOverflowingLabels() {\n if (!this.labelsChipSet) {\n return;\n }\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\" [class.loading]=\"loading()\" appearance=\"outlined\" [attr.tabindex]=\"loading() ? -1 : 0\" (click)=\"!loading() && onClick()\" (keydown.enter)=\"!loading() && onClick()\" (keydown.space)=\"!loading() && onClick()\">\n @if (loading()) {\n <mat-card-header>\n <mat-card-title-group>\n <mat-card-title>\n <div class=\"skeleton skeleton-title\"></div>\n </mat-card-title>\n <div class=\"skeleton skeleton-image\"></div>\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\"></div>\n <div class=\"skeleton skeleton-line\" style=\"width: 70%;\"></div>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"skeleton-chips\">\n <div class=\"skeleton skeleton-chip\"></div>\n <div class=\"skeleton skeleton-chip\"></div>\n </div>\n </mat-card-actions>\n } @else {\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 }\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 isLoading = input<boolean>(false);\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(isLoading()) {\n <div class=\"products-ctn\">\n @for (i of [1,2,3,4,5,6]; track i) {\n <appshell-product-card\n [loading]=\"true\"\n title=\"\"\n description=\"\"\n ></appshell-product-card>\n }\n </div>\n } @else 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 } @else 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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"}
|
|
@@ -4,7 +4,8 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class AppShellProductCardComponent implements AfterViewChecked, OnDestroy {
|
|
5
5
|
private readonly router;
|
|
6
6
|
private readonly ngZone;
|
|
7
|
-
labelsChipSet
|
|
7
|
+
labelsChipSet?: ElementRef<HTMLElement>;
|
|
8
|
+
loading: import("@angular/core").InputSignal<boolean>;
|
|
8
9
|
title: import("@angular/core").InputSignal<string>;
|
|
9
10
|
description: import("@angular/core").InputSignal<string>;
|
|
10
11
|
image: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -19,5 +20,5 @@ export declare class AppShellProductCardComponent implements AfterViewChecked, O
|
|
|
19
20
|
changeExtraLabel(labelEl: Element, removedLabels: Array<string>): void;
|
|
20
21
|
ngOnDestroy(): void;
|
|
21
22
|
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
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellProductCardComponent, "appshell-product-card", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "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
24
|
}
|
package/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.d.ts
CHANGED
|
@@ -7,10 +7,11 @@ export declare class AppShellProductCatalogScreenComponent {
|
|
|
7
7
|
breadcrumbLinks: import("@angular/core").InputSignal<AppShellLink[]>;
|
|
8
8
|
products: import("@angular/core").InputSignal<AppShellProduct[]>;
|
|
9
9
|
filters: import("@angular/core").InputSignal<AppShellFilter[]>;
|
|
10
|
+
isLoading: import("@angular/core").InputSignal<boolean>;
|
|
10
11
|
noProductsIcon: import("@angular/core").InputSignal<string | undefined>;
|
|
11
12
|
noProductsHtmlMessage: import("@angular/core").InputSignal<string | undefined>;
|
|
12
13
|
activeFiltersChange: import("@angular/core").OutputEmitterRef<Map<string, string[]>>;
|
|
13
14
|
getProductLabels(product: AppShellProduct): string[];
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<AppShellProductCatalogScreenComponent, never>;
|
|
15
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellProductCatalogScreenComponent, "appshell-product-catalog-screen", never, { "pageTitle": { "alias": "pageTitle"; "required": true; "isSignal": true; }; "breadcrumbLinks": { "alias": "breadcrumbLinks"; "required": true; "isSignal": true; }; "products": { "alias": "products"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": true; "isSignal": true; }; "noProductsIcon": { "alias": "noProductsIcon"; "required": false; "isSignal": true; }; "noProductsHtmlMessage": { "alias": "noProductsHtmlMessage"; "required": false; "isSignal": true; }; }, { "activeFiltersChange": "activeFiltersChange"; }, never, never, true, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppShellProductCatalogScreenComponent, "appshell-product-catalog-screen", never, { "pageTitle": { "alias": "pageTitle"; "required": true; "isSignal": true; }; "breadcrumbLinks": { "alias": "breadcrumbLinks"; "required": true; "isSignal": true; }; "products": { "alias": "products"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "noProductsIcon": { "alias": "noProductsIcon"; "required": false; "isSignal": true; }; "noProductsHtmlMessage": { "alias": "noProductsHtmlMessage"; "required": false; "isSignal": true; }; }, { "activeFiltersChange": "activeFiltersChange"; }, never, never, true, never>;
|
|
16
17
|
}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendevstack/ngx-appshell",
|
|
3
|
-
"version": "19.0.
|
|
3
|
+
"version": "19.0.8",
|
|
4
4
|
"description": "A comprehensive Angular library providing pre-built UI components, directives, and schematics for building modern enterprise applications with Material Design.",
|
|
5
5
|
"author": "OpenDevStack",
|
|
6
6
|
"repository": {
|
|
@@ -42,7 +42,10 @@ function addAzureServiceToAppComponent() {
|
|
|
42
42
|
sourceText = ensureImport(sourceText, sourceFile, 'AzureService', './services/azure.service');
|
|
43
43
|
sourceText = ensureImport(sourceText, sourceFile, 'OnInit', '@angular/core', 'Component');
|
|
44
44
|
if (hasConstructor(sourceFile)) {
|
|
45
|
-
|
|
45
|
+
const constructorRegex = /constructor\s*\(([^)]*)\)/;
|
|
46
|
+
const constructorMatch = sourceText.match(constructorRegex);
|
|
47
|
+
const hasAzureServiceParam = constructorMatch && constructorMatch[1].includes('AzureService');
|
|
48
|
+
if (!hasAzureServiceParam) {
|
|
46
49
|
sourceText = updateConstructor(sourceText);
|
|
47
50
|
context.logger.info('Updated constructor with AzureService injection');
|
|
48
51
|
}
|
|
@@ -57,7 +60,7 @@ function addAzureServiceToAppComponent() {
|
|
|
57
60
|
}
|
|
58
61
|
sourceText = ensureMethodWithContent(sourceText, sourceFile, 'login', 'this.azureService.login();', context);
|
|
59
62
|
sourceText = ensureMethodWithContent(sourceText, sourceFile, 'logout', 'this.azureService.logout();', context);
|
|
60
|
-
if (!
|
|
63
|
+
if (!hasProperty(sourceFile, 'loggedUser')) {
|
|
61
64
|
sourceText = addProperty(sourceText, 'loggedUser: any;');
|
|
62
65
|
context.logger.info('Added loggedUser property');
|
|
63
66
|
}
|
|
@@ -245,6 +248,18 @@ function hasConstructor(sourceFile) {
|
|
|
245
248
|
visit(sourceFile);
|
|
246
249
|
return found;
|
|
247
250
|
}
|
|
251
|
+
function hasProperty(sourceFile, propertyName) {
|
|
252
|
+
let found = false;
|
|
253
|
+
function visit(node) {
|
|
254
|
+
if (ts.isPropertyDeclaration(node) && node.name && node.name.getText() === propertyName) {
|
|
255
|
+
found = true;
|
|
256
|
+
}
|
|
257
|
+
if (!found)
|
|
258
|
+
ts.forEachChild(node, visit);
|
|
259
|
+
}
|
|
260
|
+
visit(sourceFile);
|
|
261
|
+
return found;
|
|
262
|
+
}
|
|
248
263
|
function updateConstructor(sourceText) {
|
|
249
264
|
const constructorRegex = /constructor\s*\(([^)]*)\)\s*{([^}]*)}/;
|
|
250
265
|
const match = sourceText.match(constructorRegex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-appshell/schematics/azure-login/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-appshell/schematics/azure-login/index.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|