@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.
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +24 -24
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +14 -6
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-divider.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +19 -8
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-flag.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +32 -32
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-gesture.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
- package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-list.mjs +49 -46
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +59 -50
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +69 -48
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-radio.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-segmented-control.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-segmented-control.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +16 -7
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared.mjs +21 -21
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +15 -15
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +305 -303
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem.mjs +10 -10
- package/package.json +2 -2
- package/types/kirbydesign-designsystem-card.d.ts +2 -2
- package/types/kirbydesign-designsystem-card.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-checkbox.d.ts +7 -1
- package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-empty-state.d.ts +11 -0
- package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-list.d.ts +5 -0
- package/types/kirbydesign-designsystem-list.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-modal.d.ts +2 -1
- package/types/kirbydesign-designsystem-modal.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-page.d.ts +4 -0
- package/types/kirbydesign-designsystem-page.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -1
- package/types/kirbydesign-designsystem-testing-base.d.ts +5 -0
- 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
|
|
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.
|
|
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.
|
|
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.
|
|
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":";;;;;;;AAgCA,IAAY;CAAZ,SAAY,gBAAc;CACxB,eAAA,eAAA,UAAA,KAAA;CACA,eAAA,eAAA,WAAA,KAAA;CACA,eAAA,eAAA,YAAA,KAAA;AACF,EAAA,CAJY,mBAAA,iBAAc,CAAA,EAAA;AAM1B,IAAY;CAAZ,SAAY,gBAAc;CACxB,eAAA,SAAA;CACA,eAAA,QAAA;CACA,eAAA,WAAA;CACA,eAAA,UAAA;AACF,EAAA,CALY,mBAAA,iBAAc,CAAA,EAAA;AA+B1B,IAAa,oBAAb,MAAa,kBAAiB;CAI5B,IAAoB,UAAU,KAAwC;EACpE,KAAK,sCAAqC;EAC1C,KAAK,aAAa;EAClB,KAAK,mBAAkB;EACvB,IAAI,KAAK,SACP,KAAK,mBAAkB;CAE3B;CAEA,IAAW,YAAS;EAClB,OAAO,KAAK;CACd;CAKA,IAAoB,UAAU,WAAoB;EAChD,KAAK,aAAa;EAClB,IAAI,KAAK,SACP,KAAK,0BAAyB;CAElC;CAEA,IAAW,YAAS;EAClB,OAAO,KAAK;CACd;CAKA,IAAoB,SAAS,UAAkB;EAC7C,KAAK,YAAY;EACjB,IAAI,KAAK,SACP,KAAK,0BAAyB;CAElC;CAEA,IAAW,WAAQ;EACjB,OAAO,KAAK;CACd;CAOA,IAAoB,SAAS,eAAkC;EAC7D,KAAK,YAAY;EACjB,KAAK,sCAAqC;EAC1C,KAAK,mBAAkB;CACzB;CAEA,IAAW,WAAQ;EACjB,OAAO,KAAK;CACd;CAOA,IAAoB,gBAAgB,QAA+B;EACjE,KAAK,wBAAwB;EAC7B,KAAK,gBAAgB,SACnB,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,kBAAkB;CACzE;CAEA,IAAW,kBAAe;EACxB,OAAO,KAAK;CACd;CAMA,IAAoB,mBAAmB,QAAsC;EAC3E,KAAK,sBAAsB;EAE3B,IAAI,CAAC,KAAK,iBACR,KAAK,gBAAgB,SAAS,KAAK,iBAAiB,MAAM;CAE9D;CAEA,IAAW,qBAAkB;EAC3B,OAAO,KAAK;CACd;CAoCO,qBAAkB;EACvB,IAAI,KAAK,kBACP,KAAK,KAAI;CAEb;CA+CA,YACU,YACA,UACA,iBAAgC;EAFhC,KAAA,aAAA;EACA,KAAA,WAAA;EACA,KAAA,kBAAA;EArFM,KAAA,aAAsB;EAKtB,KAAA,SAAyB,eAAe;EAMxC,KAAA,QAAiB;EAKjB,KAAA,gBAAyB;EAKzB,KAAA,gBAAyB;EACzB,KAAA,mBAA4B;EAC5B,KAAA,kBAA2B;EAK1B,KAAA,iBAAwC,IAAI,aAAY;EASjE,KAAA,aAAwB;EAExB,KAAA,YAAsB;EAMtB,KAAA,YAAiC,CAAC,OAAO;EAKzC,KAAA,UAAmB;EACnB,KAAA,+BAAyD,CAAA;EAGzD,KAAA,kCAAqD,IAAI,IAAI;GACnE,CAAC,SAAS,CAAC;IAAE,OAAO;IAAS,QAAQ,KAAK,WAAW,KAAK,IAAI;GAAC,CAAE,CAAC;GAClE,CACE,SACA,CACE;IAAE,OAAO;IAAc,QAAQ,KAAK,KAAK,KAAK,IAAI;GAAC,GACnD;IAAE,OAAO;IAAc,QAAQ,KAAK,KAAK,KAAK,IAAI;GAAC,CACpD,CACF;GACD,CACE,SACA,CACE;IAAE,OAAO;IAAS,QAAQ,KAAK,KAAK,KAAK,IAAI;GAAC,GAC9C;IAAE,OAAO;IAAQ,QAAQ,KAAK,KAAK,KAAK,IAAI;GAAC,CAC9C,CACF;EACF,CAAA;EAEO,KAAA,eAEJ;GACF,KAAK,UAAU,MAAM,GAAG,SAAS,eAAe,KAAK,CAAC;GACtD,QAAQ,UAAU,MAAM,KAAK,SAAS,uBAAuB,KAAK,CAAC;GACnE,OAAO,UAAU,MAAM,KAAK,SAAS,kBAAkB,KAAK,CAAC;GAC7D,MAAM,UAAU,MAAM,KAAK,SAAS,qBAAqB,KAAK,CAAC;GAC/D,eAAe;EAChB;CAME;CAEI,WAAQ;EACb,KAAK,6BAA4B;CACnC;CAGO,OAAI;EACT,IAAI,KAAK,YACP;EAGF,KAAK,gCAA+B;EACpC,KAAK,4BAA2B;EAChC,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,WAAW,OAAO;EACxE,KAAK,UAAU;EACf,KAAK,mBAAkB;EACvB,KAAK,eAAe,KAAK,KAAK,OAAO;CACvC;CAGO,OAAI;EACT,IAAI,KAAK,cAAc,CAAC,KAAK,SAC3B;EAGF,KAAK,qBAAoB;EACzB,KAAK,mCAAkC;EACvC,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,WAAW,MAAM;EACvE,KAAK,UAAU;EACf,KAAK,SAAS,YACZ,KAAK,WAAW,eAChB,qCACA,oBAAoB,QAAQ;EAE9B,KAAK,eAAe,KAAK,KAAK,OAAO;CACvC;CAGO,aAAU;EACf,IAAI,KAAK,SACP,KAAK,KAAI;OAET,KAAK,KAAI;CAEb;CAEQ,+BAA4B;EAClC,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,QAAQ,KAAK;EACnE,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,OAAO,KAAK;EAClE,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,YAAY,KAAK,QAAQ;EAC/E,KAAK,SAAS,SACZ,KAAK,WAAW,eAChB,WACA,kBAAkB,OAAO,SAAS,CAAC;EAErC,KAAK,kBAAiB;CACxB;CAEQ,oBAAiB;EACvB,KAAK,SAAS,SACZ,KAAK,WAAW,eAChB,WACA,KAAK,UAAU,UAAU,MAAM;CAEnC;CAEQ,4BAAyB;EAC/B,IAAI,CAAC,KAAK,WACR;EAGF,MAAM,SAAgC;GACpC,WAAW,KAAK;GAChB,YAAY,KAAK,oBAAmB;GACpC,UAAU,KAAK;EACS;EAE1B,KACE,gBAAgB,KAAK,WAAW,eAAe,KAAK,WAAW,eAAe,MAAM,CAAC,CACtF,CAAC,WAAW,EAAE,GAAG,QAAQ,KAAK,gCAAgC,GAAG,CAAC,CAAC;CACtE;CAEQ,sBAAmB;EACzB,MAAM,aAA2D,CAAA;EACjE,MAAM,UAAU,SAAS,kBAAkB,KAAK,GAAG,CAAC;EAEpD,WAAW,KAAK,OAAO,KAAK,MAAM,CAAC;EACnC,WAAW,KAAK,KAAK,EAAE,QAAO,CAAE,CAAC;EAEjC,IAAI,KAAK,OACP,WAAW,KAAK,MAAM,EAAE,QAAO,CAAE,CAAC;EAGpC,WAAW,KACT,KAAK;GACH;GACA,QAAQ,EAAE,iBAAiB,eAAc;IACvC,IAAI,CAAC,KAAK,SAAS;IAEnB,KAAK,SAAS,SACZ,SAAS,UACT,qCACA,GAAG,KAAK,IAAI,GAAG,eAAe,EAAC,KAC/B,oBAAoB,QAAQ;GAEhC;EACD,CAAA,CAAC;EAGJ,IAAI,KAAK,eACP,WAAW,KAAK,cAAa,CAAE;EAGjC,OAAO;CACT;CAEQ,qBAAkB;EACxB,KAAK,qBAAoB;EAEzB,IAAI,CAAC,KAAK,WACR;EAGF,KAAK,iBAAiB,WACpB,KAAK,WAAW,eAChB,KAAK,WAAW,eAChB,KAAK,0BAA0B,KAAK,IAAI,CAAC;CAE7C;CAEQ,gCAAgC,WAAmB,WAAiB;EAC1E,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,QAAQ,GAAG,UAAS,GAAI;EAC9E,KAAK,SAAS,SAAS,KAAK,WAAW,eAAe,OAAO,GAAG,UAAS,GAAI;EAC7E,KAAK,kBAAiB;CACxB;CAEQ,qBAAkB;EACxB,IAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAC3B;EAGF,KAAK,SAAS,SAAS,YACrB,KAAK,qCAAqC,OAAO,CAAC;CAEtD;CAEQ,kCAA+B;EACrC,IAAI,KAAK,8BACP;EAGF,KAAK,+BAA+B,KAAK,SAAS,OAAO,YAAY,cAAc,UACjF,KAAK,8BAA8B,KAAK,CAAC;CAE7C;CAEQ,8BAA2B;EACjC,IAAI,KAAK,4BAA4B,CAAC,KAAK,eACzC;EAGF,KAAK,2BAA2B,KAAK,SAAS,OAC5C,KAAK,WAAW,eAChB,eACM,KAAK,6BAA4B,CAAE;CAE7C;CAEQ,qCAAqC,SAAqB;EAChE,MAAM,SAAqC,KAAK,gBAAgB,IAAI,OAAO;EAE3E,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,GAAG,QAAO,gCAAiC;EAG7D,OAAO,SAAS,UAAuB;GACrC,MAAM,8BAAsD,KAAK,SAAS,OACxE,KAAK,WAAW,eAChB,MAAM,OACN,MAAM,MAAM;GAEd,KAAK,6BAA6B,KAAK,2BAA2B;EACpE,CAAC;CACH;CAEQ,+BAA4B;EAClC,IAAI,KAAK,eACP,KAAK,KAAI;CAEb;CAEQ,8BAA8B,OAAY;EAChD,IAAI,MAAM,kBAAkB,MAAM;GAEhC,IAD+B,KAAK,WAAW,cAAc,SAAS,MAAM,MACxE,GAAe;GAEnB,MAAM,4CACJ,KAAK,WAAW,cAAc,SAAS,MAAM,MAAM,KAAK,KAAK,SAAS,SAAS,OAAO;GAExF,IAAI,KAAK,mBAAmB,CAAC,2CAC3B,KAAK,KAAI;EAEb;CACF;CAEQ,iBAAiB,QAAsC;EAC7D,IAAI,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,OAAO,OACzC,OAAO;EAGT,MAAM,WAAkC,KAAK,gBAAgB,MAAM;EAEnE,IAAI,CAAC,YAAY,SAAS,WAAW,GACnC,MAAM,MAAM,oCAAoC,OAAO,SAAQ,uBAAwB;EAGzF,IAAI,SAAS,SAAS,GACpB,MAAM,MACJ,mCAAmC,OAAO,SAAQ;0EACgB;EAItE,OAAO,SAAS;CAClB;CAEQ,gBAAgB,QAAsC;EAC5D,OACE,KAAK,aAAa,OAAO,SAAS,CAAC,OAAO,KAAK,KAAK,KAAK,aAAa,UAAU,CAAC,OAAO,KAAK;CAEjG;CAEQ,wCAAqC;EAC3C,KAAK,6BAA6B,SAAS,gCACzC,8BAA6B,CAAE;EAEjC,KAAK,+BAA+B,CAAA;CACtC;CAEQ,qCAAkC;EACxC,IAAI,KAAK,8BAA8B;GACrC,KAAK,6BAA4B;GACjC,KAAK,+BAA+B;EACtC;EAEA,IAAI,KAAK,0BAA0B;GACjC,KAAK,yBAAwB;GAC7B,KAAK,2BAA2B;EAClC;CACF;CAEQ,uBAAoB;EAC1B,IAAI,KAAK,gBACP,KAAK,eAAc;CAEvB;CAEO,cAAW;EAChB,KAAK,mCAAkC;EACvC,KAAK,sCAAqC;EAC1C,KAAK,qBAAoB;CAC3B;CA1bW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA;IAAA,EAAA,OAAA,GAAA,WAAA;IAAA,EAAA,OAAA,GAAA,UAAA;IAAA,EAAA,OAAA,GAAA,gBAAA;GAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAiB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,WAAA;IAAA,WAAA;IAAA,UAAA;IAAA,UAAA;IAAA,iBAAA;IAAA,oBAAA;IAAA,YAAA;IAAA,QAAA;IAAA,OAAA;IAAA,eAAA;IAAA,eAAA;IAAA,kBAAA;IAAA,iBAAA;GAAA;GAAA,SAAA,EAAA,gBAAA,iBAAA;GAAA,MAAA,EAAA,WAAA,EAAA,2BAAA,uBAAA,EAAA;GAAA,WAJjB,CAAC,eAAe;GAAC,gBAAA,CAAA,EAAA,WAAA,GAAA,gBAAA,CAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAIjB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAN7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,WAAW,CAAC,eAAe;GAC3B,gBAAgB,CAAC,eAAe;GAChC,YAAY;EACb,CAAA;;;;;;;;EAKE,WAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAgBA,WAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAcA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAgBA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAeA,iBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAcA,oBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAeA,YAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,QAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAMA,OAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,eAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,eAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,gBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;GAEA,MAAA;GAAa,MAAA,CAAA,yBAAyB"}
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
77
|
+
version: "22.2.3",
|
|
78
78
|
ngImport: i0,
|
|
79
79
|
type: SpinnerModule,
|
|
80
80
|
decorators: [{
|