@skyux/pages 8.7.2 → 9.0.0-alpha.1

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.
Files changed (73) hide show
  1. package/documentation.json +150 -150
  2. package/{esm2020 → esm2022}/lib/modules/action-hub/action-hub-buttons.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/modules/action-hub/action-hub-content.component.mjs +4 -4
  4. package/esm2022/lib/modules/action-hub/action-hub-recent-links-resolve.pipe.mjs +100 -0
  5. package/{esm2020 → esm2022}/lib/modules/action-hub/action-hub-related-links-sort.pipe.mjs +4 -4
  6. package/esm2022/lib/modules/action-hub/action-hub.component.mjs +68 -0
  7. package/{esm2020 → esm2022}/lib/modules/action-hub/action-hub.module.mjs +31 -31
  8. package/{esm2020 → esm2022}/lib/modules/link-as/link-as.module.mjs +5 -5
  9. package/{esm2020 → esm2022}/lib/modules/link-as/link-as.pipe.mjs +4 -4
  10. package/esm2022/lib/modules/link-list/link-list.component.mjs +30 -0
  11. package/{esm2020 → esm2022}/lib/modules/link-list/link-list.module.mjs +17 -17
  12. package/esm2022/lib/modules/modal-link-list/modal-link-list.component.mjs +39 -0
  13. package/{esm2020 → esm2022}/lib/modules/modal-link-list/modal-link-list.module.mjs +15 -15
  14. package/esm2022/lib/modules/needs-attention/needs-attention.component.mjs +36 -0
  15. package/{esm2020 → esm2022}/lib/modules/needs-attention/needs-attention.module.mjs +25 -25
  16. package/{esm2020 → esm2022}/lib/modules/page/page-content.component.mjs +4 -4
  17. package/esm2022/lib/modules/page/page-theme-adapter.service.mjs +40 -0
  18. package/esm2022/lib/modules/page/page.component.mjs +76 -0
  19. package/{esm2020 → esm2022}/lib/modules/page/page.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/modules/page-header/page-header-actions.component.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/modules/page-header/page-header-alerts.component.mjs +4 -4
  22. package/esm2022/lib/modules/page-header/page-header-avatar.component.mjs +33 -0
  23. package/{esm2020 → esm2022}/lib/modules/page-header/page-header-details.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/modules/page-header/page-header.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/modules/page-header/page-header.module.mjs +23 -23
  26. package/esm2022/lib/modules/shared/sky-pages-resources.module.mjs +53 -0
  27. package/esm2022/testing/page/page-harness.mjs +44 -0
  28. package/esm2022/testing/page-header/page-header-harness.mjs +37 -0
  29. package/{fesm2020 → fesm2022}/skyux-pages-testing.mjs +12 -18
  30. package/{fesm2020 → fesm2022}/skyux-pages-testing.mjs.map +1 -1
  31. package/fesm2022/skyux-pages.mjs +849 -0
  32. package/{fesm2020 → fesm2022}/skyux-pages.mjs.map +1 -1
  33. package/lib/modules/action-hub/action-hub.component.d.ts +1 -1
  34. package/lib/modules/link-list/link-list.component.d.ts +1 -1
  35. package/lib/modules/modal-link-list/modal-link-list.component.d.ts +1 -1
  36. package/lib/modules/needs-attention/needs-attention.component.d.ts +1 -1
  37. package/lib/modules/page/page.component.d.ts +1 -1
  38. package/lib/modules/page-header/page-header.component.d.ts +1 -1
  39. package/package.json +19 -27
  40. package/esm2020/lib/modules/action-hub/action-hub-recent-links-resolve.pipe.mjs +0 -101
  41. package/esm2020/lib/modules/action-hub/action-hub.component.mjs +0 -71
  42. package/esm2020/lib/modules/link-list/link-list.component.mjs +0 -33
  43. package/esm2020/lib/modules/modal-link-list/modal-link-list.component.mjs +0 -42
  44. package/esm2020/lib/modules/needs-attention/needs-attention.component.mjs +0 -41
  45. package/esm2020/lib/modules/page/page-theme-adapter.service.mjs +0 -43
  46. package/esm2020/lib/modules/page/page.component.mjs +0 -76
  47. package/esm2020/lib/modules/page-header/page-header-avatar.component.mjs +0 -36
  48. package/esm2020/lib/modules/shared/sky-pages-resources.module.mjs +0 -53
  49. package/esm2020/testing/page/page-harness.mjs +0 -44
  50. package/esm2020/testing/page-header/page-header-harness.mjs +0 -43
  51. package/fesm2015/skyux-pages-testing.mjs +0 -100
  52. package/fesm2015/skyux-pages-testing.mjs.map +0 -1
  53. package/fesm2015/skyux-pages.mjs +0 -867
  54. package/fesm2015/skyux-pages.mjs.map +0 -1
  55. package/fesm2020/skyux-pages.mjs +0 -863
  56. /package/{esm2020 → esm2022}/index.mjs +0 -0
  57. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/action-hub-needs-attention-click-handler.mjs +0 -0
  58. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/action-hub-needs-attention-input.mjs +0 -0
  59. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/action-hub-needs-attention.mjs +0 -0
  60. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/page-link-interface.mjs +0 -0
  61. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/page-link.mjs +0 -0
  62. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/page-links-input.mjs +0 -0
  63. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/page-modal-link.mjs +0 -0
  64. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/page-modal-links-input.mjs +0 -0
  65. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/recent-link.mjs +0 -0
  66. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/recent-links-input.mjs +0 -0
  67. /package/{esm2020 → esm2022}/lib/modules/action-hub/types/recent-links-resolved.mjs +0 -0
  68. /package/{esm2020 → esm2022}/lib/modules/page/types/page-layout-type.mjs +0 -0
  69. /package/{esm2020 → esm2022}/skyux-pages.mjs +0 -0
  70. /package/{esm2020 → esm2022}/testing/page/page-harness-filters.mjs +0 -0
  71. /package/{esm2020 → esm2022}/testing/page-header/page-header-harness-filters.mjs +0 -0
  72. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  73. /package/{esm2020 → esm2022}/testing/skyux-pages-testing.mjs +0 -0
