@fundamental-ngx/core 0.34.0 → 0.34.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 (123) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/dynamic-page.module.d.ts +2 -1
  20. package/dynamic-page/esm2020/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -3
  21. package/dynamic-page/esm2020/dynamic-page.module.mjs +5 -4
  22. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -6
  23. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  24. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -6
  25. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  26. package/dynamic-page/package.json +1 -1
  27. package/dynamic-side-content/package.json +1 -1
  28. package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -3
  29. package/esm2020/dynamic-page/dynamic-page.module.mjs +5 -4
  30. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +53 -0
  31. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +18 -0
  32. package/esm2020/utils/directives/ignore-click-on-selection/tokens.mjs +3 -0
  33. package/esm2020/utils/public_api.mjs +3 -1
  34. package/facets/package.json +1 -1
  35. package/feed-input/package.json +1 -1
  36. package/feed-list-item/package.json +1 -1
  37. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -6
  38. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  39. package/fesm2015/fundamental-ngx-core-utils.mjs +70 -3
  40. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  41. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -6
  42. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  43. package/fesm2020/fundamental-ngx-core-utils.mjs +68 -3
  44. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  45. package/file-uploader/package.json +1 -1
  46. package/fixed-card-layout/package.json +1 -1
  47. package/flexible-column-layout/package.json +1 -1
  48. package/form/package.json +1 -1
  49. package/formatted-text/package.json +1 -1
  50. package/grid-list/package.json +1 -1
  51. package/icon/package.json +1 -1
  52. package/illustrated-message/package.json +1 -1
  53. package/infinite-scroll/package.json +1 -1
  54. package/info-label/package.json +1 -1
  55. package/inline-help/package.json +1 -1
  56. package/input-group/package.json +1 -1
  57. package/layout-grid/package.json +1 -1
  58. package/layout-panel/package.json +1 -1
  59. package/link/package.json +1 -1
  60. package/list/package.json +1 -1
  61. package/menu/package.json +1 -1
  62. package/message-box/package.json +1 -1
  63. package/message-strip/package.json +1 -1
  64. package/message-toast/package.json +1 -1
  65. package/micro-process-flow/package.json +1 -1
  66. package/mobile-mode/package.json +1 -1
  67. package/multi-input/package.json +1 -1
  68. package/nested-list/package.json +1 -1
  69. package/notification/package.json +1 -1
  70. package/object-identifier/package.json +1 -1
  71. package/object-marker/package.json +1 -1
  72. package/object-number/package.json +1 -1
  73. package/object-status/package.json +1 -1
  74. package/package.json +1 -1
  75. package/pagination/package.json +1 -1
  76. package/panel/package.json +1 -1
  77. package/popover/package.json +1 -1
  78. package/product-switch/package.json +1 -1
  79. package/progress-indicator/package.json +1 -1
  80. package/quick-view/package.json +1 -1
  81. package/radio/package.json +1 -1
  82. package/rating-indicator/package.json +1 -1
  83. package/resizable-card-layout/package.json +1 -1
  84. package/scroll-spy/package.json +1 -1
  85. package/scrollbar/package.json +1 -1
  86. package/segmented-button/package.json +1 -1
  87. package/select/package.json +1 -1
  88. package/shared/package.json +1 -1
  89. package/shellbar/package.json +1 -1
  90. package/side-navigation/package.json +1 -1
  91. package/slider/package.json +1 -1
  92. package/split-button/package.json +1 -1
  93. package/splitter/package.json +1 -1
  94. package/status-indicator/package.json +1 -1
  95. package/step-input/package.json +1 -1
  96. package/switch/package.json +1 -1
  97. package/table/package.json +1 -1
  98. package/tabs/package.json +1 -1
  99. package/text/package.json +1 -1
  100. package/tile/package.json +1 -1
  101. package/time/package.json +1 -1
  102. package/time-picker/package.json +1 -1
  103. package/timeline/package.json +1 -1
  104. package/title/package.json +1 -1
  105. package/token/package.json +1 -1
  106. package/toolbar/package.json +1 -1
  107. package/tree/package.json +1 -1
  108. package/upload-collection/package.json +1 -1
  109. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +17 -0
  110. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.d.ts +8 -0
  111. package/utils/directives/ignore-click-on-selection/tokens.d.ts +2 -0
  112. package/utils/esm2020/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +53 -0
  113. package/utils/esm2020/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +18 -0
  114. package/utils/esm2020/directives/ignore-click-on-selection/tokens.mjs +3 -0
  115. package/utils/esm2020/public_api.mjs +3 -1
  116. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +70 -3
  117. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  118. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +68 -3
  119. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  120. package/utils/package.json +1 -1
  121. package/utils/public_api.d.ts +2 -0
  122. package/vertical-navigation/package.json +1 -1
  123. package/wizard/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Injectable, EventEmitter, HostBinding, Output, ViewChild, Directive, ContentChild, Optional, NgModule } from '@angular/core';
3
- import { resizeObservable } from '@fundamental-ngx/core/utils';
3
+ import * as i3$1 from '@fundamental-ngx/core/utils';
4
+ import { resizeObservable, IgnoreClickOnSelectionModule } from '@fundamental-ngx/core/utils';
4
5
  import { distinctUntilChanged, takeUntil, delay, debounceTime, map } from 'rxjs/operators';
5
6
  import { BehaviorSubject, Subject, fromEvent } from 'rxjs';
6
7
  import * as i3 from '@fundamental-ngx/core/button';
@@ -487,12 +488,12 @@ class DynamicPageHeaderComponent {
487
488
  }
488
489
  }
489
490
  DynamicPageHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DynamicPageHeaderComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DynamicPageService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
490
- DynamicPageHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: { title: "title", subtitle: "subtitle" }, host: { properties: { "attr.tabindex": "0" } }, queries: [{ propertyName: "_breadcrumbComponent", first: true, predicate: BreadcrumbComponent, descendants: true }, { propertyName: "_globalActions", first: true, predicate: DynamicPageGlobalActionsComponent, descendants: true }, { propertyName: "_contentToolbar", first: true, predicate: DynamicPageTitleContentComponent, descendants: true }], ngImport: i0, template: "<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\">\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\">{{ subtitle }}</div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\">{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n", styles: [".fd-dynamic-page__breadcrumb-wrapper{width:100%;max-width:60%}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
491
+ DynamicPageHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: { title: "title", subtitle: "subtitle" }, host: { properties: { "attr.tabindex": "0" } }, queries: [{ propertyName: "_breadcrumbComponent", first: true, predicate: BreadcrumbComponent, descendants: true }, { propertyName: "_globalActions", first: true, predicate: DynamicPageGlobalActionsComponent, descendants: true }, { propertyName: "_contentToolbar", first: true, predicate: DynamicPageTitleContentComponent, descendants: true }], ngImport: i0, template: "<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\" fdIgnoreClickOnSelection>\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\" fdIgnoreClickOnSelection>\n {{ subtitle }}\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\" fdIgnoreClickOnSelection>{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n", styles: [".fd-dynamic-page__breadcrumb-wrapper{width:100%;max-width:60%}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.IgnoreClickOnSelectionDirective, selector: "[fdIgnoreClickOnSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
491
492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DynamicPageHeaderComponent, decorators: [{
492
493
  type: Component,
493
494
  args: [{ selector: 'fd-dynamic-page-header', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
494
495
  '[attr.tabindex]': '0'
495
- }, template: "<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\">\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\">{{ subtitle }}</div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\">{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n", styles: [".fd-dynamic-page__breadcrumb-wrapper{width:100%;max-width:60%}\n"] }]
496
+ }, template: "<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\" fdIgnoreClickOnSelection>\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\" fdIgnoreClickOnSelection>\n {{ subtitle }}\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\" fdIgnoreClickOnSelection>{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n", styles: [".fd-dynamic-page__breadcrumb-wrapper{width:100%;max-width:60%}\n"] }]
496
497
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DynamicPageService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { title: [{
497
498
  type: Input
498
499
  }], subtitle: [{
@@ -809,7 +810,7 @@ DynamicPageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
809
810
  DynamicPageContentComponent,
810
811
  DynamicPageFooterComponent,
811
812
  DynamicPageTitleContentComponent,
812
- DynamicPageWrapperDirective], imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule], exports: [DynamicPageComponent,
813
+ DynamicPageWrapperDirective], imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule, IgnoreClickOnSelectionModule], exports: [DynamicPageComponent,
813
814
  DynamicPageHeaderComponent,
814
815
  DynamicPageGlobalActionsComponent,
815
816
  DynamicPageLayoutActionsComponent,
@@ -818,7 +819,7 @@ DynamicPageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
818
819
  DynamicPageFooterComponent,
819
820
  DynamicPageTitleContentComponent,
820
821
  DynamicPageWrapperDirective] });
