@kirbydesign/designsystem 8.5.1 → 8.5.2

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.
@@ -12,7 +12,6 @@ class ActionGroupComponent {
12
12
  this.config = config;
13
13
  this.align = 'end';
14
14
  this._collapsedActions = [];
15
- this._isResizeable = false;
16
15
  this.collapseThreshold = 2;
17
16
  }
18
17
  get _align() {
@@ -43,7 +42,6 @@ class ActionGroupComponent {
43
42
  var _a;
44
43
  if (!this.config)
45
44
  return;
46
- this._isResizeable = this.config.isResizable;
47
45
  if (this.visibleActions === undefined && this.config.defaultVisibleActions !== undefined) {
48
46
  this.visibleActions = this.config.defaultVisibleActions;
49
47
  }
@@ -83,10 +81,10 @@ class ActionGroupComponent {
83
81
  }
84
82
  }
85
83
  /** @nocollapse */ ActionGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ActionGroupComponent, deps: [{ token: i0.Renderer2 }, { token: ACTIONGROUP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
86
- /** @nocollapse */ ActionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ActionGroupComponent, isStandalone: true, selector: "kirby-action-group", inputs: { visibleActions: "visibleActions", emphasizeActions: "emphasizeActions", align: "align" }, host: { properties: { "class.is-collapsed": "this._isCollapsed", "class.is-resizeable": "this._isResizeable", "class": "this._align" } }, queries: [{ propertyName: "buttonElements", predicate: ButtonComponent, read: ElementRef }, { propertyName: "buttons", predicate: ButtonComponent }], viewQueries: [{ propertyName: "hiddenLayer", first: true, predicate: ["hiddenLayer"], descendants: true, read: ElementRef, static: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true }], ngImport: i0, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative;overflow:hidden}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}:host(.is-resizeable) .hidden-layer{display:flex;flex-direction:row;justify-content:flex-end}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i1.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover", "_isMoreMenu"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ /** @nocollapse */ ActionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ActionGroupComponent, isStandalone: true, selector: "kirby-action-group", inputs: { visibleActions: "visibleActions", align: "align" }, host: { properties: { "class.is-collapsed": "this._isCollapsed", "class": "this._align" } }, queries: [{ propertyName: "buttonElements", predicate: ButtonComponent, read: ElementRef }, { propertyName: "buttons", predicate: ButtonComponent }], viewQueries: [{ propertyName: "hiddenLayer", first: true, predicate: ["hiddenLayer"], descendants: true, read: ElementRef, static: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true }], ngImport: i0, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative;overflow:hidden}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i1.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover", "_isMoreMenu"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
87
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ActionGroupComponent, decorators: [{
88
86
  type: Component,
89
- args: [{ selector: 'kirby-action-group', standalone: true, imports: [CommonModule, ButtonComponent, DropdownModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative;overflow:hidden}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}:host(.is-resizeable) .hidden-layer{display:flex;flex-direction:row;justify-content:flex-end}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"] }]
87
+ args: [{ selector: 'kirby-action-group', standalone: true, imports: [CommonModule, ButtonComponent, DropdownModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative;overflow:hidden}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"] }]
90
88
  }], ctorParameters: function () {
91
89
  return [{ type: i0.Renderer2 }, { type: undefined, decorators: [{
92
90
  type: Optional
@@ -96,8 +94,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
96
94
  }] }];
97
95
  }, propDecorators: { visibleActions: [{
98
96
  type: Input
99
- }], emphasizeActions: [{
100
- type: Input
101
97
  }], align: [{
102
98
  type: Input
103
99
  }], buttonElements: [{
@@ -115,9 +111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
115
111
  }], _isCollapsed: [{
116
112
  type: HostBinding,
117
113
  args: ['class.is-collapsed']
118
- }], _isResizeable: [{
119
- type: HostBinding,
120
- args: ['class.is-resizeable']
121
114
  }], _align: [{
122
115
  type: HostBinding,
123
116
  args: ['class']
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-action-group.mjs","sources":["../../../../libs/designsystem/action-group/src/action-group.component.ts","../../../../libs/designsystem/action-group/src/action-group.component.html","../../../../libs/designsystem/action-group/src/kirbydesign-designsystem-action-group.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n Optional,\n QueryList,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { DropdownComponent, DropdownModule } from '@kirbydesign/designsystem/dropdown';\n\nexport type ActionGroupConfig = {\n isResizable?: boolean;\n isCondensed?: boolean;\n defaultVisibleActions?: number;\n maxVisibleActions?: number;\n};\nexport const ACTIONGROUP_CONFIG = new InjectionToken<ActionGroupConfig>('action-group.config');\n\ntype CollapsedAction = { button: HTMLButtonElement; text: string };\n\n@Component({\n selector: 'kirby-action-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent, DropdownModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-group.component.html',\n styleUrls: ['./action-group.component.scss'],\n})\nexport class ActionGroupComponent implements AfterContentInit {\n @Input() visibleActions?: number;\n\n @Input() emphasizeActions?: boolean;\n\n @Input()\n align: 'start' | 'end' = 'end';\n\n @ContentChildren(ButtonComponent, { read: ElementRef }) private buttonElements?: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ContentChildren(ButtonComponent) private buttons?: QueryList<ButtonComponent>;\n @ViewChild('hiddenLayer', { read: ElementRef, static: true })\n private hiddenLayer!: ElementRef<HTMLElement>;\n /*\n * TEMPORARY MORE-MENU\n * dropdown ViewChild is only used for temporary more-menu\n */\n @ViewChild(DropdownComponent) private dropdown!: DropdownComponent;\n\n @HostBinding('class.is-collapsed')\n _isCollapsed: boolean;\n _collapsedActions: CollapsedAction[] = [];\n\n @HostBinding('class.is-resizeable')\n _isResizeable = false;\n\n @HostBinding('class')\n get _align() {\n return 'align-' + this.align;\n }\n\n private collapseThreshold = 2;\n\n constructor(\n private renderer: Renderer2,\n @Optional() @Inject(ACTIONGROUP_CONFIG) private config: ActionGroupConfig\n ) {}\n\n ngAfterContentInit(): void {\n // Ensure we collapse according to visibleActions if lower than our default threshold (2).\n // I.e. if there are 2 buttons and visibleActions = 1 we'll collapse the 2nd button into the menu:\n if (this.visibleActions < this.collapseThreshold) {\n this.collapseThreshold = this.visibleActions;\n }\n\n this.initializeFromConfig();\n\n if (this.visibleActions !== undefined) {\n this.initializeCollapsing();\n }\n }\n\n onActionSelect(action: CollapsedAction) {\n // Dropdown should not persist selected item, we want it to be re-selectable\n this.dropdown.selectedIndex = -1;\n\n const event = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n\n action.button.dispatchEvent(event);\n }\n\n private initializeFromConfig() {\n if (!this.config) return;\n\n this._isResizeable = this.config.isResizable;\n\n if (this.visibleActions === undefined && this.config.defaultVisibleActions !== undefined) {\n this.visibleActions = this.config.defaultVisibleActions;\n }\n\n if (this.config.maxVisibleActions !== undefined) {\n // Don't overwrite visibleActions value if configured lower than maxVisibleActions:\n if (!(this.visibleActions < this.config.maxVisibleActions)) {\n this.visibleActions = this.config.maxVisibleActions;\n }\n }\n\n if (this.config.isCondensed) {\n this.buttons?.forEach((button) => (button.showIconOnly = true));\n }\n }\n\n private initializeCollapsing() {\n if (this.buttonElements.length <= this.collapseThreshold) return;\n\n this.moveButtons();\n this.populateDropdown();\n this.toggleDropdown();\n }\n\n private moveButtons() {\n const buttonsToHide = [...this.buttonElements].slice(this.visibleActions);\n buttonsToHide.forEach((button) => {\n this.renderer.appendChild(this.hiddenLayer.nativeElement, button.nativeElement);\n });\n }\n\n private toggleDropdown() {\n const hasHiddenButtons = this.hiddenLayer.nativeElement.childElementCount > 0;\n this._isCollapsed = hasHiddenButtons;\n }\n\n private populateDropdown() {\n const hiddenButtons = Array.from(\n this.hiddenLayer.nativeElement.children\n ) as HTMLButtonElement[];\n\n this._collapsedActions = hiddenButtons.map((button) => ({\n button,\n text: button.textContent.trim(),\n }));\n }\n}\n","<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\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":"kirbydesign-designsystem-action-group.mjs","sources":["../../../../libs/designsystem/action-group/src/action-group.component.ts","../../../../libs/designsystem/action-group/src/action-group.component.html","../../../../libs/designsystem/action-group/src/kirbydesign-designsystem-action-group.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n Optional,\n QueryList,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { DropdownComponent, DropdownModule } from '@kirbydesign/designsystem/dropdown';\n\nexport type ActionGroupConfig = {\n isCondensed?: boolean;\n defaultVisibleActions?: number;\n maxVisibleActions?: number;\n};\nexport const ACTIONGROUP_CONFIG = new InjectionToken<ActionGroupConfig>('action-group.config');\n\ntype CollapsedAction = { button: HTMLButtonElement; text: string };\n\n@Component({\n selector: 'kirby-action-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent, DropdownModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-group.component.html',\n styleUrls: ['./action-group.component.scss'],\n})\nexport class ActionGroupComponent implements AfterContentInit {\n @Input() visibleActions?: number;\n\n @Input()\n align: 'start' | 'end' = 'end';\n\n @ContentChildren(ButtonComponent, { read: ElementRef }) private buttonElements?: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ContentChildren(ButtonComponent) private buttons?: QueryList<ButtonComponent>;\n @ViewChild('hiddenLayer', { read: ElementRef, static: true })\n private hiddenLayer!: ElementRef<HTMLElement>;\n /*\n * TEMPORARY MORE-MENU\n * dropdown ViewChild is only used for temporary more-menu\n */\n @ViewChild(DropdownComponent) private dropdown!: DropdownComponent;\n\n @HostBinding('class.is-collapsed')\n _isCollapsed: boolean;\n _collapsedActions: CollapsedAction[] = [];\n\n @HostBinding('class')\n get _align() {\n return 'align-' + this.align;\n }\n\n private collapseThreshold = 2;\n\n constructor(\n private renderer: Renderer2,\n @Optional() @Inject(ACTIONGROUP_CONFIG) private config: ActionGroupConfig\n ) {}\n\n ngAfterContentInit(): void {\n // Ensure we collapse according to visibleActions if lower than our default threshold (2).\n // I.e. if there are 2 buttons and visibleActions = 1 we'll collapse the 2nd button into the menu:\n if (this.visibleActions < this.collapseThreshold) {\n this.collapseThreshold = this.visibleActions;\n }\n\n this.initializeFromConfig();\n\n if (this.visibleActions !== undefined) {\n this.initializeCollapsing();\n }\n }\n\n onActionSelect(action: CollapsedAction) {\n // Dropdown should not persist selected item, we want it to be re-selectable\n this.dropdown.selectedIndex = -1;\n\n const event = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n\n action.button.dispatchEvent(event);\n }\n\n private initializeFromConfig() {\n if (!this.config) return;\n\n if (this.visibleActions === undefined && this.config.defaultVisibleActions !== undefined) {\n this.visibleActions = this.config.defaultVisibleActions;\n }\n\n if (this.config.maxVisibleActions !== undefined) {\n // Don't overwrite visibleActions value if configured lower than maxVisibleActions:\n if (!(this.visibleActions < this.config.maxVisibleActions)) {\n this.visibleActions = this.config.maxVisibleActions;\n }\n }\n\n if (this.config.isCondensed) {\n this.buttons?.forEach((button) => (button.showIconOnly = true));\n }\n }\n\n private initializeCollapsing() {\n if (this.buttonElements.length <= this.collapseThreshold) return;\n\n this.moveButtons();\n this.populateDropdown();\n this.toggleDropdown();\n }\n\n private moveButtons() {\n const buttonsToHide = [...this.buttonElements].slice(this.visibleActions);\n buttonsToHide.forEach((button) => {\n this.renderer.appendChild(this.hiddenLayer.nativeElement, button.nativeElement);\n });\n }\n\n private toggleDropdown() {\n const hasHiddenButtons = this.hiddenLayer.nativeElement.childElementCount > 0;\n this._isCollapsed = hasHiddenButtons;\n }\n\n private populateDropdown() {\n const hiddenButtons = Array.from(\n this.hiddenLayer.nativeElement.children\n ) as HTMLButtonElement[];\n\n this._collapsedActions = hiddenButtons.map((button) => ({\n button,\n text: button.textContent.trim(),\n }));\n }\n}\n","<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -55,7 +55,6 @@ class HeaderComponent {
55
55
  }
56
56
  ngOnInit() {
57
57
  this.actionGroupConfig = {
58
- isResizable: this.emphasizeActions,
59
58
  defaultVisibleActions: this.emphasizeActions ? undefined : 1,
60
59
  };
61
60
  this._actionGroupInjector = Injector.create({
@@ -84,10 +83,10 @@ class HeaderComponent {
84
83
  }
85
84
  }
86
85
  /** @nocollapse */ HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
87
- /** @nocollapse */ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HeaderComponent, selector: "kirby-header", inputs: { centered: "centered", titleMaxLines: "titleMaxLines", emphasizeActions: "emphasizeActions", title: "title", value: "value", valueUnit: "valueUnit", subtitle1: "subtitle1", subtitle2: "subtitle2" }, outputs: { titleClick: "titleClick" }, host: { properties: { "class.centered": "this.centered" } }, queries: [{ propertyName: "avatar", first: true, predicate: AvatarComponent, descendants: true }, { propertyName: "progressCircle", first: true, predicate: ProgressCircleComponent, descendants: true }, { propertyName: "flag", first: true, predicate: FlagComponent, descendants: true }, { propertyName: "actionsTemplate", first: true, predicate: HeaderActionsDirective, descendants: true, read: (TemplateRef) }, { propertyName: "customSectionTemplate", first: true, predicate: HeaderCustomSectionDirective, descendants: true, read: (TemplateRef) }, { propertyName: "titleActionIconTemplate", first: true, predicate: HeaderTitleActionIconDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true, read: ElementRef }, { propertyName: "actionsElement", first: true, predicate: ["actionsElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin-top:16px;margin-bottom:32px}@media (min-width: 721px){:host{margin-top:24px}}.container{display:flex;flex-direction:column;align-items:flex-start;max-width:100%;overflow:hidden}@media (min-width: 721px){.container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px}.container .title-container{grid-column-start:1}}:host(.centered){align-items:center}:host(.centered) .container{align-items:center}:host(.centered) .container>h1.title{text-align:center}:host(.centered) .container>h1.title.has-icon{justify-content:center}:host(.centered) .title-container{align-items:center;text-align:center}@media (min-width: 721px){:host(.centered) .container{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-self:stretch}:host(.centered) .actions{align-self:flex-start}:host(.centered) .container>h1.title,:host(.centered) .title-container{grid-column-start:2}}.actions{margin:0 4px;display:flex;justify-content:flex-end}@media (max-width: 720px){.actions{margin-top:24px}.actions:not(.emphasize){display:none}}.avatar,.flag,.title-container,.container>h1.title{padding:0 16px}.title-container{display:flex;flex-direction:column;overflow:hidden}.avatar{margin-bottom:16px}.flag{margin-bottom:4px}.title{margin-bottom:2px}.title.clickable{cursor:pointer}.title.has-icon{display:flex;flex-direction:row;align-items:center}.value{max-width:100%;margin-bottom:4px}.value-unit{font-weight:initial;color:var(--kirby-text-color-semi-dark);margin-left:4px;font-size:50%}.subtitle1,.subtitle2{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}.custom-section{margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
+ /** @nocollapse */ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HeaderComponent, selector: "kirby-header", inputs: { centered: "centered", titleMaxLines: "titleMaxLines", emphasizeActions: "emphasizeActions", title: "title", value: "value", valueUnit: "valueUnit", subtitle1: "subtitle1", subtitle2: "subtitle2" }, outputs: { titleClick: "titleClick" }, host: { properties: { "class.centered": "this.centered" } }, queries: [{ propertyName: "avatar", first: true, predicate: AvatarComponent, descendants: true }, { propertyName: "progressCircle", first: true, predicate: ProgressCircleComponent, descendants: true }, { propertyName: "flag", first: true, predicate: FlagComponent, descendants: true }, { propertyName: "actionsTemplate", first: true, predicate: HeaderActionsDirective, descendants: true, read: (TemplateRef) }, { propertyName: "customSectionTemplate", first: true, predicate: HeaderCustomSectionDirective, descendants: true, read: (TemplateRef) }, { propertyName: "titleActionIconTemplate", first: true, predicate: HeaderTitleActionIconDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true, read: ElementRef }, { propertyName: "actionsElement", first: true, predicate: ["actionsElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin-top:16px;margin-bottom:32px}@media (min-width: 721px){:host{margin-top:24px}}.container{display:flex;flex-direction:column;align-items:flex-start;max-width:100%;overflow:hidden}@media (min-width: 721px){:host(:not(.single-column)) .container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px}:host(:not(.single-column)) .title-container{grid-column-start:1}}:host(.centered){align-items:center}:host(.centered) .container{align-items:center}:host(.centered) .container>h1.title{text-align:center}:host(.centered) .container>h1.title.has-icon{justify-content:center}:host(.centered) .title-container{align-items:center;text-align:center}@media (min-width: 721px){:host(.centered):not(.single-column) .container{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-self:stretch}:host(.centered):not(.single-column) .actions{align-self:flex-start}:host(.centered):not(.single-column) .container>h1.title,:host(.centered):not(.single-column) .title-container{grid-column-start:2}}.actions{margin-top:24px}@media (max-width: 720px){.actions:not(.emphasize){display:none}}@media (min-width: 721px){:host(:not(.single-column)) .actions{margin:0 4px;display:flex;justify-content:flex-end}}.avatar,.flag,.title-container,.container>h1.title{padding:0 16px}.title-container{display:flex;flex-direction:column;overflow:hidden}.avatar{margin-bottom:16px}.flag{margin-bottom:4px}.title{margin-bottom:2px}.title.clickable{cursor:pointer}.title.has-icon{display:flex;flex-direction:row;align-items:center}.value{max-width:100%;margin-bottom:4px}.value-unit{font-weight:initial;color:var(--kirby-text-color-semi-dark);margin-left:4px;font-size:50%}.subtitle1,.subtitle2{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}.custom-section{margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, decorators: [{
89
88
  type: Component,
90
- args: [{ selector: 'kirby-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin-top:16px;margin-bottom:32px}@media (min-width: 721px){:host{margin-top:24px}}.container{display:flex;flex-direction:column;align-items:flex-start;max-width:100%;overflow:hidden}@media (min-width: 721px){.container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px}.container .title-container{grid-column-start:1}}:host(.centered){align-items:center}:host(.centered) .container{align-items:center}:host(.centered) .container>h1.title{text-align:center}:host(.centered) .container>h1.title.has-icon{justify-content:center}:host(.centered) .title-container{align-items:center;text-align:center}@media (min-width: 721px){:host(.centered) .container{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-self:stretch}:host(.centered) .actions{align-self:flex-start}:host(.centered) .container>h1.title,:host(.centered) .title-container{grid-column-start:2}}.actions{margin:0 4px;display:flex;justify-content:flex-end}@media (max-width: 720px){.actions{margin-top:24px}.actions:not(.emphasize){display:none}}.avatar,.flag,.title-container,.container>h1.title{padding:0 16px}.title-container{display:flex;flex-direction:column;overflow:hidden}.avatar{margin-bottom:16px}.flag{margin-bottom:4px}.title{margin-bottom:2px}.title.clickable{cursor:pointer}.title.has-icon{display:flex;flex-direction:row;align-items:center}.value{max-width:100%;margin-bottom:4px}.value-unit{font-weight:initial;color:var(--kirby-text-color-semi-dark);margin-left:4px;font-size:50%}.subtitle1,.subtitle2{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}.custom-section{margin-top:8px}\n"] }]
89
+ args: [{ selector: 'kirby-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;margin-top:16px;margin-bottom:32px}@media (min-width: 721px){:host{margin-top:24px}}.container{display:flex;flex-direction:column;align-items:flex-start;max-width:100%;overflow:hidden}@media (min-width: 721px){:host(:not(.single-column)) .container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:16px}:host(:not(.single-column)) .title-container{grid-column-start:1}}:host(.centered){align-items:center}:host(.centered) .container{align-items:center}:host(.centered) .container>h1.title{text-align:center}:host(.centered) .container>h1.title.has-icon{justify-content:center}:host(.centered) .title-container{align-items:center;text-align:center}@media (min-width: 721px){:host(.centered):not(.single-column) .container{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-self:stretch}:host(.centered):not(.single-column) .actions{align-self:flex-start}:host(.centered):not(.single-column) .container>h1.title,:host(.centered):not(.single-column) .title-container{grid-column-start:2}}.actions{margin-top:24px}@media (max-width: 720px){.actions:not(.emphasize){display:none}}@media (min-width: 721px){:host(:not(.single-column)) .actions{margin:0 4px;display:flex;justify-content:flex-end}}.avatar,.flag,.title-container,.container>h1.title{padding:0 16px}.title-container{display:flex;flex-direction:column;overflow:hidden}.avatar{margin-bottom:16px}.flag{margin-bottom:4px}.title{margin-bottom:2px}.title.clickable{cursor:pointer}.title.has-icon{display:flex;flex-direction:row;align-items:center}.value{max-width:100%;margin-bottom:4px}.value-unit{font-weight:initial;color:var(--kirby-text-color-semi-dark);margin-left:4px;font-size:50%}.subtitle1,.subtitle2{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}.custom-section{margin-top:8px}\n"] }]
91
90
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { centered: [{
92
91
  type: HostBinding,
93
92
  args: ['class.centered']
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-header.mjs","sources":["../../../../libs/designsystem/header/src/header.component.ts","../../../../libs/designsystem/header/src/header.component.html","../../../../libs/designsystem/header/src/header.module.ts","../../../../libs/designsystem/header/src/kirbydesign-designsystem-header.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ACTIONGROUP_CONFIG, ActionGroupConfig } from '@kirbydesign/designsystem/action-group';\nimport { AvatarComponent } from '@kirbydesign/designsystem/avatar';\nimport { FlagComponent } from '@kirbydesign/designsystem/flag';\nimport { ProgressCircleComponent } from '@kirbydesign/designsystem/progress-circle';\nimport type { FitHeadingConfig } from '@kirbydesign/designsystem/shared';\n\n@Directive({\n selector: '[kirbyHeaderActions]',\n})\nexport class HeaderActionsDirective {}\n\n@Directive({\n selector: '[kirbyHeaderCustomSection]',\n})\nexport class HeaderCustomSectionDirective {}\n\n@Directive({\n selector: '[kirbyHeaderTitleActionIcon]',\n})\nexport class HeaderTitleActionIconDirective {}\n\n@Component({\n selector: 'kirby-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent implements AfterContentInit, OnInit {\n @HostBinding('class.centered')\n @Input()\n centered?: boolean;\n\n @Input() titleMaxLines: number;\n @Input() emphasizeActions = false;\n\n fitHeadingConfig: FitHeadingConfig;\n\n @ContentChild(AvatarComponent)\n avatar: AvatarComponent;\n\n @ContentChild(ProgressCircleComponent)\n progressCircle: ProgressCircleComponent;\n\n @ContentChild(FlagComponent)\n flag: FlagComponent;\n\n @ViewChild('titleElement', { read: ElementRef })\n titleElement?: ElementRef<HTMLHeadingElement>;\n\n @ViewChild('actionsElement', { read: ElementRef })\n actionsElement?: ElementRef<HTMLDivElement>;\n\n @ContentChild(HeaderActionsDirective, { read: TemplateRef<HeaderActionsDirective> })\n actionsTemplate?: TemplateRef<HeaderActionsDirective>;\n\n @ContentChild(HeaderCustomSectionDirective, { read: TemplateRef<HeaderCustomSectionDirective> })\n customSectionTemplate?: TemplateRef<HeaderCustomSectionDirective>;\n\n @ContentChild(HeaderTitleActionIconDirective, { read: TemplateRef })\n titleActionIconTemplate: TemplateRef<HeaderTitleActionIconDirective>;\n\n @Input() title: string = null;\n @Input() value: string = null;\n @Input() valueUnit: string = null;\n @Input() subtitle1: string = null;\n @Input() subtitle2: string = null;\n\n @Output() titleClick = new EventEmitter<PointerEvent>();\n\n onTitleClick(event: PointerEvent) {\n this.titleClick.emit(event);\n }\n\n _actionGroupInjector: Injector;\n\n private actionGroupConfig: ActionGroupConfig;\n\n constructor(private injector: Injector) {}\n\n ngOnInit(): void {\n this.actionGroupConfig = {\n isResizable: this.emphasizeActions,\n defaultVisibleActions: this.emphasizeActions ? undefined : 1,\n };\n\n this._actionGroupInjector = Injector.create({\n providers: [\n {\n provide: ACTIONGROUP_CONFIG,\n useValue: this.actionGroupConfig,\n },\n ],\n parent: this.injector,\n });\n\n if (this.titleMaxLines > 0) {\n this.fitHeadingConfig = {\n maxLines: this.titleMaxLines,\n };\n }\n }\n\n ngAfterContentInit(): void {\n // If an avatar is present we default to centered layout - unless configured otherwise:\n if (this.avatar && this.centered === undefined) {\n this.centered = true;\n }\n\n if (this.centered) {\n this.actionGroupConfig.isCondensed = true;\n }\n }\n}\n","<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FitHeadingDirective } from '@kirbydesign/designsystem/shared';\n\nimport {\n HeaderActionsDirective,\n HeaderComponent,\n HeaderCustomSectionDirective,\n HeaderTitleActionIconDirective,\n} from './header.component';\n\nconst declarations = [\n HeaderComponent,\n HeaderActionsDirective,\n HeaderCustomSectionDirective,\n HeaderTitleActionIconDirective,\n];\n\n@NgModule({\n declarations: declarations,\n imports: [CommonModule, FitHeadingDirective],\n exports: declarations,\n})\nexport class HeaderModule {}\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":"kirbydesign-designsystem-header.mjs","sources":["../../../../libs/designsystem/header/src/header.component.ts","../../../../libs/designsystem/header/src/header.component.html","../../../../libs/designsystem/header/src/header.module.ts","../../../../libs/designsystem/header/src/kirbydesign-designsystem-header.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ACTIONGROUP_CONFIG, ActionGroupConfig } from '@kirbydesign/designsystem/action-group';\nimport { AvatarComponent } from '@kirbydesign/designsystem/avatar';\nimport { FlagComponent } from '@kirbydesign/designsystem/flag';\nimport { ProgressCircleComponent } from '@kirbydesign/designsystem/progress-circle';\nimport type { FitHeadingConfig } from '@kirbydesign/designsystem/shared';\n\n@Directive({\n selector: '[kirbyHeaderActions]',\n})\nexport class HeaderActionsDirective {}\n\n@Directive({\n selector: '[kirbyHeaderCustomSection]',\n})\nexport class HeaderCustomSectionDirective {}\n\n@Directive({\n selector: '[kirbyHeaderTitleActionIcon]',\n})\nexport class HeaderTitleActionIconDirective {}\n\n@Component({\n selector: 'kirby-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent implements AfterContentInit, OnInit {\n @HostBinding('class.centered')\n @Input()\n centered?: boolean;\n\n @Input() titleMaxLines: number;\n @Input() emphasizeActions = false;\n\n fitHeadingConfig: FitHeadingConfig;\n\n @ContentChild(AvatarComponent)\n avatar: AvatarComponent;\n\n @ContentChild(ProgressCircleComponent)\n progressCircle: ProgressCircleComponent;\n\n @ContentChild(FlagComponent)\n flag: FlagComponent;\n\n @ViewChild('titleElement', { read: ElementRef })\n titleElement?: ElementRef<HTMLHeadingElement>;\n\n @ViewChild('actionsElement', { read: ElementRef })\n actionsElement?: ElementRef<HTMLDivElement>;\n\n @ContentChild(HeaderActionsDirective, { read: TemplateRef<HeaderActionsDirective> })\n actionsTemplate?: TemplateRef<HeaderActionsDirective>;\n\n @ContentChild(HeaderCustomSectionDirective, { read: TemplateRef<HeaderCustomSectionDirective> })\n customSectionTemplate?: TemplateRef<HeaderCustomSectionDirective>;\n\n @ContentChild(HeaderTitleActionIconDirective, { read: TemplateRef })\n titleActionIconTemplate: TemplateRef<HeaderTitleActionIconDirective>;\n\n @Input() title: string = null;\n @Input() value: string = null;\n @Input() valueUnit: string = null;\n @Input() subtitle1: string = null;\n @Input() subtitle2: string = null;\n\n @Output() titleClick = new EventEmitter<PointerEvent>();\n\n onTitleClick(event: PointerEvent) {\n this.titleClick.emit(event);\n }\n\n _actionGroupInjector: Injector;\n\n private actionGroupConfig: ActionGroupConfig;\n\n constructor(private injector: Injector) {}\n\n ngOnInit(): void {\n this.actionGroupConfig = {\n defaultVisibleActions: this.emphasizeActions ? undefined : 1,\n };\n\n this._actionGroupInjector = Injector.create({\n providers: [\n {\n provide: ACTIONGROUP_CONFIG,\n useValue: this.actionGroupConfig,\n },\n ],\n parent: this.injector,\n });\n\n if (this.titleMaxLines > 0) {\n this.fitHeadingConfig = {\n maxLines: this.titleMaxLines,\n };\n }\n }\n\n ngAfterContentInit(): void {\n // If an avatar is present we default to centered layout - unless configured otherwise:\n if (this.avatar && this.centered === undefined) {\n this.centered = true;\n }\n\n if (this.centered) {\n this.actionGroupConfig.isCondensed = true;\n }\n }\n}\n","<div *ngIf=\"!!avatar || !!progressCircle\" class=\"avatar\">\n <ng-content select=\"kirby-avatar,kirby-progress-circle\"></ng-content>\n</div>\n\n<div *ngIf=\"!!flag\" class=\"flag\">\n <ng-content select=\"kirby-flag\"></ng-content>\n</div>\n\n<div class=\"container\">\n <!-- Title and value - title: -->\n <h1 *ngIf=\"!!title && !!value\" #titleElement class=\"title kirby-text-medium\" [class.clickable]=\"titleClick.observed\" [class.has-icon]=\"!!titleActionIconTemplate\" (click)=\"onTitleClick($event)\">\n {{ title }}\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </h1>\n <div class=\"title-container\">\n <!-- Only title, no value: -->\n <h1 *ngIf=\"!!title && !value\" #titleElement class=\"title\" [kirbyFitHeading]=\"fitHeadingConfig\">\n {{ title }}\n </h1>\n \n <!-- Title and value - value: -->\n <h3 *ngIf=\"!!value\" class=\"value kirby-text-display-3\" [kirbyFitHeading]=\"fitHeadingConfig\">{{ value }}<span class=\"value-unit semi-dark-text\" *ngIf=\"!!valueUnit\">{{ valueUnit }}</span></h3>\n \n <!-- Subtitles: -->\n <div *ngIf=\"!!subtitle1\" class=\"subtitle1 kirby-text-small\">\n {{ subtitle1 }}\n </div>\n <div *ngIf=\"!!subtitle2\" class=\"subtitle2 kirby-text-small\">\n {{ subtitle2 }}\n </div>\n\n <!-- Custom section -->\n <div\n *ngIf=\"!!customSectionTemplate\"\n class=\"custom-section\"\n >\n <ng-container *ngTemplateOutlet=\"customSectionTemplate\"></ng-container>\n </div>\n </div>\n \n <!-- Actions: -->\n <div\n *ngIf=\"!!actionsTemplate\"\n #actionsElement\n class=\"actions\"\n [class.emphasize]=\"emphasizeActions\"\n >\n <ng-container *ngTemplateOutlet=\"actionsTemplate; injector: _actionGroupInjector\"></ng-container>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FitHeadingDirective } from '@kirbydesign/designsystem/shared';\n\nimport {\n HeaderActionsDirective,\n HeaderComponent,\n HeaderCustomSectionDirective,\n HeaderTitleActionIconDirective,\n} from './header.component';\n\nconst declarations = [\n HeaderComponent,\n HeaderActionsDirective,\n HeaderCustomSectionDirective,\n HeaderTitleActionIconDirective,\n];\n\n@NgModule({\n declarations: declarations,\n imports: [CommonModule, FitHeadingDirective],\n exports: declarations,\n})\nexport class HeaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -251,7 +251,6 @@ class PageComponent {
251
251
  this.removeWrapper();
252
252
  this.setToolbarBackgroundPart();
253
253
  const actionGroupConfig = {
254
- isResizable: false,
255
254
  isCondensed: true,
256
255
  maxVisibleActions: 1,
257
256
  };
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-page.mjs","sources":["../../../../libs/designsystem/page/src/page.component.ts","../../../../libs/designsystem/page/src/page.component.html","../../../../libs/designsystem/page/src/page-footer/page-footer.component.ts","../../../../libs/designsystem/page/src/page-footer/page-footer.component.html","../../../../libs/designsystem/page/src/page.module.ts","../../../../libs/designsystem/page/src/kirbydesign-designsystem-page.ts"],"sourcesContent":["import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router, RouterEvent } from '@angular/router';\nimport {\n IonBackButtonDelegate,\n IonContent,\n IonFooter,\n IonHeader,\n IonRouterOutlet,\n IonToolbar,\n NavController,\n} from '@ionic/angular';\nimport { ScrollDetail } from '@ionic/core';\nimport { selectedTabClickEvent, TabsComponent } from '@kirbydesign/designsystem/tabs';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '@kirbydesign/designsystem/helpers';\nimport {\n ModalElementComponent,\n ModalElementsAdvertiser,\n ModalElementType,\n ModalNavigationService,\n ModalWrapperComponent,\n} from '@kirbydesign/designsystem/modal';\nimport { FitHeadingConfig, ResizeObserverService } from '@kirbydesign/designsystem/shared';\nimport {\n HeaderActionsDirective,\n HeaderComponent,\n HeaderTitleActionIconDirective,\n} from '@kirbydesign/designsystem/header';\nimport { ACTIONGROUP_CONFIG, ActionGroupConfig } from '@kirbydesign/designsystem/action-group';\n\n/**\n * Specify scroll event debounce time in ms and scrolled offset from top in pixels\n */\nconst contentScrollDebounceTimeInMS = 10;\nconst contentScrolledOffsetInPixels = 4;\n\ntype stickyConfig = { sticky: boolean };\ntype fixedConfig = { fixed: boolean };\n\nexport const PAGE_BACK_BUTTON_OVERRIDE = new InjectionToken<PageBackButtonOverride>(\n 'page-back-button-override'\n);\n\nexport interface PageBackButtonOverride {\n navigateBack: (\n routerOutlet: IonRouterOutlet,\n navCtrl: NavController,\n defaultBackHref: string\n ) => void;\n}\n\n/**\n * Event emitted when \"pull-to-refresh\" begins.\n */\nexport interface PullToRefreshEvent {\n /**\n * Invoke this callback-method when action to perform upon \"pull-to-refresh\" completes.\n */\n complete();\n}\n\n@Directive({\n selector: '[kirbyPageTitle]',\n})\nexport class PageTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageSubtitle]',\n})\nexport class PageSubtitleDirective {}\n\n@Directive({\n selector: '[kirbyPageToolbarTitle]',\n})\nexport class PageToolbarTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageActions]',\n})\nexport class PageActionsDirective {\n @Input('kirbyPageActions') config: stickyConfig | fixedConfig;\n private readonly stickyDefault = true;\n private readonly fixedDefault = false;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isSticky(): boolean {\n return this.config ? (this.config as stickyConfig).sticky : this.stickyDefault;\n }\n\n get isFixed(): boolean {\n return this.config ? (this.config as fixedConfig).fixed : this.fixedDefault;\n }\n}\n\n@Directive({\n selector: '[kirbyPageContent]',\n})\nexport class PageContentDirective {\n @Input('kirbyPageContent') config: fixedConfig;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isFixed(): boolean {\n return this.config && this.config.fixed;\n }\n}\n\n@Directive({\n selector: '[kirbyPageStickyContent]',\n})\nexport class PageStickyContentDirective {}\n\n@Component({\n selector: 'kirby-page-progress',\n template: `\n <ng-content></ng-content>\n `,\n styles: [':host {display: flex}'],\n})\nexport class PageProgressComponent extends ModalElementComponent implements OnInit {\n // TODO: Find alternative implementation, which aligns with future page configuration / consumption\n // This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario\n @HostBinding('attr.slot') slot = 'start';\n\n constructor(\n @Optional() @SkipSelf() private modalWrapper: ModalWrapperComponent,\n @Optional() modalElementsAdvertiser: ModalElementsAdvertiser,\n elementRef: ElementRef<HTMLElement>\n ) {\n super(ModalElementType.PAGE_PROGRESS, elementRef, modalElementsAdvertiser);\n }\n\n ngOnInit(): void {\n if (this.modalWrapper && this.modalWrapper.config.flavor === 'drawer') {\n this.slot = 'end';\n }\n }\n}\n@Component({\n selector: 'kirby-page-title',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageTitleComponent extends ModalElementComponent {\n constructor(\n elementRef: ElementRef<HTMLElement>,\n @Optional() modalElementsAdvertiser: ModalElementsAdvertiser\n ) {\n super(ModalElementType.TITLE, elementRef, modalElementsAdvertiser);\n }\n}\n\n@Component({\n selector: 'kirby-page-content',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageContentComponent {}\n\n@Component({\n selector: 'kirby-page-actions',\n template: `\n <ng-content select=\"button[kirby-button]\"></ng-content>\n `,\n})\nexport class PageActionsComponent {}\n\n@Component({\n selector: 'kirby-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent\n implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked, OnChanges\n{\n @Input() title: string;\n @Input() subtitle: string;\n @Input() toolbarTitle: string;\n @Input() titleAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() defaultBackHref: string;\n @Input() hideBackButton: boolean;\n @Input() titleMaxLines: number;\n @Input() maxWidth: 'default' | 'standard' | 'optimized' | 'full' = 'default';\n\n private _tabBarBottomHidden: boolean;\n public get tabBarBottomHidden(): boolean {\n return this._tabBarBottomHidden;\n }\n @Input()\n public set tabBarBottomHidden(value: boolean) {\n if (this.tabsComponent) {\n // as we are setting a class on tabs, we need this to happen in a separate cd cycle\n setTimeout(() => (this.tabsComponent.tabBarBottomHidden = value));\n }\n this._tabBarBottomHidden = value;\n }\n\n @Output() enter = new EventEmitter<void>();\n @Output() leave = new EventEmitter<void>();\n @Output() refresh = new EventEmitter<PullToRefreshEvent>();\n @Output() backButtonClick = new EventEmitter<Event>();\n\n @ViewChild(IonContent, { static: true }) private content?: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef })\n private ionContentElement: ElementRef<HTMLIonContentElement>;\n @ViewChild(IonHeader, { static: true, read: ElementRef })\n ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n @ViewChild(IonFooter, { static: true, read: ElementRef })\n private ionFooterElement: ElementRef<HTMLIonFooterElement>;\n @ViewChild(IonToolbar, { static: true, read: ElementRef })\n private ionToolbarElement: ElementRef<HTMLIonToolbarElement>;\n\n @ViewChild(IonBackButtonDelegate, { static: false })\n private backButtonDelegate: IonBackButtonDelegate;\n @ViewChild('pageTitle', { static: false, read: ElementRef })\n private pageTitle: ElementRef;\n @ViewChild('stickyContentContainer', { static: false, read: ElementRef })\n private stickyContentContainer: ElementRef;\n\n @ViewChild('simpleTitleTemplate', { static: true, read: TemplateRef })\n private simpleTitleTemplate: TemplateRef<any>;\n @ViewChild('simpleToolbarTitleTemplate', { static: true, read: TemplateRef })\n private simpleToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageToolbarTitleDirective, { static: false, read: TemplateRef })\n private customToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageTitleDirective, { static: false, read: TemplateRef })\n customTitleTemplate: TemplateRef<any>;\n @ContentChild(PageSubtitleDirective, { static: false, read: TemplateRef })\n customSubtitleTemplate: TemplateRef<any>;\n @ContentChildren(PageActionsDirective)\n customActions: QueryList<PageActionsDirective>;\n @ContentChildren(PageContentDirective)\n private customContent: QueryList<PageContentDirective>;\n @ContentChild(PageStickyContentDirective, { static: false, read: TemplateRef })\n private stickyContentRef: TemplateRef<any>;\n @ContentChild(HeaderComponent)\n header?: HeaderComponent;\n\n hasHeader: boolean;\n hasPageTitle: boolean;\n hasPageSubtitle: boolean;\n toolbarTitleVisible: boolean;\n toolbarActionsVisible: boolean;\n isContentScrolled: boolean;\n isStickyContentPinned = false;\n\n fitHeadingConfig: FitHeadingConfig;\n\n toolbarTitleTemplate: TemplateRef<any>;\n customContentTemplate: TemplateRef<any>;\n pageActionsTemplate: TemplateRef<any>;\n fixedContentTemplate: TemplateRef<any>;\n stickyActionsTemplate: TemplateRef<any>;\n fixedActionsTemplate: TemplateRef<any>;\n stickyContentTemplate: TemplateRef<PageStickyContentDirective>;\n headerActionsTemplate: TemplateRef<HeaderActionsDirective>;\n titleActionIconTemplate: TemplateRef<HeaderTitleActionIconDirective>;\n headerTitleClick?: EventEmitter<PointerEvent>;\n hasInteractiveTitle = false;\n\n private titleIntersectionObserver?: IntersectionObserver;\n private stickyActionsIntersectionObserver?: IntersectionObserver;\n private stickyContentIntersectionObserver?: IntersectionObserver;\n private isObservingTitle = false;\n private isObservingActions = false;\n\n private url: string;\n private isActive: boolean;\n\n private ngOnDestroy$: Subject<void> = new Subject<void>();\n private contentScrolled$: Observable<ScrollDetail>;\n\n private navigationStart$: Observable<RouterEvent> = this.router.events.pipe(\n filter((event: RouterEvent) => event instanceof NavigationStart),\n takeUntil(this.ngOnDestroy$)\n );\n\n private navigationEnd$: Observable<RouterEvent> = this.router.events.pipe(\n filter((event: RouterEvent) => event instanceof NavigationEnd),\n takeUntil(this.ngOnDestroy$)\n );\n\n toolbarActionGroupInjector: Injector;\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n private renderer: Renderer2,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private zone: NgZone,\n private modalNavigationService: ModalNavigationService,\n private resizeObserverService: ResizeObserverService,\n @Optional() @SkipSelf() private tabsComponent: TabsComponent,\n @Optional()\n @Inject(PAGE_BACK_BUTTON_OVERRIDE)\n private backButtonOverride: PageBackButtonOverride,\n @Optional()\n private routerOutlet: IonRouterOutlet,\n @Optional()\n private navCtrl: NavController\n ) {}\n\n private contentReadyPromise: Promise<void>;\n private whenContentReady() {\n if (!this.contentReadyPromise) {\n this.contentReadyPromise = new Promise((resolve) => {\n this.resizeObserverService.observe(this.ionContentElement, (entry) => {\n if (entry.contentRect.height > 0) {\n this.resizeObserverService.unobserve(this.ionContentElement);\n resolve();\n }\n });\n });\n }\n return this.contentReadyPromise;\n }\n\n ngOnInit(): void {\n this.removeWrapper();\n this.setToolbarBackgroundPart();\n\n const actionGroupConfig: ActionGroupConfig = {\n isResizable: false,\n isCondensed: true,\n maxVisibleActions: 1,\n };\n this.toolbarActionGroupInjector = Injector.create({\n providers: [\n {\n provide: ACTIONGROUP_CONFIG,\n useValue: actionGroupConfig,\n },\n ],\n parent: this.injector,\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.titleMaxLines) {\n this.fitHeadingConfig = {\n maxLines: changes.titleMaxLines.currentValue,\n };\n }\n if (changes.subtitle && !changes.subtitle.isFirstChange) {\n this.subtitle = changes.title.currentValue;\n this.hasPageSubtitle = this.subtitle !== undefined;\n }\n }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.contentScrolled$ = this.content.ionScroll.pipe(\n debounceTime(contentScrollDebounceTimeInMS),\n map((event) => event.detail),\n takeUntil(this.ngOnDestroy$)\n );\n\n this.contentScrolled$.subscribe((scrollInfo: ScrollDetail) => {\n if (scrollInfo.scrollTop > contentScrolledOffsetInPixels !== this.isContentScrolled) {\n this.isContentScrolled = !this.isContentScrolled;\n this.changeDetectorRef.detectChanges();\n }\n });\n });\n\n // This instance has observed a page enter so register the correct url for this instance\n this.url = this.router.url;\n this.onEnter();\n\n // Watch navigation events for page enter and leave\n this.navigationStart$.subscribe((event: NavigationStart) => {\n if (\n this.getPathname(event.url) !== this.getPathname(this.url) &&\n !this.modalNavigationService.isModalRoute(this.url) &&\n !this.modalNavigationService.isModalRoute(event.url)\n ) {\n this.onLeave();\n }\n });\n\n this.navigationEnd$.subscribe((event: NavigationEnd) => {\n if (this.getPathname(event.urlAfterRedirects) === this.getPathname(this.url)) {\n this.onEnter();\n }\n });\n\n this.interceptBackButtonClicksSetup();\n this.initializeStickyIntersectionObserver();\n }\n\n ngAfterContentChecked(): void {\n this.initializeHeader();\n this.initializeTitle();\n this.initializeActions();\n this.initializeContent();\n this.initializeStickyContent();\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.ngOnDestroy$.next();\n this.ngOnDestroy$.complete();\n\n this.titleIntersectionObserver?.disconnect();\n this.stickyActionsIntersectionObserver?.disconnect();\n this.stickyContentIntersectionObserver?.disconnect();\n }\n\n delegateRefreshEvent(event: any): void {\n this.refresh.emit({\n complete: event.target.complete.bind(event.target),\n });\n }\n\n getMaxWidthClasses() {\n if (!this.maxWidth) {\n return '';\n }\n if (this.maxWidth === 'default') {\n return '';\n }\n return `max-width-${this.maxWidth}`;\n }\n\n onTitleClick(event: PointerEvent) {\n this.headerTitleClick?.emit(event);\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);\n this.renderer.appendChild(parent, this.ionContentElement.nativeElement);\n this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);\n }\n\n private setToolbarBackgroundPart() {\n // Ensure ion-toolbar custom element has been defined (primarily when testing, but doesn't hurt):\n customElements.whenDefined(this.ionToolbarElement.nativeElement.localName).then(() => {\n this.ionToolbarElement.nativeElement.componentOnReady().then((toolbar) => {\n const toolbarBackground = toolbar.shadowRoot.querySelector('.toolbar-background');\n if (toolbarBackground) {\n this.renderer.setAttribute(toolbarBackground, 'part', 'background');\n }\n });\n });\n }\n\n private onEnter() {\n if (this.isActive) return;\n this.isActive = true;\n\n this.enter.emit();\n\n this.observeTitle();\n this.observeActions();\n }\n\n private onLeave() {\n if (!this.isActive) return;\n this.isActive = false;\n\n this.leave.emit();\n\n this.unobserveTitle();\n this.unobserveActions();\n\n if (this.tabBarBottomHidden && this.tabsComponent) {\n this.tabsComponent.tabBarBottomHidden = false;\n }\n }\n\n private interceptBackButtonClicksSetup() {\n if (this.backButtonOverride) {\n this.backButtonDelegate.onClick = (event: Event) => {\n event.preventDefault();\n this.backButtonOverride.navigateBack(this.routerOutlet, this.navCtrl, this.defaultBackHref);\n };\n }\n\n // Intercept back-button click events, defaulting to the built-in click-handler.\n if (this.backButtonClick.observers.length === 0) {\n this.backButtonClick\n .pipe(takeUntil(this.ngOnDestroy$))\n .subscribe(this.backButtonDelegate.onClick.bind(this.backButtonDelegate));\n }\n this.backButtonDelegate.onClick = (event: Event) => {\n this.backButtonClick.emit(event);\n };\n }\n\n private initializeStickyIntersectionObserver() {\n if (this.stickyContentTemplate) {\n // Sticky content present - start observing for stickiness\n if (!this.stickyContentIntersectionObserver) {\n this.stickyContentIntersectionObserver = this.createStickyContentIntersectionObserver();\n }\n setTimeout(() => {\n this.stickyContentIntersectionObserver.observe(this.stickyContentContainer.nativeElement);\n });\n }\n }\n\n private initializeHeader() {\n if (this.hasHeader === undefined && !!this.header) {\n this.hasHeader = true;\n // Header could later be removed from DOM (e.g. in virtual scrolling scenarios),\n // so store a reference to `header.titleActionIconTemplate` and `header.titleClick`:\n this.titleActionIconTemplate = this.header.titleActionIconTemplate;\n if (this.header.titleClick.observed) {\n this.hasInteractiveTitle = true;\n this.headerTitleClick = this.header.titleClick;\n }\n }\n }\n\n private initializeTitle() {\n if (this.hasHeader && this.isObservingTitle && !this.header?.titleElement) {\n // If we're already observing the header's title element, but it's no longer present,\n // it means it has been removed from DOM (e.g. in virtual scrolling scenarios).\n // Flip observing flag:\n this.isObservingTitle = false;\n }\n if (this.hasPageTitle) {\n if (!this.isObservingTitle && !!this.header?.titleElement) {\n // Header and title element re-attached to DOM - observe title:\n this.observeTitle();\n }\n\n // Ensures rest of initializeTitle() won't run, if already initialized\n return;\n }\n\n this.hasPageTitle =\n this.title !== undefined || !!this.customTitleTemplate || !!this.header?.title;\n this.toolbarTitleVisible = !this.hasPageTitle;\n this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;\n if (this.header?.title && !this.toolbarTitle) {\n this.toolbarTitle = this.header.title;\n }\n\n this.observeTitle();\n\n const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;\n /* eslint-disable */\n // prettier-ignore\n this.toolbarTitleTemplate = this.customToolbarTitleTemplate\n ? this.customToolbarTitleTemplate\n : typeof this.toolbarTitle === 'string'\n ? this.simpleToolbarTitleTemplate\n : defaultTitleTemplate;\n }\n\n private observeTitle() {\n if (!this.hasPageTitle) {\n // Nothing to observe\n return;\n }\n if (this.isObservingTitle) {\n // Already observing\n return;\n }\n\n // We are not actually observing the title until after the `whenContentReady` promise has resolved,\n // but since we've already checked that the page has a title in the guard above,\n // we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:\n this.isObservingTitle = true;\n\n if (!this.titleIntersectionObserver) {\n this.titleIntersectionObserver = new IntersectionObserver(\n (entries) => {\n // In rare scenarios we get more than 1 entry - use the last one:\n const lastEntry = entries[entries.length - 1];\n if (lastEntry) {\n const showToolbarTitle = !lastEntry.isIntersecting;\n // Only flip the flag and run Change Detection when changed:\n if (showToolbarTitle !== this.toolbarTitleVisible) {\n this.toolbarTitleVisible = showToolbarTitle;\n this.changeDetectorRef.detectChanges();\n }\n }\n },\n { root: this.ionContentElement.nativeElement }\n );\n }\n\n // Run outside Angular to prevent unnecessary triggering change detection\n // and - under certain conditions - an infinite loop when called within ngAfterContentChecked:\n this.zone.runOutsideAngular(() => {\n this.whenContentReady().then(() => {\n const titleElementRef = this.pageTitle || this.header?.titleElement;\n if (titleElementRef?.nativeElement) {\n this.titleIntersectionObserver.observe(titleElementRef.nativeElement);\n }\n });\n });\n }\n\n private unobserveTitle() {\n const titleElementRef = this.pageTitle || this.header?.titleElement;\n if (titleElementRef) {\n this.titleIntersectionObserver?.unobserve(titleElementRef.nativeElement);\n }\n this.isObservingTitle = false;\n }\n\n private initializeActions() {\n if (this.headerActionsTemplate === undefined && !!this.header) {\n this.headerActionsTemplate = this.header.actionsTemplate;\n }\n if (this.hasHeader && this.isObservingActions && !this.header?.actionsElement) {\n // If we're already observing the header's actions element, but it's no longer present,\n // it means it has been removed from DOM (e.g. in virtual scrolling scenarios).\n // Flip observing flag:\n this.isObservingActions = false;\n }\n\n this.observeActions();\n\n this.customActions.forEach((pageAction) => {\n if (pageAction.isFixed) {\n this.fixedActionsTemplate = pageAction.template;\n } else if (pageAction.isSticky) {\n this.stickyActionsTemplate = pageAction.template;\n } else {\n this.pageActionsTemplate = pageAction.template;\n }\n });\n }\n\n private observeActions() {\n if (!this.header?.actionsElement) {\n // Nothing to observe\n return;\n }\n\n if (this.isObservingActions) {\n // Already observing\n return;\n }\n\n // We are not actually observing actions until after the `whenContentReady` promise has resolved,\n // but since we've already checked that there's an actions element present in the guard above,\n // we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:\n this.isObservingActions = true;\n\n if (!this.stickyActionsIntersectionObserver) {\n this.stickyActionsIntersectionObserver = new IntersectionObserver(\n (entries) => {\n // In rare scenarios we get more than 1 entry - use the last one:\n const lastEntry = entries[entries.length - 1];\n if (lastEntry) {\n const showToolbarActions = !lastEntry.isIntersecting;\n // Only flip the flag and run Change Detection when changed:\n if (showToolbarActions !== this.toolbarActionsVisible) {\n this.toolbarActionsVisible = showToolbarActions;\n this.changeDetectorRef.detectChanges();\n }\n }\n },\n { root: this.ionContentElement.nativeElement }\n );\n }\n\n // Run outside Angular to prevent unnecessary triggering change detection\n // and - under certain conditions - an infinite loop when called within ngAfterContentChecked:\n this.zone.runOutsideAngular(() => {\n this.whenContentReady().then(() => {\n if (this.header?.actionsElement?.nativeElement) {\n this.stickyActionsIntersectionObserver.observe(this.header.actionsElement.nativeElement);\n }\n });\n });\n }\n\n private unobserveActions() {\n if (this.header?.actionsElement) {\n this.stickyActionsIntersectionObserver?.unobserve(this.header.actionsElement.nativeElement);\n }\n this.isObservingActions = false;\n }\n\n private initializeContent() {\n this.customContent.forEach((content) => {\n if (content.isFixed) {\n this.fixedContentTemplate = content.template;\n } else {\n this.customContentTemplate = content.template;\n }\n });\n }\n\n private initializeStickyContent() {\n this.stickyContentTemplate = this.stickyContentRef;\n }\n\n private createStickyContentIntersectionObserver() {\n const options: IntersectionObserverInit = {\n root: this.ionContentElement.nativeElement,\n threshold: 1,\n };\n\n const callback: IntersectionObserverCallback = (entries) => {\n if (this.isStickyContentPinned !== !entries[0].isIntersecting) {\n this.isStickyContentPinned = !this.isStickyContentPinned;\n this.changeDetectorRef.detectChanges();\n }\n };\n return new IntersectionObserver(callback, options);\n }\n\n private getPathname(url: string) {\n return url.split('?')[0];\n }\n\n @HostListener('window:keyboardWillShow', ['$event'])\n _onKeyboardWillShow(info?: { keyboardHeight: number }) {\n if (info && info.keyboardHeight) {\n this.ionContentElement.nativeElement.style.setProperty(\n '--keyboard-offset',\n `${info.keyboardHeight}px`\n );\n }\n }\n\n @HostListener('window:keyboardWillHide')\n _onKeyboardWillHide() {\n this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');\n }\n\n @HostListener(`window:${selectedTabClickEvent}`)\n _onSelectedTabClick() {\n if (this.content) {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n }\n }\n}\n","<ion-header>\n <ion-toolbar\n [class.content-scrolled]=\"isContentScrolled\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <span\n [class.clickable]=\"hasInteractiveTitle\"\n [class.has-icon]=\"!!titleActionIconTemplate\"\n (click)=\"onTitleClick($event)\"\n >\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </span>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!headerActionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerActionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !hasHeader\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"hasHeader\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\n\nimport { PageComponent } from '../page.component';\n\n@Component({\n selector: 'kirby-page-footer',\n templateUrl: './page-footer.component.html',\n styleUrls: ['./page-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageFooterComponent implements OnDestroy {\n @Input()\n hasPadding: boolean = true;\n\n constructor(\n @Optional() @SkipSelf() private pageComponent: PageComponent,\n private hostElement: ElementRef,\n private renderer: Renderer2\n ) {\n if (!pageComponent) {\n throw new Error('Page footer must reside inside of a Kirby page');\n }\n }\n\n close() {\n this.pageComponent.tabBarBottomHidden = false;\n this.renderer.removeChild(\n this.hostElement.nativeElement.parentElement,\n this.hostElement.nativeElement,\n true\n );\n }\n\n ngOnDestroy(): void {\n this.pageComponent.tabBarBottomHidden = false;\n }\n}\n","<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { SpinnerModule } from '@kirbydesign/designsystem/spinner';\nimport { FitHeadingDirective } from '@kirbydesign/designsystem/shared';\n\nimport { HeaderModule } from '@kirbydesign/designsystem/header';\nimport { PageFooterComponent } from './page-footer/page-footer.component';\nimport {\n PageActionsComponent,\n PageActionsDirective,\n PageComponent,\n PageContentComponent,\n PageContentDirective,\n PageProgressComponent,\n PageStickyContentDirective,\n PageSubtitleDirective,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n} from './page.component';\n\n@NgModule({\n declarations: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n PageStickyContentDirective,\n ],\n imports: [CommonModule, IonicModule, FitHeadingDirective, SpinnerModule, HeaderModule],\n exports: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n FitHeadingDirective,\n PageStickyContentDirective,\n ],\n})\nexport class PageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-page.mjs","sources":["../../../../libs/designsystem/page/src/page.component.ts","../../../../libs/designsystem/page/src/page.component.html","../../../../libs/designsystem/page/src/page-footer/page-footer.component.ts","../../../../libs/designsystem/page/src/page-footer/page-footer.component.html","../../../../libs/designsystem/page/src/page.module.ts","../../../../libs/designsystem/page/src/kirbydesign-designsystem-page.ts"],"sourcesContent":["import {\n AfterContentChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n SkipSelf,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, NavigationStart, Router, RouterEvent } from '@angular/router';\nimport {\n IonBackButtonDelegate,\n IonContent,\n IonFooter,\n IonHeader,\n IonRouterOutlet,\n IonToolbar,\n NavController,\n} from '@ionic/angular';\nimport { ScrollDetail } from '@ionic/core';\nimport { selectedTabClickEvent, TabsComponent } from '@kirbydesign/designsystem/tabs';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { KirbyAnimation } from '@kirbydesign/designsystem/helpers';\nimport {\n ModalElementComponent,\n ModalElementsAdvertiser,\n ModalElementType,\n ModalNavigationService,\n ModalWrapperComponent,\n} from '@kirbydesign/designsystem/modal';\nimport { FitHeadingConfig, ResizeObserverService } from '@kirbydesign/designsystem/shared';\nimport {\n HeaderActionsDirective,\n HeaderComponent,\n HeaderTitleActionIconDirective,\n} from '@kirbydesign/designsystem/header';\nimport { ACTIONGROUP_CONFIG, ActionGroupConfig } from '@kirbydesign/designsystem/action-group';\n\n/**\n * Specify scroll event debounce time in ms and scrolled offset from top in pixels\n */\nconst contentScrollDebounceTimeInMS = 10;\nconst contentScrolledOffsetInPixels = 4;\n\ntype stickyConfig = { sticky: boolean };\ntype fixedConfig = { fixed: boolean };\n\nexport const PAGE_BACK_BUTTON_OVERRIDE = new InjectionToken<PageBackButtonOverride>(\n 'page-back-button-override'\n);\n\nexport interface PageBackButtonOverride {\n navigateBack: (\n routerOutlet: IonRouterOutlet,\n navCtrl: NavController,\n defaultBackHref: string\n ) => void;\n}\n\n/**\n * Event emitted when \"pull-to-refresh\" begins.\n */\nexport interface PullToRefreshEvent {\n /**\n * Invoke this callback-method when action to perform upon \"pull-to-refresh\" completes.\n */\n complete();\n}\n\n@Directive({\n selector: '[kirbyPageTitle]',\n})\nexport class PageTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageSubtitle]',\n})\nexport class PageSubtitleDirective {}\n\n@Directive({\n selector: '[kirbyPageToolbarTitle]',\n})\nexport class PageToolbarTitleDirective {}\n\n@Directive({\n selector: '[kirbyPageActions]',\n})\nexport class PageActionsDirective {\n @Input('kirbyPageActions') config: stickyConfig | fixedConfig;\n private readonly stickyDefault = true;\n private readonly fixedDefault = false;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isSticky(): boolean {\n return this.config ? (this.config as stickyConfig).sticky : this.stickyDefault;\n }\n\n get isFixed(): boolean {\n return this.config ? (this.config as fixedConfig).fixed : this.fixedDefault;\n }\n}\n\n@Directive({\n selector: '[kirbyPageContent]',\n})\nexport class PageContentDirective {\n @Input('kirbyPageContent') config: fixedConfig;\n\n constructor(public template: TemplateRef<any>) {}\n\n get isFixed(): boolean {\n return this.config && this.config.fixed;\n }\n}\n\n@Directive({\n selector: '[kirbyPageStickyContent]',\n})\nexport class PageStickyContentDirective {}\n\n@Component({\n selector: 'kirby-page-progress',\n template: `\n <ng-content></ng-content>\n `,\n styles: [':host {display: flex}'],\n})\nexport class PageProgressComponent extends ModalElementComponent implements OnInit {\n // TODO: Find alternative implementation, which aligns with future page configuration / consumption\n // This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario\n @HostBinding('attr.slot') slot = 'start';\n\n constructor(\n @Optional() @SkipSelf() private modalWrapper: ModalWrapperComponent,\n @Optional() modalElementsAdvertiser: ModalElementsAdvertiser,\n elementRef: ElementRef<HTMLElement>\n ) {\n super(ModalElementType.PAGE_PROGRESS, elementRef, modalElementsAdvertiser);\n }\n\n ngOnInit(): void {\n if (this.modalWrapper && this.modalWrapper.config.flavor === 'drawer') {\n this.slot = 'end';\n }\n }\n}\n@Component({\n selector: 'kirby-page-title',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageTitleComponent extends ModalElementComponent {\n constructor(\n elementRef: ElementRef<HTMLElement>,\n @Optional() modalElementsAdvertiser: ModalElementsAdvertiser\n ) {\n super(ModalElementType.TITLE, elementRef, modalElementsAdvertiser);\n }\n}\n\n@Component({\n selector: 'kirby-page-content',\n template: `\n <ng-content></ng-content>\n `,\n})\nexport class PageContentComponent {}\n\n@Component({\n selector: 'kirby-page-actions',\n template: `\n <ng-content select=\"button[kirby-button]\"></ng-content>\n `,\n})\nexport class PageActionsComponent {}\n\n@Component({\n selector: 'kirby-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent\n implements OnInit, OnDestroy, AfterViewInit, AfterContentChecked, OnChanges\n{\n @Input() title: string;\n @Input() subtitle: string;\n @Input() toolbarTitle: string;\n @Input() titleAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() defaultBackHref: string;\n @Input() hideBackButton: boolean;\n @Input() titleMaxLines: number;\n @Input() maxWidth: 'default' | 'standard' | 'optimized' | 'full' = 'default';\n\n private _tabBarBottomHidden: boolean;\n public get tabBarBottomHidden(): boolean {\n return this._tabBarBottomHidden;\n }\n @Input()\n public set tabBarBottomHidden(value: boolean) {\n if (this.tabsComponent) {\n // as we are setting a class on tabs, we need this to happen in a separate cd cycle\n setTimeout(() => (this.tabsComponent.tabBarBottomHidden = value));\n }\n this._tabBarBottomHidden = value;\n }\n\n @Output() enter = new EventEmitter<void>();\n @Output() leave = new EventEmitter<void>();\n @Output() refresh = new EventEmitter<PullToRefreshEvent>();\n @Output() backButtonClick = new EventEmitter<Event>();\n\n @ViewChild(IonContent, { static: true }) private content?: IonContent;\n @ViewChild(IonContent, { static: true, read: ElementRef })\n private ionContentElement: ElementRef<HTMLIonContentElement>;\n @ViewChild(IonHeader, { static: true, read: ElementRef })\n ionHeaderElement: ElementRef<HTMLIonHeaderElement>;\n @ViewChild(IonFooter, { static: true, read: ElementRef })\n private ionFooterElement: ElementRef<HTMLIonFooterElement>;\n @ViewChild(IonToolbar, { static: true, read: ElementRef })\n private ionToolbarElement: ElementRef<HTMLIonToolbarElement>;\n\n @ViewChild(IonBackButtonDelegate, { static: false })\n private backButtonDelegate: IonBackButtonDelegate;\n @ViewChild('pageTitle', { static: false, read: ElementRef })\n private pageTitle: ElementRef;\n @ViewChild('stickyContentContainer', { static: false, read: ElementRef })\n private stickyContentContainer: ElementRef;\n\n @ViewChild('simpleTitleTemplate', { static: true, read: TemplateRef })\n private simpleTitleTemplate: TemplateRef<any>;\n @ViewChild('simpleToolbarTitleTemplate', { static: true, read: TemplateRef })\n private simpleToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageToolbarTitleDirective, { static: false, read: TemplateRef })\n private customToolbarTitleTemplate: TemplateRef<any>;\n @ContentChild(PageTitleDirective, { static: false, read: TemplateRef })\n customTitleTemplate: TemplateRef<any>;\n @ContentChild(PageSubtitleDirective, { static: false, read: TemplateRef })\n customSubtitleTemplate: TemplateRef<any>;\n @ContentChildren(PageActionsDirective)\n customActions: QueryList<PageActionsDirective>;\n @ContentChildren(PageContentDirective)\n private customContent: QueryList<PageContentDirective>;\n @ContentChild(PageStickyContentDirective, { static: false, read: TemplateRef })\n private stickyContentRef: TemplateRef<any>;\n @ContentChild(HeaderComponent)\n header?: HeaderComponent;\n\n hasHeader: boolean;\n hasPageTitle: boolean;\n hasPageSubtitle: boolean;\n toolbarTitleVisible: boolean;\n toolbarActionsVisible: boolean;\n isContentScrolled: boolean;\n isStickyContentPinned = false;\n\n fitHeadingConfig: FitHeadingConfig;\n\n toolbarTitleTemplate: TemplateRef<any>;\n customContentTemplate: TemplateRef<any>;\n pageActionsTemplate: TemplateRef<any>;\n fixedContentTemplate: TemplateRef<any>;\n stickyActionsTemplate: TemplateRef<any>;\n fixedActionsTemplate: TemplateRef<any>;\n stickyContentTemplate: TemplateRef<PageStickyContentDirective>;\n headerActionsTemplate: TemplateRef<HeaderActionsDirective>;\n titleActionIconTemplate: TemplateRef<HeaderTitleActionIconDirective>;\n headerTitleClick?: EventEmitter<PointerEvent>;\n hasInteractiveTitle = false;\n\n private titleIntersectionObserver?: IntersectionObserver;\n private stickyActionsIntersectionObserver?: IntersectionObserver;\n private stickyContentIntersectionObserver?: IntersectionObserver;\n private isObservingTitle = false;\n private isObservingActions = false;\n\n private url: string;\n private isActive: boolean;\n\n private ngOnDestroy$: Subject<void> = new Subject<void>();\n private contentScrolled$: Observable<ScrollDetail>;\n\n private navigationStart$: Observable<RouterEvent> = this.router.events.pipe(\n filter((event: RouterEvent) => event instanceof NavigationStart),\n takeUntil(this.ngOnDestroy$)\n );\n\n private navigationEnd$: Observable<RouterEvent> = this.router.events.pipe(\n filter((event: RouterEvent) => event instanceof NavigationEnd),\n takeUntil(this.ngOnDestroy$)\n );\n\n toolbarActionGroupInjector: Injector;\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n private renderer: Renderer2,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private zone: NgZone,\n private modalNavigationService: ModalNavigationService,\n private resizeObserverService: ResizeObserverService,\n @Optional() @SkipSelf() private tabsComponent: TabsComponent,\n @Optional()\n @Inject(PAGE_BACK_BUTTON_OVERRIDE)\n private backButtonOverride: PageBackButtonOverride,\n @Optional()\n private routerOutlet: IonRouterOutlet,\n @Optional()\n private navCtrl: NavController\n ) {}\n\n private contentReadyPromise: Promise<void>;\n private whenContentReady() {\n if (!this.contentReadyPromise) {\n this.contentReadyPromise = new Promise((resolve) => {\n this.resizeObserverService.observe(this.ionContentElement, (entry) => {\n if (entry.contentRect.height > 0) {\n this.resizeObserverService.unobserve(this.ionContentElement);\n resolve();\n }\n });\n });\n }\n return this.contentReadyPromise;\n }\n\n ngOnInit(): void {\n this.removeWrapper();\n this.setToolbarBackgroundPart();\n\n const actionGroupConfig: ActionGroupConfig = {\n isCondensed: true,\n maxVisibleActions: 1,\n };\n this.toolbarActionGroupInjector = Injector.create({\n providers: [\n {\n provide: ACTIONGROUP_CONFIG,\n useValue: actionGroupConfig,\n },\n ],\n parent: this.injector,\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.titleMaxLines) {\n this.fitHeadingConfig = {\n maxLines: changes.titleMaxLines.currentValue,\n };\n }\n if (changes.subtitle && !changes.subtitle.isFirstChange) {\n this.subtitle = changes.title.currentValue;\n this.hasPageSubtitle = this.subtitle !== undefined;\n }\n }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.contentScrolled$ = this.content.ionScroll.pipe(\n debounceTime(contentScrollDebounceTimeInMS),\n map((event) => event.detail),\n takeUntil(this.ngOnDestroy$)\n );\n\n this.contentScrolled$.subscribe((scrollInfo: ScrollDetail) => {\n if (scrollInfo.scrollTop > contentScrolledOffsetInPixels !== this.isContentScrolled) {\n this.isContentScrolled = !this.isContentScrolled;\n this.changeDetectorRef.detectChanges();\n }\n });\n });\n\n // This instance has observed a page enter so register the correct url for this instance\n this.url = this.router.url;\n this.onEnter();\n\n // Watch navigation events for page enter and leave\n this.navigationStart$.subscribe((event: NavigationStart) => {\n if (\n this.getPathname(event.url) !== this.getPathname(this.url) &&\n !this.modalNavigationService.isModalRoute(this.url) &&\n !this.modalNavigationService.isModalRoute(event.url)\n ) {\n this.onLeave();\n }\n });\n\n this.navigationEnd$.subscribe((event: NavigationEnd) => {\n if (this.getPathname(event.urlAfterRedirects) === this.getPathname(this.url)) {\n this.onEnter();\n }\n });\n\n this.interceptBackButtonClicksSetup();\n this.initializeStickyIntersectionObserver();\n }\n\n ngAfterContentChecked(): void {\n this.initializeHeader();\n this.initializeTitle();\n this.initializeActions();\n this.initializeContent();\n this.initializeStickyContent();\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.ngOnDestroy$.next();\n this.ngOnDestroy$.complete();\n\n this.titleIntersectionObserver?.disconnect();\n this.stickyActionsIntersectionObserver?.disconnect();\n this.stickyContentIntersectionObserver?.disconnect();\n }\n\n delegateRefreshEvent(event: any): void {\n this.refresh.emit({\n complete: event.target.complete.bind(event.target),\n });\n }\n\n getMaxWidthClasses() {\n if (!this.maxWidth) {\n return '';\n }\n if (this.maxWidth === 'default') {\n return '';\n }\n return `max-width-${this.maxWidth}`;\n }\n\n onTitleClick(event: PointerEvent) {\n this.headerTitleClick?.emit(event);\n }\n\n private removeWrapper() {\n const parent = this.elementRef.nativeElement.parentNode;\n this.renderer.removeChild(parent, this.elementRef.nativeElement);\n this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);\n this.renderer.appendChild(parent, this.ionContentElement.nativeElement);\n this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);\n }\n\n private setToolbarBackgroundPart() {\n // Ensure ion-toolbar custom element has been defined (primarily when testing, but doesn't hurt):\n customElements.whenDefined(this.ionToolbarElement.nativeElement.localName).then(() => {\n this.ionToolbarElement.nativeElement.componentOnReady().then((toolbar) => {\n const toolbarBackground = toolbar.shadowRoot.querySelector('.toolbar-background');\n if (toolbarBackground) {\n this.renderer.setAttribute(toolbarBackground, 'part', 'background');\n }\n });\n });\n }\n\n private onEnter() {\n if (this.isActive) return;\n this.isActive = true;\n\n this.enter.emit();\n\n this.observeTitle();\n this.observeActions();\n }\n\n private onLeave() {\n if (!this.isActive) return;\n this.isActive = false;\n\n this.leave.emit();\n\n this.unobserveTitle();\n this.unobserveActions();\n\n if (this.tabBarBottomHidden && this.tabsComponent) {\n this.tabsComponent.tabBarBottomHidden = false;\n }\n }\n\n private interceptBackButtonClicksSetup() {\n if (this.backButtonOverride) {\n this.backButtonDelegate.onClick = (event: Event) => {\n event.preventDefault();\n this.backButtonOverride.navigateBack(this.routerOutlet, this.navCtrl, this.defaultBackHref);\n };\n }\n\n // Intercept back-button click events, defaulting to the built-in click-handler.\n if (this.backButtonClick.observers.length === 0) {\n this.backButtonClick\n .pipe(takeUntil(this.ngOnDestroy$))\n .subscribe(this.backButtonDelegate.onClick.bind(this.backButtonDelegate));\n }\n this.backButtonDelegate.onClick = (event: Event) => {\n this.backButtonClick.emit(event);\n };\n }\n\n private initializeStickyIntersectionObserver() {\n if (this.stickyContentTemplate) {\n // Sticky content present - start observing for stickiness\n if (!this.stickyContentIntersectionObserver) {\n this.stickyContentIntersectionObserver = this.createStickyContentIntersectionObserver();\n }\n setTimeout(() => {\n this.stickyContentIntersectionObserver.observe(this.stickyContentContainer.nativeElement);\n });\n }\n }\n\n private initializeHeader() {\n if (this.hasHeader === undefined && !!this.header) {\n this.hasHeader = true;\n // Header could later be removed from DOM (e.g. in virtual scrolling scenarios),\n // so store a reference to `header.titleActionIconTemplate` and `header.titleClick`:\n this.titleActionIconTemplate = this.header.titleActionIconTemplate;\n if (this.header.titleClick.observed) {\n this.hasInteractiveTitle = true;\n this.headerTitleClick = this.header.titleClick;\n }\n }\n }\n\n private initializeTitle() {\n if (this.hasHeader && this.isObservingTitle && !this.header?.titleElement) {\n // If we're already observing the header's title element, but it's no longer present,\n // it means it has been removed from DOM (e.g. in virtual scrolling scenarios).\n // Flip observing flag:\n this.isObservingTitle = false;\n }\n if (this.hasPageTitle) {\n if (!this.isObservingTitle && !!this.header?.titleElement) {\n // Header and title element re-attached to DOM - observe title:\n this.observeTitle();\n }\n\n // Ensures rest of initializeTitle() won't run, if already initialized\n return;\n }\n\n this.hasPageTitle =\n this.title !== undefined || !!this.customTitleTemplate || !!this.header?.title;\n this.toolbarTitleVisible = !this.hasPageTitle;\n this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;\n if (this.header?.title && !this.toolbarTitle) {\n this.toolbarTitle = this.header.title;\n }\n\n this.observeTitle();\n\n const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;\n /* eslint-disable */\n // prettier-ignore\n this.toolbarTitleTemplate = this.customToolbarTitleTemplate\n ? this.customToolbarTitleTemplate\n : typeof this.toolbarTitle === 'string'\n ? this.simpleToolbarTitleTemplate\n : defaultTitleTemplate;\n }\n\n private observeTitle() {\n if (!this.hasPageTitle) {\n // Nothing to observe\n return;\n }\n if (this.isObservingTitle) {\n // Already observing\n return;\n }\n\n // We are not actually observing the title until after the `whenContentReady` promise has resolved,\n // but since we've already checked that the page has a title in the guard above,\n // we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:\n this.isObservingTitle = true;\n\n if (!this.titleIntersectionObserver) {\n this.titleIntersectionObserver = new IntersectionObserver(\n (entries) => {\n // In rare scenarios we get more than 1 entry - use the last one:\n const lastEntry = entries[entries.length - 1];\n if (lastEntry) {\n const showToolbarTitle = !lastEntry.isIntersecting;\n // Only flip the flag and run Change Detection when changed:\n if (showToolbarTitle !== this.toolbarTitleVisible) {\n this.toolbarTitleVisible = showToolbarTitle;\n this.changeDetectorRef.detectChanges();\n }\n }\n },\n { root: this.ionContentElement.nativeElement }\n );\n }\n\n // Run outside Angular to prevent unnecessary triggering change detection\n // and - under certain conditions - an infinite loop when called within ngAfterContentChecked:\n this.zone.runOutsideAngular(() => {\n this.whenContentReady().then(() => {\n const titleElementRef = this.pageTitle || this.header?.titleElement;\n if (titleElementRef?.nativeElement) {\n this.titleIntersectionObserver.observe(titleElementRef.nativeElement);\n }\n });\n });\n }\n\n private unobserveTitle() {\n const titleElementRef = this.pageTitle || this.header?.titleElement;\n if (titleElementRef) {\n this.titleIntersectionObserver?.unobserve(titleElementRef.nativeElement);\n }\n this.isObservingTitle = false;\n }\n\n private initializeActions() {\n if (this.headerActionsTemplate === undefined && !!this.header) {\n this.headerActionsTemplate = this.header.actionsTemplate;\n }\n if (this.hasHeader && this.isObservingActions && !this.header?.actionsElement) {\n // If we're already observing the header's actions element, but it's no longer present,\n // it means it has been removed from DOM (e.g. in virtual scrolling scenarios).\n // Flip observing flag:\n this.isObservingActions = false;\n }\n\n this.observeActions();\n\n this.customActions.forEach((pageAction) => {\n if (pageAction.isFixed) {\n this.fixedActionsTemplate = pageAction.template;\n } else if (pageAction.isSticky) {\n this.stickyActionsTemplate = pageAction.template;\n } else {\n this.pageActionsTemplate = pageAction.template;\n }\n });\n }\n\n private observeActions() {\n if (!this.header?.actionsElement) {\n // Nothing to observe\n return;\n }\n\n if (this.isObservingActions) {\n // Already observing\n return;\n }\n\n // We are not actually observing actions until after the `whenContentReady` promise has resolved,\n // but since we've already checked that there's an actions element present in the guard above,\n // we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:\n this.isObservingActions = true;\n\n if (!this.stickyActionsIntersectionObserver) {\n this.stickyActionsIntersectionObserver = new IntersectionObserver(\n (entries) => {\n // In rare scenarios we get more than 1 entry - use the last one:\n const lastEntry = entries[entries.length - 1];\n if (lastEntry) {\n const showToolbarActions = !lastEntry.isIntersecting;\n // Only flip the flag and run Change Detection when changed:\n if (showToolbarActions !== this.toolbarActionsVisible) {\n this.toolbarActionsVisible = showToolbarActions;\n this.changeDetectorRef.detectChanges();\n }\n }\n },\n { root: this.ionContentElement.nativeElement }\n );\n }\n\n // Run outside Angular to prevent unnecessary triggering change detection\n // and - under certain conditions - an infinite loop when called within ngAfterContentChecked:\n this.zone.runOutsideAngular(() => {\n this.whenContentReady().then(() => {\n if (this.header?.actionsElement?.nativeElement) {\n this.stickyActionsIntersectionObserver.observe(this.header.actionsElement.nativeElement);\n }\n });\n });\n }\n\n private unobserveActions() {\n if (this.header?.actionsElement) {\n this.stickyActionsIntersectionObserver?.unobserve(this.header.actionsElement.nativeElement);\n }\n this.isObservingActions = false;\n }\n\n private initializeContent() {\n this.customContent.forEach((content) => {\n if (content.isFixed) {\n this.fixedContentTemplate = content.template;\n } else {\n this.customContentTemplate = content.template;\n }\n });\n }\n\n private initializeStickyContent() {\n this.stickyContentTemplate = this.stickyContentRef;\n }\n\n private createStickyContentIntersectionObserver() {\n const options: IntersectionObserverInit = {\n root: this.ionContentElement.nativeElement,\n threshold: 1,\n };\n\n const callback: IntersectionObserverCallback = (entries) => {\n if (this.isStickyContentPinned !== !entries[0].isIntersecting) {\n this.isStickyContentPinned = !this.isStickyContentPinned;\n this.changeDetectorRef.detectChanges();\n }\n };\n return new IntersectionObserver(callback, options);\n }\n\n private getPathname(url: string) {\n return url.split('?')[0];\n }\n\n @HostListener('window:keyboardWillShow', ['$event'])\n _onKeyboardWillShow(info?: { keyboardHeight: number }) {\n if (info && info.keyboardHeight) {\n this.ionContentElement.nativeElement.style.setProperty(\n '--keyboard-offset',\n `${info.keyboardHeight}px`\n );\n }\n }\n\n @HostListener('window:keyboardWillHide')\n _onKeyboardWillHide() {\n this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');\n }\n\n @HostListener(`window:${selectedTabClickEvent}`)\n _onSelectedTabClick() {\n if (this.content) {\n this.content.scrollToTop(KirbyAnimation.Duration.LONG);\n }\n }\n}\n","<ion-header>\n <ion-toolbar\n [class.content-scrolled]=\"isContentScrolled\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <span\n [class.clickable]=\"hasInteractiveTitle\"\n [class.has-icon]=\"!!titleActionIconTemplate\"\n (click)=\"onTitleClick($event)\"\n >\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </span>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!headerActionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerActionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !hasHeader\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"hasHeader\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\n\nimport { PageComponent } from '../page.component';\n\n@Component({\n selector: 'kirby-page-footer',\n templateUrl: './page-footer.component.html',\n styleUrls: ['./page-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageFooterComponent implements OnDestroy {\n @Input()\n hasPadding: boolean = true;\n\n constructor(\n @Optional() @SkipSelf() private pageComponent: PageComponent,\n private hostElement: ElementRef,\n private renderer: Renderer2\n ) {\n if (!pageComponent) {\n throw new Error('Page footer must reside inside of a Kirby page');\n }\n }\n\n close() {\n this.pageComponent.tabBarBottomHidden = false;\n this.renderer.removeChild(\n this.hostElement.nativeElement.parentElement,\n this.hostElement.nativeElement,\n true\n );\n }\n\n ngOnDestroy(): void {\n this.pageComponent.tabBarBottomHidden = false;\n }\n}\n","<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { SpinnerModule } from '@kirbydesign/designsystem/spinner';\nimport { FitHeadingDirective } from '@kirbydesign/designsystem/shared';\n\nimport { HeaderModule } from '@kirbydesign/designsystem/header';\nimport { PageFooterComponent } from './page-footer/page-footer.component';\nimport {\n PageActionsComponent,\n PageActionsDirective,\n PageComponent,\n PageContentComponent,\n PageContentDirective,\n PageProgressComponent,\n PageStickyContentDirective,\n PageSubtitleDirective,\n PageTitleComponent,\n PageTitleDirective,\n PageToolbarTitleDirective,\n} from './page.component';\n\n@NgModule({\n declarations: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n PageStickyContentDirective,\n ],\n imports: [CommonModule, IonicModule, FitHeadingDirective, SpinnerModule, HeaderModule],\n exports: [\n PageComponent,\n PageActionsComponent,\n PageActionsDirective,\n PageContentComponent,\n PageFooterComponent,\n PageContentDirective,\n PageProgressComponent,\n PageTitleComponent,\n PageTitleDirective,\n PageSubtitleDirective,\n PageToolbarTitleDirective,\n FitHeadingDirective,\n PageStickyContentDirective,\n ],\n})\nexport class PageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PageComponent"],"mappings":"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"}