@kirbydesign/designsystem 12.0.0-dev-67d5287 → 12.0.0-dev-286cdc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/fesm2022/kirbydesign-designsystem-accordion.mjs +12 -12
  2. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  3. package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
  4. package/fesm2022/kirbydesign-designsystem-avatar.mjs +5 -5
  5. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  6. package/fesm2022/kirbydesign-designsystem-badge.mjs +5 -5
  7. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  8. package/fesm2022/kirbydesign-designsystem-button.mjs +5 -5
  9. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  10. package/fesm2022/kirbydesign-designsystem-calendar.mjs +7 -7
  11. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  12. package/fesm2022/kirbydesign-designsystem-card.mjs +24 -24
  13. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  14. package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
  15. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +14 -6
  16. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  17. package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
  18. package/fesm2022/kirbydesign-designsystem-divider.mjs +5 -5
  19. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  20. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +10 -10
  21. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +19 -8
  22. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  23. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
  24. package/fesm2022/kirbydesign-designsystem-flag.mjs +5 -5
  25. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  26. package/fesm2022/kirbydesign-designsystem-form-field.mjs +32 -32
  27. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  28. package/fesm2022/kirbydesign-designsystem-gesture.mjs +3 -3
  29. package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
  30. package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
  31. package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
  32. package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
  33. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
  34. package/fesm2022/kirbydesign-designsystem-item.mjs +12 -12
  35. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  36. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
  37. package/fesm2022/kirbydesign-designsystem-list.mjs +49 -46
  38. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +8 -8
  40. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-menu.mjs +5 -5
  42. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-modal.mjs +59 -50
  44. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-page.mjs +69 -48
  46. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  47. package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
  48. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
  49. package/fesm2022/kirbydesign-designsystem-radio.mjs +12 -12
  50. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  51. package/fesm2022/kirbydesign-designsystem-range.mjs +5 -5
  52. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  53. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +5 -5
  54. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  55. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
  56. package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
  57. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs +5 -5
  58. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs.map +1 -1
  59. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +16 -7
  60. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  61. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
  62. package/fesm2022/kirbydesign-designsystem-shared.mjs +21 -21
  63. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
  64. package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
  65. package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
  66. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +12 -12
  67. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  68. package/fesm2022/kirbydesign-designsystem-tabs.mjs +15 -15
  69. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  70. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +305 -303
  71. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  72. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
  73. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
  74. package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
  75. package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
  76. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
  77. package/fesm2022/kirbydesign-designsystem-toggle.mjs +5 -5
  78. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  79. package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
  80. package/fesm2022/kirbydesign-designsystem.mjs +10 -10
  81. package/package.json +2 -2
  82. package/types/kirbydesign-designsystem-card.d.ts +2 -2
  83. package/types/kirbydesign-designsystem-card.d.ts.map +1 -1
  84. package/types/kirbydesign-designsystem-checkbox.d.ts +7 -1
  85. package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -1
  86. package/types/kirbydesign-designsystem-empty-state.d.ts +11 -0
  87. package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -1
  88. package/types/kirbydesign-designsystem-list.d.ts +5 -0
  89. package/types/kirbydesign-designsystem-list.d.ts.map +1 -1
  90. package/types/kirbydesign-designsystem-modal.d.ts +2 -1
  91. package/types/kirbydesign-designsystem-modal.d.ts.map +1 -1
  92. package/types/kirbydesign-designsystem-page.d.ts +4 -0
  93. package/types/kirbydesign-designsystem-page.d.ts.map +1 -1
  94. package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -1
  95. package/types/kirbydesign-designsystem-testing-base.d.ts +5 -0
  96. package/types/kirbydesign-designsystem-testing-base.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