821
- DynamicPageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DynamicPageModule, imports: [[CommonModule, ButtonModule, ToolbarModule, PopoverModule]] });
822
+ DynamicPageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DynamicPageModule, imports: [[CommonModule, ButtonModule, ToolbarModule, PopoverModule, IgnoreClickOnSelectionModule]] });
822
823
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DynamicPageModule, decorators: [{
823
824
  type: NgModule,
824
825
  args: [{
@@ -833,7 +834,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
833
834
  DynamicPageTitleContentComponent,
834
835
  DynamicPageWrapperDirective
835
836
  ],
836
- imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule],
837
+ imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule, IgnoreClickOnSelectionModule],
837
838
  exports: [
838
839
  DynamicPageComponent,
839
840
  DynamicPageHeaderComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-dynamic-page.mjs","sources":["../../../../libs/core/src/lib/dynamic-page/constants.ts","../../../../libs/core/src/lib/dynamic-page/utils.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page.config.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.service.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-wrapper.directive.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.module.ts","../../../../libs/core/src/lib/dynamic-page/fundamental-ngx-core-dynamic-page.ts"],"sourcesContent":["export const DYNAMIC_PAGE_CLASS_NAME = {\n dynamicPage: 'fd-dynamic-page',\n dynamicPageTitleArea: 'fd-dynamic-page__title-area',\n dynamicPageMainContainer: 'fd-dynamic-page__main-container',\n dynamicPageBreadcrumbTitleContainer: 'fd-dynamic-page__breadcrumb-title-container',\n dynamicPageTitleAreaCollapsed: 'fd-dynamic-page__title-area--collapsed',\n dynamicPageTitleContainer: 'fd-dynamic-page__title-container',\n dynamicPageTitle: 'fd-dynamic-page__title',\n dynamicPageBreadcrumb: 'fd-dynamic-page__breadcrumb',\n dynamicPageKeyInfo: 'fd-dynamic-page__title-content',\n dynamicPageToolbar: 'fd-dynamic-page__toolbar',\n dynamicPageLayoutActionsToolbar: 'fd-dynamic-page__toolbar--actions',\n dynamicPageLayoutContentToolbar: 'fd-dynamic-page__toolbar--content',\n dynamicPageHeader: 'fd-dynamic-page__header',\n dynamicPageCollapsibleHeader: 'fd-dynamic-page__collapsible-header',\n dynamicPageCollapsibleHeaderPinCollapseNoShadow:\n 'fd-dynamic-page__collapsible-header-visibility-container--no-shadow',\n dynamicPageTabs: 'fd-dynamic-page__tabs',\n dynamicPageTabsAddShadow: 'fd-dynamic-page__tabs--add-shadow',\n dynamicPageContent: 'fd-dynamic-page__content',\n dynamicPageSummarizedTitleArea: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaExtraLarge: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaNoShadow: 'fd-dynamic-page__summarized-title-area--no-shadow',\n dynamicPageSummarizedTitle: 'fd-dynamic-page__summarized-title',\n dynamicPageSummarizedTitleCollapsed: 'fd-dynamic-page__summarized-title-area--collapsed'\n} as const;\n\nexport type DynamicPageBackgroundType = 'solid' | 'list' | 'transparent';\n\nexport type DynamicPageResponsiveSize = 'small' | 'medium' | 'large' | 'extra-large';\n","import { Renderer2 } from '@angular/core';\nimport { DynamicPageResponsiveSize } from './constants';\n\nexport const addClassNameToElement = (renderer: Renderer2, element: Element, className: string): void => {\n renderer.addClass(element, className);\n};\n\n/** @hidden Returns dynamic page size based on width\n * @param width - dynamic page window width\n **/\nexport function dynamicPageWidthToSize(width: number): DynamicPageResponsiveSize {\n if (width < 599) {\n return 'small';\n } else if (width < 1023) {\n return 'medium';\n } else if (width < 1439) {\n return 'large';\n }\n return 'extra-large';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../constants';\nimport { addClassNameToElement } from '../utils';\n\n@Component({\n selector: 'fd-dynamic-page-content',\n templateUrl: './dynamic-page-content.component.html',\n styleUrls: ['./dynamic-page-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageContentComponent implements OnInit {\n /**\n * label for the tab. If label is provided, tab navigation will be internally set up.\n */\n @Input()\n tabLabel: string;\n\n /**\n * a unique identifier for this content\n */\n @Input()\n id: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, public _renderer: Renderer2) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageContent);\n }\n\n /** Element reference to host of content dynamic page */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n}\n","<ng-content></ng-content>\n<div class=\"footer-spacer\"></div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Default options for core dynamic-page\n */\n@Injectable({ providedIn: 'root' })\nexport class DynamicPageConfig {\n /**\n * aria label for expand/collapse button when the Dynamic Page is collapsed\n */\n expandLabel = 'Expand Header';\n\n /**\n * aria label for expand/collapse button when the Dynamic Page is expanded\n */\n collapseLabel = 'Collapse Header';\n\n /**\n * aria label for pin button when the Dynamic Page should be pinned\n */\n pinLabel = 'Pin Header';\n\n /**\n * aria label for pin button when the Panel should be unpinned\n */\n unpinLabel = 'Unpin Header';\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable()\nexport class DynamicPageService {\n /** @hidden */\n collapsed = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pinned = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pixelsSizeChanged = new BehaviorSubject<number>(0);\n\n /** @hidden */\n subheaderVisibilityChange = new Subject<void>();\n\n /** @hidden */\n toggleCollapsed(): void {\n this.collapsed.next(!this.collapsed.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n HostBinding,\n ChangeDetectorRef\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { DynamicPageConfig } from '../../dynamic-page.config';\nimport { DynamicPageService } from '../../dynamic-page.service';\n\nlet dynamicPageSubHeaderId = 0;\n@Component({\n selector: 'fd-dynamic-page-subheader',\n templateUrl: './dynamic-page-subheader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageSubheaderComponent {\n /**\n * whether the header can be collapsed. True by default. If set to false, both pin/collapse buttons disappear\n * and the header stays visible\n */\n @Input()\n collapsible = true;\n\n /**\n * whether the header should be allowed to be pinned or unpinned. When set, the pin button shows up.\n * Pinning the header will make the header stay visible and the collapse button(if present) will disappear until unpinned.\n */\n @Input()\n pinnable = false;\n\n /**\n * the initial state of the header. Set to true if header should be collapsed.\n */\n @Input()\n set collapsed(collapsed: boolean) {\n this._handleCollapsedChange(collapsed);\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * ARIA label for button when the header is collapsed\n */\n @Input()\n expandLabel: string = this._dynamicPageConfig.expandLabel;\n\n /**\n * ARIA label for button when the header is expanded\n */\n @Input()\n collapseLabel: string = this._dynamicPageConfig.collapseLabel;\n\n /** Header role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /**\n * id for header\n */\n @Input()\n @HostBinding('attr.id')\n id = `fd-dynamic-page-header-id-${dynamicPageSubHeaderId++}`;\n\n /**\n * aria label for header\n */\n @Input()\n headerAriaLabel: string;\n\n /**\n * aria label for pin state of pin button\n */\n @Input()\n pinAriaLabel: string = this._dynamicPageConfig.pinLabel;\n\n /**\n * aria label for unpin state of pin button\n */\n @Input()\n unpinAriaLabel: string = this._dynamicPageConfig.unpinLabel;\n\n /** Collapse/Expand change event raised */\n @Output()\n collapsedChange = new EventEmitter<boolean>();\n\n /** Reference to page header content */\n @ViewChild('pincollapseContainer')\n pinCollapseContainer: ElementRef<HTMLElement>;\n\n /**\n * tracking if pin button is pinned\n */\n _pinned = false;\n\n /**\n * @hidden\n * tracking expand/collapse button\n */\n private _collapsed = false;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n protected _dynamicPageConfig: DynamicPageConfig,\n private _dynamicPageService: DynamicPageService\n ) {\n this._dynamicPageService.collapsed\n .pipe(distinctUntilChanged())\n .subscribe((collapsed) => this._handleCollapsedChange(collapsed));\n }\n\n /**\n * toggles the state of the header and\n * handles expanded/collapsed event\n */\n toggleCollapse(): void {\n this._pinned = false;\n this._handleCollapsedChange(!this._collapsed);\n }\n\n /**\n * @hidden\n * click action on pin button\n */\n togglePinned(): void {\n this._pinned = !this._pinned;\n this._dynamicPageService.pinned.next(this._pinned);\n }\n\n private _handleCollapsedChange(collapsed: boolean): void {\n if (collapsed === this._collapsed) {\n return;\n }\n\n this._collapsed = collapsed;\n this._dynamicPageService.collapsed.next(collapsed);\n this.collapsedChange.emit(this._collapsed);\n this._cd.detectChanges();\n this._dynamicPageService.subheaderVisibilityChange.next();\n }\n}\n","<div class=\"fd-dynamic-page__collapsible-header-container\">\n <div\n class=\"fd-dynamic-page__collapsible-header\"\n [attr.aria-label]=\"headerAriaLabel\"\n [attr.aria-hidden]=\"collapsed\"\n [attr.id]=\"id\"\n role=\"region\"\n #headerContent\n >\n <ng-content></ng-content>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container\" #pincollapseContainer>\n <ng-container *ngIf=\"collapsible\">\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--left-gradient\"></div>\n <div\n role=\"toolbar\"\n aria-label=\"Pin/Collapse actions\"\n class=\"fd-dynamic-page__collapsible-header-visibility-container--button-group\"\n >\n <button\n fd-button\n class=\"fd-dynamic-page__collapse-button\"\n aria-haspopup=\"true\"\n [ariaLabel]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id\"\n (click)=\"toggleCollapse()\"\n >\n <i *ngIf=\"!collapsed\" class=\"sap-icon--slim-arrow-up\"></i>\n <i *ngIf=\"collapsed\" class=\"sap-icon--slim-arrow-down\"></i>\n </button>\n <button\n fd-button\n class=\"fd-dynamic-page__pin-button\"\n [ariaLabel]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.title]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.aria-selected]=\"_pinned\"\n (click)=\"togglePinned()\"\n *ngIf=\"pinnable && !collapsed\"\n >\n <i class=\"sap-icon--pushpin-off\"></i>\n </button>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--right-gradient\"></div>\n </ng-container>\n </div>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive()\nexport class DynamicPageBaseActions {\n addClassToToolbar(_class: string, elementRef: ElementRef): void {\n // adds global actions classes to its toolbar\n const toolbarEl = elementRef.nativeElement.querySelector('.fd-toolbar');\n if (toolbarEl) {\n toolbarEl.classList.add(_class);\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n ContentChild\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n selector: 'fd-dynamic-page-global-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageGlobalActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n /** @hidden */\n @ContentChild(ToolbarComponent)\n _toolbarComponent: ToolbarComponent;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n if (this._toolbarComponent) {\n this._handleOverflow(size === 'small');\n }\n }\n\n /** @hidden */\n private _handleOverflow(shouldBeHidden: boolean): void {\n this._toolbarComponent.forceOverflow = shouldBeHidden;\n this._toolbarComponent.shouldOverflow = shouldBeHidden;\n this._toolbarComponent.detectChanges();\n setTimeout(() => {\n this._toolbarComponent.updateCollapsibleItems();\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input } from '@angular/core';\nimport { DynamicPageResponsiveSize } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-title-content',\n template: `\n <ng-container *ngIf=\"_size === 'small'\">\n <fd-toolbar\n fdType=\"transparent\"\n (click)=\"$event.stopPropagation()\"\n class=\"dynamicPageLayoutContentToolbar\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [shouldOverflow]=\"true\"\n [size]=\"!compact ? 'cozy' : 'compact'\"\n >\n <div fd-toolbar-item>\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n </fd-toolbar>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-content\" *ngIf=\"_size !== 'small'\">\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n\n <ng-template #templateContentRef>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageTitleContentComponent {\n /** Whether should be on compact mode */\n @Input()\n compact = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden */\n constructor(private _changeDetRef: ChangeDetectorRef) {}\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n this._size = size;\n this._changeDetRef.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { DynamicPageService } from '../../dynamic-page.service';\nimport { addClassNameToElement } from '../../utils';\nimport { BreadcrumbComponent } from '@fundamental-ngx/core/breadcrumb';\nimport { DynamicPageGlobalActionsComponent } from '../actions/dynamic-page-global-actions.component';\nimport { DynamicPageTitleContentComponent } from '../actions/dynamic-page-title-content.component';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport const ActionSquashBreakpointPx = 1280;\n\n@Component({\n selector: 'fd-dynamic-page-header',\n templateUrl: './dynamic-page-header.component.html',\n styleUrls: ['./dynamic-page-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': '0'\n }\n})\nexport class DynamicPageHeaderComponent implements OnInit, AfterViewInit, OnDestroy {\n /** @hidden */\n _collapsed = false;\n\n /** Title property for dynamic page */\n @Input()\n title: string;\n\n /** Subtitle property for dynamic page */\n @Input()\n subtitle: string;\n\n /** @hidden */\n @ContentChild(BreadcrumbComponent)\n _breadcrumbComponent: BreadcrumbComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageGlobalActionsComponent)\n _globalActions: DynamicPageGlobalActionsComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageTitleContentComponent)\n _contentToolbar: DynamicPageTitleContentComponent;\n\n /** @hidden */\n _actionsSquashed = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n private _ngZone: NgZone,\n private _changeDetRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageTitleArea);\n this._listenToPageChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._addCustomClassToBreadcrumb();\n\n this._dynamicPageService.collapsed.pipe(takeUntil(this._onDestroy$)).subscribe((collapsed) => {\n this._collapsed = collapsed;\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n set size(sizeType: DynamicPageResponsiveSize) {\n this._setSize(sizeType);\n this._size = sizeType;\n }\n\n /** @hidden */\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /**\n * @hidden\n * sets the padding classes\n * @param sizeType\n */\n private _setSize(sizeType: DynamicPageResponsiveSize): void {\n setTimeout(() => {\n this._breadcrumbComponent?.onResize();\n this._globalActions?._setSize(sizeType);\n this._contentToolbar?._setSize(sizeType);\n this._changeDetRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _addClassNameToCustomElement(element: Element, className: string): void {\n addClassNameToElement(this._renderer, element, className);\n }\n\n /** @hidden */\n private _addCustomClassToBreadcrumb(): void {\n if (this._breadcrumbComponent) {\n this._addClassNameToCustomElement(\n this._breadcrumbComponent.elementRef.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageBreadcrumb\n );\n }\n }\n\n /** @hidden */\n private _listenToPageChanges(): void {\n this._dynamicPageService.pixelsSizeChanged.pipe(takeUntil(this._onDestroy$)).subscribe((pixels) => {\n const actionsSquashed: boolean = pixels < ActionSquashBreakpointPx;\n if (actionsSquashed !== this._actionsSquashed) {\n this._actionsSquashed = actionsSquashed;\n this._changeDetRef.detectChanges();\n }\n });\n }\n}\n","<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\">\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\">{{ subtitle }}</div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\">{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdDynamicPageWrapper], [fd-dynamic-page-wrapper]'\n})\nexport class DynamicPageWrapperDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/core/utils';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\nimport { DynamicPageService } from './dynamic-page.service';\nimport { addClassNameToElement, dynamicPageWidthToSize } from './utils';\nimport { TabListComponent } from '@fundamental-ngx/core/tabs';\nimport { FlexibleColumnLayoutComponent } from '@fundamental-ngx/core/flexible-column-layout';\n\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, map, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'fd-dynamic-page',\n templateUrl: './dynamic-page.component.html',\n styleUrls: ['./dynamic-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DynamicPageService]\n})\nexport class DynamicPageComponent implements AfterViewInit, OnDestroy {\n /** Page role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /** aria label for the page */\n @Input()\n ariaLabel: string;\n\n /**\n * sets background for content to `list`, `transparent`, or `solid` background color.\n * Default is `solid`.\n */\n @Input()\n background: DynamicPageBackgroundType = 'solid';\n\n /** Whether DynamicPage should have responsive sides spacing changing with Page window width.\n * max-width: 599px - small\n * min-width: 600px and max-width: 1023px - medium\n * min-width: 1024px and max-width: 1439px - large\n * min-width: 1440px - extra large\n */\n @Input()\n autoResponsive = true;\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n @Input()\n set size(size: DynamicPageResponsiveSize) {\n this._size = size;\n this._propagateSizeToChildren();\n }\n\n get size(): DynamicPageResponsiveSize {\n return this._size;\n }\n\n _size: DynamicPageResponsiveSize = 'extra-large';\n\n /** Offset in PX\n * Should be added, when there is something else at the bottom and dynamic page is not expanded to bottom's corners\n */\n @Input()\n offset = 0;\n\n /**\n * Whether dynamic page should be expanded in whole page.\n */\n @Input()\n expandContent = true;\n\n /** @hidden reference to header component */\n @ContentChild(DynamicPageSubheaderComponent)\n _pageSubheaderComponent: DynamicPageSubheaderComponent;\n\n /** @hidden reference to title component */\n @ContentChild(DynamicPageHeaderComponent)\n _headerComponent: DynamicPageHeaderComponent;\n\n /** @hidden reference to content component */\n @ContentChild(DynamicPageContentComponent)\n _contentComponent: DynamicPageContentComponent;\n\n /** @hidden reference to tab component */\n @ContentChild(TabListComponent)\n _tabComponent: TabListComponent;\n\n /** @hidden */\n @ViewChild('dynamicPageElement')\n _dynamicPageElement: ElementRef;\n\n /** @hidden */\n _headerCollapsible = true;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n @Optional() private _columnLayout: FlexibleColumnLayoutComponent,\n @Optional() private _dynamicPageWrapper: DynamicPageWrapperDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._sizeChangeHandle();\n this._removeShadowWhenTabComponent();\n this._listenOnResize();\n this._listenOnCollapse();\n this._propagatePropertiesToChildren();\n if (this._pageSubheaderComponent?.collapsible) {\n this._addScrollListeners();\n }\n\n if (this._columnLayout && this.autoResponsive) {\n this._listenToLayoutChange();\n }\n\n setTimeout(() => this._setContainerPositions());\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** toggle the visibility of the header on click of title area. */\n toggleCollapse(): void {\n if (this._headerCollapsible) {\n this._dynamicPageService.toggleCollapsed();\n }\n }\n\n /**\n * Triggers recheck for spacing and sizing of elements inside DynamicPage.\n */\n refreshSize(): void {\n this._setContainerPositions();\n this._sizeChangeHandle();\n }\n\n /** Set the positions of the tabs and content with respect to the window */\n private _setContainerPositions(): void {\n this._setDynamicPageHeight();\n }\n\n /** @hidden */\n private _propagatePropertiesToChildren(): void {\n this._headerCollapsible = this._pageSubheaderComponent?.collapsible;\n this._propagateSizeToChildren();\n }\n\n /** @hidden\n * Functionality handling column layout changes,\n * - recalculate height of content element\n * - recheck size depending on width of DynamicPage\n */\n private _listenToLayoutChange(): void {\n this._columnLayout.layoutChange.pipe(takeUntil(this._onDestroy$), delay(1500)).subscribe(() => {\n this.refreshSize();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _propagateSizeToChildren(): void {\n if (this._headerComponent) {\n this._headerComponent.size = this.size;\n }\n this._setContainerPositions();\n }\n\n /** @hidden */\n private _listenOnCollapse(): void {\n this._dynamicPageService.subheaderVisibilityChange\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._setContainerPositions());\n }\n\n /** @hidden */\n private _getCalculatedFullHeight(element: HTMLElement): string {\n if (!element) {\n return null;\n }\n const distanceFromTop = element.getBoundingClientRect().top;\n return 'calc(100vh - ' + (distanceFromTop + this.offset) + 'px)';\n }\n\n /** @hidden */\n private _sizeChangeHandle(): void {\n if (!this._elementRef || !this.autoResponsive) {\n return;\n }\n const dynamicPageWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n this._dynamicPageService.pixelsSizeChanged.next(dynamicPageWidth);\n const size = dynamicPageWidthToSize(dynamicPageWidth);\n\n if (size !== this.size) {\n this.size = size;\n this._cd.detectChanges();\n }\n }\n\n /** @hidden */\n private _addScrollListeners(): void {\n const tabElement = this._tabComponent?.contentContainer?.nativeElement;\n if (tabElement) {\n this._listenOnScroll(tabElement);\n }\n\n const contentElement = this._contentComponent?.elementRef?.nativeElement;\n if (contentElement) {\n this._listenOnScroll(contentElement);\n }\n }\n\n /** @hidden */\n private _listenOnScroll(element: HTMLElement): void {\n fromEvent(element, 'scroll')\n .pipe(debounceTime(10), takeUntil(this._onDestroy$))\n .subscribe(() => {\n const collapse =\n !this._dynamicPageService.pinned.value &&\n (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);\n this._dynamicPageService.collapsed.next(collapse);\n });\n }\n\n /** @hidden Listen for window resize and adjust tab and content positions accordingly */\n private _listenOnResize(): void {\n const listener = this._dynamicPageWrapper ? this._listenToWrapperResize() : this._listenToWindowResize();\n\n listener.pipe(debounceTime(100), takeUntil(this._onDestroy$)).subscribe(() => {\n this._setContainerPositions();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _listenToWrapperResize(): Observable<ResizeObserverEntry[]> {\n return resizeObservable(this._dynamicPageWrapper.elementRef.nativeElement);\n }\n\n /** @hidden */\n private _listenToWindowResize(): Observable<ResizeObserverEntry[]> {\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n\n /** @hidden\n * set top position of DynamicPage on scrolling\n */\n private _setDynamicPageHeight(): void {\n if (!this._dynamicPageElement || !this.expandContent) {\n return;\n }\n const element = this._dynamicPageElement.nativeElement;\n this._renderer.setStyle(element, 'height', this._getCalculatedFullHeight(element));\n }\n\n /** @hidden */\n private _removeShadowWhenTabComponent(): void {\n if (!this._pageSubheaderComponent?.collapsible || !this._tabComponent) {\n return;\n }\n\n const pinCollapseShadowElement = this._pageSubheaderComponent?.pinCollapseContainer;\n\n if (pinCollapseShadowElement) {\n addClassNameToElement(\n this._renderer,\n pinCollapseShadowElement.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageCollapsibleHeaderPinCollapseNoShadow\n );\n }\n }\n}\n","<section\n #dynamicPageElement\n class=\"fd-dynamic-page\"\n [class.fd-dynamic-page--sm]=\"size === 'small'\"\n [class.fd-dynamic-page--md]=\"size === 'medium'\"\n [class.fd-dynamic-page--lg]=\"size === 'large'\"\n [class.fd-dynamic-page--xl]=\"size === 'extra-large'\"\n [class.fd-dynamic-page--transparent-bg]=\"background === 'transparent'\"\n [class.fd-dynamic-page--list-bg]=\"background === 'list'\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <header class=\"fd-dynamic-page__header\" [class.fd-dynamic-page__header--not-collapsible]=\"!_headerCollapsible\">\n <div>\n <div (click)=\"toggleCollapse()\" (keydown.enter)=\"toggleCollapse()\">\n <ng-content select=\"fd-dynamic-page-header\"></ng-content>\n </div>\n <ng-content select=\"fd-dynamic-page-subheader\"></ng-content>\n </div>\n </header>\n\n <ng-content select=\"fd-tab-list\"></ng-content>\n <ng-content select=\"fd-dynamic-page-content\"></ng-content>\n <footer>\n <ng-content select=\"fd-dynamic-page-footer\"></ng-content>\n </footer>\n</section>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-layout-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageLayoutActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageLayoutActionsToolbar, this._elementRef);\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-dynamic-page-footer',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageFooterComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';\nimport { DynamicPageGlobalActionsComponent } from './dynamic-page-header/actions/dynamic-page-global-actions.component';\nimport { DynamicPageLayoutActionsComponent } from './dynamic-page-header/actions/dynamic-page-layout-actions.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageComponent } from './dynamic-page.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicPageTitleContentComponent } from './dynamic-page-header/actions/dynamic-page-title-content.component';\nimport { ToolbarModule } from '@fundamental-ngx/core/toolbar';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\n\n@NgModule({\n declarations: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ],\n imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule],\n exports: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ]\n})\nexport class DynamicPageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-dynamic-page.mjs","sources":["../../../../libs/core/src/lib/dynamic-page/constants.ts","../../../../libs/core/src/lib/dynamic-page/utils.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page.config.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.service.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-wrapper.directive.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.html","../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.ts","../../../../libs/core/src/lib/dynamic-page/dynamic-page.module.ts","../../../../libs/core/src/lib/dynamic-page/fundamental-ngx-core-dynamic-page.ts"],"sourcesContent":["export const DYNAMIC_PAGE_CLASS_NAME = {\n dynamicPage: 'fd-dynamic-page',\n dynamicPageTitleArea: 'fd-dynamic-page__title-area',\n dynamicPageMainContainer: 'fd-dynamic-page__main-container',\n dynamicPageBreadcrumbTitleContainer: 'fd-dynamic-page__breadcrumb-title-container',\n dynamicPageTitleAreaCollapsed: 'fd-dynamic-page__title-area--collapsed',\n dynamicPageTitleContainer: 'fd-dynamic-page__title-container',\n dynamicPageTitle: 'fd-dynamic-page__title',\n dynamicPageBreadcrumb: 'fd-dynamic-page__breadcrumb',\n dynamicPageKeyInfo: 'fd-dynamic-page__title-content',\n dynamicPageToolbar: 'fd-dynamic-page__toolbar',\n dynamicPageLayoutActionsToolbar: 'fd-dynamic-page__toolbar--actions',\n dynamicPageLayoutContentToolbar: 'fd-dynamic-page__toolbar--content',\n dynamicPageHeader: 'fd-dynamic-page__header',\n dynamicPageCollapsibleHeader: 'fd-dynamic-page__collapsible-header',\n dynamicPageCollapsibleHeaderPinCollapseNoShadow:\n 'fd-dynamic-page__collapsible-header-visibility-container--no-shadow',\n dynamicPageTabs: 'fd-dynamic-page__tabs',\n dynamicPageTabsAddShadow: 'fd-dynamic-page__tabs--add-shadow',\n dynamicPageContent: 'fd-dynamic-page__content',\n dynamicPageSummarizedTitleArea: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaExtraLarge: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaNoShadow: 'fd-dynamic-page__summarized-title-area--no-shadow',\n dynamicPageSummarizedTitle: 'fd-dynamic-page__summarized-title',\n dynamicPageSummarizedTitleCollapsed: 'fd-dynamic-page__summarized-title-area--collapsed'\n} as const;\n\nexport type DynamicPageBackgroundType = 'solid' | 'list' | 'transparent';\n\nexport type DynamicPageResponsiveSize = 'small' | 'medium' | 'large' | 'extra-large';\n","import { Renderer2 } from '@angular/core';\nimport { DynamicPageResponsiveSize } from './constants';\n\nexport const addClassNameToElement = (renderer: Renderer2, element: Element, className: string): void => {\n renderer.addClass(element, className);\n};\n\n/** @hidden Returns dynamic page size based on width\n * @param width - dynamic page window width\n **/\nexport function dynamicPageWidthToSize(width: number): DynamicPageResponsiveSize {\n if (width < 599) {\n return 'small';\n } else if (width < 1023) {\n return 'medium';\n } else if (width < 1439) {\n return 'large';\n }\n return 'extra-large';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../constants';\nimport { addClassNameToElement } from '../utils';\n\n@Component({\n selector: 'fd-dynamic-page-content',\n templateUrl: './dynamic-page-content.component.html',\n styleUrls: ['./dynamic-page-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageContentComponent implements OnInit {\n /**\n * label for the tab. If label is provided, tab navigation will be internally set up.\n */\n @Input()\n tabLabel: string;\n\n /**\n * a unique identifier for this content\n */\n @Input()\n id: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, public _renderer: Renderer2) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageContent);\n }\n\n /** Element reference to host of content dynamic page */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n}\n","<ng-content></ng-content>\n<div class=\"footer-spacer\"></div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Default options for core dynamic-page\n */\n@Injectable({ providedIn: 'root' })\nexport class DynamicPageConfig {\n /**\n * aria label for expand/collapse button when the Dynamic Page is collapsed\n */\n expandLabel = 'Expand Header';\n\n /**\n * aria label for expand/collapse button when the Dynamic Page is expanded\n */\n collapseLabel = 'Collapse Header';\n\n /**\n * aria label for pin button when the Dynamic Page should be pinned\n */\n pinLabel = 'Pin Header';\n\n /**\n * aria label for pin button when the Panel should be unpinned\n */\n unpinLabel = 'Unpin Header';\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable()\nexport class DynamicPageService {\n /** @hidden */\n collapsed = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pinned = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pixelsSizeChanged = new BehaviorSubject<number>(0);\n\n /** @hidden */\n subheaderVisibilityChange = new Subject<void>();\n\n /** @hidden */\n toggleCollapsed(): void {\n this.collapsed.next(!this.collapsed.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n HostBinding,\n ChangeDetectorRef\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { DynamicPageConfig } from '../../dynamic-page.config';\nimport { DynamicPageService } from '../../dynamic-page.service';\n\nlet dynamicPageSubHeaderId = 0;\n@Component({\n selector: 'fd-dynamic-page-subheader',\n templateUrl: './dynamic-page-subheader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageSubheaderComponent {\n /**\n * whether the header can be collapsed. True by default. If set to false, both pin/collapse buttons disappear\n * and the header stays visible\n */\n @Input()\n collapsible = true;\n\n /**\n * whether the header should be allowed to be pinned or unpinned. When set, the pin button shows up.\n * Pinning the header will make the header stay visible and the collapse button(if present) will disappear until unpinned.\n */\n @Input()\n pinnable = false;\n\n /**\n * the initial state of the header. Set to true if header should be collapsed.\n */\n @Input()\n set collapsed(collapsed: boolean) {\n this._handleCollapsedChange(collapsed);\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * ARIA label for button when the header is collapsed\n */\n @Input()\n expandLabel: string = this._dynamicPageConfig.expandLabel;\n\n /**\n * ARIA label for button when the header is expanded\n */\n @Input()\n collapseLabel: string = this._dynamicPageConfig.collapseLabel;\n\n /** Header role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /**\n * id for header\n */\n @Input()\n @HostBinding('attr.id')\n id = `fd-dynamic-page-header-id-${dynamicPageSubHeaderId++}`;\n\n /**\n * aria label for header\n */\n @Input()\n headerAriaLabel: string;\n\n /**\n * aria label for pin state of pin button\n */\n @Input()\n pinAriaLabel: string = this._dynamicPageConfig.pinLabel;\n\n /**\n * aria label for unpin state of pin button\n */\n @Input()\n unpinAriaLabel: string = this._dynamicPageConfig.unpinLabel;\n\n /** Collapse/Expand change event raised */\n @Output()\n collapsedChange = new EventEmitter<boolean>();\n\n /** Reference to page header content */\n @ViewChild('pincollapseContainer')\n pinCollapseContainer: ElementRef<HTMLElement>;\n\n /**\n * tracking if pin button is pinned\n */\n _pinned = false;\n\n /**\n * @hidden\n * tracking expand/collapse button\n */\n private _collapsed = false;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n protected _dynamicPageConfig: DynamicPageConfig,\n private _dynamicPageService: DynamicPageService\n ) {\n this._dynamicPageService.collapsed\n .pipe(distinctUntilChanged())\n .subscribe((collapsed) => this._handleCollapsedChange(collapsed));\n }\n\n /**\n * toggles the state of the header and\n * handles expanded/collapsed event\n */\n toggleCollapse(): void {\n this._pinned = false;\n this._handleCollapsedChange(!this._collapsed);\n }\n\n /**\n * @hidden\n * click action on pin button\n */\n togglePinned(): void {\n this._pinned = !this._pinned;\n this._dynamicPageService.pinned.next(this._pinned);\n }\n\n private _handleCollapsedChange(collapsed: boolean): void {\n if (collapsed === this._collapsed) {\n return;\n }\n\n this._collapsed = collapsed;\n this._dynamicPageService.collapsed.next(collapsed);\n this.collapsedChange.emit(this._collapsed);\n this._cd.detectChanges();\n this._dynamicPageService.subheaderVisibilityChange.next();\n }\n}\n","<div class=\"fd-dynamic-page__collapsible-header-container\">\n <div\n class=\"fd-dynamic-page__collapsible-header\"\n [attr.aria-label]=\"headerAriaLabel\"\n [attr.aria-hidden]=\"collapsed\"\n [attr.id]=\"id\"\n role=\"region\"\n #headerContent\n >\n <ng-content></ng-content>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container\" #pincollapseContainer>\n <ng-container *ngIf=\"collapsible\">\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--left-gradient\"></div>\n <div\n role=\"toolbar\"\n aria-label=\"Pin/Collapse actions\"\n class=\"fd-dynamic-page__collapsible-header-visibility-container--button-group\"\n >\n <button\n fd-button\n class=\"fd-dynamic-page__collapse-button\"\n aria-haspopup=\"true\"\n [ariaLabel]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id\"\n (click)=\"toggleCollapse()\"\n >\n <i *ngIf=\"!collapsed\" class=\"sap-icon--slim-arrow-up\"></i>\n <i *ngIf=\"collapsed\" class=\"sap-icon--slim-arrow-down\"></i>\n </button>\n <button\n fd-button\n class=\"fd-dynamic-page__pin-button\"\n [ariaLabel]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.title]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.aria-selected]=\"_pinned\"\n (click)=\"togglePinned()\"\n *ngIf=\"pinnable && !collapsed\"\n >\n <i class=\"sap-icon--pushpin-off\"></i>\n </button>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--right-gradient\"></div>\n </ng-container>\n </div>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive()\nexport class DynamicPageBaseActions {\n addClassToToolbar(_class: string, elementRef: ElementRef): void {\n // adds global actions classes to its toolbar\n const toolbarEl = elementRef.nativeElement.querySelector('.fd-toolbar');\n if (toolbarEl) {\n toolbarEl.classList.add(_class);\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n ContentChild\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n selector: 'fd-dynamic-page-global-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageGlobalActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n /** @hidden */\n @ContentChild(ToolbarComponent)\n _toolbarComponent: ToolbarComponent;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n if (this._toolbarComponent) {\n this._handleOverflow(size === 'small');\n }\n }\n\n /** @hidden */\n private _handleOverflow(shouldBeHidden: boolean): void {\n this._toolbarComponent.forceOverflow = shouldBeHidden;\n this._toolbarComponent.shouldOverflow = shouldBeHidden;\n this._toolbarComponent.detectChanges();\n setTimeout(() => {\n this._toolbarComponent.updateCollapsibleItems();\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input } from '@angular/core';\nimport { DynamicPageResponsiveSize } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-title-content',\n template: `\n <ng-container *ngIf=\"_size === 'small'\">\n <fd-toolbar\n fdType=\"transparent\"\n (click)=\"$event.stopPropagation()\"\n class=\"dynamicPageLayoutContentToolbar\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [shouldOverflow]=\"true\"\n [size]=\"!compact ? 'cozy' : 'compact'\"\n >\n <div fd-toolbar-item>\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n </fd-toolbar>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-content\" *ngIf=\"_size !== 'small'\">\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n\n <ng-template #templateContentRef>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageTitleContentComponent {\n /** Whether should be on compact mode */\n @Input()\n compact = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden */\n constructor(private _changeDetRef: ChangeDetectorRef) {}\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n this._size = size;\n this._changeDetRef.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { DynamicPageService } from '../../dynamic-page.service';\nimport { addClassNameToElement } from '../../utils';\nimport { BreadcrumbComponent } from '@fundamental-ngx/core/breadcrumb';\nimport { DynamicPageGlobalActionsComponent } from '../actions/dynamic-page-global-actions.component';\nimport { DynamicPageTitleContentComponent } from '../actions/dynamic-page-title-content.component';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport const ActionSquashBreakpointPx = 1280;\n\n@Component({\n selector: 'fd-dynamic-page-header',\n templateUrl: './dynamic-page-header.component.html',\n styleUrls: ['./dynamic-page-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': '0'\n }\n})\nexport class DynamicPageHeaderComponent implements OnInit, AfterViewInit, OnDestroy {\n /** @hidden */\n _collapsed = false;\n\n /** Title property for dynamic page */\n @Input()\n title: string;\n\n /** Subtitle property for dynamic page */\n @Input()\n subtitle: string;\n\n /** @hidden */\n @ContentChild(BreadcrumbComponent)\n _breadcrumbComponent: BreadcrumbComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageGlobalActionsComponent)\n _globalActions: DynamicPageGlobalActionsComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageTitleContentComponent)\n _contentToolbar: DynamicPageTitleContentComponent;\n\n /** @hidden */\n _actionsSquashed = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n private _ngZone: NgZone,\n private _changeDetRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageTitleArea);\n this._listenToPageChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._addCustomClassToBreadcrumb();\n\n this._dynamicPageService.collapsed.pipe(takeUntil(this._onDestroy$)).subscribe((collapsed) => {\n this._collapsed = collapsed;\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n set size(sizeType: DynamicPageResponsiveSize) {\n this._setSize(sizeType);\n this._size = sizeType;\n }\n\n /** @hidden */\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /**\n * @hidden\n * sets the padding classes\n * @param sizeType\n */\n private _setSize(sizeType: DynamicPageResponsiveSize): void {\n setTimeout(() => {\n this._breadcrumbComponent?.onResize();\n this._globalActions?._setSize(sizeType);\n this._contentToolbar?._setSize(sizeType);\n this._changeDetRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _addClassNameToCustomElement(element: Element, className: string): void {\n addClassNameToElement(this._renderer, element, className);\n }\n\n /** @hidden */\n private _addCustomClassToBreadcrumb(): void {\n if (this._breadcrumbComponent) {\n this._addClassNameToCustomElement(\n this._breadcrumbComponent.elementRef.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageBreadcrumb\n );\n }\n }\n\n /** @hidden */\n private _listenToPageChanges(): void {\n this._dynamicPageService.pixelsSizeChanged.pipe(takeUntil(this._onDestroy$)).subscribe((pixels) => {\n const actionsSquashed: boolean = pixels < ActionSquashBreakpointPx;\n if (actionsSquashed !== this._actionsSquashed) {\n this._actionsSquashed = actionsSquashed;\n this._changeDetRef.detectChanges();\n }\n });\n }\n}\n","<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\" fdIgnoreClickOnSelection>\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\" fdIgnoreClickOnSelection>\n {{ subtitle }}\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\" fdIgnoreClickOnSelection>{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdDynamicPageWrapper], [fd-dynamic-page-wrapper]'\n})\nexport class DynamicPageWrapperDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/core/utils';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\nimport { DynamicPageService } from './dynamic-page.service';\nimport { addClassNameToElement, dynamicPageWidthToSize } from './utils';\nimport { TabListComponent } from '@fundamental-ngx/core/tabs';\nimport { FlexibleColumnLayoutComponent } from '@fundamental-ngx/core/flexible-column-layout';\n\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, map, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'fd-dynamic-page',\n templateUrl: './dynamic-page.component.html',\n styleUrls: ['./dynamic-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DynamicPageService]\n})\nexport class DynamicPageComponent implements AfterViewInit, OnDestroy {\n /** Page role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /** aria label for the page */\n @Input()\n ariaLabel: string;\n\n /**\n * sets background for content to `list`, `transparent`, or `solid` background color.\n * Default is `solid`.\n */\n @Input()\n background: DynamicPageBackgroundType = 'solid';\n\n /** Whether DynamicPage should have responsive sides spacing changing with Page window width.\n * max-width: 599px - small\n * min-width: 600px and max-width: 1023px - medium\n * min-width: 1024px and max-width: 1439px - large\n * min-width: 1440px - extra large\n */\n @Input()\n autoResponsive = true;\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n @Input()\n set size(size: DynamicPageResponsiveSize) {\n this._size = size;\n this._propagateSizeToChildren();\n }\n\n get size(): DynamicPageResponsiveSize {\n return this._size;\n }\n\n _size: DynamicPageResponsiveSize = 'extra-large';\n\n /** Offset in PX\n * Should be added, when there is something else at the bottom and dynamic page is not expanded to bottom's corners\n */\n @Input()\n offset = 0;\n\n /**\n * Whether dynamic page should be expanded in whole page.\n */\n @Input()\n expandContent = true;\n\n /** @hidden reference to header component */\n @ContentChild(DynamicPageSubheaderComponent)\n _pageSubheaderComponent: DynamicPageSubheaderComponent;\n\n /** @hidden reference to title component */\n @ContentChild(DynamicPageHeaderComponent)\n _headerComponent: DynamicPageHeaderComponent;\n\n /** @hidden reference to content component */\n @ContentChild(DynamicPageContentComponent)\n _contentComponent: DynamicPageContentComponent;\n\n /** @hidden reference to tab component */\n @ContentChild(TabListComponent)\n _tabComponent: TabListComponent;\n\n /** @hidden */\n @ViewChild('dynamicPageElement')\n _dynamicPageElement: ElementRef;\n\n /** @hidden */\n _headerCollapsible = true;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n @Optional() private _columnLayout: FlexibleColumnLayoutComponent,\n @Optional() private _dynamicPageWrapper: DynamicPageWrapperDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._sizeChangeHandle();\n this._removeShadowWhenTabComponent();\n this._listenOnResize();\n this._listenOnCollapse();\n this._propagatePropertiesToChildren();\n if (this._pageSubheaderComponent?.collapsible) {\n this._addScrollListeners();\n }\n\n if (this._columnLayout && this.autoResponsive) {\n this._listenToLayoutChange();\n }\n\n setTimeout(() => this._setContainerPositions());\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** toggle the visibility of the header on click of title area. */\n toggleCollapse(): void {\n if (this._headerCollapsible) {\n this._dynamicPageService.toggleCollapsed();\n }\n }\n\n /**\n * Triggers recheck for spacing and sizing of elements inside DynamicPage.\n */\n refreshSize(): void {\n this._setContainerPositions();\n this._sizeChangeHandle();\n }\n\n /** Set the positions of the tabs and content with respect to the window */\n private _setContainerPositions(): void {\n this._setDynamicPageHeight();\n }\n\n /** @hidden */\n private _propagatePropertiesToChildren(): void {\n this._headerCollapsible = this._pageSubheaderComponent?.collapsible;\n this._propagateSizeToChildren();\n }\n\n /** @hidden\n * Functionality handling column layout changes,\n * - recalculate height of content element\n * - recheck size depending on width of DynamicPage\n */\n private _listenToLayoutChange(): void {\n this._columnLayout.layoutChange.pipe(takeUntil(this._onDestroy$), delay(1500)).subscribe(() => {\n this.refreshSize();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _propagateSizeToChildren(): void {\n if (this._headerComponent) {\n this._headerComponent.size = this.size;\n }\n this._setContainerPositions();\n }\n\n /** @hidden */\n private _listenOnCollapse(): void {\n this._dynamicPageService.subheaderVisibilityChange\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._setContainerPositions());\n }\n\n /** @hidden */\n private _getCalculatedFullHeight(element: HTMLElement): string {\n if (!element) {\n return null;\n }\n const distanceFromTop = element.getBoundingClientRect().top;\n return 'calc(100vh - ' + (distanceFromTop + this.offset) + 'px)';\n }\n\n /** @hidden */\n private _sizeChangeHandle(): void {\n if (!this._elementRef || !this.autoResponsive) {\n return;\n }\n const dynamicPageWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n this._dynamicPageService.pixelsSizeChanged.next(dynamicPageWidth);\n const size = dynamicPageWidthToSize(dynamicPageWidth);\n\n if (size !== this.size) {\n this.size = size;\n this._cd.detectChanges();\n }\n }\n\n /** @hidden */\n private _addScrollListeners(): void {\n const tabElement = this._tabComponent?.contentContainer?.nativeElement;\n if (tabElement) {\n this._listenOnScroll(tabElement);\n }\n\n const contentElement = this._contentComponent?.elementRef?.nativeElement;\n if (contentElement) {\n this._listenOnScroll(contentElement);\n }\n }\n\n /** @hidden */\n private _listenOnScroll(element: HTMLElement): void {\n fromEvent(element, 'scroll')\n .pipe(debounceTime(10), takeUntil(this._onDestroy$))\n .subscribe(() => {\n const collapse =\n !this._dynamicPageService.pinned.value &&\n (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);\n this._dynamicPageService.collapsed.next(collapse);\n });\n }\n\n /** @hidden Listen for window resize and adjust tab and content positions accordingly */\n private _listenOnResize(): void {\n const listener = this._dynamicPageWrapper ? this._listenToWrapperResize() : this._listenToWindowResize();\n\n listener.pipe(debounceTime(100), takeUntil(this._onDestroy$)).subscribe(() => {\n this._setContainerPositions();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _listenToWrapperResize(): Observable<ResizeObserverEntry[]> {\n return resizeObservable(this._dynamicPageWrapper.elementRef.nativeElement);\n }\n\n /** @hidden */\n private _listenToWindowResize(): Observable<ResizeObserverEntry[]> {\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n\n /** @hidden\n * set top position of DynamicPage on scrolling\n */\n private _setDynamicPageHeight(): void {\n if (!this._dynamicPageElement || !this.expandContent) {\n return;\n }\n const element = this._dynamicPageElement.nativeElement;\n this._renderer.setStyle(element, 'height', this._getCalculatedFullHeight(element));\n }\n\n /** @hidden */\n private _removeShadowWhenTabComponent(): void {\n if (!this._pageSubheaderComponent?.collapsible || !this._tabComponent) {\n return;\n }\n\n const pinCollapseShadowElement = this._pageSubheaderComponent?.pinCollapseContainer;\n\n if (pinCollapseShadowElement) {\n addClassNameToElement(\n this._renderer,\n pinCollapseShadowElement.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageCollapsibleHeaderPinCollapseNoShadow\n );\n }\n }\n}\n","<section\n #dynamicPageElement\n class=\"fd-dynamic-page\"\n [class.fd-dynamic-page--sm]=\"size === 'small'\"\n [class.fd-dynamic-page--md]=\"size === 'medium'\"\n [class.fd-dynamic-page--lg]=\"size === 'large'\"\n [class.fd-dynamic-page--xl]=\"size === 'extra-large'\"\n [class.fd-dynamic-page--transparent-bg]=\"background === 'transparent'\"\n [class.fd-dynamic-page--list-bg]=\"background === 'list'\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <header class=\"fd-dynamic-page__header\" [class.fd-dynamic-page__header--not-collapsible]=\"!_headerCollapsible\">\n <div>\n <div (click)=\"toggleCollapse()\" (keydown.enter)=\"toggleCollapse()\">\n <ng-content select=\"fd-dynamic-page-header\"></ng-content>\n </div>\n <ng-content select=\"fd-dynamic-page-subheader\"></ng-content>\n </div>\n </header>\n\n <ng-content select=\"fd-tab-list\"></ng-content>\n <ng-content select=\"fd-dynamic-page-content\"></ng-content>\n <footer>\n <ng-content select=\"fd-dynamic-page-footer\"></ng-content>\n </footer>\n</section>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-layout-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageLayoutActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageLayoutActionsToolbar, this._elementRef);\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-dynamic-page-footer',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageFooterComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';\nimport { DynamicPageGlobalActionsComponent } from './dynamic-page-header/actions/dynamic-page-global-actions.component';\nimport { DynamicPageLayoutActionsComponent } from './dynamic-page-header/actions/dynamic-page-layout-actions.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageComponent } from './dynamic-page.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicPageTitleContentComponent } from './dynamic-page-header/actions/dynamic-page-title-content.component';\nimport { ToolbarModule } from '@fundamental-ngx/core/toolbar';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\nimport { IgnoreClickOnSelectionModule } from '@fundamental-ngx/core/utils';\n\n@NgModule({\n declarations: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ],\n imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule, IgnoreClickOnSelectionModule],\n exports: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ]\n})\nexport class DynamicPageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;MAAa,uBAAuB,GAAG;IACnC,WAAW,EAAE,iBAAiB;IAC9B,oBAAoB,EAAE,6BAA6B;IACnD,wBAAwB,EAAE,iCAAiC;IAC3D,mCAAmC,EAAE,6CAA6C;IAClF,6BAA6B,EAAE,wCAAwC;IACvE,yBAAyB,EAAE,kCAAkC;IAC7D,gBAAgB,EAAE,wBAAwB;IAC1C,qBAAqB,EAAE,6BAA6B;IACpD,kBAAkB,EAAE,gCAAgC;IACpD,kBAAkB,EAAE,0BAA0B;IAC9C,+BAA+B,EAAE,mCAAmC;IACpE,+BAA+B,EAAE,mCAAmC;IACpE,iBAAiB,EAAE,yBAAyB;IAC5C,4BAA4B,EAAE,qCAAqC;IACnE,+CAA+C,EAC3C,qEAAqE;IACzE,eAAe,EAAE,uBAAuB;IACxC,wBAAwB,EAAE,mCAAmC;IAC7D,kBAAkB,EAAE,0BAA0B;IAC9C,8BAA8B,EAAE,wCAAwC;IACxE,wCAAwC,EAAE,wCAAwC;IAClF,sCAAsC,EAAE,mDAAmD;IAC3F,0BAA0B,EAAE,mCAAmC;IAC/D,mCAAmC,EAAE,mDAAmD;;;MCrB/E,qBAAqB,GAAG,CAAC,QAAmB,EAAE,OAAgB,EAAE,SAAiB;IAC1F,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,EAAE;AAEF;;;SAGgB,sBAAsB,CAAC,KAAa;IAChD,IAAI,KAAK,GAAG,GAAG,EAAE;QACb,OAAO,OAAO,CAAC;KAClB;SAAM,IAAI,KAAK,GAAG,IAAI,EAAE;QACrB,OAAO,QAAQ,CAAC;KACnB;SAAM,IAAI,KAAK,GAAG,IAAI,EAAE;QACrB,OAAO,OAAO,CAAC;KAClB;IACD,OAAO,aAAa,CAAC;AACzB;;MCCa,2BAA2B;;IAcpC,YAAoB,WAAoC,EAAS,SAAoB;QAAjE,gBAAW,GAAX,WAAW,CAAyB;QAAS,cAAS,GAAT,SAAS,CAAW;KAAI;;IAGzF,QAAQ;QACJ,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;KAC/E;;IAGD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;IAGO,0BAA0B,CAAC,SAAiB;QAChD,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACpF;;wHA7BQ,2BAA2B;4GAA3B,2BAA2B,2GCpBxC,kEAEA;2FDkBa,2BAA2B;kBAPvC,SAAS;+BACI,yBAAyB,mBAGlB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI;yHAOrC,QAAQ;sBADP,KAAK;gBAON,EAAE;sBADD,KAAK;;;AE5BV;;;MAIa,iBAAiB;IAD9B;;;;QAKI,gBAAW,GAAG,eAAe,CAAC;;;;QAK9B,kBAAa,GAAG,iBAAiB,CAAC;;;;QAKlC,aAAQ,GAAG,YAAY,CAAC;;;;QAKxB,eAAU,GAAG,cAAc,CAAC;KAC/B;;8GApBY,iBAAiB;kHAAjB,iBAAiB,cADJ,MAAM;2FACnB,iBAAiB;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCDrB,kBAAkB;IAD/B;;QAGI,cAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;QAGhD,WAAM,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;QAG7C,sBAAiB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;;QAGnD,8BAAyB,GAAG,IAAI,OAAO,EAAQ,CAAC;KAMnD;;IAHG,eAAe;QACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9C;;+GAhBQ,kBAAkB;mHAAlB,kBAAkB;2FAAlB,kBAAkB;kBAD9B,UAAU;;;ACcX,IAAI,sBAAsB,GAAG,CAAC,CAAC;MAOlB,6BAA6B;;IAyFtC,YACY,GAAsB,EACpB,kBAAqC,EACvC,mBAAuC;QAFvC,QAAG,GAAH,GAAG,CAAmB;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACvC,wBAAmB,GAAnB,mBAAmB,CAAoB;;;;;QAtFnD,gBAAW,GAAG,IAAI,CAAC;;;;;QAOnB,aAAQ,GAAG,KAAK,CAAC;;;;QAkBjB,gBAAW,GAAW,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;;;;QAM1D,kBAAa,GAAW,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;;QAK9D,SAAI,GAAG,QAAQ,CAAC;;;;QAOhB,OAAE,GAAG,6BAA6B,sBAAsB,EAAE,EAAE,CAAC;;;;QAY7D,iBAAY,GAAW,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;;;;QAMxD,mBAAc,GAAW,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;QAI5D,oBAAe,GAAG,IAAI,YAAY,EAAW,CAAC;;;;QAS9C,YAAO,GAAG,KAAK,CAAC;;;;;QAMR,eAAU,GAAG,KAAK,CAAC;QAQvB,IAAI,CAAC,mBAAmB,CAAC,SAAS;aAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC5B,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;KACzE;;;;IA/ED,IACI,SAAS,CAAC,SAAkB;QAC5B,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC1C;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;;;;;IA8ED,cAAc;QACV,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACjD;;;;;IAMD,YAAY;QACR,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtD;IAEO,sBAAsB,CAAC,SAAkB;QAC7C,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE;YAC/B,OAAO;SACV;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;KAC7D;;0HA/HQ,6BAA6B;8GAA7B,6BAA6B,wkBCxB1C,uqEAgDA;2FDxBa,6BAA6B;kBANzC,SAAS;+BACI,2BAA2B,mBAEpB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI;mKAQrC,WAAW;sBADV,KAAK;gBAQN,QAAQ;sBADP,KAAK;gBAOF,SAAS;sBADZ,KAAK;gBAaN,WAAW;sBADV,KAAK;gBAON,aAAa;sBADZ,KAAK;gBAMN,IAAI;sBAFH,KAAK;;sBACL,WAAW;uBAAC,WAAW;gBAQxB,EAAE;sBAFD,KAAK;;sBACL,WAAW;uBAAC,SAAS;gBAOtB,eAAe;sBADd,KAAK;gBAON,YAAY;sBADX,KAAK;gBAON,cAAc;sBADb,KAAK;gBAKN,eAAe;sBADd,MAAM;gBAKP,oBAAoB;sBADnB,SAAS;uBAAC,sBAAsB;;;ME/FxB,sBAAsB;IAC/B,iBAAiB,CAAC,MAAc,EAAE,UAAsB;;QAEpD,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,SAAS,EAAE;YACX,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACnC;KACJ;;mHAPQ,sBAAsB;uGAAtB,sBAAsB;2FAAtB,sBAAsB;kBADlC,SAAS;;;MCkBG,iCAAkC,SAAQ,sBAAsB;;IAMzE,YACY,WAAuB,EACvB,SAAoB,EACpB,aAAgC;QAExC,KAAK,EAAE,CAAC;QAJA,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAAmB;KAG3C;;IAGD,kBAAkB;QACd,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACxF;;IAGD,QAAQ,CAAC,IAA+B;QACpC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;SAC1C;KACJ;;IAGO,eAAe,CAAC,cAAuB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,cAAc,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,cAAc,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACvC,UAAU,CAAC;YACP,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;SACnD,CAAC,CAAC;KACN;;8HAlCQ,iCAAiC;kHAAjC,iCAAiC,qHAE5B,gBAAgB,uEANpB,2BAA2B;2FAI5B,iCAAiC;kBAN7C,SAAS;mBAAC;oBACP,QAAQ,EAAE,gCAAgC;oBAC1C,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACxC;yJAIG,iBAAiB;sBADhB,YAAY;uBAAC,gBAAgB;;;MCWrB,gCAAgC;;IASzC,YAAoB,aAAgC;QAAhC,kBAAa,GAAb,aAAa,CAAmB;;QANpD,YAAO,GAAG,KAAK,CAAC;KAMwC;;IAGxD,QAAQ,CAAC,IAA+B;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;KACtC;;6HAfQ,gCAAgC;iHAAhC,gCAAgC,qGA5B/B;;;;;;;;;;;;;;;;;;;;;;;;KAwBT;2FAIQ,gCAAgC;kBA9B5C,SAAS;mBAAC;oBACP,QAAQ,EAAE,+BAA+B;oBACzC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;KAwBT;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACxC;wGAIG,OAAO;sBADN,KAAK;;;MCVG,wBAAwB,GAAG,KAAK;MAYhC,0BAA0B;;IAkCnC,YACY,WAAoC,EACpC,SAAoB,EACpB,mBAAuC,EACvC,OAAe,EACf,aAAgC;QAJhC,gBAAW,GAAX,WAAW,CAAyB;QACpC,cAAS,GAAT,SAAS,CAAW;QACpB,wBAAmB,GAAnB,mBAAmB,CAAoB;QACvC,YAAO,GAAP,OAAO,CAAQ;QACf,kBAAa,GAAb,aAAa,CAAmB;;QArC5C,eAAU,GAAG,KAAK,CAAC;;QAuBnB,qBAAgB,GAAG,KAAK,CAAC;;QAMR,gBAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAS9D;;IAGJ,QAAQ;QACJ,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;;IAGD,eAAe;QACX,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;YACrF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;SACrC,CAAC,CAAC;KACN;;IAGD,WAAW;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;;;;;IAMD,IAAI,IAAI,CAAC,QAAmC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;KACzB;;IAGD,eAAe,CAAC,KAAiB;QAC7B,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;;;;;;IAOO,QAAQ,CAAC,QAAmC;QAChD,UAAU,CAAC;YACP,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;SACtC,CAAC,CAAC;KACN;;IAGO,0BAA0B,CAAC,SAAiB;QAChD,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACpF;;IAGO,4BAA4B,CAAC,OAAgB,EAAE,SAAiB;QACpE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC7D;;IAGO,2BAA2B;QAC/B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,aAAa,EAClD,uBAAuB,CAAC,qBAAqB,CAChD,CAAC;SACL;KACJ;;IAGO,oBAAoB;QACxB,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM;YAC1F,MAAM,eAAe,GAAY,MAAM,GAAG,wBAAwB,CAAC;YACnE,IAAI,eAAe,KAAK,IAAI,CAAC,gBAAgB,EAAE;gBAC3C,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;gBACxC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;aACtC;SACJ,CAAC,CAAC;KACN;;uHAzHQ,0BAA0B;2GAA1B,0BAA0B,kNAarB,mBAAmB,iFAInB,iCAAiC,kFAIjC,gCAAgC,gDC1DlD,ouEA2CA;2FDNa,0BAA0B;kBAVtC,SAAS;+BACI,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAC/B;wBACF,iBAAiB,EAAE,GAAG;qBACzB;4MAQD,KAAK;sBADJ,KAAK;gBAKN,QAAQ;sBADP,KAAK;gBAKN,oBAAoB;sBADnB,YAAY;uBAAC,mBAAmB;gBAKjC,cAAc;sBADb,YAAY;uBAAC,iCAAiC;gBAK/C,eAAe;sBADd,YAAY;uBAAC,gCAAgC;;;MErDrC,2BAA2B;IACpC,YAAmB,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;KAAI;;wHADjD,2BAA2B;4GAA3B,2BAA2B;2FAA3B,2BAA2B;kBAHvC,SAAS;mBAAC;oBACP,QAAQ,EAAE,mDAAmD;iBAChE;;;MCiCY,oBAAoB;;IAiF7B,YACc,GAAsB,EACxB,WAAoC,EACpC,SAAoB,EACpB,mBAAuC,EAC3B,aAA4C,EAC5C,mBAAgD;QAL1D,QAAG,GAAH,GAAG,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAyB;QACpC,cAAS,GAAT,SAAS,CAAW;QACpB,wBAAmB,GAAnB,mBAAmB,CAAoB;QAC3B,kBAAa,GAAb,aAAa,CAA+B;QAC5C,wBAAmB,GAAnB,mBAAmB,CAA6B;;QAnFxE,SAAI,GAAG,QAAQ,CAAC;;;;;QAWhB,eAAU,GAA8B,OAAO,CAAC;;;;;;;QAShD,mBAAc,GAAG,IAAI,CAAC;QAgBtB,UAAK,GAA8B,aAAa,CAAC;;;;QAMjD,WAAM,GAAG,CAAC,CAAC;;;;QAMX,kBAAa,GAAG,IAAI,CAAC;;QAuBrB,uBAAkB,GAAG,IAAI,CAAC;;QAGT,gBAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAU9D;;;;;IA1DJ,IACI,IAAI,CAAC,IAA+B;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;IAqDD,eAAe;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;YAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;QAED,UAAU,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;;IAGD,WAAW;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;;IAGD,cAAc;QACV,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;SAC9C;KACJ;;;;IAKD,WAAW;QACP,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;;IAGO,sBAAsB;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;;IAGO,8BAA8B;QAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC;QACpE,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;;;;;;IAOO,qBAAqB;QACzB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACrF,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;;IAGO,wBAAwB;QAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC1C;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;;IAGO,iBAAiB;QACrB,IAAI,CAAC,mBAAmB,CAAC,yBAAyB;aAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACjC,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;KACvD;;IAGO,wBAAwB,CAAC,OAAoB;QACjD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAC5D,OAAO,eAAe,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;KACpE;;IAGO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC3C,OAAO;SACV;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACtF,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAEtD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC5B;KACJ;;IAGO,mBAAmB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC;QACvE,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;SACpC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,aAAa,CAAC;QACzE,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SACxC;KACJ;;IAGO,eAAe,CAAC,OAAoB;QACxC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;aACvB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACnD,SAAS,CAAC;YACP,MAAM,QAAQ,GACV,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK;iBACrC,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;YAC5E,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACrD,CAAC,CAAC;KACV;;IAGO,eAAe;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEzG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;;IAGO,sBAAsB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAC9E;;IAGO,qBAAqB;QACzB,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC1D;;;;IAKO,qBAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAClD,OAAO;SACV;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;KACtF;;IAGO,6BAA6B;QACjC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACnE,OAAO;SACV;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;QAEpF,IAAI,wBAAwB,EAAE;YAC1B,qBAAqB,CACjB,IAAI,CAAC,SAAS,EACd,wBAAwB,CAAC,aAAa,EACtC,uBAAuB,CAAC,+CAA+C,CAC1E,CAAC;SACL;KACJ;;iHAvQQ,oBAAoB;qGAApB,oBAAoB,4QAFlB,CAAC,kBAAkB,CAAC,+EAyDjB,6BAA6B,mFAI7B,0BAA0B,oFAI1B,2BAA2B,gFAI3B,gBAAgB,2KCxGlC,0mCA0BA;2FDWa,oBAAoB;kBARhC,SAAS;+BACI,iBAAiB,mBAGV,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,aAC1B,CAAC,kBAAkB,CAAC;;0BAwF1B,QAAQ;;0BACR,QAAQ;4CAnFb,IAAI;sBAFH,KAAK;;sBACL,WAAW;uBAAC,WAAW;gBAKxB,SAAS;sBADR,KAAK;gBAQN,UAAU;sBADT,KAAK;gBAUN,cAAc;sBADb,KAAK;gBAQF,IAAI;sBADP,KAAK;gBAgBN,MAAM;sBADL,KAAK;gBAON,aAAa;sBADZ,KAAK;gBAKN,uBAAuB;sBADtB,YAAY;uBAAC,6BAA6B;gBAK3C,gBAAgB;sBADf,YAAY;uBAAC,0BAA0B;gBAKxC,iBAAiB;sBADhB,YAAY;uBAAC,2BAA2B;gBAKzC,aAAa;sBADZ,YAAY;uBAAC,gBAAgB;gBAK9B,mBAAmB;sBADlB,SAAS;uBAAC,oBAAoB;;;ME1FtB,iCAAkC,SAAQ,sBAAsB;IACzE,YACY,WAAuB,EACvB,SAAoB,EACpB,aAAgC;QAExC,KAAK,EAAE,CAAC;QAJA,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAAmB;KAG3C;;IAGD,kBAAkB;QACd,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,+BAA+B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAClG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACxF;;8HAbQ,iCAAiC;kHAAjC,iCAAiC,6FAJhC,2BAA2B;2FAI5B,iCAAiC;kBAN7C,SAAS;mBAAC;oBACP,QAAQ,EAAE,gCAAgC;oBAC1C,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACxC;;;MCTY,0BAA0B;;uHAA1B,0BAA0B;2GAA1B,0BAA0B,8DAJzB,2BAA2B;2FAI5B,0BAA0B;kBANtC,SAAS;mBAAC;oBACP,QAAQ,EAAE,wBAAwB;oBAClC,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACxC;;;MCmCY,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBAvBtB,oBAAoB;QACpB,0BAA0B;QAC1B,iCAAiC;QACjC,iCAAiC;QACjC,6BAA6B;QAC7B,2BAA2B;QAC3B,0BAA0B;QAC1B,gCAAgC;QAChC,2BAA2B,aAErB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B,aAE5F,oBAAoB;QACpB,0BAA0B;QAC1B,iCAAiC;QACjC,iCAAiC;QACjC,6BAA6B;QAC7B,2BAA2B;QAC3B,0BAA0B;QAC1B,gCAAgC;QAChC,2BAA2B;+GAGtB,iBAAiB,YAbjB,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B,CAAC;2FAaxF,iBAAiB;kBAzB7B,QAAQ;mBAAC;oBACN,YAAY,EAAE;wBACV,oBAAoB;wBACpB,0BAA0B;wBAC1B,iCAAiC;wBACjC,iCAAiC;wBACjC,6BAA6B;wBAC7B,2BAA2B;wBAC3B,0BAA0B;wBAC1B,gCAAgC;wBAChC,2BAA2B;qBAC9B;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B,CAAC;oBACjG,OAAO,EAAE;wBACL,oBAAoB;wBACpB,0BAA0B;wBAC1B,iCAAiC;wBACjC,iCAAiC;wBACjC,6BAA6B;wBAC7B,2BAA2B;wBAC3B,0BAA0B;wBAC1B,gCAAgC;wBAChC,2BAA2B;qBAC9B;iBACJ;;;ACzCD;;;;;;"}
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Input, NgModule, isDevMode, ElementRef, HostListener, InjectionToken, Injectable, Optional, Inject, EventEmitter, Output, ContentChild, ContentChildren, forwardRef, HostBinding, Pipe, NgModuleFactory } from '@angular/core';
2
+ import { InjectionToken, Directive, Inject, HostListener, NgModule, Input, isDevMode, ElementRef, Injectable, Optional, EventEmitter, Output, ContentChild, ContentChildren, forwardRef, HostBinding, Pipe, NgModuleFactory } from '@angular/core';
3
+ import { DOCUMENT, CommonModule } from '@angular/common';
3
4
  import { RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, UP_ARROW, SPACE, ESCAPE, DELETE, ENTER, TAB, HOME, END, ALT, CONTROL, META, SHIFT, BACKSPACE, A, C, V, X, PAGE_UP, PAGE_DOWN, DASH, NUMPAD_MINUS } from '@angular/cdk/keycodes';
