@kirbydesign/designsystem 11.4.0 → 11.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/action-group/index.d.ts.map +1 -1
  2. package/badge/index.d.ts.map +1 -1
  3. package/button/index.d.ts.map +1 -1
  4. package/calendar/index.d.ts.map +1 -1
  5. package/card/index.d.ts.map +1 -1
  6. package/chart/index.d.ts.map +1 -1
  7. package/config/index.d.ts.map +1 -1
  8. package/dropdown/index.d.ts +2 -2
  9. package/dropdown/index.d.ts.map +1 -1
  10. package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
  11. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  12. package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
  13. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  14. package/fesm2022/kirbydesign-designsystem-avatar.mjs +3 -3
  15. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  16. package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
  17. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  18. package/fesm2022/kirbydesign-designsystem-button.mjs +3 -3
  19. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  20. package/fesm2022/kirbydesign-designsystem-calendar.mjs +3 -3
  21. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  22. package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
  23. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  24. package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
  25. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  26. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
  27. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  28. package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
  29. package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
  30. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  31. package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
  32. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  33. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +16 -14
  34. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  35. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +7 -7
  36. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  37. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
  38. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
  40. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-form-field.mjs +28 -28
  42. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
  44. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
  46. package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
  47. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  48. package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
  49. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  50. package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
  51. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  52. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
  53. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  54. package/fesm2022/kirbydesign-designsystem-item.mjs +10 -10
  55. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  56. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
  57. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  58. package/fesm2022/kirbydesign-designsystem-list.mjs +42 -42
  59. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  60. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
  61. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  62. package/fesm2022/kirbydesign-designsystem-menu.mjs +3 -3
  63. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  64. package/fesm2022/kirbydesign-designsystem-modal.mjs +42 -42
  65. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  66. package/fesm2022/kirbydesign-designsystem-page.mjs +40 -40
  67. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  68. package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
  69. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  70. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
  71. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  72. package/fesm2022/kirbydesign-designsystem-radio.mjs +15 -15
  73. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  74. package/fesm2022/kirbydesign-designsystem-range.mjs +8 -5
  75. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  76. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +3 -3
  77. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  78. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
  79. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  80. package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
  81. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  82. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
  83. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  84. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
  85. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  86. package/fesm2022/kirbydesign-designsystem-shared.mjs +18 -18
  87. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  88. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
  89. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  90. package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
  91. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  92. package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
  93. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  94. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
  95. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  96. package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
  97. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  98. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
  99. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  100. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
  101. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  102. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
  103. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  104. package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
  105. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  106. package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
  107. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  108. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +8 -7
  109. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  110. package/fesm2022/kirbydesign-designsystem-toggle.mjs +5 -4
  111. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  112. package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
  113. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  114. package/fesm2022/kirbydesign-designsystem.mjs +32 -29
  115. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  116. package/flag/index.d.ts.map +1 -1
  117. package/form-field/index.d.ts.map +1 -1
  118. package/icon/index.d.ts.map +1 -1
  119. package/index.d.ts +3 -1
  120. package/index.d.ts.map +1 -1
  121. package/item-sliding/index.d.ts.map +1 -1
  122. package/list/index.d.ts.map +1 -1
  123. package/modal/index.d.ts.map +1 -1
  124. package/package.json +2 -2
  125. package/page/index.d.ts.map +1 -1
  126. package/radio/index.d.ts +2 -2
  127. package/radio/index.d.ts.map +1 -1
  128. package/range/index.d.ts +3 -2
  129. package/range/index.d.ts.map +1 -1
  130. package/shared/floating/index.d.ts.map +1 -1
  131. package/shared/index.d.ts.map +1 -1
  132. package/slide/index.d.ts.map +1 -1
  133. package/testing/index.d.ts.map +1 -1
  134. package/testing-base/index.d.ts.map +1 -1
  135. package/toast/index.d.ts.map +1 -1
  136. package/toggle/index.d.ts.map +1 -1
  137. package/toggle-button/index.d.ts.map +1 -1
  138. package/types/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-loading-overlay.mjs","sources":["../tmp-esm2022/loading-overlay/loading-overlay.service.js","../tmp-esm2022/loading-overlay/loading-overlay.component.js","../tmp-esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nexport class LoadingOverlayService {\n constructor(loadingController, componentFactoryResolver, injector) {\n this.loadingController = loadingController;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.ionLoading = null;\n }\n async showLoadingOverlay(showBackdrop = true, hideContent = false) {\n if (!this.ionLoading) {\n const cssClasses = ['kirby-loading-overlay'];\n if (hideContent) {\n cssClasses.push('kirby-loading-hide-content');\n }\n this.ionLoading = await this.loadingController.create({\n cssClass: cssClasses,\n duration: 0,\n message: null,\n showBackdrop: showBackdrop || hideContent,\n spinner: null,\n });\n const loadingWrapper = this.ionLoading.querySelector('.loading-wrapper');\n const kirbySpinner = document.createElement('kirby-spinner');\n const factory = this.componentFactoryResolver.resolveComponentFactory(SpinnerComponent);\n factory.create(this.injector, [], kirbySpinner);\n loadingWrapper.appendChild(kirbySpinner);\n await this.ionLoading.present();\n }\n }\n async hideLoadingOverlay() {\n if (this.ionLoading) {\n await this.ionLoading.dismiss();\n this.ionLoading = null;\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: LoadingOverlayService, deps: [{ token: i1.LoadingController }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: LoadingOverlayService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: LoadingOverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.LoadingController }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1vdmVybGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9sb2FkaW5nLW92ZXJsYXkvc3JjL2xvYWRpbmctb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFLckUsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUNVLGlCQUFvQyxFQUNwQyx3QkFBa0QsRUFDbEQsUUFBa0I7UUFGbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGFBQVEsR0FBUixRQUFRLENBQVU7UUFMcEIsZUFBVSxHQUEwQixJQUFJLENBQUM7SUFNOUMsQ0FBQztJQUVHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsZUFBd0IsSUFBSSxFQUM1QixjQUF1QixLQUFLO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxVQUFVLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBRTdDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BELFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUUsQ0FBQztnQkFDWCxPQUFPLEVBQUUsSUFBSTtnQkFDYixZQUFZLEVBQUUsWUFBWSxJQUFJLFdBQVc7Z0JBQ3pDLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6RSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDaEQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUV6QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztrSUEzQ1UscUJBQXFCO3NJQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvYWRpbmdDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zcGlubmVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvYWRpbmdPdmVybGF5U2VydmljZSB7XG4gIHByaXZhdGUgaW9uTG9hZGluZzogSFRNTElvbkxvYWRpbmdFbGVtZW50ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvYWRpbmdDb250cm9sbGVyOiBMb2FkaW5nQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgc2hvd0xvYWRpbmdPdmVybGF5KFxuICAgIHNob3dCYWNrZHJvcDogYm9vbGVhbiA9IHRydWUsXG4gICAgaGlkZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTG9hZGluZykge1xuICAgICAgY29uc3QgY3NzQ2xhc3NlcyA9IFsna2lyYnktbG9hZGluZy1vdmVybGF5J107XG5cbiAgICAgIGlmIChoaWRlQ29udGVudCkge1xuICAgICAgICBjc3NDbGFzc2VzLnB1c2goJ2tpcmJ5LWxvYWRpbmctaGlkZS1jb250ZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW9uTG9hZGluZyA9IGF3YWl0IHRoaXMubG9hZGluZ0NvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgICAgY3NzQ2xhc3M6IGNzc0NsYXNzZXMsXG4gICAgICAgIGR1cmF0aW9uOiAwLFxuICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICBzaG93QmFja2Ryb3A6IHNob3dCYWNrZHJvcCB8fCBoaWRlQ29udGVudCxcbiAgICAgICAgc3Bpbm5lcjogbnVsbCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsb2FkaW5nV3JhcHBlciA9IHRoaXMuaW9uTG9hZGluZy5xdWVyeVNlbGVjdG9yKCcubG9hZGluZy13cmFwcGVyJyk7XG4gICAgICBjb25zdCBraXJieVNwaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdraXJieS1zcGlubmVyJyk7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoU3Bpbm5lckNvbXBvbmVudCk7XG4gICAgICBmYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yLCBbXSwga2lyYnlTcGlubmVyKTtcbiAgICAgIGxvYWRpbmdXcmFwcGVyLmFwcGVuZENoaWxkKGtpcmJ5U3Bpbm5lcik7XG5cbiAgICAgIGF3YWl0IHRoaXMuaW9uTG9hZGluZy5wcmVzZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGhpZGVMb2FkaW5nT3ZlcmxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pb25Mb2FkaW5nKSB7XG4gICAgICBhd2FpdCB0aGlzLmlvbkxvYWRpbmcuZGlzbWlzcygpO1xuICAgICAgdGhpcy5pb25Mb2FkaW5nID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nexport class LoadingOverlayComponent {\n constructor() {\n this.isLoading = true;\n this.showBackdrop = true;\n this.hideContent = false;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: LoadingOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.13\", type: LoadingOverlayComponent, isStandalone: true, selector: \"kirby-loading-overlay\", inputs: { isLoading: \"isLoading\", showBackdrop: \"showBackdrop\", hideContent: \"hideContent\" }, ngImport: i0, template: \"<div class=\\\"overlay-wrapper\\\">\\n @if (isLoading) {\\n <div\\n [ngClass]=\\\"{\\n backdrop: showBackdrop && !hideContent,\\n 'hide-content': hideContent,\\n }\\\"\\n class=\\\"spinner-wrapper\\\"\\n >\\n <kirby-spinner class=\\\"spinner\\\"></kirby-spinner>\\n </div>\\n }\\n <div class=\\\"content-wrapper\\\">\\n <ng-content></ng-content>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;min-height:32px}.overlay-wrapper{min-height:inherit;height:100%;width:100%;position:relative}.overlay-wrapper .spinner-wrapper{height:100%;width:100%;position:absolute;z-index:1001;display:flex;background:transparent;justify-content:center;place-items:center}.overlay-wrapper .spinner-wrapper.backdrop{background-color:#f6f6f6cc}.overlay-wrapper .spinner-wrapper.hide-content{background-color:#f6f6f6}.overlay-wrapper .spinner-wrapper .spinner{width:32px;height:32px}\\n\"], dependencies: [{ kind: \"component\", type: SpinnerComponent, selector: \"kirby-spinner\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: LoadingOverlayComponent, decorators: [{\n type: Component,\n args: [{ imports: [SpinnerComponent, CommonModule], selector: 'kirby-loading-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"overlay-wrapper\\\">\\n @if (isLoading) {\\n <div\\n [ngClass]=\\\"{\\n backdrop: showBackdrop && !hideContent,\\n 'hide-content': hideContent,\\n }\\\"\\n class=\\\"spinner-wrapper\\\"\\n >\\n <kirby-spinner class=\\\"spinner\\\"></kirby-spinner>\\n </div>\\n }\\n <div class=\\\"content-wrapper\\\">\\n <ng-content></ng-content>\\n </div>\\n</div>\\n\", styles: [\":host{display:block;min-height:32px}.overlay-wrapper{min-height:inherit;height:100%;width:100%;position:relative}.overlay-wrapper .spinner-wrapper{height:100%;width:100%;position:absolute;z-index:1001;display:flex;background:transparent;justify-content:center;place-items:center}.overlay-wrapper .spinner-wrapper.backdrop{background-color:#f6f6f6cc}.overlay-wrapper .spinner-wrapper.hide-content{background-color:#f6f6f6}.overlay-wrapper .spinner-wrapper .spinner{width:32px;height:32px}\\n\"] }]\n }], propDecorators: { isLoading: [{\n type: Input\n }], showBackdrop: [{\n type: Input\n }], hideContent: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xvYWRpbmctb3ZlcmxheS9zcmMvbG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2xvYWRpbmctb3ZlcmxheS9zcmMvbG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBU3JFLE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUFRa0IsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQUNyQztrSUFKWSx1QkFBdUI7c0hBQXZCLHVCQUF1QiwrS0NYcEMsK1hBZ0JBLG1pQkRYWSxnQkFBZ0IseURBQUUsWUFBWTs7NEZBTTdCLHVCQUF1QjtrQkFQbkMsU0FBUzs4QkFDQyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxZQUMvQix1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07O3NCQUc5QyxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zcGlubmVyJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtTcGlubmVyQ29tcG9uZW50LCBDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWxvYWRpbmctb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2FkaW5nLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkaW5nLW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvYWRpbmdPdmVybGF5Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QmFja2Ryb3AgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNvbnRlbnQgPSBmYWxzZTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJvdmVybGF5LXdyYXBwZXJcIj5cbiAgQGlmIChpc0xvYWRpbmcpIHtcbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGJhY2tkcm9wOiBzaG93QmFja2Ryb3AgJiYgIWhpZGVDb250ZW50LFxuICAgICAgICAnaGlkZS1jb250ZW50JzogaGlkZUNvbnRlbnQsXG4gICAgICB9XCJcbiAgICAgIGNsYXNzPVwic3Bpbm5lci13cmFwcGVyXCJcbiAgICA+XG4gICAgICA8a2lyYnktc3Bpbm5lciBjbGFzcz1cInNwaW5uZXJcIj48L2tpcmJ5LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLWxvYWRpbmctb3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xvYWRpbmctb3ZlcmxheS9zcmMva2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLWxvYWRpbmctb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-loading-overlay.mjs","sources":["../../loading-overlay/src/loading-overlay.service.ts","../../loading-overlay/src/loading-overlay.component.ts","../../loading-overlay/src/loading-overlay.component.html","../../loading-overlay/src/kirbydesign-designsystem-loading-overlay.ts"],"sourcesContent":["import { ComponentFactoryResolver, Injectable, Injector } from '@angular/core';\nimport { LoadingController } from '@ionic/angular/standalone';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingOverlayService {\n private ionLoading: HTMLIonLoadingElement = null;\n\n constructor(\n private loadingController: LoadingController,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n public async showLoadingOverlay(\n showBackdrop: boolean = true,\n hideContent: boolean = false\n ): Promise<void> {\n if (!this.ionLoading) {\n const cssClasses = ['kirby-loading-overlay'];\n\n if (hideContent) {\n cssClasses.push('kirby-loading-hide-content');\n }\n\n this.ionLoading = await this.loadingController.create({\n cssClass: cssClasses,\n duration: 0,\n message: null,\n showBackdrop: showBackdrop || hideContent,\n spinner: null,\n });\n\n const loadingWrapper = this.ionLoading.querySelector('.loading-wrapper');\n const kirbySpinner = document.createElement('kirby-spinner');\n const factory = this.componentFactoryResolver.resolveComponentFactory(SpinnerComponent);\n factory.create(this.injector, [], kirbySpinner);\n loadingWrapper.appendChild(kirbySpinner);\n\n await this.ionLoading.present();\n }\n }\n\n public async hideLoadingOverlay(): Promise<void> {\n if (this.ionLoading) {\n await this.ionLoading.dismiss();\n this.ionLoading = null;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SpinnerComponent } from '@kirbydesign/designsystem/spinner';\n\n@Component({\n imports: [SpinnerComponent, CommonModule],\n selector: 'kirby-loading-overlay',\n templateUrl: './loading-overlay.component.html',\n styleUrls: ['./loading-overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingOverlayComponent {\n @Input() public isLoading = true;\n @Input() public showBackdrop = true;\n @Input() public hideContent = false;\n}\n","<div class=\"overlay-wrapper\">\n @if (isLoading) {\n <div\n [ngClass]=\"{\n backdrop: showBackdrop && !hideContent,\n 'hide-content': hideContent,\n }\"\n class=\"spinner-wrapper\"\n >\n <kirby-spinner class=\"spinner\"></kirby-spinner>\n </div>\n }\n <div class=\"content-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}
@@ -234,10 +234,10 @@ class MenuComponent {
234
234
  ngOnDestroy() {
235
235
  this.disposeIonScrollListener?.();
236
236
  }
237
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
238
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.13", type: MenuComponent, isStandalone: true, selector: "kirby-menu", inputs: { isDisabled: "isDisabled", buttonSize: "buttonSize", placement: "placement", attentionLevel: "attentionLevel", triggers: "triggers", DOMPortalOutlet: "DOMPortalOutlet", portalOutletConfig: "portalOutletConfig", autoPlacement: "autoPlacement", closeOnSelect: "closeOnSelect", closeOnEscapeKey: "closeOnEscapeKey", closeOnBackdrop: "closeOnBackdrop", shift: "shift", minWidth: "minWidth" }, host: { listeners: { "keydown": "_onKeydown($event)", "click": "_onClick($event)" } }, queries: [{ propertyName: "userProvidedButton", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef }, { propertyName: "kirbyItems", predicate: ItemComponent, read: ElementRef }, { propertyName: "kirbyItemComponents", predicate: ItemComponent }], viewQueries: [{ propertyName: "buttonContainerElement", first: true, predicate: ["buttonContainer"], descendants: true, read: ElementRef }, { propertyName: "defaultButtonElement", first: true, predicate: ["defaultButton"], descendants: true, read: ElementRef }, { propertyName: "floatingMenu", first: true, predicate: FloatingDirective, descendants: true }], ngImport: i0, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n @if (!userProvidedButton) {\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"translations.get('more')\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n }\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n", styles: [":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "directive", type: FloatingDirective, selector: "[kirbyFloating]", inputs: ["reference", "placement", "strategy", "triggers", "DOMPortalOutlet", "portalOutletConfig", "isDisabled", "offset", "shift", "autoPlacement", "closeOnSelect", "closeOnEscapeKey", "closeOnBackdrop"], outputs: ["displayChanged"] }, { kind: "component", type: CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
237
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
238
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: MenuComponent, isStandalone: true, selector: "kirby-menu", inputs: { isDisabled: "isDisabled", buttonSize: "buttonSize", placement: "placement", attentionLevel: "attentionLevel", triggers: "triggers", DOMPortalOutlet: "DOMPortalOutlet", portalOutletConfig: "portalOutletConfig", autoPlacement: "autoPlacement", closeOnSelect: "closeOnSelect", closeOnEscapeKey: "closeOnEscapeKey", closeOnBackdrop: "closeOnBackdrop", shift: "shift", minWidth: "minWidth" }, host: { listeners: { "keydown": "_onKeydown($event)", "click": "_onClick($event)" } }, queries: [{ propertyName: "userProvidedButton", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef }, { propertyName: "kirbyItems", predicate: ItemComponent, read: ElementRef }, { propertyName: "kirbyItemComponents", predicate: ItemComponent }], viewQueries: [{ propertyName: "buttonContainerElement", first: true, predicate: ["buttonContainer"], descendants: true, read: ElementRef }, { propertyName: "defaultButtonElement", first: true, predicate: ["defaultButton"], descendants: true, read: ElementRef }, { propertyName: "floatingMenu", first: true, predicate: FloatingDirective, descendants: true }], ngImport: i0, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n @if (!userProvidedButton) {\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"translations.get('more')\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n }\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n", styles: [":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "directive", type: FloatingDirective, selector: "[kirbyFloating]", inputs: ["reference", "placement", "strategy", "triggers", "DOMPortalOutlet", "portalOutletConfig", "isDisabled", "offset", "shift", "autoPlacement", "closeOnSelect", "closeOnEscapeKey", "closeOnBackdrop"], outputs: ["displayChanged"] }, { kind: "component", type: CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
239
239
  }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: MenuComponent, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: MenuComponent, decorators: [{
241
241
  type: Component,
242
242
  args: [{ selector: 'kirby-menu', imports: [ButtonComponent, FloatingDirective, CardComponent, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n @if (!userProvidedButton) {\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"translations.get('more')\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n }\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n", styles: [":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\n"] }]
243
243
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.TranslationService }], propDecorators: { isDisabled: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-menu.mjs","sources":["../tmp-esm2022/menu/menu.component.js","../tmp-esm2022/menu/kirbydesign-designsystem-menu.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, HostListener, Input, ViewChild, } from '@angular/core';\nimport { ItemComponent } from '@kirbydesign/designsystem/item';\nimport { CardComponent } from '@kirbydesign/designsystem/card';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { ButtonComponent, ButtonSize } from '@kirbydesign/designsystem/button';\nimport { FloatingDirective, FloatingOffset, } from '@kirbydesign/designsystem/shared/floating';\nimport { StringSearchHelper, UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';\nimport { forwardAttributes } from '@kirbydesign/designsystem/shared';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/shared\";\nexport class MenuComponent {\n constructor(cdr, elementRef, zone, renderer, translations) {\n this.cdr = cdr;\n this.elementRef = elementRef;\n this.zone = zone;\n this.renderer = renderer;\n this.translations = translations;\n this.menuId = UniqueIdGenerator.scopedTo('kirby-menu').next();\n this.triggerButtonId = UniqueIdGenerator.scopedTo('kirby-menu-trigger-button').next();\n this._attributesToForward = ['aria-label', 'aria-labelledby'];\n this.isDisabled = false;\n this.buttonSize = ButtonSize.MD;\n this.placement = 'bottom-start';\n this.attentionLevel = '3';\n this.triggers = ['click'];\n this.DOMPortalOutlet = this.elementRef.nativeElement.ownerDocument.body;\n this.autoPlacement = false;\n this.closeOnSelect = true;\n this.closeOnEscapeKey = true;\n this.closeOnBackdrop = true;\n this.shift = true;\n this.floatingMenuIsShown = false;\n this.FloatingOffset = FloatingOffset;\n this.focusedIndex = -1;\n }\n _onKeydown(event) {\n if (this.kirbyItems.length === 0) {\n console.warn('[Kirby] No items found within menu');\n return;\n }\n if (this.floatingMenuIsShown) {\n this.handleKeyDownForOpenedMenu(event);\n }\n else {\n this.handleKeyDownForClosedMenu(event);\n }\n }\n _onClick() {\n if (!this.floatingMenuIsShown)\n return;\n this.focusedIndex = 0;\n this.focusItem();\n }\n preventDefaultAndStopImmediatePropagation(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n getFirstInteractiveElement(el) {\n return el.querySelector('ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled])');\n }\n handleKeyDownForClosedMenu(event) {\n const key = event.key;\n switch (key) {\n case ' ':\n case 'Enter':\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = 0;\n this.floatingMenu.show();\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = this.kirbyItems.length - 1;\n this.floatingMenu.show();\n this.focusItem();\n break;\n }\n }\n handleKeyDownForOpenedMenu(event) {\n const key = event.key;\n switch (key) {\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === this.kirbyItems.length - 1) {\n this.focusedIndex = 0;\n }\n else {\n this.focusedIndex++;\n }\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === 0) {\n this.focusedIndex = this.kirbyItems.length - 1;\n }\n else {\n this.focusedIndex--;\n }\n this.focusItem();\n break;\n case 'Home': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex > 0) {\n this.focusedIndex = 0;\n this.focusItem();\n }\n break;\n }\n case 'End': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex < this.kirbyItems.length - 1) {\n this.focusedIndex = this.kirbyItems.length - 1;\n this.focusItem();\n }\n break;\n }\n case 'Escape':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.closeOnEscapeKey) {\n this.floatingMenu.hide();\n }\n break;\n case 'Tab':\n this.floatingMenu.hide();\n break;\n default: {\n if (StringSearchHelper.isPrintableCharacter(key)) {\n this.preventDefaultAndStopImmediatePropagation(event);\n const foundItemIndex = this.getIndexOfItemByFirstCharacter(key);\n if (foundItemIndex > -1) {\n this.focusedIndex = foundItemIndex;\n this.focusItem();\n }\n }\n }\n }\n }\n getIndexOfItemByFirstCharacter(char) {\n return StringSearchHelper.getIndexByFirstMatchingStartString(char, this.kirbyItems.map((item) => item.nativeElement.innerText), this.focusedIndex + 1);\n }\n focusItem() {\n const itemToBeFocused = this.kirbyItems.get(this.focusedIndex);\n const ionItem = itemToBeFocused.nativeElement.querySelector('ion-item');\n // Look for interactive element within ion-item like toggle or checkbox and set focus if found\n const firstInteractiveElementWithinItem = this.getFirstInteractiveElement(ionItem);\n if (firstInteractiveElementWithinItem) {\n firstInteractiveElementWithinItem.focus();\n }\n else {\n this.focusSelectableItem(ionItem);\n }\n }\n focusSelectableItem(ionItem) {\n const nativeButton = ionItem.shadowRoot.querySelector('button:not([disabled])');\n nativeButton?.focus();\n }\n getTriggerButton() {\n return (this.userProvidedButton ?? this.defaultButtonElement).nativeElement;\n }\n ngAfterViewInit() {\n this.cdr.detectChanges(); // Sets the updated reference for kirby-floating\n this.zone.runOutsideAngular(() => {\n /*\n * Listen for ionScroll outside of Angular's change detection to\n * avoid a change detection cycle for every scroll-event fired\n */\n this.disposeIonScrollListener = this.renderer.listen(document, 'ionScroll', () => {\n this.floatingMenu.hide();\n });\n });\n this.forwardAriaLabelToTriggerButton();\n }\n ngAfterContentInit() {\n this.setRoleAttributeForAllItems();\n this.setUserProvidedButtonAriaAttributes();\n this.ensureSelectableOnItems();\n }\n forwardAriaLabelToTriggerButton() {\n forwardAttributes(this.elementRef.nativeElement, this._attributesToForward, this.renderer, this.getTriggerButton());\n }\n ensureSelectableOnItems() {\n this.kirbyItemComponents.forEach((itemComponent) => {\n if (itemComponent.selectable === undefined) {\n itemComponent.selectable = true;\n }\n });\n }\n setRoleAttributeForAllItems() {\n this.kirbyItems.forEach((item) => {\n this.setRoleAttributeForItem(item.nativeElement);\n });\n }\n setRoleAttributeForItem(item) {\n let menuItemRole = 'menuitem';\n if (item.matches(':has(kirby-toggle, kirby-checkbox)')) {\n menuItemRole = 'menuitemcheckbox';\n }\n else if (item.matches(':has(kirby-radio)')) {\n menuItemRole = 'menuitemradio';\n }\n this.renderer.setAttribute(item, 'role', menuItemRole);\n }\n menuVisibilityChanged(menuIsShown) {\n this.floatingMenuIsShown = menuIsShown;\n this.renderer.setAttribute(this.getTriggerButton(), 'aria-expanded', menuIsShown.toString());\n if (!menuIsShown) {\n this.focusedIndex = -1;\n this.getTriggerButton().focus();\n }\n }\n setUserProvidedButtonAriaAttributes() {\n if (!this.userProvidedButton)\n return;\n const button = this.userProvidedButton.nativeElement;\n if (button.id) {\n this.triggerButtonId = button.id;\n }\n else {\n this.renderer.setAttribute(button, 'id', this.triggerButtonId);\n }\n if (!button.getAttribute('aria-controls')) {\n this.renderer.setAttribute(button, 'aria-controls', this.menuId);\n }\n if (!button.getAttribute('aria-haspopup')) {\n this.renderer.setAttribute(button, 'aria-haspopup', 'true');\n }\n if (!button.getAttribute('aria-label')) {\n this.renderer.setAttribute(button, 'aria-label', this.translations.get('more'));\n }\n }\n ngOnDestroy() {\n this.disposeIonScrollListener?.();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.13\", type: MenuComponent, isStandalone: true, selector: \"kirby-menu\", inputs: { isDisabled: \"isDisabled\", buttonSize: \"buttonSize\", placement: \"placement\", attentionLevel: \"attentionLevel\", triggers: \"triggers\", DOMPortalOutlet: \"DOMPortalOutlet\", portalOutletConfig: \"portalOutletConfig\", autoPlacement: \"autoPlacement\", closeOnSelect: \"closeOnSelect\", closeOnEscapeKey: \"closeOnEscapeKey\", closeOnBackdrop: \"closeOnBackdrop\", shift: \"shift\", minWidth: \"minWidth\" }, host: { listeners: { \"keydown\": \"_onKeydown($event)\", \"click\": \"_onClick($event)\" } }, queries: [{ propertyName: \"userProvidedButton\", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef }, { propertyName: \"kirbyItems\", predicate: ItemComponent, read: ElementRef }, { propertyName: \"kirbyItemComponents\", predicate: ItemComponent }], viewQueries: [{ propertyName: \"buttonContainerElement\", first: true, predicate: [\"buttonContainer\"], descendants: true, read: ElementRef }, { propertyName: \"defaultButtonElement\", first: true, predicate: [\"defaultButton\"], descendants: true, read: ElementRef }, { propertyName: \"floatingMenu\", first: true, predicate: FloatingDirective, descendants: true }], ngImport: i0, template: \"<div class=\\\"button-container\\\" #buttonContainer>\\n <ng-content select=\\\"button[kirby-button]\\\"></ng-content>\\n @if (!userProvidedButton) {\\n <button\\n #defaultButton\\n [id]=\\\"triggerButtonId\\\"\\n kirby-button\\n [size]=\\\"buttonSize\\\"\\n [disabled]=\\\"isDisabled\\\"\\n type=\\\"button\\\"\\n [attentionLevel]=\\\"attentionLevel\\\"\\n aria-haspopup=\\\"true\\\"\\n [attr.aria-controls]=\\\"menuId\\\"\\n aria-expanded=\\\"false\\\"\\n [attr.aria-label]=\\\"translations.get('more')\\\"\\n >\\n <kirby-icon [name]=\\\"'more'\\\"></kirby-icon>\\n </button>\\n }\\n</div>\\n<kirby-card\\n [id]=\\\"menuId\\\"\\n kirbyFloating\\n [strategy]=\\\"'fixed'\\\"\\n [reference]=\\\"buttonContainerElement\\\"\\n [isDisabled]=\\\"isDisabled\\\"\\n [triggers]=\\\"triggers\\\"\\n [placement]=\\\"placement\\\"\\n [DOMPortalOutlet]=\\\"DOMPortalOutlet\\\"\\n [portalOutletConfig]=\\\"portalOutletConfig\\\"\\n [closeOnBackdrop]=\\\"closeOnBackdrop\\\"\\n [closeOnEscapeKey]=\\\"closeOnEscapeKey\\\"\\n [closeOnSelect]=\\\"closeOnSelect\\\"\\n [autoPlacement]=\\\"autoPlacement\\\"\\n [shift]=\\\"shift\\\"\\n [style.minWidth]=\\\"minWidth ? minWidth + 'px' : null\\\"\\n class=\\\"menu-popover\\\"\\n (keydown)=\\\"_onKeydown($event)\\\"\\n (displayChanged)=\\\"menuVisibilityChanged($event)\\\"\\n role=\\\"menu\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n>\\n <ng-content select=\\\"kirby-item\\\"></ng-content>\\n</kirby-card>\\n\", styles: [\":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\\n\"], dependencies: [{ kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }, { kind: \"directive\", type: FloatingDirective, selector: \"[kirbyFloating]\", inputs: [\"reference\", \"placement\", \"strategy\", \"triggers\", \"DOMPortalOutlet\", \"portalOutletConfig\", \"isDisabled\", \"offset\", \"shift\", \"autoPlacement\", \"closeOnSelect\", \"closeOnEscapeKey\", \"closeOnBackdrop\"], outputs: [\"displayChanged\"] }, { kind: \"component\", type: CardComponent, selector: \"kirby-card\", inputs: [\"title\", \"subtitle\", \"backgroundImageUrl\", \"hasPadding\", \"sizes\", \"variant\"] }, { kind: \"component\", type: IconComponent, selector: \"kirby-icon\", inputs: [\"size\", \"name\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: MenuComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-menu', imports: [ButtonComponent, FloatingDirective, CardComponent, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"button-container\\\" #buttonContainer>\\n <ng-content select=\\\"button[kirby-button]\\\"></ng-content>\\n @if (!userProvidedButton) {\\n <button\\n #defaultButton\\n [id]=\\\"triggerButtonId\\\"\\n kirby-button\\n [size]=\\\"buttonSize\\\"\\n [disabled]=\\\"isDisabled\\\"\\n type=\\\"button\\\"\\n [attentionLevel]=\\\"attentionLevel\\\"\\n aria-haspopup=\\\"true\\\"\\n [attr.aria-controls]=\\\"menuId\\\"\\n aria-expanded=\\\"false\\\"\\n [attr.aria-label]=\\\"translations.get('more')\\\"\\n >\\n <kirby-icon [name]=\\\"'more'\\\"></kirby-icon>\\n </button>\\n }\\n</div>\\n<kirby-card\\n [id]=\\\"menuId\\\"\\n kirbyFloating\\n [strategy]=\\\"'fixed'\\\"\\n [reference]=\\\"buttonContainerElement\\\"\\n [isDisabled]=\\\"isDisabled\\\"\\n [triggers]=\\\"triggers\\\"\\n [placement]=\\\"placement\\\"\\n [DOMPortalOutlet]=\\\"DOMPortalOutlet\\\"\\n [portalOutletConfig]=\\\"portalOutletConfig\\\"\\n [closeOnBackdrop]=\\\"closeOnBackdrop\\\"\\n [closeOnEscapeKey]=\\\"closeOnEscapeKey\\\"\\n [closeOnSelect]=\\\"closeOnSelect\\\"\\n [autoPlacement]=\\\"autoPlacement\\\"\\n [shift]=\\\"shift\\\"\\n [style.minWidth]=\\\"minWidth ? minWidth + 'px' : null\\\"\\n class=\\\"menu-popover\\\"\\n (keydown)=\\\"_onKeydown($event)\\\"\\n (displayChanged)=\\\"menuVisibilityChanged($event)\\\"\\n role=\\\"menu\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n>\\n <ng-content select=\\\"kirby-item\\\"></ng-content>\\n</kirby-card>\\n\", styles: [\":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.TranslationService }], propDecorators: { isDisabled: [{\n type: Input\n }], buttonSize: [{\n type: Input\n }], placement: [{\n type: Input\n }], attentionLevel: [{\n type: Input\n }], triggers: [{\n type: Input\n }], DOMPortalOutlet: [{\n type: Input\n }], portalOutletConfig: [{\n type: Input\n }], autoPlacement: [{\n type: Input\n }], closeOnSelect: [{\n type: Input\n }], closeOnEscapeKey: [{\n type: Input\n }], closeOnBackdrop: [{\n type: Input\n }], shift: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], buttonContainerElement: [{\n type: ViewChild,\n args: ['buttonContainer', { read: ElementRef }]\n }], defaultButtonElement: [{\n type: ViewChild,\n args: ['defaultButton', { read: ElementRef }]\n }], userProvidedButton: [{\n type: ContentChild,\n args: [ButtonComponent, { read: ElementRef }]\n }], floatingMenu: [{\n type: ViewChild,\n args: [FloatingDirective]\n }], kirbyItems: [{\n type: ContentChildren,\n args: [ItemComponent, { read: ElementRef }]\n }], kirbyItemComponents: [{\n type: ContentChildren,\n args: [ItemComponent]\n }], _onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], _onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQixlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0YsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixjQUFjLEdBR2YsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sa0NBQWtDLENBQUM7OztBQVN6RixNQUFNLE9BQU8sYUFBYTtJQUt4QixZQUNVLEdBQXNCLEVBQ3RCLFVBQW1DLEVBQ25DLElBQVksRUFDWixRQUFtQixFQUNwQixZQUFnQztRQUovQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNwQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFUaEMsV0FBTSxHQUFXLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJ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O3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O3NCQUcvQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O3NCQUlsRCxTQUFTO3VCQUFDLGlCQUFpQjs7c0JBRzNCLGVBQWU7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7c0JBSW5ELGVBQWU7dUJBQUMsYUFBYTs7c0JBTzdCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFhbEMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuXG5pbXBvcnQgeyBJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pdGVtJztcbmltcG9ydCB7IENhcmRDb21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2NhcmQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBBdHRlbnRpb25MZXZlbCwgQnV0dG9uQ29tcG9uZW50LCBCdXR0b25TaXplIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9idXR0b24nO1xuaW1wb3J0IHtcbiAgRmxvYXRpbmdEaXJlY3RpdmUsXG4gIEZsb2F0aW5nT2Zmc2V0LFxuICBQb3J0YWxPdXRsZXRDb25maWcsXG4gIFRyaWdnZXJFdmVudCxcbn0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQvZmxvYXRpbmcnO1xuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuaW1wb3J0IHsgU3RyaW5nU2VhcmNoSGVscGVyLCBVbmlxdWVJZEdlbmVyYXRvciB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBmb3J3YXJkQXR0cmlidXRlcywgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1tZW51JyxcbiAgaW1wb3J0czogW0J1dHRvbkNvbXBvbmVudCwgRmxvYXRpbmdEaXJlY3RpdmUsIENhcmRDb21wb25lbnQsIEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBtZW51SWQ6IHN0cmluZyA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdraXJieS1tZW51JykubmV4dCgpO1xuICB0cmlnZ2VyQnV0dG9uSWQ6IHN0cmluZyA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdraXJieS1tZW51LXRyaWdnZXItYnV0dG9uJykubmV4dCgpO1xuICBwcml2YXRlIF9hdHRyaWJ1dGVzVG9Gb3J3YXJkID0gWydhcmlhLWxhYmVsJywgJ2FyaWEtbGFiZWxsZWRieSddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIGJ1dHRvblNpemU6IEJ1dHRvblNpemUgPSBCdXR0b25TaXplLk1EO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20tc3RhcnQnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdHRlbnRpb25MZXZlbDogQXR0ZW50aW9uTGV2ZWwgPSAnMyc7XG5cbiAgQElucHV0KCkgcHVibGljIHRyaWdnZXJzOiBBcnJheTxUcmlnZ2VyRXZlbnQ+ID0gWydjbGljayddO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBET01Qb3J0YWxPdXRsZXQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBwb3J0YWxPdXRsZXRDb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSBwdWJsaWMgYXV0b1BsYWNlbWVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkVzY2FwZUtleTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25CYWNrZHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgcHVibGljIHNoaWZ0OiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIG1lbnUuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHdpZHRoIGlzIDI0MHB4XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbWluV2lkdGg6IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCdidXR0b25Db250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGRlZmF1bHRCdXR0b25FbGVtZW50OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PiB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHB1YmxpYyB1c2VyUHJvdmlkZWRCdXR0b246XG4gICAgfCBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoRmxvYXRpbmdEaXJlY3RpdmUpXG4gIHByaXZhdGUgZmxvYXRpbmdNZW51OiBGbG9hdGluZ0RpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKEl0ZW1Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwdWJsaWMga2lyYnlJdGVtczogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gID47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJdGVtQ29tcG9uZW50KSBwdWJsaWMga2lyYnlJdGVtQ29tcG9uZW50czogUXVlcnlMaXN0PEl0ZW1Db21wb25lbnQ+O1xuXG4gIHB1YmxpYyBmbG9hdGluZ01lbnVJc1Nob3duOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBGbG9hdGluZ09mZnNldDogdHlwZW9mIEZsb2F0aW5nT2Zmc2V0ID0gRmxvYXRpbmdPZmZzZXQ7XG4gIHByaXZhdGUgZGlzcG9zZUlvblNjcm9sbExpc3RlbmVyOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuO1xuICBwcml2YXRlIGZvY3VzZWRJbmRleCA9IC0xO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMua2lyYnlJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUud2FybignW0tpcmJ5XSBObyBpdGVtcyBmb3VuZCB3aXRoaW4gbWVudScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5mbG9hdGluZ01lbnVJc1Nob3duKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25Gb3JPcGVuZWRNZW51KGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVLZXlEb3duRm9yQ2xvc2VkTWVudShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBfb25DbGljaygpIHtcbiAgICBpZiAoIXRoaXMuZmxvYXRpbmdNZW51SXNTaG93bikgcmV0dXJuO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gMDtcbiAgICB0aGlzLmZvY3VzSXRlbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50RGVmYXVsdEFuZFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpcnN0SW50ZXJhY3RpdmVFbGVtZW50KGVsOiBIVE1MSW9uSXRlbUVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWwucXVlcnlTZWxlY3RvcjxIVE1MSW9uVG9nZ2xlRWxlbWVudCB8IEhUTUxJb25SYWRpb0VsZW1lbnQgfCBIVE1MSW9uQ2hlY2tib3hFbGVtZW50PihcbiAgICAgICdpb24tdG9nZ2xlOm5vdChbZGlzYWJsZWRdKSwgaW9uLWNoZWNrYm94Om5vdChbZGlzYWJsZWRdKSwgaW9uLXJhZGlvOm5vdChbZGlzYWJsZWRdKSdcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duRm9yQ2xvc2VkTWVudShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnICc6XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLnByZXZlbnREZWZhdWx0QW5kU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSAwO1xuICAgICAgICB0aGlzLmZsb2F0aW5nTWVudS5zaG93KCk7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMucHJldmVudERlZmF1bHRBbmRTdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oZXZlbnQpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IHRoaXMua2lyYnlJdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmZsb2F0aW5nTWVudS5zaG93KCk7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlS2V5RG93bkZvck9wZW5lZE1lbnUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdEFuZFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJbmRleCA9PT0gdGhpcy5raXJieUl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzSXRlbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnByZXZlbnREZWZhdWx0QW5kU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0aGlzLmtpcmJ5SXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC0tO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6IHtcbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdEFuZFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJbmRleCA+IDApIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IDA7XG4gICAgICAgICAgdGhpcy5mb2N1c0l0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VuZCc6IHtcbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdEFuZFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJbmRleCA8IHRoaXMua2lyYnlJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0aGlzLmtpcmJ5SXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB0aGlzLmZvY3VzSXRlbSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdEFuZFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgICAgICB0aGlzLmZsb2F0aW5nTWVudS5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmZsb2F0aW5nTWVudS5oaWRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAoU3RyaW5nU2VhcmNoSGVscGVyLmlzUHJpbnRhYmxlQ2hhcmFjdGVyKGtleSkpIHtcbiAgICAgICAgICB0aGlzLnByZXZlbnREZWZhdWx0QW5kU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgICBjb25zdCBmb3VuZEl0ZW1JbmRleCA9IHRoaXMuZ2V0SW5kZXhPZkl0ZW1CeUZpcnN0Q2hhcmFjdGVyKGtleSk7XG4gICAgICAgICAgaWYgKGZvdW5kSXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gZm91bmRJdGVtSW5kZXg7XG4gICAgICAgICAgICB0aGlzLmZvY3VzSXRlbSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kZXhPZkl0ZW1CeUZpcnN0Q2hhcmFjdGVyKGNoYXI6IHN0cmluZykge1xuICAgIHJldHVybiBTdHJpbmdTZWFyY2hIZWxwZXIuZ2V0SW5kZXhCeUZpcnN0TWF0Y2hpbmdTdGFydFN0cmluZyhcbiAgICAgIGNoYXIsXG4gICAgICB0aGlzLmtpcmJ5SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KSxcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ICsgMVxuICAgICk7XG4gIH1cblxuICBmb2N1c0l0ZW0oKSB7XG4gICAgY29uc3QgaXRlbVRvQmVGb2N1c2VkID0gdGhpcy5raXJieUl0ZW1zLmdldCh0aGlzLmZvY3VzZWRJbmRleCk7XG4gICAgY29uc3QgaW9uSXRlbSA9IGl0ZW1Ub0JlRm9jdXNlZC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lvbi1pdGVtJyk7XG5cbiAgICAvLyBMb29rIGZvciBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpdGhpbiBpb24taXRlbSBsaWtlIHRvZ2dsZSBvciBjaGVja2JveCBhbmQgc2V0IGZvY3VzIGlmIGZvdW5kXG4gICAgY29uc3QgZmlyc3RJbnRlcmFjdGl2ZUVsZW1lbnRXaXRoaW5JdGVtID0gdGhpcy5nZXRGaXJzdEludGVyYWN0aXZlRWxlbWVudChpb25JdGVtKTtcbiAgICBpZiAoZmlyc3RJbnRlcmFjdGl2ZUVsZW1lbnRXaXRoaW5JdGVtKSB7XG4gICAgICBmaXJzdEludGVyYWN0aXZlRWxlbWVudFdpdGhpbkl0ZW0uZm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1NlbGVjdGFibGVJdGVtKGlvbkl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNTZWxlY3RhYmxlSXRlbShpb25JdGVtOiBIVE1MSW9uSXRlbUVsZW1lbnQpIHtcbiAgICBjb25zdCBuYXRpdmVCdXR0b246IEhUTUxCdXR0b25FbGVtZW50ID1cbiAgICAgIGlvbkl0ZW0uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdidXR0b246bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgbmF0aXZlQnV0dG9uPy5mb2N1cygpO1xuICB9XG5cbiAgZ2V0VHJpZ2dlckJ1dHRvbigpOiBIVE1MQnV0dG9uRWxlbWVudCB7XG4gICAgcmV0dXJuICh0aGlzLnVzZXJQcm92aWRlZEJ1dHRvbiA/PyB0aGlzLmRlZmF1bHRCdXR0b25FbGVtZW50KS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIFNldHMgdGhlIHVwZGF0ZWQgcmVmZXJlbmNlIGZvciBraXJieS1mbG9hdGluZ1xuXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBMaXN0ZW4gZm9yIGlvblNjcm9sbCBvdXRzaWRlIG9mIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uIHRvXG4gICAgICAgKiBhdm9pZCBhIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgZm9yIGV2ZXJ5IHNjcm9sbC1ldmVudCBmaXJlZFxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3Bvc2VJb25TY3JvbGxMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50LCAnaW9uU2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmZsb2F0aW5nTWVudS5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcndhcmRBcmlhTGFiZWxUb1RyaWdnZXJCdXR0b24oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFJvbGVBdHRyaWJ1dGVGb3JBbGxJdGVtcygpO1xuICAgIHRoaXMuc2V0VXNlclByb3ZpZGVkQnV0dG9uQXJpYUF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdGFibGVPbkl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIGZvcndhcmRBcmlhTGFiZWxUb1RyaWdnZXJCdXR0b24oKSB7XG4gICAgZm9yd2FyZEF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZXNUb0ZvcndhcmQsXG4gICAgICB0aGlzLnJlbmRlcmVyLFxuICAgICAgdGhpcy5nZXRUcmlnZ2VyQnV0dG9uKClcbiAgICApO1xuICB9XG5cbiAgZW5zdXJlU2VsZWN0YWJsZU9uSXRlbXMoKSB7XG4gICAgdGhpcy5raXJieUl0ZW1Db21wb25lbnRzLmZvckVhY2goKGl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgIGlmIChpdGVtQ29tcG9uZW50LnNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpdGVtQ29tcG9uZW50LnNlbGVjdGFibGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRSb2xlQXR0cmlidXRlRm9yQWxsSXRlbXMoKSB7XG4gICAgdGhpcy5raXJieUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHRoaXMuc2V0Um9sZUF0dHJpYnV0ZUZvckl0ZW0oaXRlbS5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Um9sZUF0dHJpYnV0ZUZvckl0ZW0oaXRlbTogSFRNTEVsZW1lbnQpIHtcbiAgICBsZXQgbWVudUl0ZW1Sb2xlID0gJ21lbnVpdGVtJztcbiAgICBpZiAoaXRlbS5tYXRjaGVzKCc6aGFzKGtpcmJ5LXRvZ2dsZSwga2lyYnktY2hlY2tib3gpJykpIHtcbiAgICAgIG1lbnVJdGVtUm9sZSA9ICdtZW51aXRlbWNoZWNrYm94JztcbiAgICB9IGVsc2UgaWYgKGl0ZW0ubWF0Y2hlcygnOmhhcyhraXJieS1yYWRpbyknKSkge1xuICAgICAgbWVudUl0ZW1Sb2xlID0gJ21lbnVpdGVtcmFkaW8nO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpdGVtLCAncm9sZScsIG1lbnVJdGVtUm9sZSk7XG4gIH1cblxuICBtZW51VmlzaWJpbGl0eUNoYW5nZWQobWVudUlzU2hvd246IGJvb2xlYW4pIHtcbiAgICB0aGlzLmZsb2F0aW5nTWVudUlzU2hvd24gPSBtZW51SXNTaG93bjtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmdldFRyaWdnZXJCdXR0b24oKSwgJ2FyaWEtZXhwYW5kZWQnLCBtZW51SXNTaG93bi50b1N0cmluZygpKTtcbiAgICBpZiAoIW1lbnVJc1Nob3duKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IC0xO1xuICAgICAgdGhpcy5nZXRUcmlnZ2VyQnV0dG9uKCkuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFVzZXJQcm92aWRlZEJ1dHRvbkFyaWFBdHRyaWJ1dGVzKCkge1xuICAgIGlmICghdGhpcy51c2VyUHJvdmlkZWRCdXR0b24pIHJldHVybjtcblxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMudXNlclByb3ZpZGVkQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGJ1dHRvbi5pZCkge1xuICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBidXR0b24uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1dHRvbiwgJ2lkJywgdGhpcy50cmlnZ2VyQnV0dG9uSWQpO1xuICAgIH1cbiAgICBpZiAoIWJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnV0dG9uLCAnYXJpYS1jb250cm9scycsIHRoaXMubWVudUlkKTtcbiAgICB9XG4gICAgaWYgKCFidXR0b24uZ2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJykpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1dHRvbiwgJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xuICAgIH1cbiAgICBpZiAoIWJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnV0dG9uLCAnYXJpYS1sYWJlbCcsIHRoaXMudHJhbnNsYXRpb25zLmdldCgnbW9yZScpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2VJb25TY3JvbGxMaXN0ZW5lcj8uKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgI2J1dHRvbkNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gIEBpZiAoIXVzZXJQcm92aWRlZEJ1dHRvbikge1xuICAgIDxidXR0b25cbiAgICAgICNkZWZhdWx0QnV0dG9uXG4gICAgICBbaWRdPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgW3NpemVdPVwiYnV0dG9uU2l6ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRlbnRpb25MZXZlbF09XCJhdHRlbnRpb25MZXZlbFwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm1lbnVJZFwiXG4gICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFuc2xhdGlvbnMuZ2V0KCdtb3JlJylcIlxuICAgID5cbiAgICAgIDxraXJieS1pY29uIFtuYW1lXT1cIidtb3JlJ1wiPjwva2lyYnktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG48a2lyYnktY2FyZFxuICBbaWRdPVwibWVudUlkXCJcbiAga2lyYnlGbG9hdGluZ1xuICBbc3RyYXRlZ3ldPVwiJ2ZpeGVkJ1wiXG4gIFtyZWZlcmVuY2VdPVwiYnV0dG9uQ29udGFpbmVyRWxlbWVudFwiXG4gIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICBbdHJpZ2dlcnNdPVwidHJpZ2dlcnNcIlxuICBbcGxhY2VtZW50XT1cInBsYWNlbWVudFwiXG4gIFtET01Qb3J0YWxPdXRsZXRdPVwiRE9NUG9ydGFsT3V0bGV0XCJcbiAgW3BvcnRhbE91dGxldENvbmZpZ109XCJwb3J0YWxPdXRsZXRDb25maWdcIlxuICBbY2xvc2VPbkJhY2tkcm9wXT1cImNsb3NlT25CYWNrZHJvcFwiXG4gIFtjbG9zZU9uRXNjYXBlS2V5XT1cImNsb3NlT25Fc2NhcGVLZXlcIlxuICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcbiAgW2F1dG9QbGFjZW1lbnRdPVwiYXV0b1BsYWNlbWVudFwiXG4gIFtzaGlmdF09XCJzaGlmdFwiXG4gIFtzdHlsZS5taW5XaWR0aF09XCJtaW5XaWR0aCA/IG1pbldpZHRoICsgJ3B4JyA6IG51bGxcIlxuICBjbGFzcz1cIm1lbnUtcG9wb3ZlclwiXG4gIChrZXlkb3duKT1cIl9vbktleWRvd24oJGV2ZW50KVwiXG4gIChkaXNwbGF5Q2hhbmdlZCk9XCJtZW51VmlzaWJpbGl0eUNoYW5nZWQoJGV2ZW50KVwiXG4gIHJvbGU9XCJtZW51XCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG48L2tpcmJ5LWNhcmQ+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tZW51L3NyYy9raXJieWRlc2lnbi1kZXNpZ25zeXN0ZW0tbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-menu.mjs","sources":["../../menu/src/menu.component.ts","../../menu/src/menu.component.html","../../menu/src/kirbydesign-designsystem-menu.ts"],"sourcesContent":["import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\n\nimport { ItemComponent } from '@kirbydesign/designsystem/item';\nimport { CardComponent } from '@kirbydesign/designsystem/card';\nimport { IconComponent } from '@kirbydesign/designsystem/icon';\nimport { AttentionLevel, ButtonComponent, ButtonSize } from '@kirbydesign/designsystem/button';\nimport {\n FloatingDirective,\n FloatingOffset,\n PortalOutletConfig,\n TriggerEvent,\n} from '@kirbydesign/designsystem/shared/floating';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\nimport { StringSearchHelper, UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';\nimport { forwardAttributes, TranslationService } from '@kirbydesign/designsystem/shared';\n\n@Component({\n selector: 'kirby-menu',\n imports: [ButtonComponent, FloatingDirective, CardComponent, IconComponent],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n readonly menuId: string = UniqueIdGenerator.scopedTo('kirby-menu').next();\n triggerButtonId: string = UniqueIdGenerator.scopedTo('kirby-menu-trigger-button').next();\n private _attributesToForward = ['aria-label', 'aria-labelledby'];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private zone: NgZone,\n private renderer: Renderer2,\n public translations: TranslationService\n ) {}\n\n @Input() public isDisabled: boolean = false;\n\n @Input() public buttonSize: ButtonSize = ButtonSize.MD;\n\n @Input() public placement: Placement = 'bottom-start';\n\n @Input() public attentionLevel: AttentionLevel = '3';\n\n @Input() public triggers: Array<TriggerEvent> = ['click'];\n\n @Input() public DOMPortalOutlet: HTMLElement = this.elementRef.nativeElement.ownerDocument.body;\n\n @Input() public portalOutletConfig: PortalOutletConfig | undefined;\n\n @Input() public autoPlacement: boolean = false;\n\n @Input() public closeOnSelect: boolean = true;\n\n @Input() public closeOnEscapeKey: boolean = true;\n\n @Input() public closeOnBackdrop: boolean = true;\n\n @Input() public shift: boolean = true;\n\n /**\n * The minimum width of the menu. If not set, the default width is 240px\n */\n @Input() public minWidth: number;\n\n @ViewChild('buttonContainer', { read: ElementRef })\n public buttonContainerElement: ElementRef<HTMLElement> | undefined;\n\n @ViewChild('defaultButton', { read: ElementRef })\n public defaultButtonElement: ElementRef<HTMLButtonElement> | undefined;\n\n @ContentChild(ButtonComponent, { read: ElementRef }) public userProvidedButton:\n | ElementRef<HTMLButtonElement>\n | undefined;\n\n @ViewChild(FloatingDirective)\n private floatingMenu: FloatingDirective;\n\n @ContentChildren(ItemComponent, { read: ElementRef }) public kirbyItems: QueryList<\n ElementRef<HTMLElement>\n >;\n\n @ContentChildren(ItemComponent) public kirbyItemComponents: QueryList<ItemComponent>;\n\n public floatingMenuIsShown: boolean = false;\n public FloatingOffset: typeof FloatingOffset = FloatingOffset;\n private disposeIonScrollListener: EventListenerDisposeFn;\n private focusedIndex = -1;\n\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent) {\n if (this.kirbyItems.length === 0) {\n console.warn('[Kirby] No items found within menu');\n return;\n }\n if (this.floatingMenuIsShown) {\n this.handleKeyDownForOpenedMenu(event);\n } else {\n this.handleKeyDownForClosedMenu(event);\n }\n }\n\n @HostListener('click', ['$event'])\n _onClick() {\n if (!this.floatingMenuIsShown) return;\n this.focusedIndex = 0;\n this.focusItem();\n }\n\n private preventDefaultAndStopImmediatePropagation(event: KeyboardEvent) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n\n private getFirstInteractiveElement(el: HTMLIonItemElement) {\n return el.querySelector<HTMLIonToggleElement | HTMLIonRadioElement | HTMLIonCheckboxElement>(\n 'ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled])'\n );\n }\n\n private handleKeyDownForClosedMenu(event: KeyboardEvent) {\n const key = event.key;\n switch (key) {\n case ' ':\n case 'Enter':\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = 0;\n this.floatingMenu.show();\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = this.kirbyItems.length - 1;\n this.floatingMenu.show();\n this.focusItem();\n break;\n }\n }\n\n private handleKeyDownForOpenedMenu(event: KeyboardEvent) {\n const key = event.key;\n\n switch (key) {\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === this.kirbyItems.length - 1) {\n this.focusedIndex = 0;\n } else {\n this.focusedIndex++;\n }\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === 0) {\n this.focusedIndex = this.kirbyItems.length - 1;\n } else {\n this.focusedIndex--;\n }\n this.focusItem();\n break;\n case 'Home': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex > 0) {\n this.focusedIndex = 0;\n this.focusItem();\n }\n break;\n }\n case 'End': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex < this.kirbyItems.length - 1) {\n this.focusedIndex = this.kirbyItems.length - 1;\n this.focusItem();\n }\n break;\n }\n case 'Escape':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.closeOnEscapeKey) {\n this.floatingMenu.hide();\n }\n break;\n case 'Tab':\n this.floatingMenu.hide();\n break;\n default: {\n if (StringSearchHelper.isPrintableCharacter(key)) {\n this.preventDefaultAndStopImmediatePropagation(event);\n const foundItemIndex = this.getIndexOfItemByFirstCharacter(key);\n if (foundItemIndex > -1) {\n this.focusedIndex = foundItemIndex;\n this.focusItem();\n }\n }\n }\n }\n }\n\n private getIndexOfItemByFirstCharacter(char: string) {\n return StringSearchHelper.getIndexByFirstMatchingStartString(\n char,\n this.kirbyItems.map((item) => item.nativeElement.innerText),\n this.focusedIndex + 1\n );\n }\n\n focusItem() {\n const itemToBeFocused = this.kirbyItems.get(this.focusedIndex);\n const ionItem = itemToBeFocused.nativeElement.querySelector('ion-item');\n\n // Look for interactive element within ion-item like toggle or checkbox and set focus if found\n const firstInteractiveElementWithinItem = this.getFirstInteractiveElement(ionItem);\n if (firstInteractiveElementWithinItem) {\n firstInteractiveElementWithinItem.focus();\n } else {\n this.focusSelectableItem(ionItem);\n }\n }\n\n private focusSelectableItem(ionItem: HTMLIonItemElement) {\n const nativeButton: HTMLButtonElement =\n ionItem.shadowRoot.querySelector('button:not([disabled])');\n nativeButton?.focus();\n }\n\n getTriggerButton(): HTMLButtonElement {\n return (this.userProvidedButton ?? this.defaultButtonElement).nativeElement;\n }\n\n public ngAfterViewInit(): void {\n this.cdr.detectChanges(); // Sets the updated reference for kirby-floating\n\n this.zone.runOutsideAngular(() => {\n /*\n * Listen for ionScroll outside of Angular's change detection to\n * avoid a change detection cycle for every scroll-event fired\n */\n this.disposeIonScrollListener = this.renderer.listen(document, 'ionScroll', () => {\n this.floatingMenu.hide();\n });\n });\n this.forwardAriaLabelToTriggerButton();\n }\n\n ngAfterContentInit(): void {\n this.setRoleAttributeForAllItems();\n this.setUserProvidedButtonAriaAttributes();\n this.ensureSelectableOnItems();\n }\n\n private forwardAriaLabelToTriggerButton() {\n forwardAttributes(\n this.elementRef.nativeElement,\n this._attributesToForward,\n this.renderer,\n this.getTriggerButton()\n );\n }\n\n ensureSelectableOnItems() {\n this.kirbyItemComponents.forEach((itemComponent) => {\n if (itemComponent.selectable === undefined) {\n itemComponent.selectable = true;\n }\n });\n }\n\n private setRoleAttributeForAllItems() {\n this.kirbyItems.forEach((item) => {\n this.setRoleAttributeForItem(item.nativeElement);\n });\n }\n\n private setRoleAttributeForItem(item: HTMLElement) {\n let menuItemRole = 'menuitem';\n if (item.matches(':has(kirby-toggle, kirby-checkbox)')) {\n menuItemRole = 'menuitemcheckbox';\n } else if (item.matches(':has(kirby-radio)')) {\n menuItemRole = 'menuitemradio';\n }\n this.renderer.setAttribute(item, 'role', menuItemRole);\n }\n\n menuVisibilityChanged(menuIsShown: boolean) {\n this.floatingMenuIsShown = menuIsShown;\n this.renderer.setAttribute(this.getTriggerButton(), 'aria-expanded', menuIsShown.toString());\n if (!menuIsShown) {\n this.focusedIndex = -1;\n this.getTriggerButton().focus();\n }\n }\n\n private setUserProvidedButtonAriaAttributes() {\n if (!this.userProvidedButton) return;\n\n const button = this.userProvidedButton.nativeElement;\n if (button.id) {\n this.triggerButtonId = button.id;\n } else {\n this.renderer.setAttribute(button, 'id', this.triggerButtonId);\n }\n if (!button.getAttribute('aria-controls')) {\n this.renderer.setAttribute(button, 'aria-controls', this.menuId);\n }\n if (!button.getAttribute('aria-haspopup')) {\n this.renderer.setAttribute(button, 'aria-haspopup', 'true');\n }\n if (!button.getAttribute('aria-label')) {\n this.renderer.setAttribute(button, 'aria-label', this.translations.get('more'));\n }\n }\n\n ngOnDestroy(): void {\n this.disposeIonScrollListener?.();\n }\n}\n","<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n @if (!userProvidedButton) {\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n [attr.aria-label]=\"translations.get('more')\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n }\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}