- import { Directive, EventEmitter, HostListener, Input, Output } from "@angular/core";
3
- import { autoPlacement, autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
2
+ import { Directive, EventEmitter, HostListener, Input, Output, RendererStyleFlags2 } from "@angular/core";
3
+ import { autoPlacement, autoUpdate, computePosition, flip, offset, shift, size } from "@floating-ui/dom";
4
4
  import { DesignTokenHelper } from "@kirbydesign/core";
5
5
  import { from } from "rxjs";
6
6
  import * as i1 from "@kirbydesign/designsystem/shared/portal";
@@ -130,6 +130,7 @@ var FloatingDirective = class FloatingDirective {
130
130
  this.tearDownDocumentClickEventHandling();
131
131
  this.renderer.setStyle(this.elementRef.nativeElement, "display", "none");
132
132
  this.isShown = false;
133
+ this.renderer.removeStyle(this.elementRef.nativeElement, "--kirby-floating-available-height", RendererStyleFlags2.DashCase);
133
134
  this.displayChanged.emit(this.isShown);
134
135
  }
135
136
  toggleShow() {
@@ -157,9 +158,17 @@ var FloatingDirective = class FloatingDirective {
157
158
  }
158
159
  getMiddlewareConfig() {
159
160
  const middleware = [];
161
+ const padding = parseInt(DesignTokenHelper.size("s"));
160
162
  middleware.push(offset(this.offset));
161
- middleware.push(flip());
162
- if (this.shift) middleware.push(shift({ padding: parseInt(DesignTokenHelper.size("s")) }));
163
+ middleware.push(flip({ padding }));
164
+ if (this.shift) middleware.push(shift({ padding }));
165
+ middleware.push(size({
166
+ padding,
167
+ apply: ({ availableHeight, elements }) => {
168
+ if (!this.isShown) return;
169
+ this.renderer.setStyle(elements.floating, "--kirby-floating-available-height", `${Math.max(0, availableHeight)}px`, RendererStyleFlags2.DashCase);
170
+ }
171
+ }));
163
172
  if (this.autoPlacement) middleware.push(autoPlacement());
164
173
  return middleware;
165
174
  }
@@ -239,7 +248,7 @@ var FloatingDirective = class FloatingDirective {
239
248
  static {
240
249
  this.ɵfac = i0.ɵɵngDeclareFactory({
241
250
  minVersion: "12.0.0",
242
- version: "22.2.2",
251
+ version: "22.2.3",
243
252
  ngImport: i0,
244
253
  type: FloatingDirective,
245
254
  deps: [
@@ -253,7 +262,7 @@ var FloatingDirective = class FloatingDirective {
253
262
  static {
254
263
  this.ɵdir = i0.ɵɵngDeclareDirective({
255
264
  minVersion: "14.0.0",
256
- version: "22.2.2",
265
+ version: "22.2.3",
257
266
  type: FloatingDirective,
258
267
  isStandalone: true,
259
268
  selector: "[kirbyFloating]",
@@ -282,7 +291,7 @@ var FloatingDirective = class FloatingDirective {
282
291
  };
283
292
  i0.ɵɵngDeclareClassMetadata({
284
293
  minVersion: "12.0.0",
285
- version: "22.2.2",
294
+ version: "22.2.3",
286
295
  ngImport: i0,
287
296
  type: FloatingDirective,
288
297
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","names":[],"sources":["../../shared/floating/src/floating.directive.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n Middleware,\n offset,\n Placement,\n shift,\n Strategy,\n} from '@floating-ui/dom';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef<HTMLElement> | undefined) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n if (this.isShown) {\n this.autoUpdatePosition();\n }\n }\n\n public get reference(): ElementRef<HTMLElement> | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n if (this.isShown) {\n this.updateHostElementPosition();\n }\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n if (this.isShown) {\n this.updateHostElementPosition();\n }\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape')\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef<HTMLElement> | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private disposeTriggerEventListeners: EventListenerDisposeFn[] = [];\n private disposeDocumentClickListener: EventListenerDisposeFn;\n private disposeHostClickListener: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEventHandler();\n this.attachHostClickEventHandler();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.autoUpdatePosition();\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled || !this.isShown) {\n return;\n }\n\n this.removeAutoUpdaterRef();\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n middleware.push(offset(this.offset));\n middleware.push(flip());\n\n if (this.shift) {\n middleware.push(shift({ padding: parseInt(DesignTokenHelper.size('s')) }));\n }\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEventHandler(): void {\n if (this.disposeDocumentClickListener) {\n return;\n }\n\n this.disposeDocumentClickListener = this.renderer.listen('document', 'mousedown', (event) =>\n this.handleClickOutsideHostElement(event)\n );\n }\n\n private attachHostClickEventHandler(): void {\n if (this.disposeHostClickListener || !this.closeOnSelect) {\n return;\n }\n\n this.disposeHostClickListener = this.renderer.listen(\n this.elementRef.nativeElement,\n 'click',\n () => this.handleClickInsideHostElement()\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const disposeTriggerEventListener: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.disposeTriggerEventListeners.push(disposeTriggerEventListener);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n if (event.target instanceof Node) {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) return;\n\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.disposeTriggerEventListeners.forEach((disposeTriggerEventListener) =>\n disposeTriggerEventListener?.()\n );\n this.disposeTriggerEventListeners = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.disposeDocumentClickListener) {\n this.disposeDocumentClickListener();\n this.disposeDocumentClickListener = null;\n }\n\n if (this.disposeHostClickListener) {\n this.disposeHostClickListener();\n this.disposeHostClickListener = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","names":[],"sources":["../../shared/floating/src/floating.directive.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n RendererStyleFlags2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n Middleware,\n offset,\n Placement,\n shift,\n size,\n Strategy,\n} from '@floating-ui/dom';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef<HTMLElement> | undefined) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n if (this.isShown) {\n this.autoUpdatePosition();\n }\n }\n\n public get reference(): ElementRef<HTMLElement> | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n if (this.isShown) {\n this.updateHostElementPosition();\n }\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n if (this.isShown) {\n this.updateHostElementPosition();\n }\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape')\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef<HTMLElement> | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private disposeTriggerEventListeners: EventListenerDisposeFn[] = [];\n private disposeDocumentClickListener: EventListenerDisposeFn;\n private disposeHostClickListener: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEventHandler();\n this.attachHostClickEventHandler();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.autoUpdatePosition();\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled || !this.isShown) {\n return;\n }\n\n this.removeAutoUpdaterRef();\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.renderer.removeStyle(\n this.elementRef.nativeElement,\n '--kirby-floating-available-height',\n RendererStyleFlags2.DashCase\n );\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n const padding = parseInt(DesignTokenHelper.size('s'));\n\n middleware.push(offset(this.offset));\n middleware.push(flip({ padding }));\n\n if (this.shift) {\n middleware.push(shift({ padding }));\n }\n\n middleware.push(\n size({\n padding,\n apply: ({ availableHeight, elements }) => {\n if (!this.isShown) return;\n\n this.renderer.setStyle(\n elements.floating,\n '--kirby-floating-available-height',\n `${Math.max(0, availableHeight)}px`,\n RendererStyleFlags2.DashCase\n );\n },\n })\n );\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEventHandler(): void {\n if (this.disposeDocumentClickListener) {\n return;\n }\n\n this.disposeDocumentClickListener = this.renderer.listen('document', 'mousedown', (event) =>\n this.handleClickOutsideHostElement(event)\n );\n }\n\n private attachHostClickEventHandler(): void {\n if (this.disposeHostClickListener || !this.closeOnSelect) {\n return;\n }\n\n this.disposeHostClickListener = this.renderer.listen(\n this.elementRef.nativeElement,\n 'click',\n () => this.handleClickInsideHostElement()\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const disposeTriggerEventListener: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.disposeTriggerEventListeners.push(disposeTriggerEventListener);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n if (event.target instanceof Node) {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) return;\n\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.disposeTriggerEventListeners.forEach((disposeTriggerEventListener) =>\n disposeTriggerEventListener?.()\n );\n this.disposeTriggerEventListeners = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.disposeDocumentClickListener) {\n this.disposeDocumentClickListener();\n this.disposeDocumentClickListener = null;\n }\n\n if (this.disposeHostClickListener) {\n this.disposeHostClickListener();\n this.disposeHostClickListener = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n"],"mappings":"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"}
@@ -34,7 +34,7 @@ var PortalDirective = class PortalDirective extends CdkPortalOutlet {
34
34
  static {
35
35
  this.ɵfac = i0.ɵɵngDeclareFactory({
36
36
  minVersion: "12.0.0",
37
- version: "22.2.2",
37
+ version: "22.2.3",
38
38
  ngImport: i0,
39
39
  type: PortalDirective,
40
40
  deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }],
@@ -44,7 +44,7 @@ var PortalDirective = class PortalDirective extends CdkPortalOutlet {
44
44
  static {
45
45
  this.ɵdir = i0.ɵɵngDeclareDirective({
46
46
  minVersion: "14.0.0",
47
- version: "22.2.2",
47
+ version: "22.2.3",
48
48
  type: PortalDirective,
49
49
  isStandalone: true,
50
50
  selector: "[kirbyPortal]",
@@ -56,7 +56,7 @@ var PortalDirective = class PortalDirective extends CdkPortalOutlet {
56
56
  };
57
57
  i0.ɵɵngDeclareClassMetadata({
58
58
  minVersion: "12.0.0",
59
- version: "22.2.2",
59
+ version: "22.2.3",
60
60
  ngImport: i0,
61
61
  type: PortalDirective,
62
62
  decorators: [{
@@ -9,7 +9,7 @@ var ResizeObserverFactory = class ResizeObserverFactory {
9
9
  static {
10
10
  this.ɵfac = i0.ɵɵngDeclareFactory({
11
11
  minVersion: "12.0.0",
12
- version: "22.2.2",
12
+ version: "22.2.3",
13
13
  ngImport: i0,
14
14
  type: ResizeObserverFactory,
15
15
  deps: [],
@@ -19,7 +19,7 @@ var ResizeObserverFactory = class ResizeObserverFactory {
19
19
  static {
20
20
  this.ɵprov = i0.ɵɵngDeclareInjectable({
21
21
  minVersion: "12.0.0",
22
- version: "22.2.2",
22
+ version: "22.2.3",
23
23
  ngImport: i0,
24
24
  type: ResizeObserverFactory,
25
25
  providedIn: "root"
@@ -28,7 +28,7 @@ var ResizeObserverFactory = class ResizeObserverFactory {
28
28
  };
29
29
  i0.ɵɵngDeclareClassMetadata({
30
30
  minVersion: "12.0.0",
31
- version: "22.2.2",
31
+ version: "22.2.3",
32
32
  ngImport: i0,
33
33
  type: ResizeObserverFactory,
34
34
  decorators: [{
@@ -68,7 +68,7 @@ var ResizeObserverService = class ResizeObserverService {
68
68
  static {
69
69
  this.ɵfac = i0.ɵɵngDeclareFactory({
70
70
  minVersion: "12.0.0",
71
- version: "22.2.2",
71
+ version: "22.2.3",
72
72
  ngImport: i0,
73
73
  type: ResizeObserverService,
74
74
  deps: [{ token: ResizeObserverFactory }],
@@ -78,7 +78,7 @@ var ResizeObserverService = class ResizeObserverService {
78
78
  static {
79
79
  this.ɵprov = i0.ɵɵngDeclareInjectable({
80
80
  minVersion: "12.0.0",
81
- version: "22.2.2",
81
+ version: "22.2.3",
82
82
  ngImport: i0,
83
83
  type: ResizeObserverService,
84
84
  providedIn: "root"
@@ -87,7 +87,7 @@ var ResizeObserverService = class ResizeObserverService {
87
87
  };
88
88
  i0.ɵɵngDeclareClassMetadata({
89
89
  minVersion: "12.0.0",
90
- version: "22.2.2",
90
+ version: "22.2.3",
91
91
  ngImport: i0,
92
92
  type: ResizeObserverService,
93
93
  decorators: [{
@@ -125,7 +125,7 @@ var TextResizeObserverService = class TextResizeObserverService {
125
125
  static {
126
126
  this.ɵfac = i0.ɵɵngDeclareFactory({
127
127
  minVersion: "12.0.0",
128
- version: "22.2.2",
128
+ version: "22.2.3",
129
129
  ngImport: i0,
130
130
  type: TextResizeObserverService,
131
131
  deps: [],
@@ -135,7 +135,7 @@ var TextResizeObserverService = class TextResizeObserverService {
135
135
  static {
136
136
  this.ɵprov = i0.ɵɵngDeclareInjectable({
137
137
  minVersion: "12.0.0",
138
- version: "22.2.2",
138
+ version: "22.2.3",
139
139
  ngImport: i0,
140
140
  type: TextResizeObserverService,
141
141
  providedIn: "root"
@@ -144,7 +144,7 @@ var TextResizeObserverService = class TextResizeObserverService {
144
144
  };
145
145
  i0.ɵɵngDeclareClassMetadata({
146
146
  minVersion: "12.0.0",
147
- version: "22.2.2",
147
+ version: "22.2.3",
148
148
  ngImport: i0,
149
149
  type: TextResizeObserverService,
150
150
  decorators: [{
@@ -231,7 +231,7 @@ var ThemeColorDirective = class ThemeColorDirective {
231
231
  static {
232
232
  this.ɵfac = i0.ɵɵngDeclareFactory({
233
233
  minVersion: "12.0.0",
234
- version: "22.2.2",
234
+ version: "22.2.3",
235
235
  ngImport: i0,
236
236
  type: ThemeColorDirective,
237
237
  deps: [],
@@ -241,7 +241,7 @@ var ThemeColorDirective = class ThemeColorDirective {
241
241
  static {
242
242
  this.ɵdir = i0.ɵɵngDeclareDirective({
243
243
  minVersion: "14.0.0",
244
- version: "22.2.2",
244
+ version: "22.2.3",
245
245
  type: ThemeColorDirective,
246
246
  isStandalone: true,
247
247
  selector: "kirby-avatar[themeColor],\n kirby-card[themeColor],\n kirby-icon[themeColor],\n kirby-progress-circle-ring[themeColor],\n kirby-modal-footer[themeColor],\n kirby-empty-state[themeColor]",
@@ -268,7 +268,7 @@ var ThemeColorDirective = class ThemeColorDirective {
268
268
  };
269
269
  i0.ɵɵngDeclareClassMetadata({
270
270
  minVersion: "12.0.0",
271
- version: "22.2.2",
271
+ version: "22.2.3",
272
272
  ngImport: i0,
273
273
  type: ThemeColorDirective,
274
274
  decorators: [{
@@ -361,7 +361,7 @@ var ComponentLoaderDirective = class ComponentLoaderDirective {
361
361
  static {
362
362
  this.ɵfac = i0.ɵɵngDeclareFactory({
363
363
  minVersion: "12.0.0",
364
- version: "22.2.2",
364
+ version: "22.2.3",
365
365
  ngImport: i0,
366
366
  type: ComponentLoaderDirective,
367
367
  deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }],
@@ -371,7 +371,7 @@ var ComponentLoaderDirective = class ComponentLoaderDirective {
371
371
  static {
372
372
  this.ɵdir = i0.ɵɵngDeclareDirective({
373
373
  minVersion: "14.0.0",
374
- version: "22.2.2",
374
+ version: "22.2.3",
375
375
  type: ComponentLoaderDirective,
376
376
  isStandalone: true,
377
377
  selector: "[kirbyLoadComponent]",
@@ -385,7 +385,7 @@ var ComponentLoaderDirective = class ComponentLoaderDirective {
385
385
  };
386
386
  i0.ɵɵngDeclareClassMetadata({
387
387
  minVersion: "12.0.0",
388
- version: "22.2.2",
388
+ version: "22.2.3",
389
389
  ngImport: i0,
390
390
  type: ComponentLoaderDirective,
391
391
  decorators: [{
@@ -496,7 +496,7 @@ var FitHeadingDirective = class FitHeadingDirective {
496
496
  static {
497
497
  this.ɵfac = i0.ɵɵngDeclareFactory({
498
498
  minVersion: "12.0.0",
499
- version: "22.2.2",
499
+ version: "22.2.3",
500
500
  ngImport: i0,
501
501
  type: FitHeadingDirective,
502
502
  deps: [
@@ -511,7 +511,7 @@ var FitHeadingDirective = class FitHeadingDirective {
511
511
  static {
512
512
  this.ɵdir = i0.ɵɵngDeclareDirective({
513
513
  minVersion: "14.0.0",
514
- version: "22.2.2",
514
+ version: "22.2.3",
515
515
  type: FitHeadingDirective,
516
516
  isStandalone: true,
517
517
  selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading],[kirbyFitHeading]",
@@ -523,7 +523,7 @@ var FitHeadingDirective = class FitHeadingDirective {
523
523
  };
524
524
  i0.ɵɵngDeclareClassMetadata({
525
525
  minVersion: "12.0.0",
526
- version: "22.2.2",
526
+ version: "22.2.3",
527
527
  ngImport: i0,
528
528
  type: FitHeadingDirective,
529
529
  decorators: [{
@@ -647,7 +647,7 @@ var TranslationService = class TranslationService {
647
647
  static {
648
648
  this.ɵfac = i0.ɵɵngDeclareFactory({
649
649
  minVersion: "12.0.0",
650
- version: "22.2.2",
650
+ version: "22.2.3",
651
651
  ngImport: i0,
652
652
  type: TranslationService,
653
653
  deps: [{ token: LOCALE_ID }],
@@ -657,7 +657,7 @@ var TranslationService = class TranslationService {
657
657
  static {
658
658
  this.ɵprov = i0.ɵɵngDeclareInjectable({
659
659
  minVersion: "12.0.0",
660
- version: "22.2.2",
660
+ version: "22.2.3",
661
661
  ngImport: i0,
662
662
  type: TranslationService,
663
663
  providedIn: "root"
@@ -666,7 +666,7 @@ var TranslationService = class TranslationService {
666
666
  };
667
667
  i0.ɵɵngDeclareClassMetadata({
668
668
  minVersion: "12.0.0",
669
- version: "22.2.2",
669
+ version: "22.2.3",
670
670
  ngImport: i0,
671
671
  type: TranslationService,
672
672
  decorators: [{
@@ -56,7 +56,7 @@ var SlideButtonComponent = class SlideButtonComponent {
56
56
  static {
57
57
  this.ɵfac = i0.ɵɵngDeclareFactory({
58
58
  minVersion: "12.0.0",
59
- version: "22.2.2",
59
+ version: "22.2.3",
60
60
  ngImport: i0,
61
61
  type: SlideButtonComponent,
62
62
  deps: [
@@ -70,7 +70,7 @@ var SlideButtonComponent = class SlideButtonComponent {
70
70
  static {
71
71
  this.ɵcmp = i0.ɵɵngDeclareComponent({
72
72
  minVersion: "14.0.0",
73
- version: "22.2.2",
73
+ version: "22.2.3",
74
74
  type: SlideButtonComponent,
75
75
  isStandalone: true,
76
76
  selector: "kirby-slide-button",
@@ -107,7 +107,7 @@ var SlideButtonComponent = class SlideButtonComponent {
107
107
  };
108
108
  i0.ɵɵngDeclareClassMetadata({
109
109
  minVersion: "12.0.0",
110
- version: "22.2.2",
110
+ version: "22.2.3",
111
111
  ngImport: i0,
112
112
  type: SlideButtonComponent,
113
113
  decorators: [{
@@ -11,7 +11,7 @@ var SlideDirective = class SlideDirective {
11
11
  static {
12
12
  this.ɵfac = i0.ɵɵngDeclareFactory({
13
13
  minVersion: "12.0.0",
14
- version: "22.2.2",
14
+ version: "22.2.3",
15
15
  ngImport: i0,
16
16
  type: SlideDirective,
17
17
  deps: [],
@@ -21,7 +21,7 @@ var SlideDirective = class SlideDirective {
21
21
  static {
22
22
  this.ɵdir = i0.ɵɵngDeclareDirective({
23
23
  minVersion: "14.0.0",
24
- version: "22.2.2",
24
+ version: "22.2.3",
25
25
  type: SlideDirective,
26
26
  isStandalone: true,
27
27
  selector: "[kirbySlide]",
@@ -31,7 +31,7 @@ var SlideDirective = class SlideDirective {
31
31
  };
32
32
  i0.ɵɵngDeclareClassMetadata({
33
33
  minVersion: "12.0.0",
34
- version: "22.2.2",
34
+ version: "22.2.3",
35
35
  ngImport: i0,
36
36
  type: SlideDirective,
37
37
  decorators: [{
@@ -118,7 +118,7 @@ var SlidesComponent = class SlidesComponent {
118
118
  static {
119
119
  this.ɵfac = i0.ɵɵngDeclareFactory({
120
120
  minVersion: "12.0.0",
121
- version: "22.2.2",
121
+ version: "22.2.3",
122
122
  ngImport: i0,
123
123
  type: SlidesComponent,
124
124
  deps: [
@@ -132,7 +132,7 @@ var SlidesComponent = class SlidesComponent {
132
132
  static {
133
133
  this.ɵcmp = i0.ɵɵngDeclareComponent({
134
134
  minVersion: "17.0.0",
135
- version: "22.2.2",
135
+ version: "22.2.3",
136
136
  type: SlidesComponent,
137
137
  isStandalone: true,
138
138
  selector: "kirby-slides",
@@ -205,7 +205,7 @@ var SlidesComponent = class SlidesComponent {
205
205
  };
206
206
  i0.ɵɵngDeclareClassMetadata({
207
207
  minVersion: "12.0.0",
208
- version: "22.2.2",
208
+ version: "22.2.3",
209
209
  ngImport: i0,
210
210
  type: SlidesComponent,
211
211
  decorators: [{
@@ -257,7 +257,7 @@ var SlideStretchHeightDirective = class SlideStretchHeightDirective {
257
257
  static {
258
258
  this.ɵfac = i0.ɵɵngDeclareFactory({
259
259
  minVersion: "12.0.0",
260
- version: "22.2.2",
260
+ version: "22.2.3",
261
261
  ngImport: i0,
262
262
  type: SlideStretchHeightDirective,
263
263
  deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }],
@@ -267,7 +267,7 @@ var SlideStretchHeightDirective = class SlideStretchHeightDirective {
267
267
  static {
268
268
  this.ɵdir = i0.ɵɵngDeclareDirective({
269
269
  minVersion: "14.0.0",
270
- version: "22.2.2",
270
+ version: "22.2.3",
271
271
  type: SlideStretchHeightDirective,
272
272
  isStandalone: true,
273
273
  selector: "[slideStretchHeight]",
@@ -277,7 +277,7 @@ var SlideStretchHeightDirective = class SlideStretchHeightDirective {
277
277
  };
278
278
  i0.ɵɵngDeclareClassMetadata({
279
279
  minVersion: "12.0.0",
280
- version: "22.2.2",
280
+ version: "22.2.3",
281
281
  ngImport: i0,
282
282
  type: SlideStretchHeightDirective,
283
283
  decorators: [{
@@ -295,7 +295,7 @@ var SlideModule = class SlideModule {
295
295
  static {
296
296
  this.ɵfac = i0.ɵɵngDeclareFactory({
297
297
  minVersion: "12.0.0",
298
- version: "22.2.2",
298
+ version: "22.2.3",
299
299
  ngImport: i0,
300
300
  type: SlideModule,
301
301
  deps: [],
@@ -305,7 +305,7 @@ var SlideModule = class SlideModule {
305
305
  static {
306
306
  this.ɵmod = i0.ɵɵngDeclareNgModule({
307
307
  minVersion: "14.0.0",
308
- version: "22.2.2",
308
+ version: "22.2.3",
309
309
  ngImport: i0,
310
310
  type: SlideModule,
311
311
  imports: [
@@ -326,7 +326,7 @@ var SlideModule = class SlideModule {
326
326
  static {
327
327
  this.ɵinj = i0.ɵɵngDeclareInjector({
328
328
  minVersion: "12.0.0",
329
- version: "22.2.2",
329
+ version: "22.2.3",
330
330
  ngImport: i0,
331
331
  type: SlideModule,
332
332
  imports: [
@@ -340,7 +340,7 @@ var SlideModule = class SlideModule {
340
340
  };
341
341
  i0.ɵɵngDeclareClassMetadata({
342
342
  minVersion: "12.0.0",
343
- version: "22.2.2",
343
+ version: "22.2.3",
344
344
  ngImport: i0,
345
345
  type: SlideModule,
346
346
  decorators: [{
@@ -5,7 +5,7 @@ var SpinnerComponent = class SpinnerComponent {
5
5
  static {
6
6
  this.ɵfac = i0.ɵɵngDeclareFactory({
7
7
  minVersion: "12.0.0",
8
- version: "22.2.2",
8
+ version: "22.2.3",
9
9
  ngImport: i0,
10
10
  type: SpinnerComponent,
11
11
  deps: [],
@@ -15,7 +15,7 @@ var SpinnerComponent = class SpinnerComponent {
15
15
  static {
16
16
  this.ɵcmp = i0.ɵɵngDeclareComponent({
17
17
  minVersion: "14.0.0",
18
- version: "22.2.2",
18
+ version: "22.2.3",
19
19
  type: SpinnerComponent,
20
20
  isStandalone: true,
21
21
  selector: "kirby-spinner",
@@ -28,7 +28,7 @@ var SpinnerComponent = class SpinnerComponent {
28
28
  };
29
29
  i0.ɵɵngDeclareClassMetadata({
30
30
  minVersion: "12.0.0",
31
- version: "22.2.2",
31
+ version: "22.2.3",
32
32
  ngImport: i0,
33
33
  type: SpinnerComponent,
34
34
  decorators: [{
@@ -45,7 +45,7 @@ var SpinnerModule = class SpinnerModule {
45
45
  static {
46
46
  this.ɵfac = i0.ɵɵngDeclareFactory({
47
47
  minVersion: "12.0.0",
48
- version: "22.2.2",
48
+ version: "22.2.3",
49
49
  ngImport: i0,
50
50
  type: SpinnerModule,
51
51
  deps: [],
@@ -55,7 +55,7 @@ var SpinnerModule = class SpinnerModule {
55
55
  static {
56
56
  this.ɵmod = i0.ɵɵngDeclareNgModule({
57
57
  minVersion: "14.0.0",
58
- version: "22.2.2",
58
+ version: "22.2.3",
59
59
  ngImport: i0,
60
60
  type: SpinnerModule,
61
61
  imports: [CommonModule, SpinnerComponent],
@@ -65,7 +65,7 @@ var SpinnerModule = class SpinnerModule {
65
65
  static {
66
66
  this.ɵinj = i0.ɵɵngDeclareInjector({
67
67
  minVersion: "12.0.0",
68
- version: "22.2.2",
68
+ version: "22.2.3",
69
69
  ngImport: i0,
70
70
  type: SpinnerModule,
71
71
  imports: [CommonModule]
@@ -74,7 +74,7 @@ var SpinnerModule = class SpinnerModule {
74
74
  };
75
75
  i0.ɵɵngDeclareClassMetadata({
76
76
  minVersion: "12.0.0",
77
- version: "22.2.2",
77
+ version: "22.2.3",
78
78
  ngImport: i0,
79
79
  type: SpinnerModule,
80
80
  decorators: [{