4
5
  import { Observable, fromEvent, NEVER, BehaviorSubject, Subscription, merge, Subject } from 'rxjs';
5
6
  import { map, mapTo, pairwise, filter, takeUntil, tap, take, distinctUntilChanged, debounceTime, delay, startWith } from 'rxjs/operators';
6
- import { CommonModule, DOCUMENT } from '@angular/common';
7
7
  import * as i1 from '@angular/cdk/a11y';
8
8
  import { FocusKeyManager } from '@angular/cdk/a11y';
9
9
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
@@ -15,6 +15,71 @@ import { DragDrop, moveItemInArray, transferArrayItem, DragDropModule } from '@a
15
15
  import * as i1$4 from '@angular/router';
16
16
  import { createFocusTrap } from 'focus-trap';
17
17
 
18
+ const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');
19
+
20
+ /**
21
+ * Directive will stop propagation and prevent default of click, if selected area is coming from
22
+ * directive's host element. This gives ability to not cancel all clicks on element, just the ones
23
+ * which include selection
24
+ */
25
+ class IgnoreClickOnSelectionDirective {
26
+ /** @hidden */
27
+ constructor(document, _elementRef) {
28
+ this.document = document;
29
+ this._elementRef = _elementRef;
30
+ }
31
+ /** Host click listener. Checks for selection existence and if finds one, checks anchor */
32
+ clicked($event) {
33
+ const selection = this.document.getSelection();
34
+ if (selection.toString()) {
35
+ if (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||
36
+ this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement)) {
37
+ $event.stopPropagation();
38
+ $event.preventDefault();
39
+ }
40
+ }
41
+ }
42
+ }
43
+ IgnoreClickOnSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
44
+ IgnoreClickOnSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: IgnoreClickOnSelectionDirective, selector: "[fdIgnoreClickOnSelection]", host: { listeners: { "click": "clicked($event)" } }, providers: [
45
+ {
46
+ provide: IgnoreClickOnSelectionDirectiveToken,
47
+ useExisting: IgnoreClickOnSelectionDirective
48
+ }
49
+ ], ngImport: i0 });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionDirective, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ selector: '[fdIgnoreClickOnSelection]',
54
+ providers: [
55
+ {
56
+ provide: IgnoreClickOnSelectionDirectiveToken,
57
+ useExisting: IgnoreClickOnSelectionDirective
58
+ }
59
+ ]
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
62
+ type: Inject,
63
+ args: [DOCUMENT]
64
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { clicked: [{
65
+ type: HostListener,
66
+ args: ['click', ['$event']]
67
+ }] } });
68
+
69
+ class IgnoreClickOnSelectionModule {
70
+ }
71
+ IgnoreClickOnSelectionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
72
+ IgnoreClickOnSelectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionModule, declarations: [IgnoreClickOnSelectionDirective], imports: [CommonModule], exports: [IgnoreClickOnSelectionDirective] });
73
+ IgnoreClickOnSelectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [[CommonModule]] });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{
75
+ type: NgModule,
76
+ args: [{
77
+ declarations: [IgnoreClickOnSelectionDirective],
78
+ imports: [CommonModule],
79
+ exports: [IgnoreClickOnSelectionDirective]
80
+ }]
81
+ }] });
82
+
18
83
  class TemplateDirective {
19
84
  constructor(templateRef) {
20
85
  this.templateRef = templateRef;
@@ -3131,5 +3196,5 @@ function applyMixins(derivedCtor, baseCtors) {
3131
3196
  * Generated bundle index. Do not edit.
3132
3197
  */
3133
3198
 
3134
- export { ANY_LANGUAGE_LETTERS_GROUP_REGEX, ANY_LANGUAGE_LETTERS_REGEX, AbstractFdNgxClass, AutoCompleteDirective, AutoCompleteModule, ContentDensityEnum, ContentDensityService, DECIMAL_NUMBER_UNICODE_GROUP_REGEX, DECIMAL_NUMBER_UNICODE_RANGE, DECIMAL_NUMBER_UNICODE_REGEX, DEFAULT_CONTENT_DENSITY, DefaultTruncateCharCount, DisplayFnPipe, DndItemDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective, DndListDirective, DragAndDropModule, DynamicComponentContainer, DynamicComponentInjector, DynamicComponentService, ELEMENT_REF_EXCEPTION, FocusKeyManagerHelpersModule, FocusKeyManagerItemDirective, FocusKeyManagerListDirective, FocusTrapService, INVALID_DATE_ERROR, InitialFocusDirective, InitialFocusModule, IsCompactDensityPipe, KeyUtil, KeyboardSupportService, LETTERS_UNICODE_RANGE, LIST_ITEM_COMPONENT, LineClampDirective, LineClampModule, LineClampTargetDirective, ListGroupPipe, MOBILE_CONFIG_ERROR, OVERFLOW_PRIORITY_SCORE, OnlyDigitsDirective, OnlyDigitsModule, OverflowListDirective, OverflowListItemDirective, OverflowListModule, PipeModule, RTL_LANGUAGE, RangeSelector, ResizeDirective, ResizeHandleDirective, ResizeModule, RtlService, SafePipe, SearchHighlightPipe, THEME_SWITCHER_ROUTER_MISSING_ERROR, TemplateDirective, TemplateModule, ThemesService, TruncateDirective, TruncateModule, TwoDigitsPipe, UtilsModule, ValueByPathPipe, applyCssClass, applyCssStyle, applyMixins, getElementCapacity, getElementWidth, getRandomColorAccent, intersectionObservable, isCompactDensity, isValidContentDensity, parserFileSize, pxToNum, resizeObservable, scrollTop, toNativeElement, uuidv4 };
3199
+ export { ANY_LANGUAGE_LETTERS_GROUP_REGEX, ANY_LANGUAGE_LETTERS_REGEX, AbstractFdNgxClass, AutoCompleteDirective, AutoCompleteModule, ContentDensityEnum, ContentDensityService, DECIMAL_NUMBER_UNICODE_GROUP_REGEX, DECIMAL_NUMBER_UNICODE_RANGE, DECIMAL_NUMBER_UNICODE_REGEX, DEFAULT_CONTENT_DENSITY, DefaultTruncateCharCount, DisplayFnPipe, DndItemDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective, DndListDirective, DragAndDropModule, DynamicComponentContainer, DynamicComponentInjector, DynamicComponentService, ELEMENT_REF_EXCEPTION, FocusKeyManagerHelpersModule, FocusKeyManagerItemDirective, FocusKeyManagerListDirective, FocusTrapService, INVALID_DATE_ERROR, IgnoreClickOnSelectionDirective, IgnoreClickOnSelectionModule, InitialFocusDirective, InitialFocusModule, IsCompactDensityPipe, KeyUtil, KeyboardSupportService, LETTERS_UNICODE_RANGE, LIST_ITEM_COMPONENT, LineClampDirective, LineClampModule, LineClampTargetDirective, ListGroupPipe, MOBILE_CONFIG_ERROR, OVERFLOW_PRIORITY_SCORE, OnlyDigitsDirective, OnlyDigitsModule, OverflowListDirective, OverflowListItemDirective, OverflowListModule, PipeModule, RTL_LANGUAGE, RangeSelector, ResizeDirective, ResizeHandleDirective, ResizeModule, RtlService, SafePipe, SearchHighlightPipe, THEME_SWITCHER_ROUTER_MISSING_ERROR, TemplateDirective, TemplateModule, ThemesService, TruncateDirective, TruncateModule, TwoDigitsPipe, UtilsModule, ValueByPathPipe, applyCssClass, applyCssStyle, applyMixins, getElementCapacity, getElementWidth, getRandomColorAccent, intersectionObservable, isCompactDensity, isValidContentDensity, parserFileSize, pxToNum, resizeObservable, scrollTop, toNativeElement, uuidv4 };
3135
3200
  //# sourceMappingURL=fundamental-ngx-core-utils.mjs.map