@@ -0,0 +1,849 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule, DOCUMENT } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Pipe, NgModule, Component, Input, inject, Optional, ChangeDetectionStrategy, Injectable, Inject, HostBinding } from '@angular/core';
5
+ import * as i6 from '@skyux/i18n';
6
+ import { SkyI18nModule, getLibStringForLocale, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
7
+ import * as i4 from '@skyux/indicators';
8
+ import { SkyWaitModule, SkyIconModule } from '@skyux/indicators';
9
+ import * as i3 from '@skyux/layout';
10
+ import { SkyBoxModule, SkyFluidGridModule } from '@skyux/layout';
11
+ import * as i5 from '@skyux/theme';
12
+ import { SkyThemeModule } from '@skyux/theme';
13
+ import * as i2 from '@skyux/router';
14
+ import { SkyAppLinkModule, SkyHrefModule } from '@skyux/router';
15
+ import * as i1$1 from '@skyux/modals';
16
+ import { SkyLogService, SkyTrimModule, SkyDefaultInputProvider, SkyMediaQueryService, SkyMediaBreakpoints, SkyLayoutHostService } from '@skyux/core';
17
+ import { RouterModule } from '@angular/router';
18
+ import { Subject } from 'rxjs';
19
+ import { takeUntil } from 'rxjs/operators';
20
+
21
+ class LinkAsPipe {
22
+ transform(value, linkAs) {
23
+ const permalink = value?.permalink;
24
+ const permalinkUrl = permalink?.url;
25
+ switch (linkAs) {
26
+ case 'button':
27
+ return !!value?.click && !permalink;
28
+ case 'href':
29
+ return permalinkUrl !== undefined && !permalinkUrl.includes('://');
30
+ case 'skyHref':
31
+ return permalinkUrl !== undefined && permalinkUrl.includes('://');
32
+ case 'skyAppLink':
33
+ return !!(permalink && permalinkUrl === undefined && permalink.route);
34
+ default:
35
+ return false;
36
+ }
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkAsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
39
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: LinkAsPipe, name: "linkAs" }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkAsPipe, decorators: [{
42
+ type: Pipe,
43
+ args: [{
44
+ name: 'linkAs',
45
+ }]
46
+ }] });
47
+
48
+ class LinkAsModule {
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkAsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
50
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: LinkAsModule, declarations: [LinkAsPipe], exports: [LinkAsPipe] }); }
51
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkAsModule }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkAsModule, decorators: [{
54
+ type: NgModule,
55
+ args: [{
56
+ declarations: [LinkAsPipe],
57
+ exports: [LinkAsPipe],
58
+ }]
59
+ }] });
60
+
61
+ class SkyLinkListComponent {
62
+ constructor() {
63
+ this.linksArray = [];
64
+ }
65
+ set links(value) {
66
+ this.#_links = value;
67
+ this.linksArray = Array.isArray(value) ? value : [];
68
+ }
69
+ get links() {
70
+ return this.#_links;
71
+ }
72
+ #_links;
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyLinkListComponent, selector: "sky-link-list", inputs: { links: "links", title: "title" }, ngImport: i0, template: "<sky-wait [isWaiting]=\"links === 'loading'\"></sky-wait>\n<ng-container\n *ngIf=\"links === 'loading'; then loadingTemplateRef; else linksTemplateRef\"\n></ng-container>\n\n<ng-template #headingTemplateRef>\n <h2 class=\"sky-font-heading-4\">\n {{ title }}\n </h2>\n</ng-template>\n<ng-template #loadingTemplateRef>\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n</ng-template>\n<ng-template #linksTemplateRef>\n <ng-container *ngIf=\"linksArray.length > 0\">\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n <ul class=\"sky-link-list\">\n <li *ngFor=\"let link of linksArray\">\n <a *ngIf=\"link | linkAs : 'skyHref'\" [skyHref]=\"link.permalink.url\">\n {{ link.label }}\n </a>\n <a *ngIf=\"link | linkAs : 'href'\" [href]=\"link.permalink.url\">\n {{ link.label }}\n </a>\n <a\n *ngIf=\"link.permalink.route\"\n [skyAppLink]=\"link.permalink.route.commands\"\n [queryParams]=\"link.permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"\n link.permalink.route.extras?.queryParamsHandling\n \"\n [fragment]=\"link.permalink.route.extras?.fragment\"\n [preserveFragment]=\"link.permalink.route.extras?.preserveFragment\"\n [skipLocationChange]=\"link.permalink.route.extras?.skipLocationChange\"\n [replaceUrl]=\"link.permalink.route.extras?.replaceUrl\"\n [state]=\"link.permalink.route.extras?.state\"\n >\n {{ link.label }}\n </a>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n", styles: ["ul.sky-link-list{list-style:none;margin:0 0 var(--sky-margin-stacked-xl) 0;padding-left:0}h2,li{margin:0 0 var(--sky-margin-stacked-sm) 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.λ3, selector: "[skyAppLink]", inputs: ["skyAppLink"] }, { kind: "directive", type: i2.λ1, selector: "[skyHref]", inputs: ["skyHref", "skyHrefElse"], outputs: ["skyHrefChange"] }, { kind: "component", type: i4.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }, { kind: "pipe", type: LinkAsPipe, name: "linkAs" }] }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListComponent, decorators: [{
77
+ type: Component,
78
+ args: [{ selector: 'sky-link-list', template: "<sky-wait [isWaiting]=\"links === 'loading'\"></sky-wait>\n<ng-container\n *ngIf=\"links === 'loading'; then loadingTemplateRef; else linksTemplateRef\"\n></ng-container>\n\n<ng-template #headingTemplateRef>\n <h2 class=\"sky-font-heading-4\">\n {{ title }}\n </h2>\n</ng-template>\n<ng-template #loadingTemplateRef>\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n</ng-template>\n<ng-template #linksTemplateRef>\n <ng-container *ngIf=\"linksArray.length > 0\">\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n <ul class=\"sky-link-list\">\n <li *ngFor=\"let link of linksArray\">\n <a *ngIf=\"link | linkAs : 'skyHref'\" [skyHref]=\"link.permalink.url\">\n {{ link.label }}\n </a>\n <a *ngIf=\"link | linkAs : 'href'\" [href]=\"link.permalink.url\">\n {{ link.label }}\n </a>\n <a\n *ngIf=\"link.permalink.route\"\n [skyAppLink]=\"link.permalink.route.commands\"\n [queryParams]=\"link.permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"\n link.permalink.route.extras?.queryParamsHandling\n \"\n [fragment]=\"link.permalink.route.extras?.fragment\"\n [preserveFragment]=\"link.permalink.route.extras?.preserveFragment\"\n [skipLocationChange]=\"link.permalink.route.extras?.skipLocationChange\"\n [replaceUrl]=\"link.permalink.route.extras?.replaceUrl\"\n [state]=\"link.permalink.route.extras?.state\"\n >\n {{ link.label }}\n </a>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n", styles: ["ul.sky-link-list{list-style:none;margin:0 0 var(--sky-margin-stacked-xl) 0;padding-left:0}h2,li{margin:0 0 var(--sky-margin-stacked-sm) 0}\n"] }]
79
+ }], propDecorators: { links: [{
80
+ type: Input
81
+ }], title: [{
82
+ type: Input
83
+ }] } });
84
+
85
+ class SkyLinkListModule {
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
87
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListModule, declarations: [SkyLinkListComponent], imports: [CommonModule,
88
+ SkyAppLinkModule,
89
+ SkyHrefModule,
90
+ SkyI18nModule,
91
+ SkyThemeModule,
92
+ SkyWaitModule,
93
+ LinkAsModule], exports: [SkyLinkListComponent] }); }
94
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListModule, imports: [CommonModule,
95
+ SkyAppLinkModule,
96
+ SkyHrefModule,
97
+ SkyI18nModule,
98
+ SkyThemeModule,
99
+ SkyWaitModule,
100
+ LinkAsModule] }); }
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLinkListModule, decorators: [{
103
+ type: NgModule,
104
+ args: [{
105
+ declarations: [SkyLinkListComponent],
106
+ exports: [SkyLinkListComponent],
107
+ imports: [
108
+ CommonModule,
109
+ SkyAppLinkModule,
110
+ SkyHrefModule,
111
+ SkyI18nModule,
112
+ SkyThemeModule,
113
+ SkyWaitModule,
114
+ LinkAsModule,
115
+ ],
116
+ }]
117
+ }] });
118
+
119
+ class SkyModalLinkListComponent {
120
+ set links(value) {
121
+ this.#_links = value;
122
+ this.linksArray = Array.isArray(value) ? value : [];
123
+ }
124
+ get links() {
125
+ return this.#_links;
126
+ }
127
+ #_links;
128
+ #modalService;
129
+ constructor(modalService) {
130
+ this.linksArray = [];
131
+ this.#modalService = modalService;
132
+ }
133
+ openModal(link) {
134
+ const modal = link.modal;
135
+ if (modal) {
136
+ this.#modalService.open(modal.component, modal.config);
137
+ }
138
+ }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListComponent, deps: [{ token: i1$1.SkyModalService }], target: i0.ɵɵFactoryTarget.Component }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyModalLinkListComponent, selector: "sky-modal-link-list", inputs: { links: "links", title: "title" }, ngImport: i0, template: "<sky-wait [isWaiting]=\"links === 'loading'\"></sky-wait>\n<ng-container\n *ngIf=\"links === 'loading'; then loadingTemplateRef; else linksTemplateRef\"\n></ng-container>\n\n<ng-template #headingTemplateRef>\n <h2 class=\"sky-font-heading-4\">\n {{ title }}\n </h2>\n</ng-template>\n<ng-template #loadingTemplateRef>\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n</ng-template>\n<ng-template #linksTemplateRef>\n <ng-container *ngIf=\"linksArray.length > 0\">\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n <ul class=\"sky-link-list\">\n <li *ngFor=\"let link of linksArray\">\n <a *ngIf=\"link | linkAs : 'skyHref'\" [skyHref]=\"link.permalink?.url\">\n {{ link.label }}\n </a>\n <a *ngIf=\"link | linkAs : 'href'\" [href]=\"link.permalink?.url\">\n {{ link.label }}\n </a>\n <a\n *ngIf=\"link.permalink && link.permalink.route\"\n [skyAppLink]=\"link.permalink.route.commands\"\n [queryParams]=\"link.permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"\n link.permalink.route.extras?.queryParamsHandling\n \"\n [fragment]=\"link.permalink.route.extras?.fragment\"\n [preserveFragment]=\"link.permalink.route.extras?.preserveFragment\"\n [skipLocationChange]=\"link.permalink.route.extras?.skipLocationChange\"\n [replaceUrl]=\"link.permalink.route.extras?.replaceUrl\"\n [state]=\"link.permalink.route.extras?.state\"\n >\n {{ link.label }}\n </a>\n <button\n *ngIf=\"link.modal\"\n (click)=\"openModal(link)\"\n class=\"sky-btn sky-btn-link-inline\"\n type=\"button\"\n >\n {{ link.label }}\n </button>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n", styles: ["ul.sky-link-list{list-style:none;margin:0 0 var(--sky-margin-stacked-xl) 0;padding-left:0}h2,li{margin:0 0 var(--sky-margin-stacked-sm) 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.λ3, selector: "[skyAppLink]", inputs: ["skyAppLink"] }, { kind: "directive", type: i2.λ1, selector: "[skyHref]", inputs: ["skyHref", "skyHrefElse"], outputs: ["skyHrefChange"] }, { kind: "component", type: i4.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }, { kind: "pipe", type: LinkAsPipe, name: "linkAs" }] }); }
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListComponent, decorators: [{
143
+ type: Component,
144
+ args: [{ selector: 'sky-modal-link-list', template: "<sky-wait [isWaiting]=\"links === 'loading'\"></sky-wait>\n<ng-container\n *ngIf=\"links === 'loading'; then loadingTemplateRef; else linksTemplateRef\"\n></ng-container>\n\n<ng-template #headingTemplateRef>\n <h2 class=\"sky-font-heading-4\">\n {{ title }}\n </h2>\n</ng-template>\n<ng-template #loadingTemplateRef>\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n</ng-template>\n<ng-template #linksTemplateRef>\n <ng-container *ngIf=\"linksArray.length > 0\">\n <ng-container [ngTemplateOutlet]=\"headingTemplateRef\"></ng-container>\n <ul class=\"sky-link-list\">\n <li *ngFor=\"let link of linksArray\">\n <a *ngIf=\"link | linkAs : 'skyHref'\" [skyHref]=\"link.permalink?.url\">\n {{ link.label }}\n </a>\n <a *ngIf=\"link | linkAs : 'href'\" [href]=\"link.permalink?.url\">\n {{ link.label }}\n </a>\n <a\n *ngIf=\"link.permalink && link.permalink.route\"\n [skyAppLink]=\"link.permalink.route.commands\"\n [queryParams]=\"link.permalink.route.extras?.queryParams\"\n [queryParamsHandling]=\"\n link.permalink.route.extras?.queryParamsHandling\n \"\n [fragment]=\"link.permalink.route.extras?.fragment\"\n [preserveFragment]=\"link.permalink.route.extras?.preserveFragment\"\n [skipLocationChange]=\"link.permalink.route.extras?.skipLocationChange\"\n [replaceUrl]=\"link.permalink.route.extras?.replaceUrl\"\n [state]=\"link.permalink.route.extras?.state\"\n >\n {{ link.label }}\n </a>\n <button\n *ngIf=\"link.modal\"\n (click)=\"openModal(link)\"\n class=\"sky-btn sky-btn-link-inline\"\n type=\"button\"\n >\n {{ link.label }}\n </button>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n", styles: ["ul.sky-link-list{list-style:none;margin:0 0 var(--sky-margin-stacked-xl) 0;padding-left:0}h2,li{margin:0 0 var(--sky-margin-stacked-sm) 0}\n"] }]
145
+ }], ctorParameters: function () { return [{ type: i1$1.SkyModalService }]; }, propDecorators: { links: [{
146
+ type: Input
147
+ }], title: [{
148
+ type: Input
149
+ }] } });
150
+
151
+ class SkyModalLinkListModule {
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
153
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListModule, declarations: [SkyModalLinkListComponent], imports: [CommonModule,
154
+ SkyAppLinkModule,
155
+ SkyHrefModule,
156
+ SkyI18nModule,
157
+ SkyWaitModule,
158
+ LinkAsModule], exports: [SkyModalLinkListComponent] }); }
159
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListModule, imports: [CommonModule,
160
+ SkyAppLinkModule,
161
+ SkyHrefModule,
162
+ SkyI18nModule,
163
+ SkyWaitModule,
164
+ LinkAsModule] }); }
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyModalLinkListModule, decorators: [{
167
+ type: NgModule,
168
+ args: [{
169
+ declarations: [SkyModalLinkListComponent],
170
+ exports: [SkyModalLinkListComponent],
171
+ imports: [
172
+ CommonModule,
173
+ SkyAppLinkModule,
174
+ SkyHrefModule,
175
+ SkyI18nModule,
176
+ SkyWaitModule,
177
+ LinkAsModule,
178
+ ],
179
+ }]
180
+ }] });
181
+
182
+ /**
183
+ * NOTICE: DO NOT MODIFY THIS FILE!
184
+ * The contents of this file were automatically generated by
185
+ * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-pages' schematic.
186
+ * To update this file, simply rerun the command.
187
+ */
188
+ const RESOURCES = {
189
+ 'EN-US': {
190
+ sky_action_hub_related_links: { message: 'Related links' },
191
+ sky_action_hub_recent_links: { message: 'Recently accessed' },
192
+ sky_action_hub_settings_links: { message: 'Settings' },
193
+ sky_action_hub_needs_attention: { message: 'Needs attention' },
194
+ sky_action_hub_needs_attention_empty: {
195
+ message: 'No issues currently need attention',
196
+ },
197
+ },
198
+ };
199
+ class SkyPagesResourcesProvider {
200
+ getString(localeInfo, name) {
201
+ return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
202
+ }
203
+ }
204
+ /**
205
+ * Import into any component library module that needs to use resource strings.
206
+ */
207
+ class SkyPagesResourcesModule {
208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPagesResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
209
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyPagesResourcesModule, exports: [SkyI18nModule] }); }
210
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPagesResourcesModule, providers: [
211
+ {
212
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
213
+ useClass: SkyPagesResourcesProvider,
214
+ multi: true,
215
+ },
216
+ ], imports: [SkyI18nModule] }); }
217
+ }
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPagesResourcesModule, decorators: [{
219
+ type: NgModule,
220
+ args: [{
221
+ exports: [SkyI18nModule],
222
+ providers: [
223
+ {
224
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
225
+ useClass: SkyPagesResourcesProvider,
226
+ multi: true,
227
+ },
228
+ ],
229
+ }]
230
+ }] });
231
+
232
+ class SkyNeedsAttentionComponent {
233
+ set items(value) {
234
+ this.#items = value;
235
+ if (value?.some((c) => c.message)) {
236
+ this.#logService.deprecated(`SkyActionHubNeedsAttention.message`, {
237
+ deprecationMajorVersion: 7,
238
+ replacementRecommendation: 'Use `title` instead.',
239
+ moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/action-hub?docs-active-tab=development#interface-skyactionhubneedsattention',
240
+ });
241
+ }
242
+ }
243
+ get items() {
244
+ return this.#items;
245
+ }
246
+ #items;
247
+ #logService = inject(SkyLogService);
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyNeedsAttentionComponent, selector: "sky-needs-attention", inputs: { items: "items" }, ngImport: i0, template: "<ng-template #itemsTemplate>\n <ul>\n <li\n *ngFor=\"let item of items; let isLast = last\"\n class=\"sky-needs-attention-item-wrapper sky-font-emphasized\"\n [ngClass]=\"{\n 'sky-border-bottom-row': !isLast\n }\"\n >\n <a\n *ngIf=\"\n (item | linkAs : 'skyAppLink') &&\n item.permalink?.route as permalinkRoute\n \"\n [skyAppLink]=\"permalinkRoute.commands\"\n [queryParams]=\"permalinkRoute.extras?.queryParams\"\n [queryParamsHandling]=\"permalinkRoute.extras?.queryParamsHandling\"\n [fragment]=\"permalinkRoute.extras?.fragment\"\n [preserveFragment]=\"permalinkRoute.extras?.preserveFragment\"\n [skipLocationChange]=\"permalinkRoute.extras?.skipLocationChange\"\n [replaceUrl]=\"permalinkRoute.extras?.replaceUrl\"\n [state]=\"permalinkRoute.extras?.state\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n <ng-container *ngIf=\"item.permalink as permalink\">\n <a\n *ngIf=\"item | linkAs : 'skyHref'\"\n [skyHref]=\"permalink.url\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n <a\n *ngIf=\"item | linkAs : 'href'\"\n [href]=\"permalink.url\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n </ng-container>\n <button\n *ngIf=\"item | linkAs : 'button'\"\n class=\"sky-needs-attention-item sky-btn sky-btn-link-inline\"\n type=\"button\"\n (click)=\"item?.click({item})\"\n >\n {{ item.title }} {{ item.message }}\n </button>\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-needs-attention-item-icon\"\n icon=\"caret-right\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-needs-attention-item-icon\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </li>\n </ul>\n</ng-template>\n\n<sky-box>\n <sky-box-header>\n <h2 class=\"sky-font-heading-2\">\n {{ 'sky_action_hub_needs_attention' | skyLibResources }}\n </h2>\n </sky-box-header>\n <sky-box-content>\n <ng-container *ngIf=\"items?.length === 0; else itemsTemplate\">{{\n 'sky_action_hub_needs_attention_empty' | skyLibResources\n }}</ng-container>\n </sky-box-content>\n</sky-box>\n", styles: [":host{display:block;margin-bottom:var(--sky-margin-stacked-xl)}h2{margin:0}ul{list-style:none;padding:0;margin:0}ul li{margin:0}.sky-needs-attention-item-wrapper{position:relative;display:grid;grid-template-columns:5fr 1fr;grid-template-areas:\"action icon\"}.sky-needs-attention-item-wrapper:not(:first-child){padding-top:var(--sky-margin-stacked-lg)}.sky-needs-attention-item-wrapper:not(:last-child){padding-bottom:var(--sky-margin-stacked-lg)}.sky-needs-attention-item{grid-area:action;text-align:left;width:100%;white-space:normal}.sky-needs-attention-item-icon{grid-area:icon;text-align:right;color:#686c73}.sky-needs-attention-item:focus-visible{outline:none}.sky-needs-attention-item:focus-visible:not(:active){border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d}.sky-needs-attention-item:before{content:\" \";position:absolute;inset:0;cursor:pointer}button.sky-needs-attention-item.sky-border-bottom-row{border-bottom:1px dotted #cdcfd2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.λ3, selector: "[skyAppLink]", inputs: ["skyAppLink"] }, { kind: "component", type: i3.λ41, selector: "sky-box", inputs: ["ariaLabel", "ariaLabelledBy", "ariaRole"] }, { kind: "component", type: i3.λ42, selector: "sky-box-header" }, { kind: "component", type: i3.λ43, selector: "sky-box-content" }, { kind: "directive", type: i2.λ1, selector: "[skyHref]", inputs: ["skyHref", "skyHrefElse"], outputs: ["skyHrefChange"] }, { kind: "component", type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i5.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: LinkAsPipe, name: "linkAs" }] }); }
250
+ }
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionComponent, decorators: [{
252
+ type: Component,
253
+ args: [{ selector: 'sky-needs-attention', template: "<ng-template #itemsTemplate>\n <ul>\n <li\n *ngFor=\"let item of items; let isLast = last\"\n class=\"sky-needs-attention-item-wrapper sky-font-emphasized\"\n [ngClass]=\"{\n 'sky-border-bottom-row': !isLast\n }\"\n >\n <a\n *ngIf=\"\n (item | linkAs : 'skyAppLink') &&\n item.permalink?.route as permalinkRoute\n \"\n [skyAppLink]=\"permalinkRoute.commands\"\n [queryParams]=\"permalinkRoute.extras?.queryParams\"\n [queryParamsHandling]=\"permalinkRoute.extras?.queryParamsHandling\"\n [fragment]=\"permalinkRoute.extras?.fragment\"\n [preserveFragment]=\"permalinkRoute.extras?.preserveFragment\"\n [skipLocationChange]=\"permalinkRoute.extras?.skipLocationChange\"\n [replaceUrl]=\"permalinkRoute.extras?.replaceUrl\"\n [state]=\"permalinkRoute.extras?.state\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n <ng-container *ngIf=\"item.permalink as permalink\">\n <a\n *ngIf=\"item | linkAs : 'skyHref'\"\n [skyHref]=\"permalink.url\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n <a\n *ngIf=\"item | linkAs : 'href'\"\n [href]=\"permalink.url\"\n class=\"sky-needs-attention-item\"\n >{{ item.title }} {{ item.message }}</a\n >\n </ng-container>\n <button\n *ngIf=\"item | linkAs : 'button'\"\n class=\"sky-needs-attention-item sky-btn sky-btn-link-inline\"\n type=\"button\"\n (click)=\"item?.click({item})\"\n >\n {{ item.title }} {{ item.message }}\n </button>\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-needs-attention-item-icon\"\n icon=\"caret-right\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-needs-attention-item-icon\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </li>\n </ul>\n</ng-template>\n\n<sky-box>\n <sky-box-header>\n <h2 class=\"sky-font-heading-2\">\n {{ 'sky_action_hub_needs_attention' | skyLibResources }}\n </h2>\n </sky-box-header>\n <sky-box-content>\n <ng-container *ngIf=\"items?.length === 0; else itemsTemplate\">{{\n 'sky_action_hub_needs_attention_empty' | skyLibResources\n }}</ng-container>\n </sky-box-content>\n</sky-box>\n", styles: [":host{display:block;margin-bottom:var(--sky-margin-stacked-xl)}h2{margin:0}ul{list-style:none;padding:0;margin:0}ul li{margin:0}.sky-needs-attention-item-wrapper{position:relative;display:grid;grid-template-columns:5fr 1fr;grid-template-areas:\"action icon\"}.sky-needs-attention-item-wrapper:not(:first-child){padding-top:var(--sky-margin-stacked-lg)}.sky-needs-attention-item-wrapper:not(:last-child){padding-bottom:var(--sky-margin-stacked-lg)}.sky-needs-attention-item{grid-area:action;text-align:left;width:100%;white-space:normal}.sky-needs-attention-item-icon{grid-area:icon;text-align:right;color:#686c73}.sky-needs-attention-item:focus-visible{outline:none}.sky-needs-attention-item:focus-visible:not(:active){border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d}.sky-needs-attention-item:before{content:\" \";position:absolute;inset:0;cursor:pointer}button.sky-needs-attention-item.sky-border-bottom-row{border-bottom:1px dotted #cdcfd2}\n"] }]
254
+ }], propDecorators: { items: [{
255
+ type: Input
256
+ }] } });
257
+
258
+ class SkyNeedsAttentionModule {
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
260
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionModule, declarations: [SkyNeedsAttentionComponent], imports: [CommonModule,
261
+ SkyAppLinkModule,
262
+ SkyBoxModule,
263
+ SkyHrefModule,
264
+ SkyI18nModule,
265
+ SkyIconModule,
266
+ SkyPagesResourcesModule,
267
+ SkyThemeModule,
268
+ SkyTrimModule,
269
+ SkyWaitModule,
270
+ LinkAsModule], exports: [SkyNeedsAttentionComponent] }); }
271
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionModule, imports: [CommonModule,
272
+ SkyAppLinkModule,
273
+ SkyBoxModule,
274
+ SkyHrefModule,
275
+ SkyI18nModule,
276
+ SkyIconModule,
277
+ SkyPagesResourcesModule,
278
+ SkyThemeModule,
279
+ SkyTrimModule,
280
+ SkyWaitModule,
281
+ LinkAsModule] }); }
282
+ }
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNeedsAttentionModule, decorators: [{
284
+ type: NgModule,
285
+ args: [{
286
+ declarations: [SkyNeedsAttentionComponent],
287
+ exports: [SkyNeedsAttentionComponent],
288
+ imports: [
289
+ CommonModule,
290
+ SkyAppLinkModule,
291
+ SkyBoxModule,
292
+ SkyHrefModule,
293
+ SkyI18nModule,
294
+ SkyIconModule,
295
+ SkyPagesResourcesModule,
296
+ SkyThemeModule,
297
+ SkyTrimModule,
298
+ SkyWaitModule,
299
+ LinkAsModule,
300
+ ],
301
+ }]
302
+ }] });
303
+
304
+ /**
305
+ * Displays buttons within the page header for page actions and applies spacing between buttons.
306
+ * Appears below the page header details.
307
+ */
308
+ class SkyPageHeaderActionsComponent {
309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageHeaderActionsComponent, selector: "sky-page-header-actions", ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-top:var(--sky-margin-stacked-xl)}:host:not(:empty) ::ng-deep .sky-btn+.sky-btn{margin-left:var(--sky-margin-inline-sm)}\n"] }); }
311
+ }
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderActionsComponent, decorators: [{
313
+ type: Component,
314
+ args: [{ selector: 'sky-page-header-actions', template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-top:var(--sky-margin-stacked-xl)}:host:not(:empty) ::ng-deep .sky-btn+.sky-btn{margin-left:var(--sky-margin-inline-sm)}\n"] }]
315
+ }] });
316
+
317
+ /**
318
+ * Displays alerts within the page header and applies spacing between alerts. Appears above the page title.
319
+ */
320
+ class SkyPageHeaderAlertsComponent {
321
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderAlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
322
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageHeaderAlertsComponent, selector: "sky-page-header-alerts", ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-bottom:var(--sky-margin-stacked-lg)}:host:not(:empty) ::ng-deep sky-alert+sky-alert{margin-top:var(--sky-margin-stacked-lg)}\n"] }); }
323
+ }
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderAlertsComponent, decorators: [{
325
+ type: Component,
326
+ args: [{ selector: 'sky-page-header-alerts', template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-bottom:var(--sky-margin-stacked-lg)}:host:not(:empty) ::ng-deep sky-alert+sky-alert{margin-top:var(--sky-margin-stacked-lg)}\n"] }]
327
+ }] });
328
+
329
+ /**
330
+ * Displays an avatar within the page header to the left of the page title.
331
+ * If no size is specified for the avatar component it will display at size
332
+ * small on xs breakpoints and size large on small and above breakpoints.
333
+ */
334
+ class SkyPageHeaderAvatarComponent {
335
+ #defaultInputProvider = inject(SkyDefaultInputProvider);
336
+ #mediaQueryService = inject(SkyMediaQueryService);
337
+ #mediaQuerySubscription;
338
+ constructor() {
339
+ this.#mediaQuerySubscription = this.#mediaQueryService.subscribe((args) => {
340
+ if (args === SkyMediaBreakpoints.xs) {
341
+ this.#defaultInputProvider.setValue('avatar', 'size', 'small');
342
+ }
343
+ else {
344
+ this.#defaultInputProvider.setValue('avatar', 'size', 'large');
345
+ }
346
+ });
347
+ }
348
+ ngOnDestroy() {
349
+ this.#mediaQuerySubscription.unsubscribe();
350
+ }
351
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
352
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageHeaderAvatarComponent, selector: "sky-page-header-avatar", providers: [SkyDefaultInputProvider], ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){padding-top:5px;margin-right:var(--sky-margin-inline-sm)}@media (min-width: 768px){:host:not(:empty){margin-right:var(--sky-margin-inline-lg)}}:host-context(.sky-responsive-container-sm):not(:empty),:host-context(.sky-responsive-container-md):not(:empty),:host-context(.sky-responsive-container-lg):not(:empty){margin-right:var(--sky-margin-inline-lg)}\n"] }); }
353
+ }
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderAvatarComponent, decorators: [{
355
+ type: Component,
356
+ args: [{ selector: 'sky-page-header-avatar', providers: [SkyDefaultInputProvider], template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){padding-top:5px;margin-right:var(--sky-margin-inline-sm)}@media (min-width: 768px){:host:not(:empty){margin-right:var(--sky-margin-inline-lg)}}:host-context(.sky-responsive-container-sm):not(:empty),:host-context(.sky-responsive-container-md):not(:empty),:host-context(.sky-responsive-container-lg):not(:empty){margin-right:var(--sky-margin-inline-lg)}\n"] }]
357
+ }], ctorParameters: function () { return []; } });
358
+
359
+ /**
360
+ * Displays additional information in the page header, like record details.
361
+ * Appears below the title and above the page actions.
362
+ */
363
+ class SkyPageHeaderDetailsComponent {
364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
365
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageHeaderDetailsComponent, selector: "sky-page-header-details", ngImport: i0, template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-top:var(--sky-margin-stacked-sm)}\n"] }); }
366
+ }
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderDetailsComponent, decorators: [{
368
+ type: Component,
369
+ args: [{ selector: 'sky-page-header-details', template: "<ng-content />\n", styles: [":host{display:block}:host:not(:empty){margin-top:var(--sky-margin-stacked-sm)}\n"] }]
370
+ }] });
371
+
372
+ let parentLink;
373
+ /**
374
+ * Displays page heading's contents using spacing that corresponds to the parent page's layout
375
+ */
376
+ class SkyPageHeaderComponent {
377
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
378
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageHeaderComponent, selector: "sky-page-header", inputs: { parentLink: "parentLink", pageTitle: "pageTitle" }, ngImport: i0, template: "<div class=\"sky-page-header\">\n <ng-content select=\"sky-page-header-alerts\"></ng-content>\n <div class=\"sky-page-header-info\">\n <ng-content select=\"sky-page-header-avatar\"></ng-content>\n <div>\n <h1 class=\"sky-page-header-text\">\n <span *ngIf=\"parentLink\" class=\"sky-page-header-parent-link-wrapper\">\n <a\n *ngIf=\"parentLink.permalink?.url\"\n [skyHref]=\"parentLink.permalink.url\"\n class=\"sky-font-heading-1 sky-page-header-parent-link\"\n >{{ parentLink.label }}</a\n >\n <a\n *ngIf=\"parentLink.permalink?.route as permalinkRoute\"\n [skyAppLink]=\"permalinkRoute.commands\"\n [queryParams]=\"permalinkRoute.extras?.queryParams\"\n [queryParamsHandling]=\"permalinkRoute.extras?.queryParamsHandling\"\n [fragment]=\"permalinkRoute.extras?.fragment\"\n [preserveFragment]=\"permalinkRoute.extras?.preserveFragment\"\n [skipLocationChange]=\"permalinkRoute.extras?.skipLocationChange\"\n [replaceUrl]=\"permalinkRoute.extras?.replaceUrl\"\n [state]=\"permalinkRoute.extras?.state\"\n class=\"sky-font-heading-1 sky-page-header-parent-link\"\n >{{ parentLink.label }}</a\n >\n <span class=\"sky-page-header-chevron\">\n <sky-icon icon=\"chevron-right\" iconType=\"skyux\" />\n </span>\n </span>\n <wbr *ngIf=\"parentLink\" />\n <span class=\"sky-page-header-page-title sky-font-heading-1\">\n {{ pageTitle }}\n </span>\n </h1>\n <div class=\"sky-page-header-content\">\n <ng-content select=\"sky-page-header-details\"></ng-content>\n <ng-content select=\"sky-page-header-actions\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{flex-grow:var(--sky-layout-host-header-flex-grow, 0);display:block}.sky-page-header{margin:var(--sky-layout-host-header-spacing, var(--sky-compat-page-header-margin-top-and-bottom, 0) 0)}.sky-page-header-info{display:flex}.sky-page-header-text{margin:0}.sky-page-header-page-title,.sky-page-header-parent-link-wrapper{display:inline-block;block-size:-moz-fit-content;block-size:fit-content}.sky-page-header-parent-link{color:#0974a1}.sky-page-header-chevron{font-size:16px;margin:0 10px}.sky-page-header-chevron,.sky-page-header-parent-link,.sky-page-header-page-title{vertical-align:middle}.sky-page-header-content:empty{display:none}:host-context(.sky-theme-modern) .sky-page-header-parent-link{color:#1870b8}.sky-theme-modern .sky-page-header-parent-link{color:#1870b8}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-page-header-parent-link{color:#009cd1}.sky-theme-modern.sky-theme-mode-dark .sky-page-header-parent-link{color:#009cd1}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.λ3, selector: "[skyAppLink]", inputs: ["skyAppLink"] }, { kind: "component", type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i2.λ1, selector: "[skyHref]", inputs: ["skyHref", "skyHrefElse"], outputs: ["skyHrefChange"] }] }); }
379
+ }
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderComponent, decorators: [{
381
+ type: Component,
382
+ args: [{ selector: 'sky-page-header', template: "<div class=\"sky-page-header\">\n <ng-content select=\"sky-page-header-alerts\"></ng-content>\n <div class=\"sky-page-header-info\">\n <ng-content select=\"sky-page-header-avatar\"></ng-content>\n <div>\n <h1 class=\"sky-page-header-text\">\n <span *ngIf=\"parentLink\" class=\"sky-page-header-parent-link-wrapper\">\n <a\n *ngIf=\"parentLink.permalink?.url\"\n [skyHref]=\"parentLink.permalink.url\"\n class=\"sky-font-heading-1 sky-page-header-parent-link\"\n >{{ parentLink.label }}</a\n >\n <a\n *ngIf=\"parentLink.permalink?.route as permalinkRoute\"\n [skyAppLink]=\"permalinkRoute.commands\"\n [queryParams]=\"permalinkRoute.extras?.queryParams\"\n [queryParamsHandling]=\"permalinkRoute.extras?.queryParamsHandling\"\n [fragment]=\"permalinkRoute.extras?.fragment\"\n [preserveFragment]=\"permalinkRoute.extras?.preserveFragment\"\n [skipLocationChange]=\"permalinkRoute.extras?.skipLocationChange\"\n [replaceUrl]=\"permalinkRoute.extras?.replaceUrl\"\n [state]=\"permalinkRoute.extras?.state\"\n class=\"sky-font-heading-1 sky-page-header-parent-link\"\n >{{ parentLink.label }}</a\n >\n <span class=\"sky-page-header-chevron\">\n <sky-icon icon=\"chevron-right\" iconType=\"skyux\" />\n </span>\n </span>\n <wbr *ngIf=\"parentLink\" />\n <span class=\"sky-page-header-page-title sky-font-heading-1\">\n {{ pageTitle }}\n </span>\n </h1>\n <div class=\"sky-page-header-content\">\n <ng-content select=\"sky-page-header-details\"></ng-content>\n <ng-content select=\"sky-page-header-actions\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{flex-grow:var(--sky-layout-host-header-flex-grow, 0);display:block}.sky-page-header{margin:var(--sky-layout-host-header-spacing, var(--sky-compat-page-header-margin-top-and-bottom, 0) 0)}.sky-page-header-info{display:flex}.sky-page-header-text{margin:0}.sky-page-header-page-title,.sky-page-header-parent-link-wrapper{display:inline-block;block-size:-moz-fit-content;block-size:fit-content}.sky-page-header-parent-link{color:#0974a1}.sky-page-header-chevron{font-size:16px;margin:0 10px}.sky-page-header-chevron,.sky-page-header-parent-link,.sky-page-header-page-title{vertical-align:middle}.sky-page-header-content:empty{display:none}:host-context(.sky-theme-modern) .sky-page-header-parent-link{color:#1870b8}.sky-theme-modern .sky-page-header-parent-link{color:#1870b8}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-page-header-parent-link{color:#009cd1}.sky-theme-modern.sky-theme-mode-dark .sky-page-header-parent-link{color:#009cd1}\n"] }]
383
+ }], propDecorators: { parentLink: [{
384
+ type: Input
385
+ }], pageTitle: [{
386
+ type: Input
387
+ }] } });
388
+
389
+ class SkyPageHeaderModule {
390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
391
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderModule, declarations: [SkyPageHeaderActionsComponent,
392
+ SkyPageHeaderAlertsComponent,
393
+ SkyPageHeaderAvatarComponent,
394
+ SkyPageHeaderComponent,
395
+ SkyPageHeaderDetailsComponent], imports: [CommonModule,
396
+ RouterModule,
397
+ SkyAppLinkModule,
398
+ SkyIconModule,
399
+ SkyThemeModule,
400
+ SkyHrefModule], exports: [SkyPageHeaderActionsComponent,
401
+ SkyPageHeaderAlertsComponent,
402
+ SkyPageHeaderAvatarComponent,
403
+ SkyPageHeaderComponent,
404
+ SkyPageHeaderDetailsComponent] }); }
405
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderModule, imports: [CommonModule,
406
+ RouterModule,
407
+ SkyAppLinkModule,
408
+ SkyIconModule,
409
+ SkyThemeModule,
410
+ SkyHrefModule] }); }
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageHeaderModule, decorators: [{
413
+ type: NgModule,
414
+ args: [{
415
+ imports: [
416
+ CommonModule,
417
+ RouterModule,
418
+ SkyAppLinkModule,
419
+ SkyIconModule,
420
+ SkyThemeModule,
421
+ SkyHrefModule,
422
+ ],
423
+ declarations: [
424
+ SkyPageHeaderActionsComponent,
425
+ SkyPageHeaderAlertsComponent,
426
+ SkyPageHeaderAvatarComponent,
427
+ SkyPageHeaderComponent,
428
+ SkyPageHeaderDetailsComponent,
429
+ ],
430
+ exports: [
431
+ SkyPageHeaderActionsComponent,
432
+ SkyPageHeaderAlertsComponent,
433
+ SkyPageHeaderAvatarComponent,
434
+ SkyPageHeaderComponent,
435
+ SkyPageHeaderDetailsComponent,
436
+ ],
437
+ }]
438
+ }] });
439
+
440
+ /**
441
+ * Displays buttons after the page title.
442
+ *
443
+ * Example:
444
+ *
445
+ * ```html
446
+ * <a class="sky-btn sky-btn-default" href="path/to/new">New</a>
447
+ * ```
448
+ */
449
+ class SkyActionHubButtonsComponent {
450
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
451
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyActionHubButtonsComponent, selector: "sky-action-hub-buttons", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block}:host:not(:empty){margin-bottom:var(--sky-margin-stacked-xl)}\n"] }); }
452
+ }
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubButtonsComponent, decorators: [{
454
+ type: Component,
455
+ args: [{ selector: 'sky-action-hub-buttons', template: "<ng-content></ng-content>\n", styles: [":host{display:block}:host:not(:empty){margin-bottom:var(--sky-margin-stacked-xl)}\n"] }]
456
+ }] });
457
+
458
+ /**
459
+ * Displays additional content after the action items.
460
+ */
461
+ class SkyActionHubContentComponent {
462
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
463
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyActionHubContentComponent, selector: "sky-action-hub-content", ngImport: i0, template: "<ng-content></ng-content>\n" }); }
464
+ }
465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubContentComponent, decorators: [{
466
+ type: Component,
467
+ args: [{ selector: 'sky-action-hub-content', template: "<ng-content></ng-content>\n" }]
468
+ }] });
469
+
470
+ const RECENTLY_ACCESSED_LIMIT = 5;
471
+ function getRecentLinksSorted(recentLinks) {
472
+ if (recentLinks === 'loading') {
473
+ return 'loading';
474
+ }
475
+ if (!recentLinks || recentLinks.length === 0) {
476
+ return [];
477
+ }
478
+ return recentLinks
479
+ .slice(0)
480
+ .sort((a, b) => {
481
+ const aTime = a.lastAccessed instanceof Date
482
+ ? a.lastAccessed.toISOString()
483
+ : a.lastAccessed;
484
+ const bTime = b.lastAccessed instanceof Date
485
+ ? b.lastAccessed.toISOString()
486
+ : b.lastAccessed;
487
+ if (aTime === bTime) {
488
+ return 0;
489
+ }
490
+ return aTime > bTime ? -1 : 1;
491
+ })
492
+ .slice(0, RECENTLY_ACCESSED_LIMIT);
493
+ }
494
+ class SkyActionHubRecentLinksResolvePipe {
495
+ #currentRecentLinks;
496
+ #currentRecentLinksResolved = [];
497
+ #recentlyAccessedSub;
498
+ #ngUnsubscribe = new Subject();
499
+ #changeDetector;
500
+ #recentlyAccessedSvc;
501
+ constructor(changeDetector, recentlyAccessedSvc) {
502
+ this.#changeDetector = changeDetector;
503
+ this.#recentlyAccessedSvc = recentlyAccessedSvc;
504
+ }
505
+ transform(recentLinks) {
506
+ if (recentLinks !== this.#currentRecentLinks) {
507
+ if (this.#recentlyAccessedSub) {
508
+ this.#recentlyAccessedSub.unsubscribe();
509
+ }
510
+ this.#currentRecentLinks = recentLinks;
511
+ const getLinksArgs = recentLinks;
512
+ if (getLinksArgs?.requestedRoutes) {
513
+ this.#resolveRequestedRoutes(getLinksArgs);
514
+ }
515
+ else {
516
+ this.#updateRecentLinksResolved(recentLinks);
517
+ }
518
+ }
519
+ return this.#currentRecentLinksResolved;
520
+ }
521
+ ngOnDestroy() {
522
+ this.#ngUnsubscribe.next();
523
+ this.#ngUnsubscribe.complete();
524
+ }
525
+ #resolveRequestedRoutes(args) {
526
+ if (this.#recentlyAccessedSvc) {
527
+ this.#updateRecentLinksResolved('loading');
528
+ this.#recentlyAccessedSub = this.#recentlyAccessedSvc
529
+ .getLinks(args)
530
+ .pipe(takeUntil(this.#ngUnsubscribe))
531
+ .subscribe((result) => {
532
+ this.#recentlyAccessedSub = undefined;
533
+ const recentLinks = result.links.map((item) => ({
534
+ label: item.label,
535
+ lastAccessed: item.lastAccessed,
536
+ permalink: {
537
+ url: item.url,
538
+ },
539
+ }));
540
+ this.#updateRecentLinksResolved(recentLinks);
541
+ });
542
+ }
543
+ else {
544
+ this.#updateRecentLinksResolved([]);
545
+ }
546
+ }
547
+ #updateRecentLinksResolved(recentLinksResolved) {
548
+ this.#currentRecentLinksResolved =
549
+ getRecentLinksSorted(recentLinksResolved);
550
+ this.#changeDetector.markForCheck();
551
+ }
552
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRecentLinksResolvePipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.SkyRecentlyAccessedService, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
553
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRecentLinksResolvePipe, name: "skyActionHubRecentLinksResolve", pure: false }); }
554
+ }
555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRecentLinksResolvePipe, decorators: [{
556
+ type: Pipe,
557
+ args: [{
558
+ name: 'skyActionHubRecentLinksResolve',
559
+ pure: false,
560
+ }]
561
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2.SkyRecentlyAccessedService, decorators: [{
562
+ type: Optional
563
+ }] }]; } });
564
+
565
+ class SkyActionHubRelatedLinksSortPipe {
566
+ transform(relatedLinks) {
567
+ if (relatedLinks === 'loading') {
568
+ return 'loading';
569
+ }
570
+ if (!relatedLinks || relatedLinks.length === 0) {
571
+ return [];
572
+ }
573
+ return relatedLinks.slice(0).sort((a, b) => {
574
+ const aLabel = a.label.trim().toUpperCase();
575
+ const bLabel = b.label.trim().toUpperCase();
576
+ if (aLabel === bLabel) {
577
+ return 0;
578
+ }
579
+ return aLabel < bLabel ? -1 : 1;
580
+ });
581
+ }
582
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRelatedLinksSortPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
583
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRelatedLinksSortPipe, name: "skyActionHubRelatedLinksSort" }); }
584
+ }
585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubRelatedLinksSortPipe, decorators: [{
586
+ type: Pipe,
587
+ args: [{
588
+ name: 'skyActionHubRelatedLinksSort',
589
+ }]
590
+ }] });
591
+
592
+ /**
593
+ * Creates an action hub to direct user attention to important
594
+ * actions and provide quick access to common tasks.
595
+ */
596
+ class SkyActionHubComponent {
597
+ constructor() {
598
+ /**
599
+ * The list of recently accessed links, or `"loading"` to display a wait indicator.
600
+ */
601
+ this.recentLinks = [];
602
+ /**
603
+ * The list of related links, or `"loading"` to display a wait indicator.
604
+ */
605
+ this.relatedLinks = [];
606
+ /**
607
+ * The list of settings with modal parameters, or `"loading"` to display a wait indicator.
608
+ */
609
+ this.settingsLinks = [];
610
+ /**
611
+ * The page title.
612
+ * @default ""
613
+ */
614
+ this.title = '';
615
+ this.needsAttentionArray = [];
616
+ }
617
+ /**
618
+ * The list of actions that users must perform based on business requirements or best practices, or `"loading"` to display a wait indicator.
619
+ */
620
+ set needsAttention(value) {
621
+ this.#_needsAttention = value;
622
+ this.needsAttentionArray = Array.isArray(value) ? value : [];
623
+ }
624
+ get needsAttention() {
625
+ return this.#_needsAttention;
626
+ }
627
+ #_needsAttention;
628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
629
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyActionHubComponent, selector: "sky-action-hub", inputs: { needsAttention: "needsAttention", parentLink: "parentLink", recentLinks: "recentLinks", relatedLinks: "relatedLinks", settingsLinks: "settingsLinks", title: "title" }, ngImport: i0, template: "<sky-fluid-grid [disableMargin]=\"true\">\n <sky-row>\n <sky-column>\n <sky-page-header\n [pageTitle]=\"title\"\n [parentLink]=\"parentLink\"\n ></sky-page-header>\n </sky-column>\n </sky-row>\n <sky-row>\n <sky-column [screenLarge]=\"9\" [screenXSmall]=\"12\">\n <div class=\"sky-margin-stacked-xl\">\n <ng-content select=\"sky-action-hub-buttons\"></ng-content>\n </div>\n\n <div class=\"sky-margin-stacked-xl\">\n <sky-wait [isWaiting]=\"needsAttention === 'loading'\"></sky-wait>\n <sky-needs-attention\n *ngIf=\"needsAttention !== 'loading'\"\n [items]=\"needsAttentionArray\"\n ></sky-needs-attention>\n </div>\n\n <div class=\"sky-margin-stacked-xl\">\n <ng-content select=\"sky-action-hub-content\"></ng-content>\n </div>\n </sky-column>\n <sky-column [screenLarge]=\"3\" [screenXSmall]=\"12\">\n <sky-link-list\n [links]=\"relatedLinks | skyActionHubRelatedLinksSort\"\n [title]=\"'sky_action_hub_related_links' | skyLibResources\"\n ></sky-link-list>\n <sky-link-list\n [links]=\"recentLinks | skyActionHubRecentLinksResolve\"\n [title]=\"'sky_action_hub_recent_links' | skyLibResources\"\n ></sky-link-list>\n <sky-modal-link-list\n [links]=\"settingsLinks\"\n [title]=\"'sky_action_hub_settings_links' | skyLibResources\"\n ></sky-modal-link-list>\n </sky-column>\n </sky-row>\n</sky-fluid-grid>\n", styles: [":host{--sky-compat-page-header-margin-top-and-bottom: 0;display:block;margin:var(--sky-padding-even-xl)}[aria-busy=true]{display:block;min-height:60px;margin-bottom:var(--sky-margin-stacked-xl)}sky-page-header{margin:0 0 var(--sky-margin-stacked-lg) 0}.sky-margin-stacked-xl:empty{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.λ23, selector: "sky-row", inputs: ["reverseColumnOrder"] }, { kind: "component", type: i3.λ24, selector: "sky-column", inputs: ["screenXSmall", "screenSmall", "screenMedium", "screenLarge"] }, { kind: "component", type: i3.λ22, selector: "sky-fluid-grid", inputs: ["disableMargin", "gutterSize"] }, { kind: "component", type: SkyLinkListComponent, selector: "sky-link-list", inputs: ["links", "title"] }, { kind: "component", type: SkyModalLinkListComponent, selector: "sky-modal-link-list", inputs: ["links", "title"] }, { kind: "component", type: SkyNeedsAttentionComponent, selector: "sky-needs-attention", inputs: ["items"] }, { kind: "component", type: SkyPageHeaderComponent, selector: "sky-page-header", inputs: ["parentLink", "pageTitle"] }, { kind: "component", type: i4.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: SkyActionHubRecentLinksResolvePipe, name: "skyActionHubRecentLinksResolve" }, { kind: "pipe", type: SkyActionHubRelatedLinksSortPipe, name: "skyActionHubRelatedLinksSort" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
630
+ }
631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubComponent, decorators: [{
632
+ type: Component,
633
+ args: [{ selector: 'sky-action-hub', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-fluid-grid [disableMargin]=\"true\">\n <sky-row>\n <sky-column>\n <sky-page-header\n [pageTitle]=\"title\"\n [parentLink]=\"parentLink\"\n ></sky-page-header>\n </sky-column>\n </sky-row>\n <sky-row>\n <sky-column [screenLarge]=\"9\" [screenXSmall]=\"12\">\n <div class=\"sky-margin-stacked-xl\">\n <ng-content select=\"sky-action-hub-buttons\"></ng-content>\n </div>\n\n <div class=\"sky-margin-stacked-xl\">\n <sky-wait [isWaiting]=\"needsAttention === 'loading'\"></sky-wait>\n <sky-needs-attention\n *ngIf=\"needsAttention !== 'loading'\"\n [items]=\"needsAttentionArray\"\n ></sky-needs-attention>\n </div>\n\n <div class=\"sky-margin-stacked-xl\">\n <ng-content select=\"sky-action-hub-content\"></ng-content>\n </div>\n </sky-column>\n <sky-column [screenLarge]=\"3\" [screenXSmall]=\"12\">\n <sky-link-list\n [links]=\"relatedLinks | skyActionHubRelatedLinksSort\"\n [title]=\"'sky_action_hub_related_links' | skyLibResources\"\n ></sky-link-list>\n <sky-link-list\n [links]=\"recentLinks | skyActionHubRecentLinksResolve\"\n [title]=\"'sky_action_hub_recent_links' | skyLibResources\"\n ></sky-link-list>\n <sky-modal-link-list\n [links]=\"settingsLinks\"\n [title]=\"'sky_action_hub_settings_links' | skyLibResources\"\n ></sky-modal-link-list>\n </sky-column>\n </sky-row>\n</sky-fluid-grid>\n", styles: [":host{--sky-compat-page-header-margin-top-and-bottom: 0;display:block;margin:var(--sky-padding-even-xl)}[aria-busy=true]{display:block;min-height:60px;margin-bottom:var(--sky-margin-stacked-xl)}sky-page-header{margin:0 0 var(--sky-margin-stacked-lg) 0}.sky-margin-stacked-xl:empty{margin-bottom:0}\n"] }]
634
+ }], propDecorators: { needsAttention: [{
635
+ type: Input
636
+ }], parentLink: [{
637
+ type: Input
638
+ }], recentLinks: [{
639
+ type: Input
640
+ }], relatedLinks: [{
641
+ type: Input
642
+ }], settingsLinks: [{
643
+ type: Input
644
+ }], title: [{
645
+ type: Input
646
+ }] } });
647
+
648
+ class SkyActionHubModule {
649
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
650
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubModule, declarations: [SkyActionHubButtonsComponent,
651
+ SkyActionHubComponent,
652
+ SkyActionHubContentComponent,
653
+ SkyActionHubRecentLinksResolvePipe,
654
+ SkyActionHubRelatedLinksSortPipe], imports: [CommonModule,
655
+ SkyBoxModule,
656
+ SkyFluidGridModule,
657
+ SkyI18nModule,
658
+ SkyLinkListModule,
659
+ SkyModalLinkListModule,
660
+ SkyNeedsAttentionModule,
661
+ SkyPageHeaderModule,
662
+ SkyPagesResourcesModule,
663
+ SkyThemeModule,
664
+ SkyWaitModule], exports: [SkyActionHubButtonsComponent,
665
+ SkyActionHubComponent,
666
+ SkyActionHubContentComponent] }); }
667
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubModule, imports: [CommonModule,
668
+ SkyBoxModule,
669
+ SkyFluidGridModule,
670
+ SkyI18nModule,
671
+ SkyLinkListModule,
672
+ SkyModalLinkListModule,
673
+ SkyNeedsAttentionModule,
674
+ SkyPageHeaderModule,
675
+ SkyPagesResourcesModule,
676
+ SkyThemeModule,
677
+ SkyWaitModule] }); }
678
+ }
679
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyActionHubModule, decorators: [{
680
+ type: NgModule,
681
+ args: [{
682
+ imports: [
683
+ CommonModule,
684
+ SkyBoxModule,
685
+ SkyFluidGridModule,
686
+ SkyI18nModule,
687
+ SkyLinkListModule,
688
+ SkyModalLinkListModule,
689
+ SkyNeedsAttentionModule,
690
+ SkyPageHeaderModule,
691
+ SkyPagesResourcesModule,
692
+ SkyThemeModule,
693
+ SkyWaitModule,
694
+ ],
695
+ declarations: [
696
+ SkyActionHubButtonsComponent,
697
+ SkyActionHubComponent,
698
+ SkyActionHubContentComponent,
699
+ SkyActionHubRecentLinksResolvePipe,
700
+ SkyActionHubRelatedLinksSortPipe,
701
+ ],
702
+ exports: [
703
+ SkyActionHubButtonsComponent,
704
+ SkyActionHubComponent,
705
+ SkyActionHubContentComponent,
706
+ ],
707
+ }]
708
+ }] });
709
+
710
+ /**
711
+ * Displays page contents using spacing that corresponds to the parent
712
+ * page's layout.
713
+ */
714
+ class SkyPageContentComponent {
715
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
716
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageContentComponent, selector: "sky-page-content", ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{display:block;padding:var(--sky-layout-host-content-spacing, 0);flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
717
+ }
718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageContentComponent, decorators: [{
719
+ type: Component,
720
+ args: [{ selector: 'sky-page-content', template: `<ng-content />`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;padding:var(--sky-layout-host-content-spacing, 0);flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);position:var(--sky-layout-host-content-position, static)}\n"] }]
721
+ }] });
722
+
723
+ /**
724
+ * @internal
725
+ */
726
+ class SkyPageThemeAdapterService {
727
+ #styleEl;
728
+ #document;
729
+ constructor(document) {
730
+ this.#document = document;
731
+ }
732
+ /**
733
+ * We can't use ViewEncapsulation.None for this behavior because Angular does
734
+ * not remove `style` tags from the HEAD element after route changes.
735
+ * @see https://github.com/angular/angular/issues/16670
736
+ */
737
+ addTheme() {
738
+ if (!this.#styleEl) {
739
+ this.#styleEl = this.#document.createElement('style');
740
+ this.#styleEl.appendChild(this.#document.createTextNode('body:not(.sky-theme-modern) { background-color: #fff; }'));
741
+ this.#document.head.appendChild(this.#styleEl);
742
+ }
743
+ }
744
+ removeTheme() {
745
+ if (this.#styleEl) {
746
+ this.#styleEl.remove();
747
+ this.#styleEl = undefined;
748
+ }
749
+ }
750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageThemeAdapterService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
751
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageThemeAdapterService }); }
752
+ }
753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageThemeAdapterService, decorators: [{
754
+ type: Injectable
755
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
756
+ type: Inject,
757
+ args: [DOCUMENT]
758
+ }] }]; } });
759
+
760
+ const LAYOUT_DEFAULT = 'none';
761
+ const LAYOUT_FOR_CHILD_CLASS_PREFIX = 'sky-layout-host-for-child-';
762
+ const LAYOUT_CLASS_PREFIX = 'sky-layout-host-';
763
+ const LAYOUT_CLASS_DEFAULT = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;
764
+ /**
765
+ * Displays a page using the specified layout.
766
+ */
767
+ class SkyPageComponent {
768
+ constructor() {
769
+ this.cssClass = LAYOUT_CLASS_DEFAULT;
770
+ this.#ngUnsubscribe = new Subject();
771
+ this.#themeAdapter = inject(SkyPageThemeAdapterService);
772
+ this.#layoutHostSvc = inject(SkyLayoutHostService);
773
+ }
774
+ /**
775
+ * The page layout that applies spacing to the page header and content. Use the layout
776
+ * that corresponds with the top-level component type used on the page, our use `fit` to
777
+ * constrain the page contents to the available viewport.
778
+ * Use `none` for custom content that does not adhere to predefined spacing or constraints.
779
+ * @default "none"
780
+ */
781
+ set layout(value) {
782
+ this.#layout = value;
783
+ this.#updateCssClass();
784
+ }
785
+ #layout;
786
+ #layoutForChild;
787
+ #ngUnsubscribe;
788
+ #themeAdapter;
789
+ #layoutHostSvc;
790
+ ngOnInit() {
791
+ this.#themeAdapter.addTheme();
792
+ this.#layoutHostSvc.hostLayoutForChild
793
+ .pipe(takeUntil(this.#ngUnsubscribe))
794
+ .subscribe((args) => {
795
+ this.#layoutForChild = args.layout;
796
+ this.#updateCssClass();
797
+ });
798
+ }
799
+ ngOnDestroy() {
800
+ this.#themeAdapter.removeTheme();
801
+ this.#ngUnsubscribe.next();
802
+ this.#ngUnsubscribe.complete();
803
+ }
804
+ #updateCssClass() {
805
+ let cssClass = this.#layout
806
+ ? `${LAYOUT_CLASS_PREFIX}${this.#layout}`
807
+ : LAYOUT_CLASS_DEFAULT;
808
+ if (this.#layoutForChild) {
809
+ cssClass = `${cssClass} ${LAYOUT_FOR_CHILD_CLASS_PREFIX}${this.#layoutForChild}`;
810
+ }
811
+ this.cssClass = cssClass;
812
+ }
813
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
814
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyPageComponent, selector: "sky-page", inputs: { layout: "layout" }, host: { properties: { "class": "this.cssClass" } }, providers: [SkyPageThemeAdapterService, SkyLayoutHostService], ngImport: i0, template: `<ng-content />`, isInline: true }); }
815
+ }
816
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageComponent, decorators: [{
817
+ type: Component,
818
+ args: [{
819
+ selector: 'sky-page',
820
+ template: `<ng-content />`,
821
+ providers: [SkyPageThemeAdapterService, SkyLayoutHostService],
822
+ }]
823
+ }], propDecorators: { layout: [{
824
+ type: Input
825
+ }], cssClass: [{
826
+ type: HostBinding,
827
+ args: ['class']
828
+ }] } });
829
+
830
+ class SkyPageModule {
831
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
832
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyPageModule, declarations: [SkyPageComponent, SkyPageContentComponent], imports: [CommonModule], exports: [SkyPageComponent, SkyPageHeaderModule, SkyPageContentComponent] }); }
833
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageModule, imports: [CommonModule, SkyPageHeaderModule] }); }
834
+ }
835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyPageModule, decorators: [{
836
+ type: NgModule,
837
+ args: [{
838
+ declarations: [SkyPageComponent, SkyPageContentComponent],
839
+ imports: [CommonModule],
840
+ exports: [SkyPageComponent, SkyPageHeaderModule, SkyPageContentComponent],
841
+ }]
842
+ }] });
843
+
844
+ /**
845
+ * Generated bundle index. Do not edit.
846
+ */
847
+
848
+ export { SkyActionHubModule, SkyPageHeaderModule, SkyPageModule, SkyActionHubComponent as λ1, SkyPageHeaderAvatarComponent as λ10, SkyPageHeaderAlertsComponent as λ11, SkyActionHubButtonsComponent as λ2, SkyActionHubContentComponent as λ3, SkyPageHeaderComponent as λ4, SkyModalLinkListComponent as λ5, SkyPageComponent as λ6, SkyPageContentComponent as λ7, SkyPageHeaderDetailsComponent as λ8, SkyPageHeaderActionsComponent as λ9 };
849
+ //# sourceMappingURL=skyux-pages.mjs.map